diff --git a/INSTALL b/INSTALL index a56179a9c9..d3200f271f 100644 --- a/INSTALL +++ b/INSTALL @@ -488,31 +488,14 @@ build the GNU C Library: As of release time, GNU 'make' 4.4.1 is the newest verified to work to build the GNU C Library. - * GCC 6.2 or newer + * GCC 12.1 or newer - GCC 6.2 or higher is required. In general it is recommended to use - the newest version of the compiler that is known to work for + GCC 12.1 or higher is required. In general it is recommended to + use the newest version of the compiler that is known to work for building the GNU C Library, as newer compilers usually produce better code. As of release time, GCC 14.2.1 is the newest compiler verified to work to build the GNU C Library. - For PowerPC 64-bits little-endian (powerpc64le), a GCC version with - support for '-mno-gnu-attribute', '-mabi=ieeelongdouble', and - '-mabi=ibmlongdouble' is required. Likewise, the compiler must - also support passing '-mlong-double-128' with the preceding - options. As of release, this implies GCC 7.4 and newer (excepting - GCC 7.5.0, see GCC PR94200). These additional features are - required for building the GNU C Library with support for IEEE long - double. - - For ARC architecture builds, GCC 8.3 or higher is needed. - - For s390x architecture builds, GCC 7.1 or higher is needed (See gcc - Bug 98269). - - For AArch64 architecture builds with mathvec enabled, GCC 10 or - higher is needed due to dependency on arm_sve.h. - For multi-arch support it is recommended to use a GCC which has been built with support for GNU indirect functions. This ensures that correct debugging information is generated for functions diff --git a/configure b/configure index d11dcf97c5..7cda641fce 100755 --- a/configure +++ b/configure @@ -5764,6 +5764,7 @@ if test $ac_verc_fail = yes; then fi +# Require GCC 12.1 to build. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC is sufficient to build libc" >&5 printf %s "checking if $CC is sufficient to build libc... " >&6; } if test ${libc_cv_compiler_ok+y} @@ -5778,7 +5779,7 @@ int main (void) { -#if !defined __GNUC__ || __GNUC__ < 6 || (__GNUC__ == 6 && __GNUC_MINOR__ < 2) +#if !defined __GNUC__ || __GNUC__ < 12 || (__GNUC__ == 12 && __GNUC_MINOR__ < 1) #error insufficient compiler #endif ; diff --git a/configure.ac b/configure.ac index d068bb5082..0b0d8875cc 100644 --- a/configure.ac +++ b/configure.ac @@ -573,9 +573,10 @@ AC_CHECK_PROG_VER(BISON, bison, --version, [bison (GNU Bison) \([0-9]*\.[0-9.]*\)], [2.7*|[3-9].*|[1-9][0-9]*], critic_missing="$critic_missing bison") +# Require GCC 12.1 to build. AC_CACHE_CHECK([if $CC is sufficient to build libc], libc_cv_compiler_ok, [ AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[]], [[ -#if !defined __GNUC__ || __GNUC__ < 6 || (__GNUC__ == 6 && __GNUC_MINOR__ < 2) +#if !defined __GNUC__ || __GNUC__ < 12 || (__GNUC__ == 12 && __GNUC_MINOR__ < 1) #error insufficient compiler #endif]])], [libc_cv_compiler_ok=yes], diff --git a/manual/install.texi b/manual/install.texi index d001e8220b..7fcdda9146 100644 --- a/manual/install.texi +++ b/manual/install.texi @@ -530,32 +530,14 @@ As of release time, GNU @code{make} 4.4.1 is the newest verified to work to build @theglibc{}. @item -GCC 6.2 or newer +GCC 12.1 or newer -GCC 6.2 or higher is required. In general it is recommended to use +GCC 12.1 or higher is required. In general it is recommended to use the newest version of the compiler that is known to work for building @theglibc{}, as newer compilers usually produce better code. As of release time, GCC 14.2.1 is the newest compiler verified to work to build @theglibc{}. -For PowerPC 64-bits little-endian (powerpc64le), a GCC version with support -for @option{-mno-gnu-attribute}, @option{-mabi=ieeelongdouble}, and -@option{-mabi=ibmlongdouble} is required. Likewise, the compiler must also -support passing @option{-mlong-double-128} with the preceding options. As -of release, this implies GCC 7.4 and newer (excepting GCC 7.5.0, see GCC -PR94200). These additional features are required for building the GNU C -Library with support for IEEE long double. - -@c powerpc64le performs an autoconf test to verify the compiler compiles with -@c commands like "$CC -c foo.c -mabi=ibmlongdouble -mlong-double-128". - -For ARC architecture builds, GCC 8.3 or higher is needed. - -For s390x architecture builds, GCC 7.1 or higher is needed (See gcc Bug 98269). - -For AArch64 architecture builds with mathvec enabled, GCC 10 or higher is needed -due to dependency on arm_sve.h. - For multi-arch support it is recommended to use a GCC which has been built with support for GNU indirect functions. This ensures that correct debugging information is generated for functions selected by IFUNC resolvers. This diff --git a/sysdeps/s390/configure b/sysdeps/s390/configure index 67c3755c16..97f52524fb 100644 --- a/sysdeps/s390/configure +++ b/sysdeps/s390/configure @@ -309,46 +309,6 @@ then fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC is sufficient to build libc on s390x" >&5 -printf %s "checking if $CC is sufficient to build libc on s390x... " >&6; } -if test ${libc_cv_compiler_ok_on_s390x+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - -#if !defined __GNUC__ || __GNUC__ < 7 || (__GNUC__ == 7 && __GNUC_MINOR__ < 1) -#error insufficient compiler for building on s390x -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - libc_cv_compiler_ok_on_s390x=yes -else case e in #( - e) libc_cv_compiler_ok_on_s390x=no ;; -esac -fi -rm -f conftest.err conftest.i conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_compiler_ok_on_s390x" >&5 -printf "%s\n" "$libc_cv_compiler_ok_on_s390x" >&6; } -if test "$libc_cv_compiler_ok_on_s390x" != yes; then - critic_missing="$critic_missing On s390x, GCC >= 7.1.0 is required." -fi - test -n "$critic_missing" && as_fn_error $? " *** $critic_missing" "$LINENO" 5 diff --git a/sysdeps/s390/configure.ac b/sysdeps/s390/configure.ac index 89c3e5b211..496866b850 100644 --- a/sysdeps/s390/configure.ac +++ b/sysdeps/s390/configure.ac @@ -161,23 +161,5 @@ then AC_DEFINE(HAVE_S390_MIN_ARCH13_ZARCH_ASM_SUPPORT) fi - -dnl test if GCC is new enough. See gcc "Bug 98269 - gcc 6.5.0 -dnl __builtin_add_overflow() with small uint32_t values incorrectly detects -dnl overflow -dnl (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98269) -AC_CACHE_CHECK([if $CC is sufficient to build libc on s390x], -libc_cv_compiler_ok_on_s390x, [ -AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[]], [[ -#if !defined __GNUC__ || __GNUC__ < 7 || (__GNUC__ == 7 && __GNUC_MINOR__ < 1) -#error insufficient compiler for building on s390x -#endif -]])], - [libc_cv_compiler_ok_on_s390x=yes], - [libc_cv_compiler_ok_on_s390x=no])]) -if test "$libc_cv_compiler_ok_on_s390x" != yes; then - critic_missing="$critic_missing On s390x, GCC >= 7.1.0 is required." -fi - test -n "$critic_missing" && AC_MSG_ERROR([ *** $critic_missing]) diff --git a/sysdeps/unix/sysv/linux/powerpc/configure b/sysdeps/unix/sysv/linux/powerpc/configure index 61ae675c1a..6fa7589530 100644 --- a/sysdeps/unix/sysv/linux/powerpc/configure +++ b/sysdeps/unix/sysv/linux/powerpc/configure @@ -1,89 +1,6 @@ # This file is generated from configure.ac by Autoconf. DO NOT EDIT! # Local configure fragment for sysdeps/unix/sysv/linux/powerpc/. - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC $CFLAGS -mlong-double-128 uses IBM extended format" >&5 -printf %s "checking whether $CC $CFLAGS -mlong-double-128 uses IBM extended format... " >&6; } -if test ${libc_cv_mlong_double_128ibm+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) save_CFLAGS="$CFLAGS" -CFLAGS="$CFLAGS -mlong-double-128" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <float.h> -int -main (void) -{ - -#if LDBL_MANT_DIG != 106 -# error "compiler doesn't implement IBM extended format of long double" -#endif -long double foobar (long double x) { return x; } - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - libc_cv_mlong_double_128ibm=yes -else case e in #( - e) libc_cv_mlong_double_128ibm=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -CFLAGS="$save_CFLAGS" ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mlong_double_128ibm" >&5 -printf "%s\n" "$libc_cv_mlong_double_128ibm" >&6; } - -if test "$libc_cv_mlong_double_128ibm" = no; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC $CFLAGS supports -mabi=ibmlongdouble" >&5 -printf %s "checking whether $CC $CFLAGS supports -mabi=ibmlongdouble... " >&6; } -if test ${libc_cv_mabi_ibmlongdouble+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -mlong-double-128 -mabi=ibmlongdouble" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <float.h> -int -main (void) -{ - -#if LDBL_MANT_DIG != 106 -# error "compiler doesn't implement IBM extended format of long double" -#endif -long double foobar (long double x) { return x; } - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - libc_cv_mabi_ibmlongdouble=yes -else case e in #( - e) libc_cv_mabi_ibmlongdouble=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS="$save_CFLAGS" ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mabi_ibmlongdouble" >&5 -printf "%s\n" "$libc_cv_mabi_ibmlongdouble" >&6; } - - if test "$libc_cv_mabi_ibmlongdouble" = yes; then - CFLAGS="$CFLAGS -mabi=ibmlongdouble" - else - as_fn_error $? "this configuration requires -mlong-double-128 IBM extended format support" "$LINENO" 5 - fi -fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for linker that supports --no-tls-get-addr-optimize" >&5 printf %s "checking for linker that supports --no-tls-get-addr-optimize... " >&6; } libc_linker_feature=no diff --git a/sysdeps/unix/sysv/linux/powerpc/configure.ac b/sysdeps/unix/sysv/linux/powerpc/configure.ac index 8d2ec60f68..bcf0c62442 100644 --- a/sysdeps/unix/sysv/linux/powerpc/configure.ac +++ b/sysdeps/unix/sysv/linux/powerpc/configure.ac @@ -2,40 +2,6 @@ sinclude(./aclocal.m4)dnl Autoconf lossage GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. # Local configure fragment for sysdeps/unix/sysv/linux/powerpc/. -AC_CACHE_CHECK(whether $CC $CFLAGS -mlong-double-128 uses IBM extended format, - libc_cv_mlong_double_128ibm, [dnl -save_CFLAGS="$CFLAGS" -CFLAGS="$CFLAGS -mlong-double-128" -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <float.h>]], [[ -#if LDBL_MANT_DIG != 106 -# error "compiler doesn't implement IBM extended format of long double" -#endif -long double foobar (long double x) { return x; }]])], - libc_cv_mlong_double_128ibm=yes, - libc_cv_mlong_double_128ibm=no) -CFLAGS="$save_CFLAGS"]) - -if test "$libc_cv_mlong_double_128ibm" = no; then - AC_CACHE_CHECK(whether $CC $CFLAGS supports -mabi=ibmlongdouble, - libc_cv_mabi_ibmlongdouble, [dnl - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -mlong-double-128 -mabi=ibmlongdouble" - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <float.h>]], [[ -#if LDBL_MANT_DIG != 106 -# error "compiler doesn't implement IBM extended format of long double" -#endif -long double foobar (long double x) { return x; }]])], - libc_cv_mabi_ibmlongdouble=yes, - libc_cv_mabi_ibmlongdouble=no) - CFLAGS="$save_CFLAGS"]) - - if test "$libc_cv_mabi_ibmlongdouble" = yes; then - CFLAGS="$CFLAGS -mabi=ibmlongdouble" - else - AC_MSG_ERROR([this configuration requires -mlong-double-128 IBM extended format support]) - fi -fi - LIBC_LINKER_FEATURE([--no-tls-get-addr-optimize], [-Wl,--no-tls-get-addr-optimize], [libc_cv_tls_get_addr_optimize=yes], [libc_cv_tls_get_addr_optimize=no]) LIBC_CONFIG_VAR([have-tls-get-addr-optimize], [$libc_cv_tls_get_addr_optimize])