* scripttempl/elf.sc (CTOR): Handle crtbeginS.o, crtendS.o and

other variants of crtbegin.o, crtend.o.
	(DTOR): Likewise.
	* scripttempl/crisaout.sc (ctors, dtors): Likewise.
	* scripttempl/elf_chaos.sc (CTOR, DTOR): Likewise.
	* scripttempl/elfd10v.sc (CTOR, DTOR): Likewise.
	* scripttempl/elfd30v.sc (CTOR, DTOR): Likewise.
	* scripttempl/elfxtensa.sc (CTOR, DTOR): Likewise.
	* scripttempl/iq2000.sc (CTOR, DTOR): Likewise.
	* scripttempl/mmo.sc (ctors, dtors): Likewise.
	* scripttempl/xstormy16.sc (CTOR, DTOR): Likewise.
This commit is contained in:
Alan Modra
2003-04-14 13:03:17 +00:00
parent f7661995e8
commit 877d60f7bc
10 changed files with 71 additions and 56 deletions

@ -1,3 +1,18 @@
2003-04-14 Alan Modra <amodra@bigpond.net.au>
From Prashanth Tamraparni <prashanth_t@in.ibm.com>
* scripttempl/elf.sc (CTOR): Handle crtbeginS.o, crtendS.o and
other variants of crtbegin.o, crtend.o.
(DTOR): Likewise.
* scripttempl/crisaout.sc (ctors, dtors): Likewise.
* scripttempl/elf_chaos.sc (CTOR, DTOR): Likewise.
* scripttempl/elfd10v.sc (CTOR, DTOR): Likewise.
* scripttempl/elfd30v.sc (CTOR, DTOR): Likewise.
* scripttempl/elfxtensa.sc (CTOR, DTOR): Likewise.
* scripttempl/iq2000.sc (CTOR, DTOR): Likewise.
* scripttempl/mmo.sc (ctors, dtors): Likewise.
* scripttempl/xstormy16.sc (CTOR, DTOR): Likewise.
2003-04-09 Dmitry Diky <diwil@mail.ru> 2003-04-09 Dmitry Diky <diwil@mail.ru>
* scripttempl/elf32msp430.sc: Add initX, finiX, ctors, dtors * scripttempl/elf32msp430.sc: Add initX, finiX, ctors, dtors
@ -56,16 +71,16 @@
2003-04-01 Bob Wilson <bob.wilson@acm.org> 2003-04-01 Bob Wilson <bob.wilson@acm.org>
* Makefile.am (ALL_EMULATIONS): Add eelf32xtensa.o. * Makefile.am (ALL_EMULATIONS): Add eelf32xtensa.o.
(eelf32xtensa.c): New target. (eelf32xtensa.c): New target.
* Makefile.in: Regenerate. * Makefile.in: Regenerate.
* configure.tgt: Handle xtensa-*-*. * configure.tgt: Handle xtensa-*-*.
* gen-doc.texi: Set XTENSA variable. * gen-doc.texi: Set XTENSA variable.
* ld.texinfo: Set XTENSA variable. Add new Xtensa node. * ld.texinfo: Set XTENSA variable. Add new Xtensa node.
* emulparams/elf32xtensa.sh: New file. * emulparams/elf32xtensa.sh: New file.
* emulparams/xtensa-config.sh: Likewise. * emulparams/xtensa-config.sh: Likewise.
* emultempl/xtensaelf.em: Likewise. * emultempl/xtensaelf.em: Likewise.
* scripttempl/elfxtensa.sc: Likewise. * scripttempl/elfxtensa.sc: Likewise.
2003-04-01 Jakub Jelinek <jakub@redhat.com> 2003-04-01 Jakub Jelinek <jakub@redhat.com>
@ -95,11 +110,11 @@
directory name. directory name.
(add_keepsyms_file): Fix memory leak. (add_keepsyms_file): Fix memory leak.
* ldmisc.c (vfinfo): Likewise. * ldmisc.c (vfinfo): Likewise.
* lexsup.c (parse_args): Likewise * lexsup.c (parse_args): Likewise.
2003-03-25 Stan Cox <scox@redhat.com> 2003-03-25 Stan Cox <scox@redhat.com>
Nick Clifton <nickc@redhat.com> Nick Clifton <nickc@redhat.com>
Contribute support for Intel's iWMMXt chip - an ARM variant: Contribute support for Intel's iWMMXt chip - an ARM variant:
* emulparams/armelf.sh (OTHER_READONLY_SECTIONS): Define. * emulparams/armelf.sh (OTHER_READONLY_SECTIONS): Define.
@ -131,12 +146,12 @@
* ldfile.c (ldfile_try_open_bfd): Pop lexer start condition after * ldfile.c (ldfile_try_open_bfd): Pop lexer start condition after
eof. eof.
2003-03-18 Danny Smith <dannysmith@users.sourceforge,net> 2003-03-18 Danny Smith <dannysmith@users.sourceforge.net>
* defilep.y (opt_base): If no number given, set to default * defilep.y (opt_base): If no number given, set to default
(-1), not 0. (-1), not 0.
2003-03-13 Danny Smith <dannysmith@users.sourceforge,net> 2003-03-13 Danny Smith <dannysmith@users.sourceforge.net>
* deffilep.y (def_import): Use default extension of "dll" * deffilep.y (def_import): Use default extension of "dll"
if no extension provided in parsed IMPORT definition. if no extension provided in parsed IMPORT definition.
@ -229,7 +244,7 @@
* emultempl/pe.em: Likewise. * emultempl/pe.em: Likewise.
* emultempl/ticoff.em: Likewise. * emultempl/ticoff.em: Likewise.
* emultempl/elf32.em: Likewise. Don't duplicate long options either. * emultempl/elf32.em: Likewise. Don't duplicate long options either.
(gld${EMULATION_NAME}_add_sysroot): Prototype. (gld${EMULATION_NAME}_add_sysroot): Prototype.
* emultempl/armelf.em (PARSE_AND_LIST_LONGOPTS): Don't duplicate * emultempl/armelf.em (PARSE_AND_LIST_LONGOPTS): Don't duplicate
options. options.
* emultempl/hppaelf.em (PARSE_AND_LIST_LONGOPTS): Likewise. * emultempl/hppaelf.em (PARSE_AND_LIST_LONGOPTS): Likewise.
@ -279,7 +294,7 @@
* gen-doc.texi: Set ARM and HPPA variables. * gen-doc.texi: Set ARM and HPPA variables.
* ld.texinfo: Fix typos and obvious texinfo mistakes. Make section * ld.texinfo: Fix typos and obvious texinfo mistakes. Make section
title capitalization more consistent. Add missing menu entries for title capitalization more consistent. Add missing menu entries for
machine-specific sections and conditionalize them consistently. machine-specific sections and conditionalize them consistently.
Conditionalize text that is irrelevant when SingleFormat is set. Conditionalize text that is irrelevant when SingleFormat is set.
Add @group divisions to improve page breaks in long examples. Add @group divisions to improve page breaks in long examples.
Use @iftex/@ifnottex instead of @iftex/@ifinfo so that HTML output Use @iftex/@ifnottex instead of @iftex/@ifinfo so that HTML output
@ -335,10 +350,10 @@
2003-02-17 Nick Clifton <nickc@redhat.com> 2003-02-17 Nick Clifton <nickc@redhat.com>
* ldmain.c (main) Default allow_shlib_undefined to true. * ldmain.c (main) Default allow_shlib_undefined to true.
* lexsup.c (ld_options): Add --no-allow-shlib-undefined. * lexsup.c (ld_options): Add --no-allow-shlib-undefined.
(parse_args): Parse the new switch. (parse_args): Parse the new switch.
* ld.texinfo: Document new switch and default behaviour of * ld.texinfo: Document new switch and default behaviour of
allowing undefined symbols in shared libraries. allowing undefined symbols in shared libraries.
2003-02-11 Dmitry Diky <diwil@mail.ru> 2003-02-11 Dmitry Diky <diwil@mail.ru>

