[uClinux-dev] Shared library issues on m68knommu and gcc 4.1.1

Jate Sujjavanich jsujjavanich at syntech-fuelmaster.com
Fri Jul 20 18:02:06 EDT 2007


I've discovered that the load of lib1.so (uClibc) fails when loaded for
/bin/init. The init process doesn't load properly. When the fixup
routine detects a need for shared library #1, the kernel proceeds to
load it. It loads uClibc including the Global Offset Table located right
after the .data section. It finishes offsetting the GOT pointers. Then
it offsets the destination pointers *GOT[1 - reloc_count].
Unfortunately, it hits a value '0x00000001' which is causing it to
perform the shared lib/main executable date check (lib 0x00 in the msb):

BINFMT_FLAT: library 0 is younger than 1, killing init!

This jives with the vague references to "toolchain issues" in past
discussion about this message. It seems that either the contents of the
GOT are incorrect, or the pointees of the GOT are incorrect. Or perhaps
the load is occuring incorrectly.

In order to determine this, I would need to make sense of exactly what
is being loaded. Does anyone know of good ways to generate information
about the symbols and contents of global offset tables? I have not yet
found the right combination of objdump options to do this.

- Jate S.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.uclinux.org/pipermail/uclinux-dev/attachments/20070720/0975c7f0/attachment.html>


More information about the uClinux-dev mailing list