musl: Don't use gthr weak refs in libgcc PR91737
authorSzabolcs Nagy <szabolcs.nagy@arm.com>
Mon, 18 Nov 2019 12:08:18 +0000 (12:08 +0000)
committerSzabolcs Nagy <nsz@gcc.gnu.org>
Mon, 18 Nov 2019 12:08:18 +0000 (12:08 +0000)
The gthr weak reference based single thread detection is unsafe with
static linking and in case of dynamic linking it's ineffective on musl
since pthread symbols are defined in libc.so.

(Ideally this should be fixed for all targets, since glibc plans to move
libpthread.so into libc.so too and users want to static link to pthread
without --whole-archive: PR87189.)

For now we have to explicitly opt out from the broken behaviour in the
config machinery of each target lib and libgcc was previously missed.

libgcc/ChangeLog:

2019-11-18  Szabolcs Nagy  <szabolcs.nagy@arm.com>

* config.host: Add t-gthr-noweak on *-*-musl*.
* config/t-gthr-noweak: New file.

From-SVN: r278399

libgcc/ChangeLog
libgcc/config.host
libgcc/config/t-gthr-noweak [new file with mode: 0644]

index 16e56967ce8ab51cd5a441a59a0b9f20014584f8..f7fc8214ffd77ab9c983461b201b8ff996d21f20 100644 (file)
@@ -1,3 +1,8 @@
+2019-11-18  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+
+       * config.host: Add t-gthr-noweak on *-*-musl*.
+       * config/t-gthr-noweak: New file.
+
 2019-11-17  John David Anglin  <danglin@gcc.gnu.org>
 
        * config/pa/linux-atomic.c (__kernel_cmpxchg): Change argument 1 to
index 303516879cd1257901d1086ee3543d55d334bc11..bc3e497739f84946bba11bc256434229b43a3055 100644 (file)
@@ -1531,3 +1531,10 @@ vxworks)
                ;;
        esac
 esac
+
+case ${host} in
+*-*-musl*)
+  # The gthr weak references are unsafe with static linking
+  tmake_file="$tmake_file t-gthr-noweak"
+  ;;
+esac
diff --git a/libgcc/config/t-gthr-noweak b/libgcc/config/t-gthr-noweak
new file mode 100644 (file)
index 0000000..45a21e9
--- /dev/null
@@ -0,0 +1,2 @@
+# Don't use weak references for single-thread detection
+HOST_LIBGCC2_CFLAGS += -DGTHREAD_USE_WEAK=0