+Mon May 18 13:14:43 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ From Jason Merrill <jason@cygnus.com>:
+ * ldlang.c (wild_sort): Correct order of sort.
+ * scripttempl/elf.sc: Put *crtbegin.o before other .ctors and
+ .dtors.
+ * scripttempl/elfd10v.sc: Likewise.
+start-sanitize-d30v
+ * scripttempl/elfd30v.sc: Likewise.
+end-sanitize-d30v
+ * scripttempl/elfppc.sc: Likewise.
+
Fri May 15 00:22:35 1998 Ian Lance Taylor <ian@cygnus.com>
* ldlex.l: Recognize keyword SORT.
* mri.c (mri_draw_tree): Update calls to lang_add_wild.
* scripttempl/elf.sc: Sort .ctors.* and .dtors.* by section name.
* scripttempl/elfd10v.sc: Likewise.
+start-sanitize-d30v
* scripttempl/elfd30v.sc: Likewise.
+end-sanitize-d30v
* scripttempl/elfppc.sc: Likewise.
Thu May 14 18:39:16 1998 Richard Henderson <rth@cygnus.com>
.got2 ${RELOCATING-0} : { *(.got2) }
${RELOCATING+PROVIDE (__CTOR_LIST__ = .);}
- .ctors ${RELOCATING-0} : { *(SORT(.ctors.*)) *(.ctors) }
+ .ctors ${RELOCATING-0} : {
+ /* gcc uses crtbegin.o to find the start of
+ the constructors, so we make sure it is
+ first. Because this is a wildcard, it
+ doesn't matter if the user does not
+ actually link against crtbegin.o; the
+ linker won't look for a file to match a
+ wildcard. The wildcard also means that it
+ doesn't matter which directory crtbegin.o
+ is in. */
+ *crtbegin.o(.ctors)
+ *(SORT(.ctors.*))
+ *(.ctors) }
${RELOCATING+PROVIDE (__CTOR_END__ = .);}
${RELOCATING+PROVIDE (__DTOR_LIST__ = .);}
- .dtors ${RELOCATING-0} : { *(SORT(.dtors.*)) *(.dtors) }
+ .dtors ${RELOCATING-0} : {
+ *crtbegin.o(.dtors)
+ *(SORT(.dtors.*))
+ *(.dtors) }
${RELOCATING+PROVIDE (__DTOR_END__ = .);}
${RELOCATING+PROVIDE (_FIXUP_START_ = .);}