@ -48,15 +48,15 @@ SECTIONS
/* Cater to linking from ELF. */ /* Cater to linking from ELF. */
${CONSTRUCTING+ PROVIDE(___ctors = .);} ${CONSTRUCTING+ PROVIDE(___ctors = .);}
${CONSTRUCTING+ ___elf_ctors_dtors_begin = .;} ${CONSTRUCTING+ ___elf_ctors_dtors_begin = .;}
${CONSTRUCTING+ KEEP (*crtbegin.o(.ctors))} ${CONSTRUCTING+ KEEP (*crtbegin*.o(.ctors))}
${CONSTRUCTING+ KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))} ${CONSTRUCTING+ KEEP (*(EXCLUDE_FILE (*crtend*.o) .ctors))}
${CONSTRUCTING+ KEEP (*(SORT(.ctors.*)))} ${CONSTRUCTING+ KEEP (*(SORT(.ctors.*)))}
${CONSTRUCTING+ KEEP (*(.ctors))} ${CONSTRUCTING+ KEEP (*(.ctors))}
${CONSTRUCTING+ PROVIDE(___ctors_end = .);} ${CONSTRUCTING+ PROVIDE(___ctors_end = .);}
${CONSTRUCTING+ PROVIDE(___dtors = .);} ${CONSTRUCTING+ PROVIDE(___dtors = .);}
${CONSTRUCTING+ KEEP (*crtbegin.o(.dtors))} ${CONSTRUCTING+ KEEP (*crtbegin*.o(.dtors))}
${CONSTRUCTING+ KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))} ${CONSTRUCTING+ KEEP (*(EXCLUDE_FILE (*crtend*.o) .dtors))}
${CONSTRUCTING+ KEEP (*(SORT(.dtors.*)))} ${CONSTRUCTING+ KEEP (*(SORT(.dtors.*)))}
${CONSTRUCTING+ KEEP (*(.dtors))} ${CONSTRUCTING+ KEEP (*(.dtors))}
${CONSTRUCTING+ PROVIDE(___dtors_end = .);} ${CONSTRUCTING+ PROVIDE(___dtors_end = .);}

