Notice: A non well formed numeric value encountered in /sites/rockbox.org/flyspray/includes/class.flyspray.php on line 96 Notice: A non well formed numeric value encountered in /sites/rockbox.org/flyspray/includes/class.flyspray.php on line 96 Notice: A non well formed numeric value encountered in /sites/rockbox.org/flyspray/includes/class.flyspray.php on line 96 Deprecated: Function create_function() is deprecated in /sites/rockbox.org/flyspray/includes/class.flyspray.php on line 104 Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /sites/rockbox.org/flyspray/adodb/adodb.inc.php on line 845 Deprecated: Function create_function() is deprecated in /sites/rockbox.org/flyspray/includes/class.user.php on line 111 FS#13164 : Rockbox commit ce0b31d87 fails to build due to overlapping sections in rockbox.elf

Rockbox

Tasklist

FS#13164 - Rockbox commit ce0b31d87 fails to build due to overlapping sections in rockbox.elf

Attached to Project: Rockbox
Opened by Alex (Barracuda72) - Thursday, 13 December 2018, 10:10 GMT
Task Type Bugs
Category Build environment
Status Unconfirmed
Assigned To No-one
Operating System Another
Severity Medium
Priority Normal
Reported Version Rbutil SVN
Due in Version Undecided
Due Date Undecided
Percent Complete 0%
Votes 0
Private No

Details

I am trying to build Rockbox for Sony NWZ-380 from Git repo, commit ce0b31d87db3c4c1c1bfb535c50770d33e9c4aaf.
arm-elf-eabi-gcc version 5.4.0, ARM binutils 2.30.
Everything goes smooth until just the latest step where this happens:

...
LD duke3d.ovl
LD bmp.ovl
LD jpeg.ovl
LD png.ovl
LD ppm.ovl
LD gif.ovl
LD rockbox.elf
/usr/libexec/gcc/arm-elf-eabi/ld: section .ARM.exidx VMA [00000000600a9548,00000000600a954f] overlaps section .bss VMA [00000000600a7f20,00000000600ff773]

I'm using Rockbox on my NWZ-384 for a couple of years now and there were no problems building it in the past. I also was very glad that NWZ-380 port reached stable status in 3.14,
but now something seems to be broken (not terrible it seems, just requires some adjustments to the linker scripts but still).
This task depends upon

Comment by Alex (Barracuda72) - Tuesday, 18 December 2018, 13:20 GMT
I fixed it by adding:
.ARM.exidx : {
__exidx_start = .;
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
__exidx_end = .;
} >DRAM
to the linker script ram.link generated at build time. It seems that libgcc's implementation of udivmoddi4 requires exception handling info that is stored here.
It's impossible to build recent GCC versions (I've tried many from 4.9 till 8.2) excluding exception support (at least without some patching),
so I think this hack should be included into Rockbox. This section is only 8 bytes long, so for the 6 Mb firmware it shouldn't really matter.

Loading...