Erwin, On Sonntag, 21. Oktober 2007, Erwin Authried wrote: > in elf2flt.ld, the ctor table starts with the nr. of entries in the > table "LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)", and ends with > 0. Yes.
> The newer compilers just have the ctor entries, and 0xffffffff as > the end marker (if I remember correctly). The end marker isn't > required in the ld script because it comes from the library. OK. > Because of the elf2flt.ld entries, you will see multiple definitions > of the __CTOR_LIST__, __DTOR_LIST__ entries. It's possible that this > doesn't cause any harm, but it's rather confusing, at least. The main > problem with the 3.4 was the fact that the library for calling the > ctors/dtors is compiled without -msingle-pic-base, causing a crash. This is my linker script: > . = ALIGN(4) ; > __CTOR_LIST__ = .; > LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2) > SINGLE_LINK: /* gcc uses crtbegin.o to find the start of > SINGLE_LINK: the constructors, so we make sure it is > SINGLE_LINK: first. Because this is a wildcard, it > SINGLE_LINK: doesn't matter if the user does not > SINGLE_LINK: actually link against crtbegin.o; the > SINGLE_LINK: linker won't look for a file to match a > SINGLE_LINK: wildcard. The wildcard also means that it > SINGLE_LINK: doesn't matter which directory crtbegin.o > SINGLE_LINK: is in. */ > SINGLE_LINK: KEEP (*crtbegin*.o(.ctors)) > SINGLE_LINK: /* We don't want to include the .ctor section from > SINGLE_LINK: from the crtend.o file until after the sorted ctors. > SINGLE_LINK: The .ctor section from the crtend file contains the > SINGLE_LINK: end of ctors marker and it must be last */ > SINGLE_LINK: KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors)) > SINGLE_LINK: KEEP (*(SORT(.ctors.*))) > KEEP (*(.ctors)) > LONG(0) > __CTOR_END__ = .; > __DTOR_LIST__ = .; > LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2) > SINGLE_LINK: KEEP (*crtbegin*.o(.dtors)) > SINGLE_LINK: KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors)) > SINGLE_LINK: KEEP (*(SORT(.dtors.*))) > KEEP (*(.dtors)) > LONG(0) > __DTOR_END__ = .; Can you show me how to modify this for gcc 4.0.x? And many thanks for your explanations! regards Wolfgang -- Das Leben kann nur rückwärts verstanden, muß aber vorwärts gelebt werden. _______________________________________________ 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