@ -127,14 +127,14 @@ CTOR=".ctors ${CONSTRUCTING-0} :
doesn't matter which directory crtbegin.o doesn't matter which directory crtbegin.o
is in. */ is in. */
KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin*.o(.ctors))
/* We don't want to include the .ctor section from /* We don't want to include the .ctor section from
from the crtend.o file until after the sorted ctors. from the crtend.o file until after the sorted ctors.
The .ctor section from the crtend file contains the The .ctor section from the crtend file contains the
end of ctors marker and it must be last */ end of ctors marker and it must be last */
KEEP (*(EXCLUDE_FILE (*crtend.o $OTHER_EXCLUDE_FILES) .ctors)) KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .ctors))
KEEP (*(SORT(.ctors.*))) KEEP (*(SORT(.ctors.*)))
KEEP (*(.ctors)) KEEP (*(.ctors))
${CONSTRUCTING+${CTOR_END}} ${CONSTRUCTING+${CTOR_END}}
@ -142,8 +142,8 @@ CTOR=".ctors ${CONSTRUCTING-0} :
DTOR=".dtors ${CONSTRUCTING-0} : DTOR=".dtors ${CONSTRUCTING-0} :
{ {
${CONSTRUCTING+${DTOR_START}} ${CONSTRUCTING+${DTOR_START}}
KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin*.o(.dtors))
KEEP (*(EXCLUDE_FILE (*crtend.o $OTHER_EXCLUDE_FILES) .dtors)) KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .dtors))
KEEP (*(SORT(.dtors.*))) KEEP (*(SORT(.dtors.*)))
KEEP (*(.dtors)) KEEP (*(.dtors))
${CONSTRUCTING+${DTOR_END}} ${CONSTRUCTING+${DTOR_END}}

