aboutsummaryrefslogtreecommitdiff
path: root/nuttx/TODO
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/TODO')
-rw-r--r--nuttx/TODO50
1 files changed, 46 insertions, 4 deletions
diff --git a/nuttx/TODO b/nuttx/TODO
index 72a94290b..906601192 100644
--- a/nuttx/TODO
+++ b/nuttx/TODO
@@ -12,7 +12,7 @@ nuttx/
(2) Signals (sched/, arch/)
(2) pthreads (sched/)
(2) C++ Support
- (5) Binary loaders (binfmt/)
+ (6) Binary loaders (binfmt/)
(17) Network (net/, drivers/net)
(3) USB (drivers/usbdev, drivers/usbhost)
(11) Libraries (lib/)
@@ -376,15 +376,15 @@ o Binary loaders (binfmt/)
Description: Windows build issue. Some of the configurations that use NXFLAT have
the linker script specified like this:
- NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat.ld -no-check-sections
+ NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-gotoff.ld -no-check-sections
That will not work for windows-based tools because they require Windows
style paths. The solution is to do something like this:
if ($(WINTOOL)y)
- NXFLATLDSCRIPT=${cygpath -w $(TOPDIR)/binfmt/libnxflat/gnu-nxflat.ld}
+ NXFLATLDSCRIPT=${cygpath -w $(TOPDIR)/binfmt/libnxflat/gnu-nxflat-gotoff.ld}
else
- NXFLATLDSCRIPT=$(TOPDIR)/binfmt/libnxflat/gnu-nxflat.ld
+ NXFLATLDSCRIPT=$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-gotoff.ld
endif
Then use
@@ -395,6 +395,48 @@ o Binary loaders (binfmt/)
Priority: There are too many references like the above. They will have
to get fixed as needed for Windows native tool builds.
+ Title: TOOLCHAIN COMPATIBILITY PROBLEM
+ Descripton: The older 4.3.3 compiler generates GOTOFF relocations to the constant
+ strings, like:
+
+ .L3:
+ .word .LC0(GOTOFF)
+ .word .LC1(GOTOFF)
+ .word .LC2(GOTOFF)
+ .word .LC3(GOTOFF)
+ .word .LC4(GOTOFF)
+
+ Where .LC0, LC1, LC2, LC3, and .LC4 are the labels correponding to strings in
+ the .rodata.str1.1 section. One consequence of this is that .rodata must reside
+ in D-Space since it will addressed relative to the GOT (see the section entitled
+ "Read-Only Data in RAM" at
+ http://nuttx.org/Documentation/NuttXNxFlat.html#limitations).
+
+ The newer 4.6.3compiler generated PC relative relocations to the strings:
+
+ .L2:
+ .word .LC0-(.LPIC0+4)
+ .word .LC1-(.LPIC1+4)
+ .word .LC2-(.LPIC2+4)
+ .word .LC3-(.LPIC4+4)
+ .word .LC4-(.LPIC5+4)
+
+ This is good and bad. This is good because it means that .rodata.str1.1 can not
+ reside in FLASH with .text and can be accessed using PC-relative addressing.
+ That can be accomplished by simply moving the .rodata from the .data section to
+ the .text section in the linker script. (The NXFLAT linker script is located at
+ nuttx/binfmt/libnxflat/gnu-nxflat.ld).
+
+ This is bad because a lot of stuff may get broken an a lot of test will need to
+ be done. One question that I have is does this apply to all kinds of .rodata?
+ Or just to .rodata.str1.1?
+
+ Status: Open. Many of the required changes are in place but, unfortunately, not enough
+ go be fully functional. I think all of the I-Space-to-I-Space fixes are in place.
+ However, the generated code also includes PC-relative references to .bss which
+ just cannot be done.
+ Priority: Medium. The workaround for now is to use the older, 4.3.3 OABI compiler.
+
o Network (net/, drivers/net)
^^^^^^^^^^^^^^^^^^^^^^^^^^^