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:
parent
4c2da80c2b
commit
ca6f2be7f6
|
@ -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>
|
2017-08-09 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* testsuite/config/default.exp (LD_CLASS): Check .libs/ld-new
|
* testsuite/config/default.exp (LD_CLASS): Check .libs/ld-new
|
||||||
|
|
|
@ -97,10 +97,24 @@ SECTIONS
|
||||||
${RELOCATING+ *(.gnu.linkonce.t.*)}
|
${RELOCATING+ *(.gnu.linkonce.t.*)}
|
||||||
${RELOCATING+*(.glue_7t)}
|
${RELOCATING+*(.glue_7t)}
|
||||||
${RELOCATING+*(.glue_7)}
|
${RELOCATING+*(.glue_7)}
|
||||||
${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
|
${CONSTRUCTING+
|
||||||
LONG (-1);*(.ctors); *(.ctor); *(SORT(.ctors.*)); LONG (0); }
|
PROVIDE(___CTOR_LIST__ = .);
|
||||||
${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
|
PROVIDE(__CTOR_LIST__ = .);
|
||||||
LONG (-1); *(.dtors); *(.dtor); *(SORT(.dtors.*)); LONG (0); }
|
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))}
|
${RELOCATING+ KEEP (*(.fini))}
|
||||||
/* ??? Why is .gcc_exc here? */
|
/* ??? Why is .gcc_exc here? */
|
||||||
${RELOCATING+ *(.gcc_exc)}
|
${RELOCATING+ *(.gcc_exc)}
|
||||||
|
|
|
@ -98,18 +98,24 @@ SECTIONS
|
||||||
${RELOCATING+*(.glue_7t)}
|
${RELOCATING+*(.glue_7t)}
|
||||||
${RELOCATING+*(.glue_7)}
|
${RELOCATING+*(.glue_7)}
|
||||||
${CONSTRUCTING+. = ALIGN(8);}
|
${CONSTRUCTING+. = ALIGN(8);}
|
||||||
${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
|
${CONSTRUCTING+
|
||||||
|
PROVIDE(___CTOR_LIST__ = .);
|
||||||
|
PROVIDE(__CTOR_LIST__ = .);
|
||||||
LONG (-1); LONG (-1);
|
LONG (-1); LONG (-1);
|
||||||
KEEP (*(.ctors));
|
KEEP (*(.ctors));
|
||||||
KEEP (*(.ctor));
|
KEEP (*(.ctor));
|
||||||
KEEP (*(SORT(.ctors.*)));
|
KEEP (*(SORT_BY_NAME(.ctors.*)));
|
||||||
LONG (0); LONG (0); }
|
LONG (0); LONG (0);
|
||||||
${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
|
}
|
||||||
|
${CONSTRUCTING+
|
||||||
|
PROVIDE(___DTOR_LIST__ = .);
|
||||||
|
PROVIDE(__DTOR_LIST__ = .);
|
||||||
LONG (-1); LONG (-1);
|
LONG (-1); LONG (-1);
|
||||||
KEEP (*(.dtors));
|
KEEP (*(.dtors));
|
||||||
KEEP (*(.dtor));
|
KEEP (*(.dtor));
|
||||||
KEEP (*(SORT(.dtors.*)));
|
KEEP (*(SORT_BY_NAME(.dtors.*)));
|
||||||
LONG (0); LONG (0); }
|
LONG (0); LONG (0);
|
||||||
|
}
|
||||||
${RELOCATING+ KEEP (*(.fini))}
|
${RELOCATING+ KEEP (*(.fini))}
|
||||||
/* ??? Why is .gcc_exc here? */
|
/* ??? Why is .gcc_exc here? */
|
||||||
${RELOCATING+ *(.gcc_exc)}
|
${RELOCATING+ *(.gcc_exc)}
|
||||||
|
|
Loading…
Reference in New Issue