Add support for PE startup files that want to define their own constructor and desctructor sequencing.

* scripttempl/pep.sc: Enclose __CTOR_LIST__, ___CTOR_LIST__,
	__DTOR_LIST__ and ___DTOR_LIST__ in PROVIDE statements so that
	they can be overrridden by crt input files.
	* scripttempl/pe.sc: Likewise.
This commit is contained in:
Nick Clifton 2017-08-10 13:17:12 +01:00
parent 4c2da80c2b
commit ca6f2be7f6
3 changed files with 43 additions and 16 deletions

View File

@ -1,3 +1,10 @@
2017-08-10 Nick Clifton <nickc@redhat.com>
* scripttempl/pep.sc: Enclose __CTOR_LIST__, ___CTOR_LIST__,
__DTOR_LIST__ and ___DTOR_LIST__ in PROVIDE statements so that
they can be overrridden by crt input files.
* scripttempl/pe.sc: Likewise.
2017-08-09 H.J. Lu <hongjiu.lu@intel.com>
* testsuite/config/default.exp (LD_CLASS): Check .libs/ld-new

View File

@ -97,10 +97,24 @@ SECTIONS
${RELOCATING+ *(.gnu.linkonce.t.*)}
${RELOCATING+*(.glue_7t)}
${RELOCATING+*(.glue_7)}
${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
LONG (-1);*(.ctors); *(.ctor); *(SORT(.ctors.*)); LONG (0); }
${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
LONG (-1); *(.dtors); *(.dtor); *(SORT(.dtors.*)); LONG (0); }
${CONSTRUCTING+
PROVIDE(___CTOR_LIST__ = .);
PROVIDE(__CTOR_LIST__ = .);
LONG (-1);
KEEP(*(.ctors));
KEEP(*(.ctor));
KEEP(*(SORT_BY_NAME(.ctors.*)));
LONG (0);
}
${CONSTRUCTING+
PROVIDE(___DTOR_LIST__ = .);
PROVIDE(__DTOR_LIST__ = .);
LONG (-1);
KEEP(*(.dtors));
KEEP(*(.dtor));
KEEP(*(SORT_BY_NAME(.dtors.*)));
LONG (0);
}
${RELOCATING+ KEEP (*(.fini))}
/* ??? Why is .gcc_exc here? */
${RELOCATING+ *(.gcc_exc)}

View File

@ -98,18 +98,24 @@ SECTIONS
${RELOCATING+*(.glue_7t)}
${RELOCATING+*(.glue_7)}
${CONSTRUCTING+. = ALIGN(8);}
${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
LONG (-1); LONG (-1);
KEEP (*(.ctors));
KEEP (*(.ctor));
KEEP (*(SORT(.ctors.*)));
LONG (0); LONG (0); }
${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
LONG (-1); LONG (-1);
KEEP (*(.dtors));
KEEP (*(.dtor));
KEEP (*(SORT(.dtors.*)));
LONG (0); LONG (0); }
${CONSTRUCTING+
PROVIDE(___CTOR_LIST__ = .);
PROVIDE(__CTOR_LIST__ = .);
LONG (-1); LONG (-1);
KEEP (*(.ctors));
KEEP (*(.ctor));
KEEP (*(SORT_BY_NAME(.ctors.*)));
LONG (0); LONG (0);
}
${CONSTRUCTING+
PROVIDE(___DTOR_LIST__ = .);
PROVIDE(__DTOR_LIST__ = .);
LONG (-1); LONG (-1);
KEEP (*(.dtors));
KEEP (*(.dtor));
KEEP (*(SORT_BY_NAME(.dtors.*)));
LONG (0); LONG (0);
}
${RELOCATING+ KEEP (*(.fini))}
/* ??? Why is .gcc_exc here? */
${RELOCATING+ *(.gcc_exc)}