Explain what happens in the cases if the user actually tries to
provide such symbols from source as well - it's actually a less
dramatic or problematic situation than originally outlined.
ld/Changelog:
2018-08-03 Martin Storsjo <martin@martin.st>
* scripttempl/pe.sc: Improve the comment about overriding
__CTOR_LIST__ and __DTOR_LIST__ symbols.
* scripttemp/pep.sc: Likewise.
---
mingw-w64 will probably move to unconditionally provide these symbols
themselves, in order to improve compatibility with other linkers (lld).
The fact that the linker also provides them only causes double list
terminator elements; if the code iterating the list is prepared to
handle that case, it actually turns out to work fine.
---
ld/scripttempl/pe.sc | 10 ++++++----
ld/scripttempl/pep.sc | 10 ++++++----
2 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/ld/scripttempl/pe.sc b/ld/scripttempl/pe.sc
index f56d783ea03..3a2a331f681 100644
--- a/ld/scripttempl/pe.sc
+++ b/ld/scripttempl/pe.sc
@@ -106,10 +106,12 @@ SECTIONS
overridden and global constructors will not be run.
This does mean that it is not possible for a user to define
- their own __CTOR_LIST__ and __DTOR_LIST__ symbols. If that
- ability is needed a custom linker script will have to be
- used. (The custom script can just be a copy of this script
- with the PROVIDE() qualifiers added).
+ their own __CTOR_LIST__ and __DTOR_LIST__ symbols; if they do,
+ the content from those variables are included but the symbols
+ defined here silently take precedence. If they truly need to
+ redefined, a custom linker script will have to be used. (The
+ custom script can just be a copy of this script with the
+ PROVIDE() qualifiers added).
See PR 22762 for more details. */
___CTOR_LIST__ = .;
diff --git a/ld/scripttempl/pep.sc b/ld/scripttempl/pep.sc
index 3c6c84da9bf..fb88c144430 100644
--- a/ld/scripttempl/pep.sc
+++ b/ld/scripttempl/pep.sc
@@ -107,10 +107,12 @@ SECTIONS
overridden and global constructors will not be run.
This does mean that it is not possible for a user to define
- their own __CTOR_LIST__ and __DTOR_LIST__ symbols. If that
- ability is needed a custom linker script will have to be
- used. (The custom script can just be a copy of this script
- with the PROVIDE() qualifiers added).
+ their own __CTOR_LIST__ and __DTOR_LIST__ symbols; if they do,
+ the content from those variables are included but the symbols
+ defined here silently take precedence. If they truly need to
+ redefined, a custom linker script will have to be used. (The
+ custom script can just be a copy of this script with the
+ PROVIDE() qualifiers added).
See PR 22762 for more details. */
___CTOR_LIST__ = .;
--
2.15.2 (Apple Git-101.1)