From 6cfdaac5b6b98b0810253d20e3cb4e069f432ec6 Mon Sep 17 00:00:00 2001 From: Carlos O'Donell Date: Wed, 27 Feb 2013 19:48:51 -0500 Subject: [PATCH] 2.17-3 - Renamed release engineering directory to `releng' (#903754). - Fix building with gcc 4.8.0 (#911307). --- glibc-rh911307.patch | 60 ++++++++++++++++++++++++++++++++++++++++++++ glibc.spec | 28 +++++++++++++-------- sources | 2 +- 3 files changed, 79 insertions(+), 11 deletions(-) create mode 100644 glibc-rh911307.patch diff --git a/glibc-rh911307.patch b/glibc-rh911307.patch new file mode 100644 index 0000000..9eb0426 --- /dev/null +++ b/glibc-rh911307.patch @@ -0,0 +1,60 @@ +# +# Red Hat BZ: +# https://bugzilla.redhat.com/show_bug.cgi?id=911307 +# +# Sourceware BZ: None. +# +# Upstreamm submission: Not yet completed. +# +# ChangeLog +# +# 2013-02-27 Carlos O'Donell +# +# * elf/Makefile (CFLAGS-.o): Add -fno-tree-loop-distribute-patterns. +# (CFLAGS-.os): Likewise. +# (CFLAGS-.op): Likewise. +# (CFLAGS-.ob): Likewise. +# (CFLAGS-.oS): Likewise. +# * string/Makefile (CFLAGS-.o): Likewise. +# (CFLAGS-.os): Likewise. +# (CFLAGS-.op): Likewise. +# (CFLAGS-.ob): Likewise. +# (CFLAGS-.oS): Likewise. +# +diff -urN glibc-2.17-c758a686/string/Makefile tmp/glibc-2.17-c758a686/string/Makefile +--- glibc-2.17-c758a686/string/Makefile 2013-02-27 18:07:34.618968703 -0500 ++++ tmp/glibc-2.17-c758a686/string/Makefile 2013-02-27 18:08:16.075796160 -0500 +@@ -78,6 +78,14 @@ + CFLAGS-bug-strstr1.c = -fno-builtin + CFLAGS-bug-strcasestr1.c = -fno-builtin + ++# Disable any optimization which might result in function calls to the very ++# same functions we are trying to compile, thus creating an infinite loop. ++CFLAGS-.o += -fno-tree-loop-distribute-patterns ++CFLAGS-.os += -fno-tree-loop-distribute-patterns ++CFLAGS-.op += -fno-tree-loop-distribute-patterns ++CFLAGS-.ob += -fno-tree-loop-distribute-patterns ++CFLAGS-.oS += -fno-tree-loop-distribute-patterns ++ + ifeq ($(run-built-tests),yes) + tests: $(objpfx)tst-svc.out + $(objpfx)tst-svc.out: tst-svc.input $(objpfx)tst-svc +diff -urN glibc-2.17-c758a686/elf/Makefile tmp/glibc-2.17-c758a686/elf/Makefile +--- glibc-2.17-c758a686/elf/Makefile 2013-02-27 18:07:13.812055613 -0500 ++++ tmp/glibc-2.17-c758a686/elf/Makefile 2013-02-27 18:08:16.075796160 -0500 +@@ -432,6 +432,16 @@ + CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\ + -DNOT_IN_libc=1 -DIS_IN_rtld=1 -DIN_LIB=rtld) + ++# Disable any optimization which might result in function calls during early ++# dynamic loader startup. We disable -ftree-loop-distribute-patterns which ++# might convert code into calls to functions like memcpy or memset when the PLT ++# is not yet setup. ++CFLAGS-.o += -fno-tree-loop-distribute-patterns ++CFLAGS-.os += -fno-tree-loop-distribute-patterns ++CFLAGS-.op += -fno-tree-loop-distribute-patterns ++CFLAGS-.ob += -fno-tree-loop-distribute-patterns ++CFLAGS-.oS += -fno-tree-loop-distribute-patterns ++ + test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(strip $(modules-names)))) + generated += $(addsuffix .so,$(strip $(modules-names))) diff --git a/glibc.spec b/glibc.spec index 2d19e3f..4018373 100644 --- a/glibc.spec +++ b/glibc.spec @@ -27,7 +27,7 @@ Summary: The GNU libc libraries Name: glibc Version: %{glibcversion} -Release: 2%{?dist} +Release: 3%{?dist} # GPLv2+ is used in a bunch of programs, LGPLv2+ is used for libraries. # Things that are linked directly into dynamically linked programs # and shared libraries (e.g. crt files, lib*_nonshared.a) have an additional @@ -37,7 +37,7 @@ License: LGPLv2+ and LGPLv2+ with exceptions and GPLv2+ Group: System Environment/Libraries URL: http://www.gnu.org/software/glibc/ Source0: %{?glibc_release_url}%{glibcsrcdir}.tar.gz -Source1: %{glibcsrcdir}-fedora.tar.gz +Source1: %{glibcsrcdir}-releng.tar.gz # 0000-0999 for patches which are unlikely to ever go upstream or which # have not been analyzed to see if they ought to go upstream yet. @@ -109,6 +109,9 @@ Patch0032: %{name}-fedora-elf-rh737223.patch Patch0033: %{name}-fedora-elf-ORIGIN.patch Patch0034: %{name}-fedora-elf-init-hidden_undef.patch +# Needs to be sent upstream +Patch0035: %{name}-rh911307.patch + # # Patches from upstream # @@ -402,6 +405,7 @@ package or when debugging this package. %patch0033 -p1 %patch0034 -p1 %patch2028 -p1 +%patch0035 -p1 # On powerpc32, hp timing is only available in power4/power6 # libs, not in base, so pre-power4 dynamic linker is incompatible @@ -519,7 +523,7 @@ build nosegneg -mno-tls-direct-seg-refs platform=`LD_SHOW_AUXV=1 /bin/true | sed -n 's/^AT_PLATFORM:[[:blank:]]*//p'` if [ "$platform" != power6 ]; then mkdir -p power6emul/{lib,lib64} - $GCC -shared -O2 -fpic -o power6emul/%{_lib}/power6emul.so fedora/power6emul.c -Wl,-z,initfirst + $GCC -shared -O2 -fpic -o power6emul/%{_lib}/power6emul.so releng/power6emul.c -Wl,-z,initfirst %ifarch ppc gcc -shared -nostdlib -O2 -fpic -m64 -o power6emul/lib64/power6emul.so -xc - needs sanitizing as well. -cp -a fedora/libc-lock.h $RPM_BUILD_ROOT%{_prefix}/include/bits/libc-lock.h +cp -a releng/libc-lock.h $RPM_BUILD_ROOT%{_prefix}/include/bits/libc-lock.h if [ -d $RPM_BUILD_ROOT%{_prefix}/info -a "%{_infodir}" != "%{_prefix}/info" ]; then mkdir -p $RPM_BUILD_ROOT%{_infodir} @@ -652,7 +656,7 @@ gzip -9nvf $RPM_BUILD_ROOT%{_infodir}/libc* ln -sf libbsd-compat.a $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libbsd.a -install -p -m 644 fedora/nsswitch.conf $RPM_BUILD_ROOT/etc/nsswitch.conf +install -p -m 644 releng/nsswitch.conf $RPM_BUILD_ROOT/etc/nsswitch.conf %ifnarch %{auxarches} mkdir -p $RPM_BUILD_ROOT/etc/default @@ -661,9 +665,9 @@ install -p -m 644 nis/nss $RPM_BUILD_ROOT/etc/default/nss # This is for ncsd - in glibc 2.2 install -m 644 nscd/nscd.conf $RPM_BUILD_ROOT/etc mkdir -p $RPM_BUILD_ROOT/usr/lib/tmpfiles.d/ -install -m 644 fedora/nscd.conf %{buildroot}/usr/lib/tmpfiles.d/ +install -m 644 releng/nscd.conf %{buildroot}/usr/lib/tmpfiles.d/ mkdir -p $RPM_BUILD_ROOT/lib/systemd/system -install -m 644 fedora/nscd.service fedora/nscd.socket $RPM_BUILD_ROOT/lib/systemd/system +install -m 644 releng/nscd.service releng/nscd.socket $RPM_BUILD_ROOT/lib/systemd/system %endif # Include ld.so.conf @@ -824,14 +828,14 @@ EOF rm -rf $RPM_BUILD_ROOT%{_prefix}/share/zoneinfo # Make sure %config files have the same timestamp -touch -r fedora/glibc.spec.in $RPM_BUILD_ROOT/etc/ld.so.conf +touch -r releng/glibc.spec.in $RPM_BUILD_ROOT/etc/ld.so.conf touch -r sunrpc/etc.rpc $RPM_BUILD_ROOT/etc/rpc # We allow undefined symbols in shared libraries because the libraries # referenced at link time here, particularly ld.so, may be different than # the one used at runtime. This is really only needed during the ARM # transition from ld-linux.so.3 to ld-linux-armhf.so.3. -cd fedora +cd releng $GCC -Os -g -o build-locale-archive build-locale-archive.c \ ../build-%{target}/locale/locarchive.o \ ../build-%{target}/locale/md5.o \ @@ -1197,6 +1201,10 @@ rm -f *.filelist* %endif %changelog +* Wed Feb 27 2013 Carlos O'Donell - 2.17-3 + - Renamed release engineering directory to `releng' (#903754). + - Fix building with gcc 4.8.0 (#911307). + * Thu Feb 7 2013 Carlos O'Donell - 2.17-2 - Fix ownership of /usr/lib[64]/audit (#894307). - Support unmarked ARM objects in ld.so.cache and aux cache (#905184). diff --git a/sources b/sources index 94464e1..d1d2286 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -2f22f9453c4f4d4aa231891daae79eac glibc-2.17-c758a686-fedora.tar.gz +a0eee6c5a6ed680b723f2247576d4232 glibc-2.17-c758a686-releng.tar.gz d91ac2e9667310fa815c2316d542567e glibc-2.17-c758a686.tar.gz