From 3a33b0696937d3c8324e517512f8dc952166a7ab Mon Sep 17 00:00:00 2001 From: "Gabriel F. T. Gomes" Date: Fri, 9 Mar 2018 16:59:14 -0300 Subject: powerpc64*: fix the order of implied sysdeps directories The creation of the divergent sysdeps directory for powerpc64le commit 2f7f3cd8cd302bb10908c86f3f7b349df0a78e6a Author: Paul E. Murphy Date: Fri Jul 15 18:04:40 2016 -0500 powerpc64le: Create divergent sysdep directory for powerpc64le. allowed float128 to be enabled for powerpc64le (little-endian) and not for powerpc64 (big-endian). Since the only intended difference between them was the presence or absence of the float128 interface, the sysdeps directory for powerpc64le explicitly reused the files from powerpc64 (through the use of Implies files). Although this works, it also means that files under the powerpc64 directory might be preferred over files under powerpc64le. For instance, on a build for powerpc64le with target set to power9, a file from powerpc64/power5 might get built, even though a file with the same name exists in powerpc64le/power8. That happens because the processor hierarchy was only defined in the sysdeps directory for powerpc64 (and borrowed by powerpc64le). This patch fixes this behavior, by creating new subdirectories under powerpc64 (i.e.: powerpc64/be and powerpc64/le) and creating new Implies files to provide the hierarchy of processors for powerpc64 and powerpc64le separately. These changes have no effect on installed, stripped binaries (which remain unchanged). Tested that installed stripped binaries are unchanged and that there are no regressions on powerpc64 and powerpc64le. --- sysdeps/powerpc/powerpc64/le/configure | 75 ++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 sysdeps/powerpc/powerpc64/le/configure (limited to 'sysdeps/powerpc/powerpc64/le/configure') diff --git a/sysdeps/powerpc/powerpc64/le/configure b/sysdeps/powerpc/powerpc64/le/configure new file mode 100644 index 0000000000..66bb5dcc1a --- /dev/null +++ b/sysdeps/powerpc/powerpc64/le/configure @@ -0,0 +1,75 @@ +# This file is generated from configure.ac by Autoconf. DO NOT EDIT! + # Local configure fragment for sysdeps/powerpc/powerpc64le. + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports binary128 floating point type" >&5 +$as_echo_n "checking if $CC supports binary128 floating point type... " >&6; } +if ${libc_cv_compiler_powerpc64le_binary128_ok+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -Werror -mfloat128" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +__float128 a, b, c, d, e; +int i; + +__float128 +foobar (__float128 x) +{ + a = __builtin_nansq ("0"); + b = __builtin_huge_valq (); + c = __builtin_infq (); + d = __builtin_fabsq (x); + e = __builtin_nanq ("0"); + i = __builtin_signbit (x); + return __builtin_copysignq (x, x); +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + libc_cv_compiler_powerpc64le_binary128_ok=yes +else + libc_cv_compiler_powerpc64le_binary128_ok=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +CFLAGS="$save_CFLAGS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_compiler_powerpc64le_binary128_ok" >&5 +$as_echo "$libc_cv_compiler_powerpc64le_binary128_ok" >&6; } +if test "$libc_cv_compiler_powerpc64le_binary128_ok" != "yes"; then : + critic_missing="$critic_missing binary128 floating point type (GCC >= 6.2) is required on powerpc64le." +fi + +OLD_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS $libc_cv_cc_submachine" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the target machine is at least POWER8" >&5 +$as_echo_n "checking if the target machine is at least POWER8... " >&6; } +if ${libc_cv_target_power8_ok+:} false; then : + $as_echo_n "(cached) " >&6 +else + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifndef _ARCH_PWR8 +#error invalid target architecture +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + libc_cv_target_power8_ok=yes +else + libc_cv_target_power8_ok=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_target_power8_ok" >&5 +$as_echo "$libc_cv_target_power8_ok" >&6; } +if test "$libc_cv_target_power8_ok" != "yes"; then : + critic_missing="$critic_missing POWER8 or newer is required on powerpc64le." +fi +CFLAGS="$OLD_CFLAGS" + +test -n "$critic_missing" && as_fn_error $? "*** $critic_missing" "$LINENO" 5 -- cgit v1.2.3