diff mbox series

Fix 87380.

Message ID E3B13999-0BAB-4DE8-8785-025F48831C7F@sandoe.co.uk
State New
Headers show
Series Fix 87380. | expand

Commit Message

Iain Sandoe Nov. 27, 2018, 9:16 p.m. UTC
Hi

This is [intentionally] broken C++ ABI, that was catering for a tool problem that existed in a very old Darwin toolchain.

I checked that the issue is not present after Darwin7 (using default Xcode tools).  Of course, more modern tools are probably required to build trunk GCC for Darwin7, but somehow I doubt anyone has time to try that…

anyway, this is long-standing breakage on all open branches.

NOTE: re comment #18 in the PR, rs6000/darwin7.h is included after the generic header darwin.h, and thus it is sufficient to cover the case there.

OK for trunk?

open branches?

Iain

gcc/

 	* gcc/config/darwin.h (TARGET_WEAK_NOT_IN_ARCHIVE_TOC):
	Set to 0. Update comment.
	* gcc/config/rs6000/darwin7.h (TARGET_WEAK_NOT_IN_ARCHIVE_TOC): New.

Comments

Jeff Law Nov. 27, 2018, 10:43 p.m. UTC | #1
On 11/27/18 2:16 PM, Iain Sandoe wrote:
> Hi
> 
> This is [intentionally] broken C++ ABI, that was catering for a tool problem that existed in a very old Darwin toolchain.
> 
> I checked that the issue is not present after Darwin7 (using default Xcode tools).  Of course, more modern tools are probably required to build trunk GCC for Darwin7, but somehow I doubt anyone has time to try that…
> 
> anyway, this is long-standing breakage on all open branches.
> 
> NOTE: re comment #18 in the PR, rs6000/darwin7.h is included after the generic header darwin.h, and thus it is sufficient to cover the case there.
> 
> OK for trunk?
> 
> open branches?
> 
> Iain
> 
> gcc/
> 
>  	* gcc/config/darwin.h (TARGET_WEAK_NOT_IN_ARCHIVE_TOC):
> 	Set to 0. Update comment.
> 	* gcc/config/rs6000/darwin7.h (TARGET_WEAK_NOT_IN_ARCHIVE_TOC): New.
You know the Darwin situation better than just about anyone.  So if you
think it's the right thing to do, then go for it.

jeff
diff mbox series

Patch

diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h
index 87f610259c..974eb9fbf6 100644
--- a/gcc/config/darwin.h
+++ b/gcc/config/darwin.h
@@ -511,10 +511,9 @@  extern GTY(()) int darwin_ms_struct;
    links to, so there's no need for weak-ness for that.  */
 #define GTHREAD_USE_WEAK 0
 
-/* The Darwin linker doesn't want coalesced symbols to appear in
-   a static archive's table of contents. */
+/* Modern Darwin toolchains export weak symbols from archive TOCs. */
 #undef TARGET_WEAK_NOT_IN_ARCHIVE_TOC
-#define TARGET_WEAK_NOT_IN_ARCHIVE_TOC 1
+#define TARGET_WEAK_NOT_IN_ARCHIVE_TOC 0
 
 /* On Darwin, we don't (at the time of writing) have linkonce sections
    with names, so it's safe to make the class data not comdat.  */
diff --git a/gcc/config/rs6000/darwin7.h b/gcc/config/rs6000/darwin7.h
index d35b65d699..85ea18e53e 100644
--- a/gcc/config/rs6000/darwin7.h
+++ b/gcc/config/rs6000/darwin7.h
@@ -28,5 +28,10 @@  along with GCC; see the file COPYING3.  If not see
   %:version-compare(!< 10.3 mmacosx-version-min= -lmx)\
   -lSystem}"
 
+/* This generation of tools (specifically the archive tool) did not
+   export weak symbols from the TOC. */
+#undef TARGET_WEAK_NOT_IN_ARCHIVE_TOC
+#define TARGET_WEAK_NOT_IN_ARCHIVE_TOC 1
+
 #undef DEF_MIN_OSX_VERSION
 #define DEF_MIN_OSX_VERSION "10.3.9"