This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] ld: Improve the comment about overriding __CTOR_LIST__ for mingw targets


Hi Nick,

You handled this matter earlier (the original commit from last year and the later revert with a warning comment in the linker script) - can you comment on this patch that tries to clarify the comment?

// Martin

On Fri, 3 Aug 2018, Martin Storsjo wrote:

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)




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]