Message ID | E3B13999-0BAB-4DE8-8785-025F48831C7F@sandoe.co.uk |
---|---|
State | New |
Headers | show |
Series | Fix 87380. | expand |
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 --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"