public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Jonathan Wakely <jwakely@redhat.com>
To: Iain Sandoe <iain@sandoe.co.uk>
Cc: GCC Patches <GCC-patches@gcc.gnu.org>,
	libstdc++ <libstdc++@gcc.gnu.org>, Jeff Law <law@redhat.com>
Subject: Re: [PATCH 1,2] Darwin : Update libtool and dependencies for Darwin20 [PR97865]
Date: Tue, 24 Nov 2020 10:47:35 +0000	[thread overview]
Message-ID: <20201124104735.GB1312820@redhat.com> (raw)
In-Reply-To: <A28140B6-CD5F-4D35-9818-45587208A9AF@sandoe.co.uk>

On 23/11/20 20:01 +0000, Iain Sandoe wrote:
>Hi
>
>This fixes a blocker for x86_64 darwin20 (a.k.a macOS 11)
>It is needed on all open branches too.
>
>(probably this comes under my Dariwn hat - but since it involves
> regenerating all the configure scripts… I’d welcome another pair
> of eyes)
>
>tested on:
>darwin8-darwin20, powerpc, i686, x86_64, arm64(aarch64).
>aix (cfarm gcc119), aarch64 (cfarm gcc115), powerpc64 (BE) - (cfarm gcc110)
>powerpc64 (LE) - (cfarm gcc135), sparc solaris 2.11 (gcc211)
>x86_64-linux-gnu (cfarm gcc123)
>
>OK for master?
>
>OK for backports?
>
>thanks
>iain
>
>N.B. I am attaching the second patch which is the uninteresting 
>regenerated files.
>
>=====
>
>The change in major version (and the increment from Darwin19 to 20)
>caused libtool tests to fail which resulted in incorrect build settings
>for shared libraries.
>
>We take this opportunity to sort out the shared undefined symbols state
>rather than propagating the current unsound behaviour into a new rev.
>
>This change means that we default to the case that missing symbols are
>considered an error, and if one wants to allow this intentionally, the
>confiuration for that case should be set appropriately.
>
>We use intentional missing symbols to emulate the ELF behaviour when
>we have a weak undefined extern.
>
>So, three existing cases need undefined dynamic lookup:
> libitm, where there is already a configuration mechanism to add the
>         flags.
> libsanitizer, likewise
> libcc1, where we add simple configuration to add the flags for Darwin.
>
>libcc1/ChangeLog:
>
>	PR target/97865
>	* Makefile.am: Add dynamic_lookup to LD flags for Darwin.
>	* configure.ac: Test for Darwin host and set a flag.
>
>libitm/ChangeLog:
>
>	PR target/97865
>	* configure.tgt: Add dynamic_lookup to XLDFLAGS for Darwin.
>
>libsanitizer/ChangeLog:
>
>	PR target/97865
>	* configure.tgt: Add dynamic_lookup to EXTRA_CXXFLAGS for
>	Darwin.
>
>ChangeLog:
>
>	PR target/97865
>	* libtool.m4: Update handling of Darwin platform link flags
>	for Darwin20.
>
>
>---
> libcc1/Makefile.am         |  3 +++
> libcc1/configure.ac        |  6 ++++++
> libitm/configure.tgt       |  9 ++++++++-
> libsanitizer/configure.tgt |  1 +
> libtool.m4                 | 32 +++++++++++++++++---------------
> 5 files changed, 35 insertions(+), 16 deletions(-)
>
>diff --git a/libcc1/Makefile.am b/libcc1/Makefile.am
>index ab6f839ecae..173b84f9cdb 100644
>--- a/libcc1/Makefile.am
>+++ b/libcc1/Makefile.am
>@@ -25,6 +25,9 @@ CPPFLAGS_FOR_C_FAMILY = -I $(srcdir)/../gcc/c-family \
> CPPFLAGS_FOR_C = $(CPPFLAGS_FOR_C_FAMILY) -I $(srcdir)/../gcc/c
> CPPFLAGS_FOR_CXX = $(CPPFLAGS_FOR_C_FAMILY) -I $(srcdir)/../gcc/cp
> AM_CXXFLAGS = $(WARN_FLAGS) $(WERROR) $(visibility) $(CET_HOST_FLAGS)
>+if DARWIN_DYNAMIC_LOOKUP
>+AM_CXXFLAGS += -Wl,-undefined,dynamic_lookup
>+endif
> override CXXFLAGS := $(filter-out -fsanitize=address,$(CXXFLAGS))
> override LDFLAGS := $(filter-out -fsanitize=address,$(LDFLAGS))
> # Can be simplified when libiberty becomes a normal convenience library.
>diff --git a/libcc1/configure.ac b/libcc1/configure.ac
>index 8d3b8d14748..262e0a61e6f 100644
>--- a/libcc1/configure.ac
>+++ b/libcc1/configure.ac
>@@ -104,6 +104,12 @@ AC_CACHE_CHECK([for socket libraries], 
>libcc1_cv_lib_sockets,
> ])
> LIBS="$LIBS $libcc1_cv_lib_sockets"
>
>+case "$host" in
>+  *-*-darwin*) darwin_dynamic_lookup=yes ;;
>+  *) darwin_dynamic_lookup= ;;
>+esac
>+AM_CONDITIONAL(DARWIN_DYNAMIC_LOOKUP, test $darwin_dynamic_lookup = yes)
>+
> # If any of these functions are missing, simply don't bother building
> # this plugin.
> GCC_ENABLE_PLUGINS
>diff --git a/libitm/configure.tgt b/libitm/configure.tgt
>index 04109160e91..d1beb5c9ec8 100644
>--- a/libitm/configure.tgt
>+++ b/libitm/configure.tgt
>@@ -43,6 +43,7 @@ if test "$gcc_cv_have_tls" = yes ; then
>     *-*-linux*)
> 	XCFLAGS="${XCFLAGS} -ftls-model=initial-exec"
> 	;;
>+
>   esac
> fi
>
>@@ -144,10 +145,16 @@ case "${target}" in
>   *-*-gnu* | *-*-k*bsd*-gnu \
>   | *-*-netbsd* | *-*-freebsd* | *-*-openbsd* \
>   | *-*-solaris2* | *-*-sysv4* | *-*-hpux11* \
>-  | *-*-darwin* | *-*-aix* | *-*-dragonfly*)
>+  | *-*-aix* | *-*-dragonfly*)
> 	# POSIX system.  The OS is supported.
> 	;;
>
>+  *-*-darwin*)
>+	# The OS is supported, but we need dynamic lookup to support undefined
>+	# weak symbols at link-time.
>+	XLDFLAGS="${XLDFLAGS} -Wl,-undefined,dynamic_lookup"
>+	;;
>+
>   *)	# Non-POSIX, or embedded system
> 	UNSUPPORTED=1
> 	;;
>diff --git a/libsanitizer/configure.tgt b/libsanitizer/configure.tgt
>index ef9150209c4..f73d410dedf 100644
>--- a/libsanitizer/configure.tgt
>+++ b/libsanitizer/configure.tgt
>@@ -64,6 +64,7 @@ case "${target}" in
> 	;;
>   x86_64-*-darwin2* | x86_64-*-darwin1[2-9]* | i?86-*-darwin1[2-9]*)
> 	TSAN_SUPPORTED=no
>+	EXTRA_CXXFLAGS+="-Wl,-undefined,dynamic_lookup"
> 	;;
>   x86_64-*-solaris2.11* | i?86-*-solaris2.11*)
> 	;;
>diff --git a/libtool.m4 b/libtool.m4
>index e194e899fcf..9b14b9470df 100644
>--- a/libtool.m4
>+++ b/libtool.m4
>@@ -994,23 +994,25 @@ _LT_EOF
>         rm -f conftest.err libconftest.a conftest conftest.c
>         rm -rf conftest.dSYM
>     ])
>-    case $host_os in
>-    rhapsody* | darwin1.[[012]])
>+    # Allow for Darwin 4-7 (macOS 10.0-10.3) although these are not 
>expect to
>+    # build without first building modern cctools / linker.
>+    case $host_cpu-$host_os in
>+    *-rhapsody* | *-darwin1.[[012]])
>       _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
>-    darwin1.*)
>+    *-darwin1.*)
>       _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
>-    darwin*) # darwin 5.x on
>-      # if running on 10.5 or later, the deployment target defaults
>-      # to the OS version, if on x86, and 10.4, the deployment
>-      # target defaults to 10.4. Don't you love it?
>-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
>-	10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
>-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
>+    *-darwin*)
>+      # darwin 5.x (macoS 10.5) onwards we only adjust when the deployement

Typos "macoS" and "deployement".

Apart from that, I have no comment on it because darwin versioning
twists my melon.

The regenerated configure for libstdc++ is OK.


  reply	other threads:[~2020-11-24 10:47 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-23 20:01 Iain Sandoe
2020-11-24 10:47 ` Jonathan Wakely [this message]
2020-12-02 16:11   ` [PATCH 1, 2] " Iain Sandoe
2020-12-18 19:28     ` [committed] libcc1: Fix up libcc1 configure [PR98330] Jakub Jelinek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201124104735.GB1312820@redhat.com \
    --to=jwakely@redhat.com \
    --cc=GCC-patches@gcc.gnu.org \
    --cc=iain@sandoe.co.uk \
    --cc=law@redhat.com \
    --cc=libstdc++@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).