From: Sam James Date: Tue, 1 Apr 2025 20:56:52 +0000 (+0100) Subject: sysdeps: powerpc: restore -mlong-double-128 check X-Git-Tag: glibc-2.42~329 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e8514ac7aaf1bd0cf791dbdac0b2584ef3c42e98;p=thirdparty%2Fglibc.git sysdeps: powerpc: restore -mlong-double-128 check We mistakenly dropped the check in 27b96e069aad17cefea9437542180bff448ac3a0; there's some other checks which we *can* drop, but let's worry about that later. Fixes the build on ppc64le where GCC is configured with --with-long-double-format=ieee. Reviewed-by: Andreas Schwab --- diff --git a/sysdeps/unix/sysv/linux/powerpc/configure b/sysdeps/unix/sysv/linux/powerpc/configure index 6fa7589530..61ae675c1a 100644 --- a/sysdeps/unix/sysv/linux/powerpc/configure +++ b/sysdeps/unix/sysv/linux/powerpc/configure @@ -1,6 +1,89 @@ # 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 +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 +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 bcf0c62442..8d2ec60f68 100644 --- a/sysdeps/unix/sysv/linux/powerpc/configure.ac +++ b/sysdeps/unix/sysv/linux/powerpc/configure.ac @@ -2,6 +2,40 @@ 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 ]], [[ +#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 ]], [[ +#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])