mirror of
git://sourceware.org/git/glibc.git
synced 2025-03-31 14:01:18 +08:00
s390x: Require GCC 7.1 or later to build glibc.
GCC 6.5 fails to correctly build ldconfig with recent ld.so.cache commits, e.g.: 785969a047ad2f23f758901c6816422573544453 elf: Implement a string table for ldconfig, with tail merging If glibc is build with gcc 6.5.0: __builtin_add_overflow is used in <glibc>/elf/stringtable.c:stringtable_finalize() which leads to ldconfig failing with "String table is too large". This is also recognizable in following tests: FAIL: elf/tst-glibc-hwcaps-cache FAIL: elf/tst-glibc-hwcaps-prepend-cache FAIL: elf/tst-ldconfig-X FAIL: elf/tst-ldconfig-bad-aux-cache FAIL: elf/tst-ldconfig-ld_so_conf-update FAIL: elf/tst-stringtable See gcc "Bug 98269 - gcc 6.5.0 __builtin_add_overflow() with small uint32_t values incorrectly detects overflow" (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98269)
This commit is contained in:
parent
29a4db291b
commit
844b4d8b4b
3
INSTALL
3
INSTALL
@ -467,6 +467,9 @@ build the GNU C Library:
|
||||
|
||||
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 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
|
||||
|
2
NEWS
2
NEWS
@ -67,6 +67,8 @@ Changes to build and runtime requirements:
|
||||
(and pseudo-terminals are supported), a devpts file system is mounted
|
||||
on /dev/pts. Current systems already meet these requirements.
|
||||
|
||||
* s390x requires GCC 7.1 or newer. See gcc Bug 98269.
|
||||
|
||||
Security related changes:
|
||||
|
||||
CVE-2020-27618: An infinite loop has been fixed in the iconv program when
|
||||
|
@ -509,6 +509,8 @@ 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 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
|
||||
|
35
sysdeps/s390/configure
vendored
35
sysdeps/s390/configure
vendored
@ -296,5 +296,40 @@ then
|
||||
|
||||
fi
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC is sufficient to build libc on s390x" >&5
|
||||
$as_echo_n "checking if $CC is sufficient to build libc on s390x... " >&6; }
|
||||
if ${libc_cv_compiler_ok_on_s390x+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
|
||||
#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_compile "$LINENO"; then :
|
||||
libc_cv_compiler_ok_on_s390x=yes
|
||||
else
|
||||
libc_cv_compiler_ok_on_s390x=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_compiler_ok_on_s390x" >&5
|
||||
$as_echo "$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
|
||||
|
@ -212,5 +212,22 @@ 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_TRY_COMPILE([], [
|
||||
#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])
|
||||
|
Loading…
x
Reference in New Issue
Block a user