aboutsummaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorSzabolcs Nagy <szabolcs.nagy@arm.com>2019-11-18 12:08:18 +0000
committerSzabolcs Nagy <nsz@gcc.gnu.org>2019-11-18 12:08:18 +0000
commit3d3a96a26eff2367d6573b30683c3c2945f443eb (patch)
tree67fc6ffa1a2f35921c1fb325578745a85b746db3 /libgcc
parent8d7be8d614ba028074597c3ab1ee12d9495fde09 (diff)
downloadgcc-3d3a96a26eff2367d6573b30683c3c2945f443eb.zip
gcc-3d3a96a26eff2367d6573b30683c3c2945f443eb.tar.gz
gcc-3d3a96a26eff2367d6573b30683c3c2945f443eb.tar.bz2
musl: Don't use gthr weak refs in libgcc PR91737
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
Diffstat (limited to 'libgcc')
-rw-r--r--libgcc/ChangeLog5
-rw-r--r--libgcc/config.host7
-rw-r--r--libgcc/config/t-gthr-noweak2
3 files changed, 14 insertions, 0 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 16e5696..f7fc821 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -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
diff --git a/libgcc/config.host b/libgcc/config.host
index 3035168..bc3e497 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -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
index 0000000..45a21e9
--- /dev/null
+++ b/libgcc/config/t-gthr-noweak
@@ -0,0 +1,2 @@
+# Don't use weak references for single-thread detection
+HOST_LIBGCC2_CFLAGS += -DGTHREAD_USE_WEAK=0