@ -116,22 +116,22 @@ CTOR="
doesn't matter which directory crtbegin.o doesn't matter which directory crtbegin.o
is in. */ is in. */
KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin*.o(.ctors))
/* We don't want to include the .ctor section from /* We don't want to include the .ctor section from
from the crtend.o file until after the sorted ctors. from the crtend.o file until after the sorted ctors.
The .ctor section from the crtend file contains the The .ctor section from the crtend file contains the
end of ctors marker and it must be last */ end of ctors marker and it must be last */
KEEP (*(EXCLUDE_FILE (*crtend.o $OTHER_EXCLUDE_FILES) .ctors)) KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .ctors))
KEEP (*(SORT(.ctors.*))) KEEP (*(SORT(.ctors.*)))
KEEP (*(.ctors)) KEEP (*(.ctors))
${CONSTRUCTING+${CTOR_END}} ${CONSTRUCTING+${CTOR_END}}
" "
DTOR=" DTOR="
${CONSTRUCTING+${DTOR_START}} ${CONSTRUCTING+${DTOR_START}}
KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin*.o(.dtors))
KEEP (*(EXCLUDE_FILE (*crtend.o $OTHER_EXCLUDE_FILES) .dtors)) KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .dtors))
KEEP (*(SORT(.dtors.*))) KEEP (*(SORT(.dtors.*)))
KEEP (*(.dtors)) KEEP (*(.dtors))
${CONSTRUCTING+${DTOR_END}} ${CONSTRUCTING+${DTOR_END}}

@ -20,14 +20,14 @@ CTOR=".ctors ${CONSTRUCTING-0} :
doesn't matter which directory crtbegin.o doesn't matter which directory crtbegin.o
is in. */ is in. */
KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin*.o(.ctors))
/* We don't want to include the .ctor section from /* We don't want to include the .ctor section from
from the crtend.o file until after the sorted ctors. from the crtend.o file until after the sorted ctors.
The .ctor section from the crtend file contains the The .ctor section from the crtend file contains the
end of ctors marker and it must be last */ end of ctors marker and it must be last */
KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) KEEP (*(EXCLUDE_FILE (*crtend*.o) .ctors))
KEEP (*(SORT(.ctors.*))) KEEP (*(SORT(.ctors.*)))
KEEP (*(.ctors)) KEEP (*(.ctors))
${CONSTRUCTING+${CTOR_END}} ${CONSTRUCTING+${CTOR_END}}
@ -36,8 +36,8 @@ CTOR=".ctors ${CONSTRUCTING-0} :
DTOR=" .dtors ${CONSTRUCTING-0} : DTOR=" .dtors ${CONSTRUCTING-0} :
{ {
${CONSTRUCTING+${DTOR_START}} ${CONSTRUCTING+${DTOR_START}}
KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin*.o(.dtors))
KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) KEEP (*(EXCLUDE_FILE (*crtend*.o) .dtors))
KEEP (*(SORT(.dtors.*))) KEEP (*(SORT(.dtors.*)))
KEEP (*(.dtors)) KEEP (*(.dtors))
${CONSTRUCTING+${DTOR_END}} ${CONSTRUCTING+${DTOR_END}}

@ -12,14 +12,14 @@ CTOR=".ctors ${CONSTRUCTING-0} :
doesn't matter which directory crtbegin.o doesn't matter which directory crtbegin.o
is in. */ is in. */
KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin*.o(.ctors))
/* We don't want to include the .ctor section from /* We don't want to include the .ctor section from
from the crtend.o file until after the sorted ctors. from the crtend.o file until after the sorted ctors.
The .ctor section from the crtend file contains the The .ctor section from the crtend file contains the
end of ctors marker and it must be last */ end of ctors marker and it must be last */
KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) KEEP (*(EXCLUDE_FILE (*crtend*.o) .ctors))
KEEP (*(SORT(.ctors.*))) KEEP (*(SORT(.ctors.*)))
KEEP (*(.ctors)) KEEP (*(.ctors))
${CONSTRUCTING+ __CTOR_END__ = .; } ${CONSTRUCTING+ __CTOR_END__ = .; }
@ -28,8 +28,8 @@ CTOR=".ctors ${CONSTRUCTING-0} :
DTOR=" .dtors ${CONSTRUCTING-0} : DTOR=" .dtors ${CONSTRUCTING-0} :
{ {
${CONSTRUCTING+ __DTOR_LIST__ = .; } ${CONSTRUCTING+ __DTOR_LIST__ = .; }
KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin*.o(.dtors))
KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) KEEP (*(EXCLUDE_FILE (*crtend*.o) .dtors))
KEEP (*(SORT(.dtors.*))) KEEP (*(SORT(.dtors.*)))
KEEP (*(.dtors)) KEEP (*(.dtors))
${CONSTRUCTING+ __DTOR_END__ = .; } ${CONSTRUCTING+ __DTOR_END__ = .; }

