mirror of git://sourceware.org/git/glibc.git
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.:
785969a047
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 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
|
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
|
||||||
|
|
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
|
(and pseudo-terminals are supported), a devpts file system is mounted
|
||||||
on /dev/pts. Current systems already meet these requirements.
|
on /dev/pts. Current systems already meet these requirements.
|
||||||
|
|
||||||
|
* s390x requires GCC 7.1 or newer. See gcc Bug 98269.
|
||||||
|
|
||||||
Security related changes:
|
Security related changes:
|
||||||
|
|
||||||
CVE-2020-27618: An infinite loop has been fixed in the iconv program when
|
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 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
|
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
|
||||||
|
|
|
@ -296,5 +296,40 @@ then
|
||||||
|
|
||||||
fi
|
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 $? "
|
test -n "$critic_missing" && as_fn_error $? "
|
||||||
*** $critic_missing" "$LINENO" 5
|
*** $critic_missing" "$LINENO" 5
|
||||||
|
|
|
@ -212,5 +212,22 @@ then
|
||||||
AC_DEFINE(HAVE_S390_MIN_ARCH13_ZARCH_ASM_SUPPORT)
|
AC_DEFINE(HAVE_S390_MIN_ARCH13_ZARCH_ASM_SUPPORT)
|
||||||
fi
|
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([
|
test -n "$critic_missing" && AC_MSG_ERROR([
|
||||||
*** $critic_missing])
|
*** $critic_missing])
|
||||||
|
|
Loading…
Reference in New Issue