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
3 changed files with 43 additions and 16 deletions
|
@ -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
|
||||
|
|
|
@ -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)}
|
||||
|
|
|
@ -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)}
|
||||
|
|
Loading…
Add table
Reference in a new issue