[PATCH] Silence clang -Wignored-attributes when building with clang

Matt Turner mattst88@gmail.com
Sun Jul 26 04:27:46 GMT 2026


Building glibc with clang trips -Wignored-attributes on the alias
redirections glibc uses intentionally, e.g. the long_double_symbol
machinery where a public name aliases a weak alias of an internal
symbol.

Detect whether CC is clang (cc-clang) and add -Wno-ignored-attributes
to the warning flags.
---
 Makeconfig   |  4 ++++
 configure    | 29 +++++++++++++++++++++++++++++
 configure.ac |  9 +++++++++
 3 files changed, 42 insertions(+)

diff --git ./Makeconfig ./Makeconfig
index 8fe7217dd7..4c34e59aed 100644
--- ./Makeconfig
+++ ./Makeconfig
@@ -908,6 +908,10 @@ endif
 ifeq ($(enable-werror),yes)
 +gccwarn += -Werror
 endif
+# Clang warns on the intentional alias redirections (e.g. long_double_symbol).
+ifeq ($(cc-clang),yes)
++gccwarn += -Wno-ignored-attributes
+endif
 +gccwarn-c = -Wstrict-prototypes -Wold-style-definition \
   $(cc-option-wfree-labels) $(cc-option-wmissing-parameter-name)
 
diff --git ./configure ./configure
index 90c4b4f858..fbe8e4ac30 100755
--- ./configure
+++ ./configure
@@ -6031,6 +6031,35 @@ config_vars="$config_vars
 have-test-clang = $libc_cv_test_clang"
 
 
+cat > conftest.c <<EOF
+$conftest_code
+EOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether CC is clang" >&5
+printf %s "checking whether CC is clang... " >&6; }
+if test ${libc_cv_cc_clang+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e)   if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c -o conftest 1>&5'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }
+  then
+    libc_cv_cc_clang=yes
+  else
+    libc_cv_cc_clang=no
+  fi ;;
+esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_clang" >&5
+printf "%s\n" "$libc_cv_cc_clang" >&6; }
+rm -f conftest*
+config_vars="$config_vars
+cc-clang = $libc_cv_cc_clang"
+
+
 cat > conftest.cc <<EOF
 $conftest_code
 EOF
diff --git ./configure.ac ./configure.ac
index 2a788c13b7..0d81a6e7a0 100644
--- ./configure.ac
+++ ./configure.ac
@@ -651,6 +651,15 @@ LIBC_TRY_TEST_CC_COMMAND([for clang],
 )
 LIBC_CONFIG_VAR([have-test-clang], [$libc_cv_test_clang])
 
+dnl Check whether the library itself is built with clang (CC).
+LIBC_TRY_CC_COMMAND([whether CC is clang],
+  [$conftest_code],
+  [-c],
+  libc_cv_cc_clang,
+  [libc_cv_cc_clang=yes], [libc_cv_cc_clang=no],
+)
+LIBC_CONFIG_VAR([cc-clang], [$libc_cv_cc_clang])
+
 dnl Check if clang++ is used to test glibc.
 LIBC_TRY_TEST_CXX_COMMAND([for clang++],
   [$conftest_code],
-- 
2.54.0



More information about the Libc-alpha mailing list