From 491cf3178f718e48d71a54e50475e37dd831a51d Mon Sep 17 00:00:00 2001 From: Tsukasa OI Date: Sat, 10 Sep 2022 17:08:13 +0000 Subject: [PATCH] bfd: Stop using -Wstack-usage=262144 when built with Clang Some components of GNU Binutils will pass "-Wstack-usage=262144" when "GCC >= 5.0" is detected. However, Clang does not support "-Wstack-usage", despite that related configuration part in bfd/warning.m4 handles the latest Clang (15.0.0 as of this writing) as "GCC >= 5.0". The option "-Wstack-usage" was ignored when the first version of Clang is released but even this "ignoring" behavior is removed before Clang 4.0.0. So, if we give Clang "-Wstack-usage=262144", it generates a warning, making the build failure. This commit checks "__clang__" macro to prevent adding the option if the compiler is identified as Clang. bfd/ChangeLog: * warning.m4: Stop appending "-Wstack-usage=262144" option when compiled with Clang. * configure: Regenerate. binutils/ChangeLog: * configure: Regenerate. gas/ChangeLog: * configure: Regenerate. gold/ChangeLog: * configure: Regenerate. gprof/ChangeLog: * configure: Regenerate. ld/ChangeLog: * configure: Regenerate. opcodes/ChangeLog: * configure: Regenerate. --- bfd/configure | 18 ++++++++++++++++++ bfd/warning.m4 | 6 ++++-- binutils/configure | 18 ++++++++++++++++++ gas/configure | 18 ++++++++++++++++++ gold/configure | 18 ++++++++++++++++++ gprof/configure | 18 ++++++++++++++++++ ld/configure | 18 ++++++++++++++++++ opcodes/configure | 18 ++++++++++++++++++ 8 files changed, 130 insertions(+), 2 deletions(-) diff --git a/bfd/configure b/bfd/configure index 6afdce94fe8..075d2ee0a1b 100755 --- a/bfd/configure +++ b/bfd/configure @@ -12093,10 +12093,19 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "(^[0-4]$|^__GNUC__$)" >/dev/null 2>&1; then : else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +__clang__ +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "^__clang__$" >/dev/null 2>&1; then : GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wstack-usage=262144" fi rm -f conftest* +fi +rm -f conftest* + # Set WARN_WRITE_STRINGS if the compiler supports -Wwrite-strings. WARN_WRITE_STRINGS="" @@ -12138,10 +12147,19 @@ if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | $EGREP "(^[0-4]$|^__GNUC__$)" >/dev/null 2>&1; then : else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +__clang__ +_ACEOF +if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | + $EGREP "^__clang__$" >/dev/null 2>&1; then : GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wstack-usage=262144" fi rm -f conftest* +fi +rm -f conftest* + # Check whether --enable-werror was given. if test "${enable_werror+set}" = set; then : diff --git a/bfd/warning.m4 b/bfd/warning.m4 index 6f3e190b81c..0435c664472 100644 --- a/bfd/warning.m4 +++ b/bfd/warning.m4 @@ -50,7 +50,8 @@ GCC_WARN_CFLAGS_FOR_BUILD="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" AC_EGREP_CPP([(^[0-3]$|^__GNUC__$)],[__GNUC__],,GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wshadow") # Add -Wstack-usage if the compiler is a sufficiently recent version of GCC. -AC_EGREP_CPP([(^[0-4]$|^__GNUC__$)],[__GNUC__],,GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wstack-usage=262144") +AC_EGREP_CPP([(^[0-4]$|^__GNUC__$)],[__GNUC__],,dnl +[AC_EGREP_CPP([^__clang__$],[__clang__],[GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wstack-usage=262144"],)]) # Set WARN_WRITE_STRINGS if the compiler supports -Wwrite-strings. WARN_WRITE_STRINGS="" @@ -62,7 +63,8 @@ AC_EGREP_CPP([(^[0-3]$|^__GNUC__$)],[__GNUC__],,WARN_WRITE_STRINGS="-Wwrite-stri AC_EGREP_CPP_FOR_BUILD([(^[0-3]$|^__GNUC__$)],[__GNUC__],,GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wshadow") # Add -Wstack-usage if the compiler is a sufficiently recent version of GCC. -AC_EGREP_CPP_FOR_BUILD([(^[0-4]$|^__GNUC__$)],[__GNUC__],,GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wstack-usage=262144") +AC_EGREP_CPP_FOR_BUILD([(^[0-4]$|^__GNUC__$)],[__GNUC__],,dnl +[AC_EGREP_CPP_FOR_BUILD([^__clang__$],[__clang__],[GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wstack-usage=262144"],)]) AC_ARG_ENABLE(werror, [ --enable-werror treat compile warnings as errors], diff --git a/binutils/configure b/binutils/configure index 542c832be18..1c518227f57 100755 --- a/binutils/configure +++ b/binutils/configure @@ -11932,10 +11932,19 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "(^[0-4]$|^__GNUC__$)" >/dev/null 2>&1; then : else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +__clang__ +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "^__clang__$" >/dev/null 2>&1; then : GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wstack-usage=262144" fi rm -f conftest* +fi +rm -f conftest* + # Set WARN_WRITE_STRINGS if the compiler supports -Wwrite-strings. WARN_WRITE_STRINGS="" @@ -11977,10 +11986,19 @@ if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | $EGREP "(^[0-4]$|^__GNUC__$)" >/dev/null 2>&1; then : else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +__clang__ +_ACEOF +if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | + $EGREP "^__clang__$" >/dev/null 2>&1; then : GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wstack-usage=262144" fi rm -f conftest* +fi +rm -f conftest* + # Check whether --enable-werror was given. if test "${enable_werror+set}" = set; then : diff --git a/gas/configure b/gas/configure index 97bcf62ec3d..d0449a1d7ab 100755 --- a/gas/configure +++ b/gas/configure @@ -11588,10 +11588,19 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "(^[0-4]$|^__GNUC__$)" >/dev/null 2>&1; then : else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +__clang__ +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "^__clang__$" >/dev/null 2>&1; then : GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wstack-usage=262144" fi rm -f conftest* +fi +rm -f conftest* + # Set WARN_WRITE_STRINGS if the compiler supports -Wwrite-strings. WARN_WRITE_STRINGS="" @@ -11633,10 +11642,19 @@ if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | $EGREP "(^[0-4]$|^__GNUC__$)" >/dev/null 2>&1; then : else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +__clang__ +_ACEOF +if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | + $EGREP "^__clang__$" >/dev/null 2>&1; then : GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wstack-usage=262144" fi rm -f conftest* +fi +rm -f conftest* + # Check whether --enable-werror was given. if test "${enable_werror+set}" = set; then : diff --git a/gold/configure b/gold/configure index 84c413fecd2..85f62a92fcd 100755 --- a/gold/configure +++ b/gold/configure @@ -7938,10 +7938,19 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "(^[0-4]$|^__GNUC__$)" >/dev/null 2>&1; then : else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +__clang__ +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "^__clang__$" >/dev/null 2>&1; then : GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wstack-usage=262144" fi rm -f conftest* +fi +rm -f conftest* + # Set WARN_WRITE_STRINGS if the compiler supports -Wwrite-strings. WARN_WRITE_STRINGS="" @@ -7983,10 +7992,19 @@ if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | $EGREP "(^[0-4]$|^__GNUC__$)" >/dev/null 2>&1; then : else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +__clang__ +_ACEOF +if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | + $EGREP "^__clang__$" >/dev/null 2>&1; then : GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wstack-usage=262144" fi rm -f conftest* +fi +rm -f conftest* + # Check whether --enable-werror was given. if test "${enable_werror+set}" = set; then : diff --git a/gprof/configure b/gprof/configure index b4001641d2d..cb150353050 100755 --- a/gprof/configure +++ b/gprof/configure @@ -11890,10 +11890,19 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "(^[0-4]$|^__GNUC__$)" >/dev/null 2>&1; then : else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +__clang__ +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "^__clang__$" >/dev/null 2>&1; then : GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wstack-usage=262144" fi rm -f conftest* +fi +rm -f conftest* + # Set WARN_WRITE_STRINGS if the compiler supports -Wwrite-strings. WARN_WRITE_STRINGS="" @@ -11935,10 +11944,19 @@ if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | $EGREP "(^[0-4]$|^__GNUC__$)" >/dev/null 2>&1; then : else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +__clang__ +_ACEOF +if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | + $EGREP "^__clang__$" >/dev/null 2>&1; then : GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wstack-usage=262144" fi rm -f conftest* +fi +rm -f conftest* + # Check whether --enable-werror was given. if test "${enable_werror+set}" = set; then : diff --git a/ld/configure b/ld/configure index 1c2b64870b1..a1a07005400 100755 --- a/ld/configure +++ b/ld/configure @@ -15855,10 +15855,19 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "(^[0-4]$|^__GNUC__$)" >/dev/null 2>&1; then : else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +__clang__ +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "^__clang__$" >/dev/null 2>&1; then : GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wstack-usage=262144" fi rm -f conftest* +fi +rm -f conftest* + # Set WARN_WRITE_STRINGS if the compiler supports -Wwrite-strings. WARN_WRITE_STRINGS="" @@ -15900,10 +15909,19 @@ if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | $EGREP "(^[0-4]$|^__GNUC__$)" >/dev/null 2>&1; then : else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +__clang__ +_ACEOF +if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | + $EGREP "^__clang__$" >/dev/null 2>&1; then : GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wstack-usage=262144" fi rm -f conftest* +fi +rm -f conftest* + # Check whether --enable-werror was given. if test "${enable_werror+set}" = set; then : diff --git a/opcodes/configure b/opcodes/configure index a5951b9b362..08c57a33855 100755 --- a/opcodes/configure +++ b/opcodes/configure @@ -11445,10 +11445,19 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "(^[0-4]$|^__GNUC__$)" >/dev/null 2>&1; then : else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +__clang__ +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "^__clang__$" >/dev/null 2>&1; then : GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wstack-usage=262144" fi rm -f conftest* +fi +rm -f conftest* + # Set WARN_WRITE_STRINGS if the compiler supports -Wwrite-strings. WARN_WRITE_STRINGS="" @@ -11490,10 +11499,19 @@ if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | $EGREP "(^[0-4]$|^__GNUC__$)" >/dev/null 2>&1; then : else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +__clang__ +_ACEOF +if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | + $EGREP "^__clang__$" >/dev/null 2>&1; then : GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wstack-usage=262144" fi rm -f conftest* +fi +rm -f conftest* + # Check whether --enable-werror was given. if test "${enable_werror+set}" = set; then : -- 2.30.2