[uClibc] ld-uClibc-0.9.26.so segfaults in arm/dl-startup.h PERFORM_BOOTSTRAP_RELOC()
David Poole
daveml at mbuf.com
Thu May 6 21:09:09 UTC 2004
Using an ARM toolchain gcc-3.3.x built last week, my shared library
programs segfault on startup. After some poking, I think I've tracked
the segfault down to line 71 of ldso/ldso/arm/dl-startup.h. I comment
out the line, the load completes but naturally runs into problems
later.
SEND_STDERR("R_ARM_PC24 9\n"); // davep 5-may-04
SEND_ADDRESS_STDERR(reloc_addr,1);
SEND_STDERR("R_ARM_PC24 10\n"); // davep 5-may-04
SEND_ADDRESS_STDERR(symbol_addr,1);
*reloc_addr = symbol_addr; <---------assuming dies
here (next debugging message not seen)
SEND_STDERR("R_ARM_PC24 break\n"); // davep 5-may-04
SEND_ADDRESS_STDERR(reloc_addr,1);
Added some debugging outputs and symbol_addr is 0xeb00006c which seems
wrong. reloc_addr is 0x40000e88
glibc's loader does the same thing but the code for the R_ARM_PC24 case
is pretty much identical.
I'm not sure how it's supposed to work (new to ARM, new to dynamic
loaders at this level) so I'm having difficulty understanding the
problem much less trying to fix it.
Suggestions?
--
David Poole <dpoole at mobl.com>
Mobility Electronics, Idaho http://www.mobl.com
960 Broadway Avenue, Suite 300
Boise, ID 83706
208-395-1300 x241
More information about the uClibc
mailing list