Hello community, here is the log from the commit of package glibc for openSUSE:Factory checked in at 2017-09-04 12:16:06 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/glibc (Old) and /work/SRC/openSUSE:Factory/.glibc.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "glibc" Mon Sep 4 12:16:06 2017 rev:211 rq:519282 version:2.26 Changes: -------- --- /work/SRC/openSUSE:Factory/glibc/glibc-testsuite.changes 2017-08-24 17:38:43.679937109 +0200 +++ /work/SRC/openSUSE:Factory/.glibc.new/glibc-testsuite.changes 2017-09-04 12:16:16.088682810 +0200 @@ -1,0 +2,20 @@ +Tue Aug 29 07:13:42 UTC 2017 - [email protected] + +- math-c++-compat.patch: Do not use __builtin_types_compatible_p in C++ + mode (BZ #21930) + +------------------------------------------------------------------- +Thu Aug 17 12:46:46 UTC 2017 - [email protected] + +- Add iconvconfig to baselibs.conf (bsc#1051042) + +------------------------------------------------------------------- +Thu Aug 10 08:05:15 UTC 2017 - [email protected] + +- resolv-context-leak.patch: Fix leaks of resolver contexts +- dl-runtime-resolve-opt-avx512f.patch: Use _dl_runtime_resolve_opt only + with AVX512F (BZ #21871) +- libpthread-compat-wrappers.patch: Don't use IFUNC resolver for longjmp + or system in libpthread (BZ #21041) + +------------------------------------------------------------------- @@ -763 +783 @@ - * CVE-2015-1472 CVE-2015-1473 CVE-2104-7817 CVE-2012-3406 CVE-2014-9402 + * CVE-2015-1472 CVE-2015-1473 CVE-2012-3406 CVE-2014-9402 @@ -998 +1018 @@ - (bnc#677787, BZ #16750) + (CVE-2009-5064, bnc#677787, BZ #16750) glibc-utils.changes: same change glibc.changes: same change New: ---- dl-runtime-resolve-opt-avx512f.patch libpthread-compat-wrappers.patch math-c++-compat.patch resolv-context-leak.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ glibc-testsuite.spec ++++++ --- /var/tmp/diff_new_pack.vhLvZN/_old 2017-09-04 12:16:33.586223047 +0200 +++ /var/tmp/diff_new_pack.vhLvZN/_new 2017-09-04 12:16:33.590222485 +0200 @@ -269,6 +269,14 @@ ### # Patches from upstream ### +# PATCH-FIX-UPSTREAM Fix leaks of resolver contexts +Patch1000: resolv-context-leak.patch +# PATCH-FIX-UPSTREAM Use _dl_runtime_resolve_opt only with AVX512F (BZ #21871) +Patch1001: dl-runtime-resolve-opt-avx512f.patch +# PATCH-FIX-UPSTREAM Don't use IFUNC resolver for longjmp or system in libpthread (BZ #21041) +Patch1002: libpthread-compat-wrappers.patch +# PATCH-FIX-UPSTREAM Do not use __builtin_types_compatible_p in C++ mode (BZ #21930) +Patch1003: math-c++-compat.patch ### # Patches awaiting upstream approval @@ -498,6 +506,11 @@ %patch304 -p1 %patch306 -p1 +%patch1000 -p1 +%patch1001 -p1 +%patch1002 -p1 +%patch1003 -p1 + %patch2000 -p1 %patch2001 -p1 %patch2002 -p1 @@ -528,12 +541,6 @@ rm -fv sysdeps/powerpc/powerpc32/power4/hp-timing.c sysdeps/powerpc/powerpc32/power4/hp-timing.h find . -name configure | xargs touch -####################################################################### -### -### BUILD -### -####################################################################### - %build if [ -x /bin/uname.bin ]; then /bin/uname.bin -a @@ -804,12 +811,6 @@ make %{?_smp_mflags} -C cc-base check-abi %endif -####################################################################### -### -### INSTALL -### -####################################################################### - %install %if %{build_main} # We don't want to strip the .symtab from our libraries in find-debuginfo.sh, @@ -1071,12 +1072,6 @@ %endif # !main -####################################################################### -### -### ... -### -####################################################################### - %post -p %{_sbindir}/glibc_post_upgrade %postun -p /sbin/ldconfig @@ -1116,8 +1111,8 @@ %service_del_postun nscd.service exit 0 -%files %if %{build_main} +%files # glibc %defattr(-,root,root) %doc LICENSES @@ -1396,6 +1391,7 @@ %endif # main %if %{build_utils} +%files %defattr(-,root,root) /%{_lib}/libmemusage.so /%{_lib}/libpcprofile.so glibc-utils.spec: same change ++++++ glibc.spec ++++++ --- /var/tmp/diff_new_pack.vhLvZN/_old 2017-09-04 12:16:33.918176382 +0200 +++ /var/tmp/diff_new_pack.vhLvZN/_new 2017-09-04 12:16:33.942173009 +0200 @@ -275,6 +275,14 @@ ### # Patches from upstream ### +# PATCH-FIX-UPSTREAM Fix leaks of resolver contexts +Patch1000: resolv-context-leak.patch +# PATCH-FIX-UPSTREAM Use _dl_runtime_resolve_opt only with AVX512F (BZ #21871) +Patch1001: dl-runtime-resolve-opt-avx512f.patch +# PATCH-FIX-UPSTREAM Don't use IFUNC resolver for longjmp or system in libpthread (BZ #21041) +Patch1002: libpthread-compat-wrappers.patch +# PATCH-FIX-UPSTREAM Do not use __builtin_types_compatible_p in C++ mode (BZ #21930) +Patch1003: math-c++-compat.patch ### # Patches awaiting upstream approval @@ -504,6 +512,11 @@ %patch304 -p1 %patch306 -p1 +%patch1000 -p1 +%patch1001 -p1 +%patch1002 -p1 +%patch1003 -p1 + %patch2000 -p1 %patch2001 -p1 %patch2002 -p1 @@ -534,12 +547,6 @@ rm -fv sysdeps/powerpc/powerpc32/power4/hp-timing.c sysdeps/powerpc/powerpc32/power4/hp-timing.h find . -name configure | xargs touch -####################################################################### -### -### BUILD -### -####################################################################### - %build if [ -x /bin/uname.bin ]; then /bin/uname.bin -a @@ -810,12 +817,6 @@ make %{?_smp_mflags} -C cc-base check-abi %endif -####################################################################### -### -### INSTALL -### -####################################################################### - %install %if %{build_main} # We don't want to strip the .symtab from our libraries in find-debuginfo.sh, @@ -1077,12 +1078,6 @@ %endif # !main -####################################################################### -### -### ... -### -####################################################################### - %post -p %{_sbindir}/glibc_post_upgrade %postun -p /sbin/ldconfig @@ -1122,8 +1117,8 @@ %service_del_postun nscd.service exit 0 -%files %if %{build_main} +%files # glibc %defattr(-,root,root) %doc LICENSES @@ -1402,6 +1397,7 @@ %endif # main %if %{build_utils} +%files %defattr(-,root,root) /%{_lib}/libmemusage.so /%{_lib}/libpcprofile.so ++++++ baselibs.conf ++++++ --- /var/tmp/diff_new_pack.vhLvZN/_old 2017-09-04 12:16:34.246130280 +0200 +++ /var/tmp/diff_new_pack.vhLvZN/_new 2017-09-04 12:16:34.246130280 +0200 @@ -7,6 +7,7 @@ targettype ia32 "/lib/ld-linux.so.2 -> <prefix>/lib/ld-linux.so.2" prereq -glibc-x86 +/usr/lib/getconf/[^g] + +/usr/sbin/iconvconfig -> /usr/sbin/iconvconfig-<extension> glibc-locale arch i586 block! +/usr/lib(64)?/gconv/gconv-modules ++++++ dl-runtime-resolve-opt-avx512f.patch ++++++ 2017-08-06 H.J. Lu <[email protected]> [BZ #21871] * sysdeps/x86/cpu-features.c (init_cpu_features): Set bit_arch_Use_dl_runtime_resolve_opt only with AVX512F. Index: glibc-2.26/sysdeps/x86/cpu-features.c =================================================================== --- glibc-2.26.orig/sysdeps/x86/cpu-features.c +++ glibc-2.26/sysdeps/x86/cpu-features.c @@ -244,10 +244,13 @@ init_cpu_features (struct cpu_features * |= bit_arch_Prefer_No_AVX512; /* To avoid SSE transition penalty, use _dl_runtime_resolve_slow. - If XGETBV suports ECX == 1, use _dl_runtime_resolve_opt. */ + If XGETBV suports ECX == 1, use _dl_runtime_resolve_opt. + Use _dl_runtime_resolve_opt only with AVX512F since it is + slower than _dl_runtime_resolve_slow with AVX. */ cpu_features->feature[index_arch_Use_dl_runtime_resolve_slow] |= bit_arch_Use_dl_runtime_resolve_slow; - if (cpu_features->max_cpuid >= 0xd) + if (CPU_FEATURES_ARCH_P (cpu_features, AVX512F_Usable) + && cpu_features->max_cpuid >= 0xd) { unsigned int eax; ++++++ libpthread-compat-wrappers.patch ++++++ 2017-08-09 Andreas Schwab <[email protected]> [BZ #21041] * sysdeps/unix/sysv/linux/s390/pt-longjmp.c: Update reference to renamed alias. 2017-08-08 Andreas Schwab <[email protected]> [BZ #21041] * nptl/pt-longjmp.c (longjmp, siglongjmp): Don't use IFUNC resolver. * nptl/pt-system.c (system): Likewise. Index: glibc-2.26/nptl/pt-longjmp.c =================================================================== --- glibc-2.26.orig/nptl/pt-longjmp.c +++ glibc-2.26/nptl/pt-longjmp.c @@ -25,21 +25,14 @@ symbol in libpthread, but the historical ABI requires it. For static linking, there is no need to provide anything here--the libc version will be linked in. For shared library ABI compatibility, there must be - longjmp and siglongjmp symbols in libpthread.so; so we define them using - IFUNC to redirect to the libc function. */ + longjmp and siglongjmp symbols in libpthread.so. -#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_22) - -# if HAVE_IFUNC - -# undef INIT_ARCH -# define INIT_ARCH() -# define DEFINE_LONGJMP(name) libc_ifunc (name, &__libc_longjmp) - -extern __typeof(longjmp) longjmp_ifunc; -extern __typeof(siglongjmp) siglongjmp_ifunc; + With an IFUNC resolver, it would be possible to avoid the indirection, + but the IFUNC resolver might run before the __libc_longjmp symbol has + been relocated, in which case the IFUNC resolver would not be able to + provide the correct address. */ -# else /* !HAVE_IFUNC */ +#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_22) static void __attribute__ ((noreturn, used)) longjmp_compat (jmp_buf env, int val) @@ -47,14 +40,10 @@ longjmp_compat (jmp_buf env, int val) __libc_longjmp (env, val); } -# define DEFINE_LONGJMP(name) strong_alias (longjmp_compat, name) - -# endif /* HAVE_IFUNC */ - -DEFINE_LONGJMP (longjmp_ifunc) -compat_symbol (libpthread, longjmp_ifunc, longjmp, GLIBC_2_0); +strong_alias (longjmp_compat, longjmp_alias) +compat_symbol (libpthread, longjmp_alias, longjmp, GLIBC_2_0); -strong_alias (longjmp_ifunc, siglongjmp_ifunc) -compat_symbol (libpthread, siglongjmp_ifunc, siglongjmp, GLIBC_2_0); +strong_alias (longjmp_alias, siglongjmp_alias) +compat_symbol (libpthread, siglongjmp_alias, siglongjmp, GLIBC_2_0); #endif Index: glibc-2.26/nptl/pt-system.c =================================================================== --- glibc-2.26.orig/nptl/pt-system.c +++ glibc-2.26/nptl/pt-system.c @@ -25,29 +25,21 @@ libpthread, but the historical ABI requires it. For static linking, there is no need to provide anything here--the libc version will be linked in. For shared library ABI compatibility, there must be a - 'system' symbol in libpthread.so; so we define it using IFUNC to - redirect to the libc function. */ + 'system' symbol in libpthread.so. -#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_22) - -# if HAVE_IFUNC - -extern __typeof(system) system_ifunc; -# undef INIT_ARCH -# define INIT_ARCH() -libc_ifunc (system_ifunc, &__libc_system) + With an IFUNC resolver, it would be possible to avoid the indirection, + but the IFUNC resolver might run before the __libc_system symbol has + been relocated, in which case the IFUNC resolver would not be able to + provide the correct address. */ -# else /* !HAVE_IFUNC */ +#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_22) static int __attribute__ ((used)) system_compat (const char *line) { return __libc_system (line); } -strong_alias (system_compat, system_ifunc) - -# endif /* HAVE_IFUNC */ - -compat_symbol (libpthread, system_ifunc, system, GLIBC_2_0); +strong_alias (system_compat, system_alias) +compat_symbol (libpthread, system_alias, system, GLIBC_2_0); #endif Index: glibc-2.26/sysdeps/unix/sysv/linux/s390/pt-longjmp.c =================================================================== --- glibc-2.26.orig/sysdeps/unix/sysv/linux/s390/pt-longjmp.c +++ glibc-2.26/sysdeps/unix/sysv/linux/s390/pt-longjmp.c @@ -26,8 +26,8 @@ /* In glibc release 2.19 new versions of longjmp-functions were introduced, but were reverted before 2.20. Thus both versions are the same function. */ -strong_alias (longjmp_ifunc, __v2longjmp) +strong_alias (longjmp_alias, __v2longjmp) compat_symbol (libpthread, __v2longjmp, longjmp, GLIBC_2_19); -strong_alias (siglongjmp_ifunc, __v2siglongjmp) +strong_alias (siglongjmp_alias, __v2siglongjmp) compat_symbol (libpthread, __v2siglongjmp, siglongjmp, GLIBC_2_19); #endif /* SHLIB_COMPAT (libpthread, GLIBC_2_19, GLIBC_2_20)) */ ++++++ math-c++-compat.patch ++++++ 2017-08-28 Gabriel F. T. Gomes <[email protected]> [BZ #21930] * math/math.h [defined __cplusplus && defined __SUPPORT_SNAN__] (iszero): New C++ implementation that does not use fpclassify/__MATH_TG/__builtin_types_compatible_p, when signaling nans are enabled, since __builtin_types_compatible_p is a C-only feature. 2017-08-24 Gabriel F. T. Gomes <[email protected]> * math/math.h [defined __cplusplus] (issignaling): In the long double case, call __issignalingl only if __NO_LONG_DOUBLE_MATH is not defined. Call __issignaling, otherwise. 2017-08-22 Gabriel F. T. Gomes <[email protected]> * math/math.h [defined __cplusplus] (issignaling): Provide a C++ definition for issignaling that does not rely on __MATH_TG, since __MATH_TG uses __builtin_types_compatible_p, which is only available in C mode. 2017-08-18 Gabriel F. T. Gomes <[email protected]> [BZ #21930] * math/math.h (isinf): Check if in C or C++ mode before using __builtin_types_compatible_p, since this is a C mode feature. Index: glibc-2.26/math/math.h =================================================================== --- glibc-2.26.orig/math/math.h +++ glibc-2.26/math/math.h @@ -442,8 +442,12 @@ enum /* Return nonzero value if X is positive or negative infinity. */ # if __HAVE_DISTINCT_FLOAT128 && !__GNUC_PREREQ (7,0) \ - && !defined __SUPPORT_SNAN__ - /* __builtin_isinf_sign is broken for float128 only before GCC 7.0. */ + && !defined __SUPPORT_SNAN__ && !defined __cplusplus + /* Since __builtin_isinf_sign is broken for float128 before GCC 7.0, + use the helper function, __isinff128, with older compilers. This is + only provided for C mode, because in C++ mode, GCC has no support + for __builtin_types_compatible_p (and when in C++ mode, this macro is + not used anyway, because libstdc++ headers undefine it). */ # define isinf(x) \ (__builtin_types_compatible_p (__typeof (x), _Float128) \ ? __isinff128 (x) : __builtin_isinf_sign (x)) @@ -470,7 +474,32 @@ enum # include <bits/iscanonical.h> /* Return nonzero value if X is a signaling NaN. */ -# define issignaling(x) __MATH_TG ((x), __issignaling, (x)) +# ifndef __cplusplus +# define issignaling(x) __MATH_TG ((x), __issignaling, (x)) +# else + /* In C++ mode, __MATH_TG cannot be used, because it relies on + __builtin_types_compatible_p, which is a C-only builtin. On the + other hand, overloading provides the means to distinguish between + the floating-point types. The overloading resolution will match + the correct parameter (regardless of type qualifiers (i.e.: const + and volatile). */ +extern "C++" { +inline int issignaling (float __val) { return __issignalingf (__val); } +inline int issignaling (double __val) { return __issignaling (__val); } +inline int +issignaling (long double __val) +{ +# ifdef __NO_LONG_DOUBLE_MATH + return __issignaling (__val); +# else + return __issignalingl (__val); +# endif +} +# if __HAVE_DISTINCT_FLOAT128 +inline int issignaling (_Float128 __val) { return __issignalingf128 (__val); } +# endif +} /* extern C++ */ +# endif /* Return nonzero value if X is subnormal. */ # define issubnormal(x) (fpclassify (x) == FP_SUBNORMAL) @@ -484,15 +513,40 @@ enum # endif # else /* __cplusplus */ extern "C++" { +# ifdef __SUPPORT_SNAN__ +inline int +iszero (float __val) +{ + return __fpclassifyf (__val) == FP_ZERO; +} +inline int +iszero (double __val) +{ + return __fpclassify (__val) == FP_ZERO; +} +inline int +iszero (long double __val) +{ +# ifdef __NO_LONG_DOUBLE_MATH + return __fpclassify (__val) == FP_ZERO; +# else + return __fpclassifyl (__val) == FP_ZERO; +# endif +} +# if __HAVE_DISTINCT_FLOAT128 +inline int +iszero (_Float128 __val) +{ + return __fpclassifyf128 (__val) == FP_ZERO; +} +# endif +# else template <class __T> inline bool iszero (__T __val) { -# ifdef __SUPPORT_SNAN__ - return fpclassify (__val) == FP_ZERO; -# else return __val == 0; -# endif } +# endif } /* extern C++ */ # endif /* __cplusplus */ #endif /* Use IEC_60559_BFP_EXT. */ ++++++ resolv-context-leak.patch ++++++ 2017-08-09 Florian Weimer <[email protected]> [BZ #21932] * nss/getXXbyYY_r.c (REENTRANT_NAME): Call __resolv_context_put before early return. 2017-08-03 Florian Weimer <[email protected]> [BZ #21885] * sysdeps/posix/getaddrinfo.c (gethosts): Release resolver context on memory allocation failure. Index: glibc-2.26/nss/getXXbyYY_r.c =================================================================== --- glibc-2.26.orig/nss/getXXbyYY_r.c +++ glibc-2.26/nss/getXXbyYY_r.c @@ -234,6 +234,9 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, L H_ERRNO_VAR_P)) { case -1: +# ifdef NEED__RES + __resolv_context_put (res_ctx); +# endif return errno; case 1: #ifdef NEED_H_ERRNO @@ -253,7 +256,12 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, L nscd_status = NSCD_NAME (ADD_VARIABLES, resbuf, buffer, buflen, result H_ERRNO_VAR); if (nscd_status >= 0) - return nscd_status; + { +# ifdef NEED__RES + __resolv_context_put (res_ctx); +# endif + return nscd_status; + } } #endif Index: glibc-2.26/sysdeps/posix/getaddrinfo.c =================================================================== --- glibc-2.26.orig/sysdeps/posix/getaddrinfo.c +++ glibc-2.26/sysdeps/posix/getaddrinfo.c @@ -255,6 +255,8 @@ convert_hostent_to_gaih_addrtuple (const break; \ if (!scratch_buffer_grow (tmpbuf)) \ { \ + __resolv_context_enable_inet6 (res_ctx, res_enable_inet6); \ + __resolv_context_put (res_ctx); \ result = -EAI_MEMORY; \ goto free_and_return; \ } \
