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.
_______________________________________________ uClinux-dev mailing list [email protected] http://mailman.uclinux.org/mailman/listinfo/uclinux-dev This message was resent by [email protected] To unsubscribe see: http://mailman.uclinux.org/mailman/options/uclinux-dev
