Andreas Schwab
5005d4836d
- tls-dtor-list-mangling.patch: Harden tls_dtor_list with pointer mangling (BZ #19018) - prelink-elf-rtype-class.patch: Keep only ELF_RTYPE_CLASS_{PLT|COPY} bits for prelink (BZ #19178) - vector-finite-math-aliases.patch: Better workaround for aliases of *_finite symbols in vector math library (BZ# 19058) - powerpc-elision-adapt-param.patch: powerpc: Fix usage of elision transient failure adapt param (BZ #19174) - catopen-unbound-alloca.patch: Fix unbound alloca in catopen (CVE-2015-8779, bsc#962739, BZ #17905) - strftime-range-check.patch: Add range check on time fields (CVE-2015-8776, bsc#962736, BZ #18985) - hcreate-overflow-check.patch: Handle overflow in hcreate (CVE-2015-8778, bsc#962737, BZ #18240) - errorcheck-mutex-no-elision.patch: Don't do lock elision on an error checking mutex (bsc#956716, BZ #17514) - refactor-nan-parsing.patch: Refactor strtod parsing of NaN payloads (CVE-2014-9761, bsc#962738, BZ #16962) - send-dg-buffer-overflow.patch: Fix getaddrinfo stack-based buffer overflow (CVE-2015-7547, bsc#961721, BZ #18665) - powerpc-lock-elision-race.patch: renamed from 0001-powerpc-Fix-a-race-condition-when-eliding-a-lock-20150730.patch OBS-URL: https://build.opensuse.org/request/show/359989 OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=421
150 lines
6.1 KiB
Diff
150 lines
6.1 KiB
Diff
2015-12-03 Andrew Senkevich <andrew.senkevich@intel.com>
|
|
|
|
* math/Makefile ($(inst_libdir)/libm.so): Corrected path to
|
|
libmvec_nonshared.a
|
|
|
|
2015-11-27 Andrew Senkevich <andrew.senkevich@intel.com>
|
|
|
|
[BZ #19058]
|
|
* math/Makefile ($(inst_libdir)/libm.so): Added libmvec_nonshared.a to
|
|
AS_NEEDED.
|
|
* sysdeps/x86/fpu/bits/math-vector.h: Removed code with asm aliases
|
|
workaround.
|
|
* sysdeps/x86_64/fpu/Makefile (libmvec-support,
|
|
libmvec-static-only-routines): Added new file.
|
|
* sysdeps/x86_64/fpu/svml_finite_alias.S: New file.
|
|
* NEWS: Mention this fix.
|
|
|
|
Index: glibc-2.22/math/Makefile
|
|
===================================================================
|
|
--- glibc-2.22.orig/math/Makefile
|
|
+++ glibc-2.22/math/Makefile
|
|
@@ -98,7 +98,7 @@ $(inst_libdir)/libm.so: $(common-objpfx)
|
|
(echo '/* GNU ld script'; echo '*/';\
|
|
cat $<; \
|
|
echo 'GROUP ( $(slibdir)/libm.so$(libm.so-version) ' \
|
|
- 'AS_NEEDED ( $(slibdir)/libmvec.so$(libmvec.so-version) ) )' \
|
|
+ 'AS_NEEDED ( $(libdir)/libmvec_nonshared.a $(slibdir)/libmvec.so$(libmvec.so-version) ) )' \
|
|
) > $@
|
|
endif
|
|
|
|
Index: glibc-2.22/sysdeps/x86/fpu/bits/math-vector.h
|
|
===================================================================
|
|
--- glibc-2.22.orig/sysdeps/x86/fpu/bits/math-vector.h
|
|
+++ glibc-2.22/sysdeps/x86/fpu/bits/math-vector.h
|
|
@@ -53,34 +53,5 @@
|
|
# undef __DECL_SIMD_powf
|
|
# define __DECL_SIMD_powf __DECL_SIMD_x86_64
|
|
|
|
-/* Workaround to exclude unnecessary symbol aliases in libmvec
|
|
- while GCC creates the vector names based on scalar asm name.
|
|
- Corresponding discussion started at
|
|
- <https://gcc.gnu.org/ml/gcc/2015-06/msg00173.html>. */
|
|
-__asm__ ("_ZGVbN2v___log_finite = _ZGVbN2v_log");
|
|
-__asm__ ("_ZGVcN4v___log_finite = _ZGVcN4v_log");
|
|
-__asm__ ("_ZGVdN4v___log_finite = _ZGVdN4v_log");
|
|
-__asm__ ("_ZGVeN8v___log_finite = _ZGVeN8v_log");
|
|
-__asm__ ("_ZGVbN4v___logf_finite = _ZGVbN4v_logf");
|
|
-__asm__ ("_ZGVcN8v___logf_finite = _ZGVcN8v_logf");
|
|
-__asm__ ("_ZGVdN8v___logf_finite = _ZGVdN8v_logf");
|
|
-__asm__ ("_ZGVeN16v___logf_finite = _ZGVeN16v_logf");
|
|
-__asm__ ("_ZGVbN2v___exp_finite = _ZGVbN2v_exp");
|
|
-__asm__ ("_ZGVcN4v___exp_finite = _ZGVcN4v_exp");
|
|
-__asm__ ("_ZGVdN4v___exp_finite = _ZGVdN4v_exp");
|
|
-__asm__ ("_ZGVeN8v___exp_finite = _ZGVeN8v_exp");
|
|
-__asm__ ("_ZGVbN4v___expf_finite = _ZGVbN4v_expf");
|
|
-__asm__ ("_ZGVcN8v___expf_finite = _ZGVcN8v_expf");
|
|
-__asm__ ("_ZGVdN8v___expf_finite = _ZGVdN8v_expf");
|
|
-__asm__ ("_ZGVeN16v___expf_finite = _ZGVeN16v_expf");
|
|
-__asm__ ("_ZGVbN2vv___pow_finite = _ZGVbN2vv_pow");
|
|
-__asm__ ("_ZGVcN4vv___pow_finite = _ZGVcN4vv_pow");
|
|
-__asm__ ("_ZGVdN4vv___pow_finite = _ZGVdN4vv_pow");
|
|
-__asm__ ("_ZGVeN8vv___pow_finite = _ZGVeN8vv_pow");
|
|
-__asm__ ("_ZGVbN4vv___powf_finite = _ZGVbN4vv_powf");
|
|
-__asm__ ("_ZGVcN8vv___powf_finite = _ZGVcN8vv_powf");
|
|
-__asm__ ("_ZGVdN8vv___powf_finite = _ZGVdN8vv_powf");
|
|
-__asm__ ("_ZGVeN16vv___powf_finite = _ZGVeN16vv_powf");
|
|
-
|
|
# endif
|
|
#endif
|
|
Index: glibc-2.22/sysdeps/x86_64/fpu/Makefile
|
|
===================================================================
|
|
--- glibc-2.22.orig/sysdeps/x86_64/fpu/Makefile
|
|
+++ glibc-2.22/sysdeps/x86_64/fpu/Makefile
|
|
@@ -20,7 +20,10 @@ libmvec-support += svml_d_cos2_core svml
|
|
svml_d_pow_data svml_s_powf4_core svml_s_powf8_core_avx \
|
|
svml_s_powf8_core svml_s_powf16_core svml_s_powf_data \
|
|
svml_s_sincosf4_core svml_s_sincosf8_core_avx \
|
|
- svml_s_sincosf8_core svml_s_sincosf16_core init-arch
|
|
+ svml_s_sincosf8_core svml_s_sincosf16_core init-arch \
|
|
+ svml_finite_alias
|
|
+
|
|
+libmvec-static-only-routines = svml_finite_alias
|
|
endif
|
|
|
|
# Variables for libmvec tests.
|
|
Index: glibc-2.22/sysdeps/x86_64/fpu/svml_finite_alias.S
|
|
===================================================================
|
|
--- /dev/null
|
|
+++ glibc-2.22/sysdeps/x86_64/fpu/svml_finite_alias.S
|
|
@@ -0,0 +1,59 @@
|
|
+/* These aliases added as workaround to exclude unnecessary symbol
|
|
+ aliases in libmvec.so while compiler creates the vector names
|
|
+ based on scalar asm name. Corresponding discussion is at
|
|
+ <https://gcc.gnu.org/ml/gcc/2015-06/msg00173.html>.
|
|
+ Copyright (C) 2015 Free Software Foundation, Inc.
|
|
+ This file is part of the GNU C Library.
|
|
+
|
|
+ The GNU C Library is free software; you can redistribute it and/or
|
|
+ modify it under the terms of the GNU Lesser General Public
|
|
+ License as published by the Free Software Foundation; either
|
|
+ version 2.1 of the License, or (at your option) any later version.
|
|
+
|
|
+ The GNU C Library is distributed in the hope that it will be useful,
|
|
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
+ Lesser General Public License for more details.
|
|
+
|
|
+ You should have received a copy of the GNU Lesser General Public
|
|
+ License along with the GNU C Library; if not, see
|
|
+ <http://www.gnu.org/licenses/>. */
|
|
+
|
|
+#include <sysdep.h>
|
|
+
|
|
+#define ALIAS_IMPL(alias, target) \
|
|
+ENTRY (alias); \
|
|
+ call target; \
|
|
+ ret; \
|
|
+END (alias)
|
|
+
|
|
+ .text
|
|
+ALIAS_IMPL (_ZGVbN2v___log_finite, _ZGVbN2v_log)
|
|
+ALIAS_IMPL (_ZGVcN4v___log_finite, _ZGVcN4v_log)
|
|
+ALIAS_IMPL (_ZGVdN4v___log_finite, _ZGVdN4v_log)
|
|
+ALIAS_IMPL (_ZGVeN8v___log_finite, _ZGVeN8v_log)
|
|
+
|
|
+ALIAS_IMPL (_ZGVbN4v___logf_finite, _ZGVbN4v_logf)
|
|
+ALIAS_IMPL (_ZGVcN8v___logf_finite, _ZGVcN8v_logf)
|
|
+ALIAS_IMPL (_ZGVdN8v___logf_finite, _ZGVdN8v_logf)
|
|
+ALIAS_IMPL (_ZGVeN16v___logf_finite, _ZGVeN16v_logf)
|
|
+
|
|
+ALIAS_IMPL (_ZGVbN2v___exp_finite, _ZGVbN2v_exp)
|
|
+ALIAS_IMPL (_ZGVcN4v___exp_finite, _ZGVcN4v_exp)
|
|
+ALIAS_IMPL (_ZGVdN4v___exp_finite, _ZGVdN4v_exp)
|
|
+ALIAS_IMPL (_ZGVeN8v___exp_finite, _ZGVeN8v_exp)
|
|
+
|
|
+ALIAS_IMPL (_ZGVbN4v___expf_finite, _ZGVbN4v_expf)
|
|
+ALIAS_IMPL (_ZGVcN8v___expf_finite, _ZGVcN8v_expf)
|
|
+ALIAS_IMPL (_ZGVdN8v___expf_finite, _ZGVdN8v_expf)
|
|
+ALIAS_IMPL (_ZGVeN16v___expf_finite, _ZGVeN16v_expf)
|
|
+
|
|
+ALIAS_IMPL (_ZGVbN2vv___pow_finite, _ZGVbN2vv_pow)
|
|
+ALIAS_IMPL (_ZGVcN4vv___pow_finite, _ZGVcN4vv_pow)
|
|
+ALIAS_IMPL (_ZGVdN4vv___pow_finite, _ZGVdN4vv_pow)
|
|
+ALIAS_IMPL (_ZGVeN8vv___pow_finite, _ZGVeN8vv_pow)
|
|
+
|
|
+ALIAS_IMPL (_ZGVbN4vv___powf_finite, _ZGVbN4vv_powf)
|
|
+ALIAS_IMPL (_ZGVcN8vv___powf_finite, _ZGVcN8vv_powf)
|
|
+ALIAS_IMPL (_ZGVdN8vv___powf_finite, _ZGVdN8vv_powf)
|
|
+ALIAS_IMPL (_ZGVeN16vv___powf_finite, _ZGVeN16vv_powf)
|