[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