@ -125,14 +125,14 @@ CTOR=".ctors ${CONSTRUCTING-0} :
doesn't matter which directory crtbegin.o doesn't matter which directory crtbegin.o
is in. */ is in. */
KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin*.o(.ctors))
/* We don't want to include the .ctor section from /* We don't want to include the .ctor section from
from the crtend.o file until after the sorted ctors. from the crtend.o file until after the sorted ctors.
The .ctor section from the crtend file contains the The .ctor section from the crtend file contains the
end of ctors marker and it must be last */ end of ctors marker and it must be last */
KEEP (*(EXCLUDE_FILE (*crtend.o $OTHER_EXCLUDE_FILES) .ctors)) KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .ctors))
KEEP (*(SORT(.ctors.*))) KEEP (*(SORT(.ctors.*)))
KEEP (*(.ctors)) KEEP (*(.ctors))
${CONSTRUCTING+${CTOR_END}} ${CONSTRUCTING+${CTOR_END}}
@ -140,8 +140,8 @@ CTOR=".ctors ${CONSTRUCTING-0} :
DTOR=".dtors ${CONSTRUCTING-0} : DTOR=".dtors ${CONSTRUCTING-0} :
{ {
${CONSTRUCTING+${DTOR_START}} ${CONSTRUCTING+${DTOR_START}}
KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin*.o(.dtors))
KEEP (*(EXCLUDE_FILE (*crtend.o $OTHER_EXCLUDE_FILES) .dtors)) KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .dtors))
KEEP (*(SORT(.dtors.*))) KEEP (*(SORT(.dtors.*)))
KEEP (*(.dtors)) KEEP (*(.dtors))
${CONSTRUCTING+${DTOR_END}} ${CONSTRUCTING+${DTOR_END}}

@ -84,14 +84,14 @@ CTOR=".ctors ${CONSTRUCTING-0} :
doesn't matter which directory crtbegin.o doesn't matter which directory crtbegin.o
is in. */ is in. */
KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin*.o(.ctors))
/* We don't want to include the .ctor section from /* We don't want to include the .ctor section from
from the crtend.o file until after the sorted ctors. from the crtend.o file until after the sorted ctors.
The .ctor section from the crtend file contains the The .ctor section from the crtend file contains the
end of ctors marker and it must be last */ end of ctors marker and it must be last */
KEEP (*(EXCLUDE_FILE (*crtend.o $OTHER_EXCLUDE_FILES) .ctors)) KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .ctors))
KEEP (*(SORT(.ctors.*))) KEEP (*(SORT(.ctors.*)))
KEEP (*(.ctors)) KEEP (*(.ctors))
${CONSTRUCTING+${CTOR_END}} ${CONSTRUCTING+${CTOR_END}}
@ -100,8 +100,8 @@ CTOR=".ctors ${CONSTRUCTING-0} :
DTOR=" .dtors ${CONSTRUCTING-0} : DTOR=" .dtors ${CONSTRUCTING-0} :
{ {
${CONSTRUCTING+${DTOR_START}} ${CONSTRUCTING+${DTOR_START}}
KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin*.o(.dtors))
KEEP (*(EXCLUDE_FILE (*crtend.o $OTHER_EXCLUDE_FILES) .dtors)) KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .dtors))
KEEP (*(SORT(.dtors.*))) KEEP (*(SORT(.dtors.*)))
KEEP (*(.dtors)) KEEP (*(.dtors))
${CONSTRUCTING+${DTOR_END}} ${CONSTRUCTING+${DTOR_END}}

