From 4baaeb9661fa4015d9701e3616ce1ad4e8a07fd8 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 33f8c91ce77..3999db2cf8a 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.