diff options
Diffstat (limited to 'ld/scripttempl')
-rw-r--r-- | ld/scripttempl/i386beos.sc | 2 | ||||
-rw-r--r-- | ld/scripttempl/mcorepe.sc | 2 | ||||
-rw-r--r-- | ld/scripttempl/pe.sc | 7 | ||||
-rw-r--r-- | ld/scripttempl/pep.sc | 7 |
4 files changed, 12 insertions, 6 deletions
diff --git a/ld/scripttempl/i386beos.sc b/ld/scripttempl/i386beos.sc index f4ce42c..b45b83f 100644 --- a/ld/scripttempl/i386beos.sc +++ b/ld/scripttempl/i386beos.sc @@ -69,7 +69,7 @@ SECTIONS ${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ; LONG (-1); *(.dtors); *(.dtor); LONG (0); } ${RELOCATING+ KEEP (*(SORT_NONE(.fini)))} - /* ??? Why is .gcc_exc here? */ + ${RELOCATING+/* ??? Why is .gcc_exc here? */} ${RELOCATING+ *(.gcc_exc)} ${RELOCATING+ etext = .;} ${RELOCATING+ __text_end__ = .;} diff --git a/ld/scripttempl/mcorepe.sc b/ld/scripttempl/mcorepe.sc index e7cf3d3..eea7027 100644 --- a/ld/scripttempl/mcorepe.sc +++ b/ld/scripttempl/mcorepe.sc @@ -76,7 +76,7 @@ SECTIONS ${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ; LONG (-1); *(.dtors); *(.dtor); LONG (0); } ${RELOCATING+ KEEP (*(SORT_NONE(.fini)))} - /* ??? Why is .gcc_exc here? */ + ${RELOCATING+/* ??? Why is .gcc_exc here? */} ${RELOCATING+ *(.gcc_exc)} ${RELOCATING+ etext = .;} *(.gcc_except_table) diff --git a/ld/scripttempl/pe.sc b/ld/scripttempl/pe.sc index 865ee58..8b5e1a1 100644 --- a/ld/scripttempl/pe.sc +++ b/ld/scripttempl/pe.sc @@ -104,6 +104,7 @@ SECTIONS expectation that they will be overridden by the definitions here. If we PROVIDE the symbols then they will not be overridden and global constructors will not be run. + See PR 22762 for more details. This does mean that it is not possible for a user to define their own __CTOR_LIST__ and __DTOR_LIST__ symbols; if they do, @@ -113,7 +114,9 @@ SECTIONS (The custom script can just be a copy of this script with the PROVIDE() qualifiers added). - See PR 22762 for more details. */ + In particular this means that ld -Ur does not work, because + the proper __CTOR_LIST__ set by ld -Ur is overridden by a + bogus __CTOR_LIST__ set by the final link. See PR 46. */ ___CTOR_LIST__ = .; __CTOR_LIST__ = .; LONG (-1); @@ -134,7 +137,7 @@ SECTIONS LONG (0); } ${RELOCATING+KEEP (*(SORT_NONE(.fini)))} - /* ??? Why is .gcc_exc here? */ + ${RELOCATING+/* ??? Why is .gcc_exc here? */} ${RELOCATING+ *(.gcc_exc)} ${RELOCATING+PROVIDE (etext = .);} ${RELOCATING+PROVIDE (_etext = .);} diff --git a/ld/scripttempl/pep.sc b/ld/scripttempl/pep.sc index e6d594c..950f578 100644 --- a/ld/scripttempl/pep.sc +++ b/ld/scripttempl/pep.sc @@ -105,6 +105,7 @@ SECTIONS expectation that they will be overridden by the definitions here. If we PROVIDE the symbols then they will not be overridden and global constructors will not be run. + See PR 22762 for more details. This does mean that it is not possible for a user to define their own __CTOR_LIST__ and __DTOR_LIST__ symbols; if they do, @@ -114,7 +115,9 @@ SECTIONS (The custom script can just be a copy of this script with the PROVIDE() qualifiers added). - See PR 22762 for more details. */ + In particular this means that ld -Ur does not work, because + the proper __CTOR_LIST__ set by ld -Ur is overridden by a + bogus __CTOR_LIST__ set by the final link. See PR 46. */ ___CTOR_LIST__ = .; __CTOR_LIST__ = .; LONG (-1); LONG (-1); @@ -135,7 +138,7 @@ SECTIONS LONG (0); LONG (0); } ${RELOCATING+KEEP (*(SORT_NONE(.fini)))} - /* ??? Why is .gcc_exc here? */ + ${RELOCATING+/* ??? Why is .gcc_exc here? */} ${RELOCATING+ *(.gcc_exc)} ${RELOCATING+PROVIDE (etext = .);} ${RELOCATING+ KEEP (*(.gcc_except_table))} |