diff options
author | Szabolcs Nagy <szabolcs.nagy@arm.com> | 2019-11-18 12:08:18 +0000 |
---|---|---|
committer | Szabolcs Nagy <nsz@gcc.gnu.org> | 2019-11-18 12:08:18 +0000 |
commit | 3d3a96a26eff2367d6573b30683c3c2945f443eb (patch) | |
tree | 67fc6ffa1a2f35921c1fb325578745a85b746db3 | |
parent | 8d7be8d614ba028074597c3ab1ee12d9495fde09 (diff) | |
download | gcc-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
-rw-r--r-- | libgcc/ChangeLog | 5 | ||||
-rw-r--r-- | libgcc/config.host | 7 | ||||
-rw-r--r-- | libgcc/config/t-gthr-noweak | 2 |
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 |