- Renamed release engineering directory to `releng' (#903754).
  - Fix building with gcc 4.8.0 (#911307).
This commit is contained in:
Carlos O'Donell 2013-02-27 19:48:51 -05:00
parent b6dbc3f013
commit 6cfdaac5b6
3 changed files with 79 additions and 11 deletions

60
glibc-rh911307.patch Normal file
View File

@ -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 <carlos@redhat.com>
#
# * 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)))

View File

@ -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 - </dev/null
%endif
@ -536,7 +540,7 @@ build power6
%endif
cd build-%{target}
$GCC -static -L. -Os -g ../fedora/glibc_post_upgrade.c -o glibc_post_upgrade.%{_target_cpu} \
$GCC -static -L. -Os -g ../releng/glibc_post_upgrade.c -o glibc_post_upgrade.%{_target_cpu} \
'-DLIBTLS="/%{_lib}/tls/"' \
'-DGCONV_MODULES_DIR="%{_prefix}/%{_lib}/gconv"' \
'-DLD_SO_CONF="/etc/ld.so.conf"' \
@ -640,7 +644,7 @@ rm -f $RPM_BUILD_ROOT/%{_lib}/libNoVersion*
# the generic one (#162634)
cp -a bits/stdio-lock.h $RPM_BUILD_ROOT%{_prefix}/include/bits/stdio-lock.h
# And <bits/libc-lock.h> 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 <carlos@redhat.com> - 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 <carlos@redhat.com> - 2.17-2
- Fix ownership of /usr/lib[64]/audit (#894307).
- Support unmarked ARM objects in ld.so.cache and aux cache (#905184).

View File

@ -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