Skip to content

Commit

Permalink
Update TODO list
Browse files Browse the repository at this point in the history
  • Loading branch information
gregory-nutt committed Jun 7, 2018
1 parent 8aa4865 commit 2e6fc4e
Showing 1 changed file with 2 additions and 44 deletions.
46 changes: 2 additions & 44 deletions TODO
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
NuttX TODO List (Last updated March 4, 2018)
NuttX TODO List (Last updated June 6, 2018)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

This file summarizes known NuttX bugs, limitations, inconsistencies with
Expand All @@ -18,7 +18,7 @@ nuttx/:
(0) Message Queues (sched/mqueue)
(8) Kernel/Protected Build
(3) C++ Support
(6) Binary loaders (binfmt/)
(5) Binary loaders (binfmt/)
(16) Network (net/, drivers/net)
(4) USB (drivers/usbdev, drivers/usbhost)
(2) Other drivers (drivers/)
Expand Down Expand Up @@ -1028,48 +1028,6 @@ 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
Description: 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 corresponding 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.3 compiler 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 now
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)
^^^^^^^^^^^^^^^^^^^^^^^^^^^

Expand Down

0 comments on commit 2e6fc4e

Please sign in to comment.