@ -29,8 +29,8 @@ SECTIONS
${RELOCATING+ PROVIDE (__ctors_start = .);} ${RELOCATING+ PROVIDE (__ctors_start = .);}
${RELOCATING+ PROVIDE (_ctors = .);} ${RELOCATING+ PROVIDE (_ctors = .);}
${RELOCATING+ PROVIDE (__ctors = .);} ${RELOCATING+ PROVIDE (__ctors = .);}
${RELOCATING+ KEEP (*crtbegin.o(.ctors))} ${RELOCATING+ KEEP (*crtbegin*.o(.ctors))}
${RELOCATING+ KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))} ${RELOCATING+ KEEP (*(EXCLUDE_FILE (*crtend*.o) .ctors))}
${RELOCATING+ KEEP (*(SORT(.ctors.*)))} ${RELOCATING+ KEEP (*(SORT(.ctors.*)))}
${RELOCATING+ KEEP (*(.ctors))} ${RELOCATING+ KEEP (*(.ctors))}
${RELOCATING+ PROVIDE (_ctors_end = .);} ${RELOCATING+ PROVIDE (_ctors_end = .);}
@ -40,8 +40,8 @@ SECTIONS
${RELOCATING+ PROVIDE (__dtors_start = .);} ${RELOCATING+ PROVIDE (__dtors_start = .);}
${RELOCATING+ PROVIDE (_dtors = .);} ${RELOCATING+ PROVIDE (_dtors = .);}
${RELOCATING+ PROVIDE (__dtors = .);} ${RELOCATING+ PROVIDE (__dtors = .);}
${RELOCATING+ KEEP (*crtbegin.o(.dtors))} ${RELOCATING+ KEEP (*crtbegin*.o(.dtors))}
${RELOCATING+ KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))} ${RELOCATING+ KEEP (*(EXCLUDE_FILE (*crtend*.o) .dtors))}
${RELOCATING+ KEEP (*(SORT(.dtors.*)))} ${RELOCATING+ KEEP (*(SORT(.dtors.*)))}
${RELOCATING+ KEEP (*(.dtors))} ${RELOCATING+ KEEP (*(.dtors))}
${RELOCATING+ PROVIDE (_dtors_end = .);} ${RELOCATING+ PROVIDE (_dtors_end = .);}

@ -68,14 +68,14 @@ CTOR=".ctors ${CONSTRUCTING-0} :
doesn't matter which directory crtbegin.o doesn't matter which directory crtbegin.o
is in. */ is in. */
KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin*.o(.ctors))
/* We don't want to include the .ctor section from /* We don't want to include the .ctor section from
from the crtend.o file until after the sorted ctors. from the crtend.o file until after the sorted ctors.
The .ctor section from the crtend file contains the The .ctor section from the crtend file contains the
end of ctors marker and it must be last */ end of ctors marker and it must be last */
KEEP (*(EXCLUDE_FILE (*crtend.o $OTHER_EXCLUDE_FILES) .ctors)) KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .ctors))
KEEP (*(SORT(.ctors.*))) KEEP (*(SORT(.ctors.*)))
KEEP (*(.ctors)) KEEP (*(.ctors))
${CONSTRUCTING+${CTOR_END}} ${CONSTRUCTING+${CTOR_END}}
@ -84,8 +84,8 @@ CTOR=".ctors ${CONSTRUCTING-0} :
DTOR=" .dtors ${CONSTRUCTING-0} : DTOR=" .dtors ${CONSTRUCTING-0} :
{ {
${CONSTRUCTING+${DTOR_START}} ${CONSTRUCTING+${DTOR_START}}
KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin*.o(.dtors))
KEEP (*(EXCLUDE_FILE (*crtend.o $OTHER_EXCLUDE_FILES) .dtors)) KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .dtors))
KEEP (*(SORT(.dtors.*))) KEEP (*(SORT(.dtors.*)))
KEEP (*(.dtors)) KEEP (*(.dtors))
${CONSTRUCTING+${DTOR_END}} ${CONSTRUCTING+${DTOR_END}}