diff --git a/eh-frame-zero-terminator.patch b/eh-frame-zero-terminator.patch new file mode 100644 index 0000000..28a4c16 --- /dev/null +++ b/eh-frame-zero-terminator.patch @@ -0,0 +1,31 @@ +2017-08-31 H.J. Lu + + [BZ #22051] + * Makerules (build-module-helper-objlist): Filter out + $(elf-objpfx)sofini.os. + (build-shlib-objlist): Append $(elf-objpfx)sofini.os if it is + needed. + +Index: glibc-2.26/Makerules +=================================================================== +--- glibc-2.26.orig/Makerules ++++ glibc-2.26/Makerules +@@ -686,14 +686,17 @@ $(build-module-helper) -o $@ $(shlib-lds + $(call after-link,$@) + endef + ++# sofini.os must be placed last since it terminates .eh_frame section. + build-module-helper-objlist = \ + $(patsubst %_pic.a,$(whole-archive) %_pic.a $(no-whole-archive),\ + $(filter-out %.lds $(map-file) $(+preinit) $(+postinit) \ ++ $(elf-objpfx)sofini.os \ + $(link-libc-deps),$^)) + + build-module-objlist = $(build-module-helper-objlist) $(LDLIBS-$(@F:%.so=%).so) + build-shlib-objlist = $(build-module-helper-objlist) \ +- $(LDLIBS-$(@F:lib%.so=%).so) ++ $(LDLIBS-$(@F:lib%.so=%).so) \ ++ $(filter $(elf-objpfx)sofini.os,$^) + + # Don't try to use -lc when making libc.so itself. + # Also omits crti.o and crtn.o, which we do not want diff --git a/glibc-testsuite.changes b/glibc-testsuite.changes index 7dda998..aaeae73 100644 --- a/glibc-testsuite.changes +++ b/glibc-testsuite.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Tue Sep 12 06:37:36 UTC 2017 - schwab@suse.de + +- Remove rpcsvc/yppasswd.* from glibc-devel +- ld-so-hwcap-x86-64.patch: add x86_64 to hwcap (BZ #22093, bsc#1056606) + +------------------------------------------------------------------- +Thu Aug 31 13:43:07 UTC 2017 - schwab@suse.de + +- eh-frame-zero-terminator.patch: Properly terminate .eh_frame (BZ #22051) + ------------------------------------------------------------------- Thu Aug 31 07:06:20 UTC 2017 - schwab@suse.de diff --git a/glibc-testsuite.spec b/glibc-testsuite.spec index 0eea146..8bf4b0d 100644 --- a/glibc-testsuite.spec +++ b/glibc-testsuite.spec @@ -279,6 +279,10 @@ Patch1002: libpthread-compat-wrappers.patch Patch1003: math-c++-compat.patch # PATCH-FIX-UPSTREAM Remove nis and compat from default NSS configs Patch1004: remove-nss-nis-compat.patch +# PATCH-FIX-UPSTREAM Properly terminate .eh_frame (BZ #22051) +Patch1005: eh-frame-zero-terminator.patch +# PATCH-FIX-UPSTREAM x86: Add x86_64 to x86-64 HWCAP (BZ #22093) +Patch1006: ld-so-hwcap-x86-64.patch ### # Patches awaiting upstream approval @@ -513,6 +517,8 @@ rm nscd/s-stamp %patch1002 -p1 %patch1003 -p1 %patch1004 -p1 +%patch1005 -p1 +%patch1006 -p1 %patch2000 -p1 %patch2001 -p1 @@ -915,6 +921,8 @@ mkdir -p %{buildroot}/%{_lib}/obsolete # remove nsl compat library rm -f %{buildroot}%{_libdir}/libnsl* +# part of libnsl-devel +rm -f %{buildroot}%{_includedir}/rpcsvc/yppasswd.* # Miscelanna: diff --git a/glibc-utils.changes b/glibc-utils.changes index 7dda998..aaeae73 100644 --- a/glibc-utils.changes +++ b/glibc-utils.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Tue Sep 12 06:37:36 UTC 2017 - schwab@suse.de + +- Remove rpcsvc/yppasswd.* from glibc-devel +- ld-so-hwcap-x86-64.patch: add x86_64 to hwcap (BZ #22093, bsc#1056606) + +------------------------------------------------------------------- +Thu Aug 31 13:43:07 UTC 2017 - schwab@suse.de + +- eh-frame-zero-terminator.patch: Properly terminate .eh_frame (BZ #22051) + ------------------------------------------------------------------- Thu Aug 31 07:06:20 UTC 2017 - schwab@suse.de diff --git a/glibc-utils.spec b/glibc-utils.spec index f22169a..865f2a1 100644 --- a/glibc-utils.spec +++ b/glibc-utils.spec @@ -279,6 +279,10 @@ Patch1002: libpthread-compat-wrappers.patch Patch1003: math-c++-compat.patch # PATCH-FIX-UPSTREAM Remove nis and compat from default NSS configs Patch1004: remove-nss-nis-compat.patch +# PATCH-FIX-UPSTREAM Properly terminate .eh_frame (BZ #22051) +Patch1005: eh-frame-zero-terminator.patch +# PATCH-FIX-UPSTREAM x86: Add x86_64 to x86-64 HWCAP (BZ #22093) +Patch1006: ld-so-hwcap-x86-64.patch ### # Patches awaiting upstream approval @@ -513,6 +517,8 @@ rm nscd/s-stamp %patch1002 -p1 %patch1003 -p1 %patch1004 -p1 +%patch1005 -p1 +%patch1006 -p1 %patch2000 -p1 %patch2001 -p1 @@ -915,6 +921,8 @@ mkdir -p %{buildroot}/%{_lib}/obsolete # remove nsl compat library rm -f %{buildroot}%{_libdir}/libnsl* +# part of libnsl-devel +rm -f %{buildroot}%{_includedir}/rpcsvc/yppasswd.* # Miscelanna: diff --git a/glibc.changes b/glibc.changes index 7dda998..aaeae73 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Tue Sep 12 06:37:36 UTC 2017 - schwab@suse.de + +- Remove rpcsvc/yppasswd.* from glibc-devel +- ld-so-hwcap-x86-64.patch: add x86_64 to hwcap (BZ #22093, bsc#1056606) + +------------------------------------------------------------------- +Thu Aug 31 13:43:07 UTC 2017 - schwab@suse.de + +- eh-frame-zero-terminator.patch: Properly terminate .eh_frame (BZ #22051) + ------------------------------------------------------------------- Thu Aug 31 07:06:20 UTC 2017 - schwab@suse.de diff --git a/glibc.spec b/glibc.spec index c4d594c..1ab4931 100644 --- a/glibc.spec +++ b/glibc.spec @@ -285,6 +285,10 @@ Patch1002: libpthread-compat-wrappers.patch Patch1003: math-c++-compat.patch # PATCH-FIX-UPSTREAM Remove nis and compat from default NSS configs Patch1004: remove-nss-nis-compat.patch +# PATCH-FIX-UPSTREAM Properly terminate .eh_frame (BZ #22051) +Patch1005: eh-frame-zero-terminator.patch +# PATCH-FIX-UPSTREAM x86: Add x86_64 to x86-64 HWCAP (BZ #22093) +Patch1006: ld-so-hwcap-x86-64.patch ### # Patches awaiting upstream approval @@ -519,6 +523,8 @@ rm nscd/s-stamp %patch1002 -p1 %patch1003 -p1 %patch1004 -p1 +%patch1005 -p1 +%patch1006 -p1 %patch2000 -p1 %patch2001 -p1 @@ -921,6 +927,8 @@ mkdir -p %{buildroot}/%{_lib}/obsolete # remove nsl compat library rm -f %{buildroot}%{_libdir}/libnsl* +# part of libnsl-devel +rm -f %{buildroot}%{_includedir}/rpcsvc/yppasswd.* # Miscelanna: diff --git a/ld-so-hwcap-x86-64.patch b/ld-so-hwcap-x86-64.patch new file mode 100644 index 0000000..b99547a --- /dev/null +++ b/ld-so-hwcap-x86-64.patch @@ -0,0 +1,190 @@ +2017-09-11 H.J. Lu + + [BZ #22093] + * sysdeps/x86/cpu-features.c (init_cpu_features): Initialize + GLRO(dl_hwcap) to HWCAP_X86_64 for x86-64. + * sysdeps/x86/dl-hwcap.h (HWCAP_COUNT): Updated. + (HWCAP_IMPORTANT): Likewise. + (HWCAP_X86_64): New enum. + (HWCAP_X86_AVX512_1): Updated. + * sysdeps/x86/dl-procinfo.c (_dl_x86_hwcap_flags): Add "x86_64". + * sysdeps/x86_64/Makefile (tests): Add tst-x86_64-1. + (modules-names): Add x86_64/tst-x86_64mod-1. + (LDFLAGS-tst-x86_64mod-1.so): New. + ($(objpfx)tst-x86_64-1): Likewise. + ($(objpfx)x86_64/tst-x86_64mod-1.os): Likewise. + (tst-x86_64-1-clean): Likewise. + * sysdeps/x86_64/tst-x86_64-1.c: New file. + * sysdeps/x86_64/tst-x86_64mod-1.c: Likewise. + +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 +@@ -336,7 +336,6 @@ no_cpuid: + + /* Reuse dl_platform, dl_hwcap and dl_hwcap_mask for x86. */ + GLRO(dl_platform) = NULL; +- GLRO(dl_hwcap) = 0; + #if !HAVE_TUNABLES && defined SHARED + /* The glibc.tune.hwcap_mask tunable is initialized already, so no need to do + this. */ +@@ -344,6 +343,7 @@ no_cpuid: + #endif + + #ifdef __x86_64__ ++ GLRO(dl_hwcap) = HWCAP_X86_64; + if (cpu_features->kind == arch_kind_intel) + { + if (CPU_FEATURES_ARCH_P (cpu_features, AVX512F_Usable) +@@ -374,6 +374,7 @@ no_cpuid: + GLRO(dl_platform) = "haswell"; + } + #else ++ GLRO(dl_hwcap) = 0; + if (CPU_FEATURES_CPU_P (cpu_features, SSE2)) + GLRO(dl_hwcap) |= HWCAP_X86_SSE2; + +Index: glibc-2.26/sysdeps/x86/dl-hwcap.h +=================================================================== +--- glibc-2.26.orig/sysdeps/x86/dl-hwcap.h ++++ glibc-2.26/sysdeps/x86/dl-hwcap.h +@@ -24,15 +24,16 @@ + # define HWCAP_PLATFORMS_START 0 + # define HWCAP_PLATFORMS_COUNT 4 + # define HWCAP_START 0 +-# define HWCAP_COUNT 2 +-# define HWCAP_IMPORTANT (HWCAP_X86_SSE2 | HWCAP_X86_AVX512_1) ++# define HWCAP_COUNT 3 ++# define HWCAP_IMPORTANT \ ++ (HWCAP_X86_SSE2 | HWCAP_X86_64 | HWCAP_X86_AVX512_1) + #elif defined __x86_64__ + /* For 64 bit, only cover x86-64 platforms and capabilities. */ + # define HWCAP_PLATFORMS_START 2 + # define HWCAP_PLATFORMS_COUNT 4 + # define HWCAP_START 1 +-# define HWCAP_COUNT 2 +-# define HWCAP_IMPORTANT (HWCAP_X86_AVX512_1) ++# define HWCAP_COUNT 3 ++# define HWCAP_IMPORTANT (HWCAP_X86_64 | HWCAP_X86_AVX512_1) + #else + /* For 32 bit, only cover i586, i686 and SSE2. */ + # define HWCAP_PLATFORMS_START 0 +@@ -45,7 +46,8 @@ + enum + { + HWCAP_X86_SSE2 = 1 << 0, +- HWCAP_X86_AVX512_1 = 1 << 1 ++ HWCAP_X86_64 = 1 << 1, ++ HWCAP_X86_AVX512_1 = 1 << 2 + }; + + static inline const char * +Index: glibc-2.26/sysdeps/x86/dl-procinfo.c +=================================================================== +--- glibc-2.26.orig/sysdeps/x86/dl-procinfo.c ++++ glibc-2.26/sysdeps/x86/dl-procinfo.c +@@ -58,11 +58,11 @@ PROCINFO_CLASS struct cpu_features _dl_x + #if !defined PROCINFO_DECL && defined SHARED + ._dl_x86_hwcap_flags + #else +-PROCINFO_CLASS const char _dl_x86_hwcap_flags[2][9] ++PROCINFO_CLASS const char _dl_x86_hwcap_flags[3][9] + #endif + #ifndef PROCINFO_DECL + = { +- "sse2", "avx512_1" ++ "sse2", "x86_64", "avx512_1" + } + #endif + #if !defined SHARED || defined PROCINFO_DECL +Index: glibc-2.26/sysdeps/x86_64/Makefile +=================================================================== +--- glibc-2.26.orig/sysdeps/x86_64/Makefile ++++ glibc-2.26/sysdeps/x86_64/Makefile +@@ -52,6 +52,12 @@ $(objpfx)tst-quad2pie: $(objpfx)tst-quad + CFLAGS-tst-quad1pie.c = $(PIE-ccflag) + CFLAGS-tst-quad2pie.c = $(PIE-ccflag) + ++tests += tst-x86_64-1 ++modules-names += x86_64/tst-x86_64mod-1 ++LDFLAGS-tst-x86_64mod-1.so = -Wl,-soname,tst-x86_64mod-1.so ++ ++$(objpfx)tst-x86_64-1: $(objpfx)x86_64/tst-x86_64mod-1.so ++ + tests += tst-audit3 tst-audit4 tst-audit5 tst-audit6 tst-audit7 \ + tst-audit10 tst-sse tst-avx tst-avx512 + test-extras += tst-audit4-aux tst-audit10-aux \ +@@ -122,3 +128,14 @@ endif + ifeq ($(subdir),csu) + gen-as-const-headers += tlsdesc.sym rtld-offsets.sym + endif ++ ++$(objpfx)x86_64/tst-x86_64mod-1.os: $(objpfx)tst-x86_64mod-1.os ++ $(make-target-directory) ++ rm -f $@ ++ ln $< $@ ++ ++do-tests-clean common-mostlyclean: tst-x86_64-1-clean ++ ++.PHONY: tst-x86_64-1-clean ++tst-x86_64-1-clean: ++ -rm -rf $(objpfx)x86_64 +Index: glibc-2.26/sysdeps/x86_64/tst-x86_64-1.c +=================================================================== +--- /dev/null ++++ glibc-2.26/sysdeps/x86_64/tst-x86_64-1.c +@@ -0,0 +1,26 @@ ++/* Test searching the "x86_64" directory for shared libraries. ++ Copyright (C) 2017 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 ++ . */ ++ ++extern void foo (void); ++ ++int ++main (void) ++{ ++ foo (); ++ return 0; ++} +Index: glibc-2.26/sysdeps/x86_64/tst-x86_64mod-1.c +=================================================================== +--- /dev/null ++++ glibc-2.26/sysdeps/x86_64/tst-x86_64mod-1.c +@@ -0,0 +1,22 @@ ++/* Test searching the "x86_64" directory for shared libraries. ++ Copyright (C) 2017 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 ++ . */ ++ ++void ++foo (void) ++{ ++}