powerpc64le: Check for compiler features for float128

On powerpc64le, support for float128 will be enabled, which requires some
compiler features to be present.  This patch adds a configure test to check
for such features, which are provided for powerpc64le since GCC 6.2.

Tested for powerpc64 and powerpc64le.

	* INSTALL: Regenerate.
	* manual/install.texi (Recommended Tools for Compilation): Mention
	the powerpc64le-specific requirement in the manual.
	* sysdeps/powerpc/powerpc64le/configure.ac: New file with checks
	for the compiler features required for building float128.
	* sysdeps/powerpc/powerpc64le/configure: New, auto-generated file.
This commit is contained in:
Gabriel F. T. Gomes 2016-10-11 13:50:19 -03:00
parent d54bb9b1d3
commit 4efe3ce400
5 changed files with 96 additions and 0 deletions

View File

@ -1,3 +1,13 @@
2017-06-26 Gabriel F. T. Gomes <gftg@linux.vnet.ibm.com>
Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
* INSTALL: Regenerate.
* manual/install.texi (Recommended Tools for Compilation): Mention
the powerpc64le-specific requirement in the manual.
* sysdeps/powerpc/powerpc64le/configure.ac: New file with checks
for the compiler features required for building float128.
* sysdeps/powerpc/powerpc64le/configure: New, auto-generated file.
2017-06-26 Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com> 2017-06-26 Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
* malloc/tst-alloc_buffer.c (test_misaligned): Cast to char * malloc/tst-alloc_buffer.c (test_misaligned): Cast to char

View File

@ -428,6 +428,11 @@ build the GNU C Library:
better code. As of release time, GCC 6.3 is the newest compiler better code. As of release time, GCC 6.3 is the newest compiler
verified to work to build the GNU C Library. verified to work to build the GNU C Library.
For PowerPC 64-bits little-endian (powerpc64le), GCC 6.2 or higher
is required. This compiler version is the first to provide the
features required for building the GNU C Library with support for
'_Float128'.
For multi-arch support it is recommended to use a GCC which has For multi-arch support it is recommended to use a GCC which has
been built with support for GNU indirect functions. This ensures been built with support for GNU indirect functions. This ensures
that correct debugging information is generated for functions that correct debugging information is generated for functions

View File

@ -475,6 +475,10 @@ the newest version of the compiler that is known to work for building
release time, GCC 6.3 is the newest compiler verified to work to build release time, GCC 6.3 is the newest compiler verified to work to build
@theglibc{}. @theglibc{}.
For PowerPC 64-bits little-endian (powerpc64le), GCC 6.2 or higher is
required. This compiler version is the first to provide the features
required for building @theglibc{} with support for @code{_Float128}.
For multi-arch support it is recommended to use a GCC which has been built with 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 support for GNU indirect functions. This ensures that correct debugging
information is generated for functions selected by IFUNC resolvers. This information is generated for functions selected by IFUNC resolvers. This

45
sysdeps/powerpc/powerpc64le/configure vendored Normal file
View File

@ -0,0 +1,45 @@
# 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
test -n "$critic_missing" && as_fn_error $? "*** $critic_missing" "$LINENO" 5

View File

@ -0,0 +1,32 @@
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
# Local configure fragment for sysdeps/powerpc/powerpc64le.
dnl Require binary128 floating point support on powerpc64le (available in
dnl GCC 6.2).
AC_CACHE_CHECK([if $CC supports binary128 floating point type],
libc_cv_compiler_powerpc64le_binary128_ok, [dnl
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Werror -mfloat128"
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
__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);
}
]])],
[libc_cv_compiler_powerpc64le_binary128_ok=yes],
[libc_cv_compiler_powerpc64le_binary128_ok=no])
CFLAGS="$save_CFLAGS"])
AS_IF([test "$libc_cv_compiler_powerpc64le_binary128_ok" != "yes"],
[critic_missing="$critic_missing binary128 floating point type (GCC >= 6.2) is required on powerpc64le."])
test -n "$critic_missing" && AC_MSG_ERROR([*** $critic_missing])