From debf21c395e9a6adc179a2410c6a6aada216e07b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6ren=20Tempel?= Date: Sun, 29 Aug 2021 09:45:27 +0200 Subject: [PATCH] configure: fix detection of atomic builtins in libatomic configure script Alpine's --enable-autolink-libatomic (which is enabled for riscv64 by default) causes the libatomic configure script to incorrectly detect which builtins are available on riscv64. This then causes incorrect code generation for libatomic since it assumes compiler builtins to be available which are not actually available on riscv64. This commit fixes this issue by disabling linking of libatomic configure test code entirely, thereby preventing linking against libatomic. See: * https://gitlab.alpinelinux.org/alpine/aports/-/issues/12948 * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101996#c6 --- libatomic/configure.tgt | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/libatomic/configure.tgt b/libatomic/configure.tgt index 5dd0926d207..0b57a801e23 100644 --- a/libatomic/configure.tgt +++ b/libatomic/configure.tgt @@ -30,6 +30,26 @@ # on ${target_cpu}. For example to allow proper use of multilibs. configure_tgt_pre_target_cpu_XCFLAGS="${XCFLAGS}" +# The libatomic configure script performs several checks to determine +# whether builtins for atomic operations are available. When compiling +# with --enable-autolink-libatomic the test code compiled by the +# configure script is also linked against libatomic. This causes it +# to think that builtins are available, even if there are not, since +# the tested symbols are provided by libatomic. +# +# This is a hack to ensure that we don't link against libatomic by not +# linking any configure test code at all when --enable-autolink-libatomic +# is given. +# +# See: +# +# * https://gitlab.alpinelinux.org/alpine/aports/-/issues/12817 +# * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101996#c4 +# +if test x$enable_autolink_libatomic = xyes; then + gcc_no_link=yes +fi + case "${target_cpu}" in alpha*) # fenv.c needs this option to generate inexact exceptions. -- 2.33.0