From 6f4a02fa689907af11c5ddf0aa8874a4bc213e50078bcdeebbb5dda290aa6a21 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Sun, 14 Feb 2010 14:34:48 +0000 Subject: [PATCH 01/23] - avoid spurious differences in nscd on rebuilds. OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=18 --- glibc-2.11.1-11c19d374bd4.tar.bz2 | 3 + glibc-2.11.2-21580967038a.tar.bz2 | 3 - glibc-2.5-ppc-llrintl.diff | 19 ++++ glibc-gai-private4.diff | 76 -------------- glibc-ldconfigr-aux.diff | 37 ------- glibc-make-3.82.patch | 91 ----------------- glibc-nis-initgroups.diff | 39 ------- glibc-ppc64-vdso-time.diff | 28 ------ glibc-resolv-mdnshint.diff | 19 ---- glibc-resolv-reload.diff | 124 ----------------------- glibc-sparc64-fxstat.diff | 7 -- glibc-statfs64-ia64.diff | 12 --- glibc.changes | 162 ------------------------------ glibc.spec | 105 +++---------------- glibc_post_upgrade.c | 19 ---- ld-prelink-unique.diff | 57 ----------- nscd.init | 2 - powerpc-cpu.tar.bz2 | 3 + ready | 0 resolv.dynamic.diff | 33 ++++++ 20 files changed, 74 insertions(+), 765 deletions(-) create mode 100644 glibc-2.11.1-11c19d374bd4.tar.bz2 delete mode 100644 glibc-2.11.2-21580967038a.tar.bz2 create mode 100644 glibc-2.5-ppc-llrintl.diff delete mode 100644 glibc-gai-private4.diff delete mode 100644 glibc-ldconfigr-aux.diff delete mode 100644 glibc-make-3.82.patch delete mode 100644 glibc-nis-initgroups.diff delete mode 100644 glibc-ppc64-vdso-time.diff delete mode 100644 glibc-resolv-mdnshint.diff delete mode 100644 glibc-resolv-reload.diff delete mode 100644 glibc-sparc64-fxstat.diff delete mode 100644 glibc-statfs64-ia64.diff delete mode 100644 ld-prelink-unique.diff create mode 100644 powerpc-cpu.tar.bz2 create mode 100644 ready create mode 100644 resolv.dynamic.diff diff --git a/glibc-2.11.1-11c19d374bd4.tar.bz2 b/glibc-2.11.1-11c19d374bd4.tar.bz2 new file mode 100644 index 0000000..ae9b0ca --- /dev/null +++ b/glibc-2.11.1-11c19d374bd4.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e03c84ffe3b41a81a070a896307fa59b4618f2cc053360a65c867a79a32a718c +size 15670997 diff --git a/glibc-2.11.2-21580967038a.tar.bz2 b/glibc-2.11.2-21580967038a.tar.bz2 deleted file mode 100644 index 02c7b67..0000000 --- a/glibc-2.11.2-21580967038a.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9b0467d31d53dcb8e9920efa51c338e2ef1bb597ab7d2ed14b9a16103ffd2622 -size 15670351 diff --git a/glibc-2.5-ppc-llrintl.diff b/glibc-2.5-ppc-llrintl.diff new file mode 100644 index 0000000..3a65665 --- /dev/null +++ b/glibc-2.5-ppc-llrintl.diff @@ -0,0 +1,19 @@ +Index: powerpc-cpu/sysdeps/powerpc/powerpc32/powerpc64/fpu/s_llrint.S +=================================================================== +--- powerpc-cpu/sysdeps/powerpc/powerpc32/powerpc64/fpu/s_llrint.S.orig ++++ powerpc-cpu/sysdeps/powerpc/powerpc32/powerpc64/fpu/s_llrint.S +@@ -18,6 +18,7 @@ + 02110-1301 USA. */ + + #include ++#include + + /* long long int[r3, r4] __llrint (double x[fp1]) */ + ENTRY (__llrint) +@@ -41,3 +42,6 @@ weak_alias (__llrint, llrint) + strong_alias (__llrint, __llrintl) + weak_alias (__llrint, llrintl) + #endif ++#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1) ++compat_symbol (libm, __llrint, llrintl, GLIBC_2_1) ++#endif diff --git a/glibc-gai-private4.diff b/glibc-gai-private4.diff deleted file mode 100644 index 189b2ea..0000000 --- a/glibc-gai-private4.diff +++ /dev/null @@ -1,76 +0,0 @@ ---- posix/gai.conf~ 2010-05-12 04:10:58.087661000 +0200 -+++ posix/gai.conf 2010-05-12 04:14:40.638820000 +0200 -@@ -67,11 +67,66 @@ - #scopev4 ::ffff:192.168.0.0/112 5 - #scopev4 ::ffff:0.0.0.0/96 14 - # --# For sites which use site-local IPv4 addresses behind NAT there is --# the problem that even if IPv4 addresses are preferred they do not --# have the same scope and are therefore not sorted first. To change --# this use only these rules: -+# Back in 2003, the sorting algorithm used by getaddrinfo() was defined in RFC -+# 3484. However, this document did not take into account (or foresee) the -+# ubiquity of IPv4 NAT on today's internet. This in turn causes some real -+# operational problems that's hindering the deployment of IPv6 for content -+# providers. -+# -+# The problem scenario is the following: -+# -+# An end user is located in a network numbered with private (RFC 1918) IPv4 -+# addresses and transitional 6to4 (RFC 3056) IPv6 addresses. The network is -+# connected to the internet by a CPE/SOHO device implementing NAT for IPv4 and -+# anycasted 6to4 (RFC 3068) for IPv6. -+# -+# When the user attempts to connect to a server whose hostname has both IPv4 -+# and IPv6 addresses published in DNS, an IPv6 connection using the -+# transitional 6to4 service will be preferred. This happens because the scope -+# comparsion fails for IPv4, the RFC 1918 addresses are assumed to have -+# site-local scope, which is smaller than the global scope of the server's IPv4 -+# address. For IPv6, both the server's and the client's (6to4) address have -+# global scope. -+# -+# Unfortunately, the operational reality is that a transitional technique such -+# as 6to4 is much less reliable than IPv4. The relay routers might be located -+# far away from the optimal IPv4 path, and thus cause a significant latency -+# increase, or they might not even work optimally (they're usually operated by -+# voulenteering third parties on a best-effort basis), and finally some ISPs -+# simply filter away all proto-41 traffic. Transitional techniques are useful -+# to give end users with IPv4-only service a real shot at accessing IPv6-only -+# content, but it should never be preferred over IPv4 service when accessing -+# dual-stacked content. -+# -+# RFC 3484 even acknowledges this, by saying to "«avoid the use of transitional -+# addresses when native addresses are available"». -+# -+# An IETF draft document which describes the problem in a much more detailed -+# manner than I have is available here: -+# -+# http://tools.ietf.org/html/draft-denis-v6ops-nat-addrsel-00 -+# -+# There's also an IETF draft that aims to revise RFC 3484 in order to fix this -+# problem (amongst others): -+# -+# http://tools.ietf.org/html/draft-arifumi-6man-rfc3484-revise-02 -+# -+# Quoting from this document: -+# -+# > 2.7. To change private IPv4 address scope -+# > -+# > As detailed in Remi's draft [I-D.denis-v6ops-nat-addrsel], when a -+# > host is in NATed site, and has a private IPv4 address and -+# > transitional addresses like 6to4 and Teredo, the host chooses -+# > transitional IPv6 address to access most of the dual-stack servers. -+# > -+# > This is because private IPv4 address is defined to be site-local -+# > scope, and as in RFC 3484, the scope matching rules (Rule 2) set -+# > lower priority for private IPv4 address. -+# > -+# > By changing the address scope of private IPv4 address to global, this -+# > problem can be solved. - # --#scopev4 ::ffff:169.254.0.0/112 2 --#scopev4 ::ffff:127.0.0.0/104 2 --#scopev4 ::ffff:0.0.0.0/96 14 -+scopev4 ::ffff:10.0.0.0/104 14 -+scopev4 ::ffff:172.16.0.0/108 14 -+scopev4 ::ffff:192.168.0.0/112 14 diff --git a/glibc-ldconfigr-aux.diff b/glibc-ldconfigr-aux.diff deleted file mode 100644 index bcce030..0000000 --- a/glibc-ldconfigr-aux.diff +++ /dev/null @@ -1,37 +0,0 @@ -2010-05-31 Petr Baudis - - * elf/ldconfig.c: Allow aux_cache_file open()ing to fail silently - even in the chroot mode. - - -diff --git a/elf/ldconfig.c b/elf/ldconfig.c -index 6e71b09..6ba8e07 100644 ---- a/elf/ldconfig.c -+++ b/elf/ldconfig.c -@@ -1359,14 +1359,9 @@ main (int argc, char **argv) - - const char *aux_cache_file = _PATH_LDCONFIG_AUX_CACHE; - if (opt_chroot) -- { -- aux_cache_file = chroot_canon (opt_chroot, aux_cache_file); -- if (aux_cache_file == NULL) -- error (EXIT_FAILURE, errno, _("Can't open cache file %s\n"), -- _PATH_LDCONFIG_AUX_CACHE); -- } -+ aux_cache_file = chroot_canon (opt_chroot, aux_cache_file); - -- if (! opt_ignore_aux_cache) -+ if (! opt_ignore_aux_cache && aux_cache_file) - load_aux_cache (aux_cache_file); - else - init_aux_cache (); -@@ -1376,7 +1371,8 @@ main (int argc, char **argv) - if (opt_build_cache) - { - save_cache (cache_file); -- save_aux_cache (aux_cache_file); -+ if (aux_cache_file) -+ save_aux_cache (aux_cache_file); - } - - return 0; diff --git a/glibc-make-3.82.patch b/glibc-make-3.82.patch deleted file mode 100644 index 702c044..0000000 --- a/glibc-make-3.82.patch +++ /dev/null @@ -1,91 +0,0 @@ -From: Andreas Schwab -To: libc-hacker at sourceware dot org -Subject: [PATCH] Work around shortest-stem feature in make 3.82+ - -make 3.82+ no longer selects pattern rules by order, but by shortest -stem, so we need to add more rules to make sure we still get the right -matches. - -Andreas. - -2010-09-09 Andreas Schwab - - * Makeconfig (sysd-rules-patterns): Add rtld-%:rtld-%. - (sysd-rules-targets): Remove duplicates. - * elf/rtld-Rules ($(objpfx)rtld-%.os): Add pattern rules with - rtld-%.$o dependency. - -2010-09-06 Andreas Schwab - - * manual/Makefile: Don't mix pattern rules with normal rules. - -diff --git a/Makeconfig b/Makeconfig -index 9778998..807c1d1 100644 ---- a/Makeconfig -+++ b/Makeconfig -@@ -966,7 +966,7 @@ endif - # emitted into sysd-rules. A sysdeps Makeconfig fragment can - # add its own special object file prefix to this list with e.g. foo-%:% - # to have foo-*.? compiled from *.? using $(foo-CPPFLAGS). --sysd-rules-patterns := %:% rtld-%:% m_%:s_% -+sysd-rules-patterns := %:% rtld-%:rtld-% rtld-%:% m_%:s_% - - # Let sysdeps/ subdirs contain a Makeconfig fragment for us to include here. - sysdep-makeconfigs := $(wildcard $(+sysdep_dirs:=/Makeconfig)) -@@ -975,8 +975,8 @@ include $(sysdep-makeconfigs) - endif - - # Compute just the target patterns. Makeconfig has set sysd-rules-patterns. --sysd-rules-targets := $(foreach p,$(sysd-rules-patterns),\ -- $(firstword $(subst :, ,$p))) -+sysd-rules-targets := $(sort $(foreach p,$(sysd-rules-patterns),\ -+ $(firstword $(subst :, ,$p)))) - - endif # Makeconfig not yet included - -diff --git a/elf/rtld-Rules b/elf/rtld-Rules -index 9f31a56..fc225f2 100644 ---- a/elf/rtld-Rules -+++ b/elf/rtld-Rules -@@ -93,6 +93,12 @@ else - # These are the basic compilation rules corresponding to the Makerules ones. - # The sysd-rules generated makefile already defines pattern rules for rtld-% - # targets built from sysdeps source files. -+$(objpfx)rtld-%.os: rtld-%.S $(before-compile) -+ $(compile-command.S) $(rtld-CPPFLAGS) -+$(objpfx)rtld-%.os: rtld-%.s $(before-compile) -+ $(compile-command.s) $(rtld-CPPFLAGS) -+$(objpfx)rtld-%.os: rtld-%.c $(before-compile) -+ $(compile-command.c) $(rtld-CPPFLAGS) - $(objpfx)rtld-%.os: %.S $(before-compile) - $(compile-command.S) $(rtld-CPPFLAGS) - $(objpfx)rtld-%.os: %.s $(before-compile) -@@ -101,6 +107,9 @@ $(objpfx)rtld-%.os: %.c $(before-compile) - $(compile-command.c) $(rtld-CPPFLAGS) - - # The rules for generated source files. -+$(objpfx)rtld-%.os: $(objpfx)rtld-%.S $(before-compile); $(compile-command.S) -+$(objpfx)rtld-%.os: $(objpfx)rtld-%.s $(before-compile); $(compile-command.s) -+$(objpfx)rtld-%.os: $(objpfx)rtld-%.c $(before-compile); $(compile-command.c) - $(objpfx)rtld-%.os: $(objpfx)%.S $(before-compile); $(compile-command.S) - $(objpfx)rtld-%.os: $(objpfx)%.s $(before-compile); $(compile-command.s) - $(objpfx)rtld-%.os: $(objpfx)%.c $(before-compile); $(compile-command.c) --- -1.7.2.2 - -diff --git a/manual/Makefile b/manual/Makefile -index c5866eb..b1f5fa7 100644 ---- a/manual/Makefile -+++ b/manual/Makefile -@@ -232,7 +232,10 @@ ifdef objpfx - .PHONY: stubs - stubs: $(objpfx)stubs - endif --$(objpfx)stubs ../po/manual.pot $(objpfx)stamp%: -+$(objpfx)stubs ../po/manual.pot: -+ $(make-target-directory) -+ touch $@ -+$(objpfx)stamp%: - $(make-target-directory) - touch $@ - diff --git a/glibc-nis-initgroups.diff b/glibc-nis-initgroups.diff deleted file mode 100644 index 59ac9c5..0000000 --- a/glibc-nis-initgroups.diff +++ /dev/null @@ -1,39 +0,0 @@ -2010-05-31 Petr Baudis - - * nis/nss_compat/compat-initgroups.c (internal_getgrent_r): Fix - initialization of skip_initgroups_dyn. - -diff --git a/nis/nss_compat/compat-initgroups.c b/nis/nss_compat/compat-initgroups.c -index 07a3b92..de8d95c 100644 ---- a/nis/nss_compat/compat-initgroups.c -+++ b/nis/nss_compat/compat-initgroups.c -@@ -474,18 +474,21 @@ internal_getgrent_r (ent_t *ent, char *buffer, size_t buflen, const char *user, - /* If the selected module does not support getgrent_r or - initgroups_dyn, abort. We cannot find the needed group - entries. */ -- if (nss_getgrent_r == NULL && nss_initgroups_dyn == NULL) -+ if (nss_initgroups_dyn == NULL || nss_getgrgid_r == NULL) -+ { -+ if (nss_setgrent != NULL) -+ { -+ nss_setgrent (1); -+ ent->need_endgrent = true; -+ } -+ ent->skip_initgroups_dyn = true; -+ } -+ -+ if (ent->skip_initgroups_dyn && nss_getgrent_r == NULL) - return NSS_STATUS_UNAVAIL; - - ent->files = false; - -- if (nss_initgroups_dyn == NULL && nss_setgrent != NULL) -- { -- nss_setgrent (1); -- ent->need_endgrent = true; -- } -- ent->skip_initgroups_dyn = true; -- - return getgrent_next_nss (ent, buffer, buflen, user, group, - start, size, groupsp, limit, errnop); - } diff --git a/glibc-ppc64-vdso-time.diff b/glibc-ppc64-vdso-time.diff deleted file mode 100644 index bba82b6..0000000 --- a/glibc-ppc64-vdso-time.diff +++ /dev/null @@ -1,28 +0,0 @@ -2010-03-04 Carlos Eduardo Seo - - * sysdeps/unix/sysv/linux/powerpc/powerpc64/time.c: New file. - -Index: src/sysdeps/unix/sysv/linux/powerpc/powerpc64/time.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ src/sysdeps/unix/sysv/linux/powerpc/powerpc64/time.c 2010-03-04 20:02:23.000000000 -0300 -@@ -0,0 +1,19 @@ -+/* Copyright (C) 2010 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, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include diff --git a/glibc-resolv-mdnshint.diff b/glibc-resolv-mdnshint.diff deleted file mode 100644 index fec8d52..0000000 --- a/glibc-resolv-mdnshint.diff +++ /dev/null @@ -1,19 +0,0 @@ -diff --git a/resolv/res_hconf.c b/resolv/res_hconf.c -index ed55bec..f06db75 100644 ---- a/resolv/res_hconf.c -+++ b/resolv/res_hconf.c -@@ -243,9 +243,12 @@ parse_line (const char *fname, int line_num, const char *str) - if (c == NULL) - { - char *buf; -+ char *hint = ""; - -- if (__asprintf (&buf, _("%s: line %d: bad command `%s'\n"), -- fname, line_num, start) < 0) -+ if (__strncasecmp (start, "mdns", len) == 0 && len == 4) -+ hint = "Multicast DNS is now configured in /etc/nsswitch.conf instead.\nSee also the package and manpage of nss-mdns.\n"; -+ if (__asprintf (&buf, _("%s: line %d: bad command `%s'\n%s"), -+ fname, line_num, start, hint) < 0) - return; - - __fxprintf (NULL, "%s", buf); diff --git a/glibc-resolv-reload.diff b/glibc-resolv-reload.diff deleted file mode 100644 index 0011838..0000000 --- a/glibc-resolv-reload.diff +++ /dev/null @@ -1,124 +0,0 @@ -From libc-alpha-return-22754-pasky=ucw.cz@sourceware.org Tue Mar 16 00:47:00 2010 -Return-Path: -X-Original-To: pasky@pasky.or.cz -Delivered-To: pasky@pasky.or.cz -Received: from nikam.ms.mff.cuni.cz (nikam-dmz.ms.mff.cuni.cz [195.113.20.16]) - by machine.or.cz (Postfix) with ESMTPS id C1B8586202A - for ; Tue, 16 Mar 2010 00:47:00 +0100 (CET) -Received: by nikam.ms.mff.cuni.cz (Postfix) - id 9CDEC9AC7A4; Tue, 16 Mar 2010 00:47:00 +0100 (CET) -Delivered-To: pasky@kam.mff.cuni.cz -Received: from jabberwock.ucw.cz (jabberwock.ucw.cz [89.250.246.4]) - by nikam.ms.mff.cuni.cz (Postfix) with ESMTP id 99F0E9AC77B - for ; Tue, 16 Mar 2010 00:47:00 +0100 (CET) -Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) - by jabberwock.ucw.cz (Postfix) with SMTP id 14E1ACF040 - for ; Tue, 16 Mar 2010 00:46:59 +0100 (CET) -Received: (qmail 18956 invoked by alias); 15 Mar 2010 23:46:58 -0000 -Delivered-To: moderator for libc-alpha@sourceware.org -Received: (qmail 15843 invoked by uid 22791); 15 Mar 2010 17:23:15 -0000 -X-SWARE-Spam-Status: No, hits=-2.6 required=5.0 - tests=BAYES_00 -X-Spam-Check-By: sourceware.org -Message-ID: <4B9E6CFA.7020002@riot.org> -Date: Mon, 15 Mar 2010 18:23:06 +0100 -From: Sebastian Kienzl -User-Agent: Thunderbird 2.0.0.23 (Windows/20090812) -MIME-Version: 1.0 -To: libc-alpha@sourceware.org -Subject: Reloading of /etc/resolv.conf -Content-Type: multipart/mixed; - boundary="------------060407080409020101000002" -Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm -Precedence: bulk -List-Id: -List-Unsubscribe: -List-Subscribe: -List-Archive: -List-Post: -List-Help: , -Sender: libc-alpha-owner@sourceware.org -Delivered-To: mailing list libc-alpha@sourceware.org - -This is a multi-part message in MIME format. ---------------060407080409020101000002 -Content-Type: text/plain; charset=ISO-8859-15; format=flowed -Content-Transfer-Encoding: 7bit - -Hello! - -There's a patch in the wild against the resolver which makes it reload -/etc/resolv.conf on change, see -http://sources.redhat.com/ml/libc-alpha/2004-09/msg00130.html - -However, this patch actually doesn't work properly for multi-threaded -programs, as only one thread will notice the change and refresh its -resolver state. I've attached a proper patch. It's for 2.5 but it should -work with current versions, too. - -Even though the patch may not be interesting for upstream, I decided to -let you know about this problem, since the mentioned patch seems to be -used by at least Debian and Ubuntu. - -Regards, -Seb. - - - ---------------060407080409020101000002 -Content-Type: text/plain; - name="glibc-2.5-resolvconf.patch" -Content-Transfer-Encoding: 7bit -Content-Disposition: inline; - filename="glibc-2.5-resolvconf.patch" - -diff -ur resolv.orig/res_libc.c resolv/res_libc.c ---- resolv.orig/res_libc.c 2005-11-01 01:06:40.000000000 +0100 -+++ resolv/res_libc.c 2010-03-15 14:13:18.000000000 +0100 -@@ -22,7 +22,7 @@ - #include - #include - #include -- -+#include - - /* The following bit is copied from res_data.c (where it is #ifdef'ed - out) since res_init() should go into libc.so but the rest of that -@@ -89,12 +89,34 @@ - return (__res_vinit(&_res, 1)); - } - -+static time_t resconf_mtime; -+__libc_lock_define_initialized (static, resconf_mtime_lock); -+ -+/* Check if the modification time of resolv.conf has changed. -+ If so, have all threads re-initialize their resolver states */ -+static void -+__res_check_resconf (void) -+{ -+ struct stat statbuf; -+ if (stat (_PATH_RESCONF, &statbuf) == 0) { -+ __libc_lock_lock (resconf_mtime_lock); -+ if (statbuf.st_mtime != resconf_mtime) { -+ resconf_mtime = statbuf.st_mtime; -+ atomicinclock (lock); -+ atomicinc (__res_initstamp); -+ atomicincunlock (lock); -+ } -+ __libc_lock_unlock (resconf_mtime_lock); -+ } -+} -+ - /* Initialize resp if RES_INIT is not yet set or if res_init in some other - thread requested re-initializing. */ - int - __res_maybe_init (res_state resp, int preinit) - { - if (resp->options & RES_INIT) { -+ __res_check_resconf (); - if (__res_initstamp != resp->_u._ext.initstamp) { - if (resp->nscount > 0) - __res_iclose (resp, true); - - ---------------060407080409020101000002-- diff --git a/glibc-sparc64-fxstat.diff b/glibc-sparc64-fxstat.diff deleted file mode 100644 index fa06e5a..0000000 --- a/glibc-sparc64-fxstat.diff +++ /dev/null @@ -1,7 +0,0 @@ -Index: glibc-2.10.1/sysdeps/unix/sysv/linux/sparc/sparc64/fxstat.c -=================================================================== ---- glibc-2.10.1.orig/sysdeps/unix/sysv/linux/sparc/sparc64/fxstat.c -+++ glibc-2.10.1/sysdeps/unix/sysv/linux/sparc/sparc64/fxstat.c -@@ -1 +1 @@ --#include "../../fxstat.c" -+#include "../../i386/fxstat.c" diff --git a/glibc-statfs64-ia64.diff b/glibc-statfs64-ia64.diff deleted file mode 100644 index 1804a68..0000000 --- a/glibc-statfs64-ia64.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- sysdeps/unix/sysv/linux/statfs64.c~ 2010-01-27 02:47:32.884315000 +0100 -+++ sysdeps/unix/sysv/linux/statfs64.c 2010-01-27 02:49:17.943657000 +0100 -@@ -24,6 +24,9 @@ - #include - #include - -+/* On IA64, ia32el does not provide wrapper for statfs64() for some reason. -+ Force the compatibility code to get compiled in. [bnc#534828] */ -+#undef __ASSUME_STATFS64 - - # if __ASSUME_STATFS64 == 0 - int __no_statfs64 attribute_hidden; diff --git a/glibc.changes b/glibc.changes index d22b858..de4e885 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,170 +1,8 @@ -------------------------------------------------------------------- -Mon Sep 13 14:36:26 UTC 2010 - aj@suse.de - -- Fix build in manual with make 3.82. - -------------------------------------------------------------------- -Sun Sep 12 08:00:57 UTC 2010 - aj@suse.de - -- Work around shortest-stem feature in make 3.82+ (patch - glibc-make-3.82.patch) - -------------------------------------------------------------------- -Wed Jul 7 04:12:05 CEST 2010 - pbaudis@suse.cz - -- Fix NIS-compat initgroups routine to work reliably over multiple - invocations [bnc#607064] - -------------------------------------------------------------------- -Thu Jul 1 19:52:56 UTC 2010 - jengelh@medozas.de - -- SPARC: restore fxstat functionality in sparc64 mode - -------------------------------------------------------------------- -Sat Jun 26 10:26:17 UTC 2010 - jengelh@medozas.de - -- Use %_smp_mflags - -------------------------------------------------------------------- -Fri Jun 11 15:41:07 CEST 2010 - pbaudis@suse.cz - -- Upgrade to latest release/2.11/master - glibc-2.11.2-21580967038a - - Fix buggy x86 CPU family and model check - - Fix sunrpc error condition handling - - Fix crash on unresolved weak symbol reference - -------------------------------------------------------------------- -Tue Jun 1 03:38:28 CEST 2010 - pbaudis@suse.cz - -- Fix ldconfig -r failing on aux cache [bnc#609345] - -------------------------------------------------------------------- -Thu May 20 02:19:28 CEST 2010 - pbaudis@suse.cz - -- Upgrade to glibc-2.11.2 (f2020c64596a) - - Virtually no changes since previous revision, just official tag - -------------------------------------------------------------------- -Wed May 12 04:24:13 CEST 2010 - pbaudis@suse.cz - -- Upgrade to latest release/2.11/master - glibc-2.11.1-6d270188ef3f - - This contains considerable amount of bugfixes cherrypicked from - the master branch, slated to become glibc-2.11.2 soon with little - further changes - -------------------------------------------------------------------- -Mon May 10 23:33:35 CEST 2010 - pbaudis@suse.cz - -- Add a hint about /etc/host.conf mdns option removal to the parser - error reporting [bnc#569273] - -------------------------------------------------------------------- -Tue May 4 05:47:41 UTC 2010 - aj@suse.de - -- Handle /var/run on tmpfs - -------------------------------------------------------------------- -Mon Apr 26 22:09:40 CEST 2010 - pbaudis@suse.cz - -- Remove stale resolv.dynamic.diff patch file - -------------------------------------------------------------------- -Thu Apr 22 08:30:50 CEST 2010 - meissner@suse.de - -- for powerpc32 build a generic library and also a power4 library - to allow older 32bit powerpc to work. bnc#596271 - -------------------------------------------------------------------- -Tue Apr 20 13:15:19 CEST 2010 - pbaudis@suse.cz - -- Consider private IPv4 addresses as global-scope in gai.conf [bnc#597616] - -------------------------------------------------------------------- -Wed Mar 24 13:04:12 CET 2010 - pbaudis@suse.cz - -- Fix get_nprocs() large CPU count handling [bnc#590665] - -------------------------------------------------------------------- -Tue Mar 23 15:09:09 CET 2010 - pbaudis@suse.cz - -- Fix interference of STB_GNU_UNIQUE and prelink [bnc#586979] -- Make time() use VDSO on PPC64 [bnc#590216] -- Make pthread_cond_timedway() use VDSO on PPC64 [bnc#590517] - -------------------------------------------------------------------- -Thu Mar 18 14:45:34 CET 2010 - pbaudis@suse.cz - -- Add PreReq for cat to glibc-locale [bnc#588997] - -------------------------------------------------------------------- -Thu Mar 18 14:29:42 CET 2010 - pbaudis@suse.cz - -- Fix /etc/resolv.conf change detection for multi-threaded applications - (by Sebastian Kienzl) - -------------------------------------------------------------------- -Fri Mar 5 12:59:44 CET 2010 - pbaudis@suse.cz - -- Fix spurious mapping from lowercase sharp s to uppercase sharp S - which is less standard and causes problems for ISO encodings [bnc#541773] - -------------------------------------------------------------------- -Mon Mar 1 18:55:37 CET 2010 - pbaudis@suse.cz - -- Fix spurious overflow messages on some R_X86_64_PC32 relocations, - patch by Richard Guenther [bnc#583019] - -------------------------------------------------------------------- -Wed Feb 24 11:53:41 CET 2010 - pbaudis@suse.cz - -- Fix assertion failures within valloc(), patch by Michael Matz - [bnc#581391] - -------------------------------------------------------------------- -Wed Feb 17 12:02:24 CET 2010 - pbaudis@suse.cz - -- S/390: Disable two UTF conversion instructions due to the hardware - mishandling some error conditions in the input stream [bnc#579871] - -------------------------------------------------------------------- -Mon Feb 15 22:34:29 CET 2010 - pbaudis@suse.cz - -- Further fix previous power5 fix - ------------------------------------------------------------------- Sun Feb 14 15:33:33 CET 2010 - rguenther@suse.de - avoid spurious differences in nscd on rebuilds. -------------------------------------------------------------------- -Thu Feb 11 21:36:32 CET 2010 - pbaudis@suse.cz - -- Fix another upgrade problem on power5 and older - correctly remove - the old optimized libraries; found out by matz@suse.de [bnc#563978] - -------------------------------------------------------------------- -Fri Feb 5 21:07:54 CET 2010 - pbaudis@suse.cz - -- Final fix for memchr() overflow on IA64 provided by upstream - [bnc#567516] - -------------------------------------------------------------------- -Thu Jan 28 17:11:59 CET 2010 - pbaudis@suse.cz - -- Fix another memchr() overflow on IA64; another known one still - remains a mystery [bnc#567516] - -------------------------------------------------------------------- -Wed Jan 27 02:49:46 CET 2010 - pbaudis@suse.cz - -- Remove now-obsolete powerpc-cpu addon usage [bnc#572819] -- Fix statfs64() on IA64 in 32-bit mode ia32el [bnc#534828] - -------------------------------------------------------------------- -Tue Jan 26 03:33:38 CET 2010 - pbaudis@suse.cz - -- Fix upgrade from previous distributions on power5 and older [bnc#563978] - ------------------------------------------------------------------- Mon Jan 25 17:35:25 CET 2010 - meissner@suse.de diff --git a/glibc.spec b/glibc.spec index f1db7e6..5c74907 100644 --- a/glibc.spec +++ b/glibc.spec @@ -1,5 +1,5 @@ # -# spec file for package glibc (Version 2.11.2) +# spec file for package glibc (Version 2.11.1) # # Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany. # @@ -28,15 +28,8 @@ BuildRequires: libselinux-devel %define enable_stackguard_randomization 1 %ifarch ppc ppc64 %define optimize_power 1 - %ifarch ppc - %define powerpc_optimize_base power3 - %define powerpc_optimize_tune power3 - %define powerpc_optimize_cpu_power4 1 - %else %define powerpc_optimize_base power4 %define powerpc_optimize_tune power5 - %define powerpc_optimize_cpu_power4 0 - %endif # We are not building Power CPU specific optimizations for openSUSE. %define powerpc_optimize_cpu_power6 0 %define powerpc_optimize_cpu_power7 0 @@ -44,12 +37,11 @@ BuildRequires: libselinux-devel %else %define optimize_power 0 %define powerpc_optimize_base 0 - %define powerpc_optimize_cpu_power4 0 %define powerpc_optimize_cpu_power6 0 %define powerpc_optimize_cpu_power7 0 %define powerpc_optimize_cpu_cell 0 %endif # ppc, ppc64 -License: GPLv2+ +License: BSD3c(or similar) ; GPLv2+ ; LGPLv2.1+ Summary: Standard Shared Libraries (from the GNU C Library) Group: System/Libraries Obsoletes: ngpt <= 2.2.2 ngpt-devel <= 2.2.2 @@ -63,12 +55,12 @@ Obsoletes: glibc-32bit %endif Provides: rtld(GNU_HASH) AutoReqProv: on -Version: 2.11.2 -Release: 6 +Version: 2.11.1 +Release: 1 Url: http://www.gnu.org/software/libc/libc.html PreReq: filesystem BuildRoot: %{_tmppath}/%{name}-%{version}-build -Source: glibc-%{version}-21580967038a.tar.bz2 +Source: glibc-%{version}-11c19d374bd4.tar.bz2 Source2: glibc-ports-2.10.1-2b2b217196.tar.bz2 Source3: noversion.tar.bz2 Source4: manpages.tar.bz2 @@ -78,6 +70,7 @@ Source9: nscd.init Source10: bindresvport.blacklist Source11: ctype_b.c Source12: glibc_post_upgrade.c +Source14: powerpc-cpu.tar.bz2 Source15: glibc.rpmlintrc Source16: baselibs.conf %if %_target_cpu == "i686" @@ -89,7 +82,7 @@ NoSource: 0 Patch0: glibc-2.3-SuSE.diff Patch1: glibc-2.3.90-noversion.diff Patch2: glibc-2.3.90-fnmatch.diff -Patch3: glibc-resolv-reload.diff +Patch3: resolv.dynamic.diff Patch4: glibc-2.3.locales.diff.bz2 Patch5: crypt_blowfish-1.0-suse.diff Patch7: glibc-version.diff @@ -113,6 +106,7 @@ Patch24: glibc-2.3.3-nscd-db-path.diff Patch25: glibc-2.3.5-nscd-zeronegtimeout.diff Patch26: glibc-2.3.90-langpackdir.diff Patch27: glibc-nptl-2.4-nofixsyscallnr.diff +Patch29: glibc-2.5-ppc-llrintl.diff Patch30: glibc-2.6-configure.diff Patch31: glibc-2.2-sunrpc.diff Patch32: glibc-2.8-getconf.diff @@ -131,20 +125,10 @@ Patch46: glibc-2.10.99-ia64-include.diff Patch47: libm-x86-64-exceptions.diff Patch48: glibc-uio-cell.diff Patch50: glibc-nameserver-localhost.diff -Patch54: glibc-statfs64-ia64.diff -Patch60: ld-prelink-unique.diff -Patch61: glibc-ppc64-vdso-time.diff -Patch64: glibc-gai-private4.diff -Patch65: glibc-resolv-mdnshint.diff -Patch66: glibc-ldconfigr-aux.diff -Patch67: glibc-nis-initgroups.diff -Patch68: glibc-make-3.82.patch Patch500: ARM_glibc-2.10.1-local-eabi-wchar.diff Patch501: ARM_glibc-2.10.1-local-hwcap-updates.diff Patch502: ARM_glibc-2.10.1-local-lowlevellock.diff Patch503: ARM_glibc-2.10.1-local-no-hwcap.diff -# http://sources.redhat.com/bugzilla/show_bug.cgi?id=11155 -Patch600: glibc-sparc64-fxstat.diff %description The GNU C Library provides the most important standard libraries used @@ -200,7 +184,6 @@ License: GPLv2+ ; LGPLv2.1+ Summary: Locale Data for Localized Programs Group: System/Libraries Requires: glibc = %{version} -PreReq: /bin/cat AutoReqProv: on # bug437293 %ifarch ppc64 @@ -295,10 +278,10 @@ versions of your software. # add glibc-ports for arm # this is CURRENTLY BROKEN; ARM-interested contributors need to provide # new tested glibc-ports source -%setup -n glibc-%{version} -q -a 2 -a 3 -a 4 +%setup -n glibc-%{version} -q -a 2 -a 3 -a 4 -a 14 %else # any other leave out ports -%setup -n glibc-%{version} -q -a 3 -a 4 +%setup -n glibc-%{version} -q -a 3 -a 4 -a 14 %endif %patch0 # libNoVersion part is only active on ix86 @@ -337,6 +320,7 @@ touch -r nscd/s-stamp nscd/nscd_stat.c rm nscd/s-stamp %patch26 %patch27 +%patch29 %patch30 %patch31 %patch32 @@ -355,21 +339,12 @@ rm nscd/s-stamp %patch47 %patch48 -p1 %patch50 -p1 -%patch54 -%patch60 -p1 -%patch61 -p1 -%patch64 -%patch65 -p1 -%patch66 -p1 -%patch67 -p1 -%patch68 -p1 %ifarch %arm armv5tel armv7l %patch500 %patch501 %patch502 %patch503 %endif -%patch600 -p1 # # Inconsistency detected by ld.so: dl-close.c: 719: _dl_close: Assertion `map->l_init_called' failed! # @@ -389,7 +364,6 @@ rm nscd/s-stamp # rm -fv sysdeps/powerpc/powerpc32/power4/hp-timing.c sysdeps/powerpc/powerpc32/power4/hp-timing.h find . -name configure | xargs touch - ####################################################################### ### ### BUILD @@ -416,7 +390,7 @@ BuildFlags="$(echo $BuildFlags | sed -e 's#-fstack-protector##' -e 's#-ffortify= BuildCC="gcc" BuildCCplus="g++" add_ons=",libidn" -PARALLEL="%{?_smp_mflags}" +PARALLEL="%{?jobs:-j%jobs}" # #now overwrite for some architectures # @@ -467,7 +441,6 @@ PARALLEL="%{?_smp_mflags}" # fails to build otherwise - need to recheck and fix %define enable_stackguard_randomization 0 %endif - configure_and_build_glibc() { local dirname="$1"; shift local cflags="$1"; shift @@ -491,7 +464,6 @@ configure_and_build_glibc() { make $PARALLEL cd .. } - %if !%{optimize_power} # # Build base glibc @@ -503,17 +475,9 @@ configure_and_build_glibc() { # # First, base build: pBuildFlags="$BuildFlags -mcpu=%{powerpc_optimize_base} -mtune=%{powerpc_optimize_tune}" - %if %{powerpc_optimize_base} != "power3" - configure_and_build_glibc base "$pBuildFlags" "$add_ons" --with-cpu=%{powerpc_optimize_base} - %else - # Use no default CPU - configure_and_build_glibc base "$pBuildFlags" "$add_ons" - %endif + configure_and_build_glibc base "$pBuildFlags" "$add_ons,powerpc-cpu" --with-cpu=%{powerpc_optimize_base} # Then other power variants: for pcpu in \ - %if %{powerpc_optimize_cpu_power4} - power4 \ - %endif %if %{powerpc_optimize_cpu_power6} power6 \ %endif @@ -521,7 +485,7 @@ configure_and_build_glibc() { power7 \ %endif ; do - configure_and_build_glibc $pcpu "$BuildFlags -mcpu=$pcpu" "$add_ons" \ + configure_and_build_glibc $pcpu "$BuildFlags -mcpu=$pcpu" "$add_ons,powerpc-cpu" \ --with-cpu=$pcpu --disable-runbinaries done # Eventually, special Cell variant: @@ -529,22 +493,17 @@ configure_and_build_glibc() { configure_and_build_glibc ppc-cell-be "$BuildFlags -mcpu=cell" "$add_ons" --disable-runbinaries %endif %endif # optimize_power - # # Build html documentation # make -C cc-base html - # # Build glibc_post_upgrade binary # $BuildCC -static -Os -g $RPM_SOURCE_DIR/glibc_post_upgrade.c -o glibc_post_upgrade \ -Lcc-base -Bcc-base/csu \ - '-DREMOVE_TLS_DIRS' '-DREMOVE_PPC_OPTIMIZE_POWER5' \ + '-DREMOVE_TLS_DIRS' \ %ifarch ppc ppc64 - %if !%{powerpc_optimize_cpu_power4} - '-DREMOVE_PPC_OPTIMIZE_POWER4' \ - %endif %if !%{powerpc_optimize_cpu_power6} '-DREMOVE_PPC_OPTIMIZE_POWER6' \ %endif @@ -556,7 +515,6 @@ $BuildCC -static -Os -g $RPM_SOURCE_DIR/glibc_post_upgrade.c -o glibc_post_upgra %endif %endif '-DLIBDIR="/%{_lib}"' '-DGCONV_MODULES_DIR="%{_prefix}/%{_lib}/gconv"' - ####################################################################### ### ### CHECK @@ -578,7 +536,6 @@ $BuildCC -static -Os -g $RPM_SOURCE_DIR/glibc_post_upgrade.c -o glibc_post_upgra %endif %endif make -C cc-base check-abi || echo check-abi failed - ####################################################################### ### ### INSTALL @@ -596,15 +553,12 @@ make -C cc-base check-abi || echo check-abi failed # debugging tools currently require these sections directly inside the main # files - specifically valgrind and PurifyPlus. export STRIP_KEEP_SYMTAB=*.so* - # Make sure we will create the gconv-modules.cache mkdir -p $RPM_BUILD_ROOT%{_libdir}/gconv touch $RPM_BUILD_ROOT%{_libdir}/gconv/gconv-modules.cache - # Install base glibc # Do not install in parallel, timezone Makefile will fail make install_root=$RPM_BUILD_ROOT install -C cc-base - # Install power-optimized glibc %if %{optimize_power} # run ldconfig to create the library symlinks @@ -612,9 +566,6 @@ make install_root=$RPM_BUILD_ROOT install -C cc-base # it may contain instructions not suitable for the cpu on the builhost my_ldconfig=/sbin/ldconfig for pcpu in \ - %if %{powerpc_optimize_cpu_power4} - power4 \ - %endif %if %{powerpc_optimize_cpu_power6} power6 \ %endif @@ -646,7 +597,6 @@ make install_root=$RPM_BUILD_ROOT install -C cc-base fi %endif %endif # optimize_power - # Install locales %if %{build_locales} # Do not install locales in parallel! @@ -656,43 +606,31 @@ make install_root=$RPM_BUILD_ROOT install -C cc-base %endif # Create file list for glibc-locale package %{find_lang} libc - # Prepare obsolete/, used only on some architectures: export RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT/%{_lib}/obsolete - # NPTL is not usable outside of glibc, so include # the generic one (RH#162634) cp -av bits/stdio-lock.h $RPM_BUILD_ROOT%{_prefix}/include/bits/stdio-lock.h - %ifarch s390x # s390x is different ... mkdir $RPM_BUILD_ROOT/lib ln -sf ../%{_lib}/ld-%{version}.so $RPM_BUILD_ROOT/lib/ld64.so.1 %endif - # Miscelanna: - install -m 0700 glibc_post_upgrade $RPM_BUILD_ROOT%{_sbindir} - install -m 644 $RPM_SOURCE_DIR/bindresvport.blacklist $RPM_BUILD_ROOT/etc install -m 644 $RPM_SOURCE_DIR/nsswitch.conf $RPM_BUILD_ROOT/etc install -m 644 posix/gai.conf $RPM_BUILD_ROOT/etc - mkdir -p $RPM_BUILD_ROOT/etc/default install -m 644 nis/nss $RPM_BUILD_ROOT/etc/default/ - mkdir -p $RPM_BUILD_ROOT/usr/include/resolv install -m 0644 resolv/mapv4v6addr.h $RPM_BUILD_ROOT/usr/include/resolv/ install -m 0644 resolv/mapv4v6hostent.h $RPM_BUILD_ROOT/usr/include/resolv/ - mkdir -p $RPM_BUILD_ROOT/usr/share/doc/glibc cp -p manual/libc/*.html $RPM_BUILD_ROOT/usr/share/doc/glibc - cd manpages; make install_root=$RPM_BUILD_ROOT install; cd .. - # nscd tools: - cp nscd/nscd.conf $RPM_BUILD_ROOT/etc mkdir -p $RPM_BUILD_ROOT/etc/apparmor.d cp $RPM_SOURCE_DIR/usr.sbin.nscd $RPM_BUILD_ROOT/etc/apparmor.d @@ -702,7 +640,6 @@ ln -sf /etc/init.d/nscd $RPM_BUILD_ROOT/usr/sbin/rcnscd mkdir -p $RPM_BUILD_ROOT/var/run/nscd touch $RPM_BUILD_ROOT/var/run/nscd/{passwd,group,hosts} touch $RPM_BUILD_ROOT/var/run/nscd/{socket,nscd.pid} - # # Create ld.so.conf # @@ -742,28 +679,23 @@ mkdir -p $RPM_BUILD_ROOT/var/cache/ldconfig # Empty the ld.so.cache: rm -f $RPM_BUILD_ROOT/etc/ld.so.cache touch $RPM_BUILD_ROOT/etc/ld.so.cache - # libNoVersion belongs only to glibc-obsolete: %ifarch %ix86 rm -f $RPM_BUILD_ROOT%{_libdir}/libNoVersion* mkdir -p $RPM_BUILD_ROOT/%{_lib}/obsolete/noversion mv -v $RPM_BUILD_ROOT/%{_lib}/libNoVersion* $RPM_BUILD_ROOT/%{_lib}/obsolete/noversion/ %endif - # Don't look at ldd! We don't wish a /bin/sh requires chmod 644 $RPM_BUILD_ROOT/usr/bin/ldd - # Remove timezone data, now coming in standalone package: for i in sbin/sln usr/bin/tzselect usr/sbin/zic usr/sbin/zdump etc/localtime; do rm -f $RPM_BUILD_ROOT/$i done rm -rf $RPM_BUILD_ROOT/usr/share/zoneinfo - # Remove the buildflags tracking section and the build-id for o in $RPM_BUILD_ROOT/%{_libdir}/crt[1in].o $RPM_BUILD_ROOT/%{_libdir}/lib*_nonshared.a; do objcopy -R ".comment.SUSE.OPTs" -R ".note.gnu.build-id" $o done - ####################################################################### ### ### ... @@ -800,13 +732,11 @@ done %restart_on_update nscd %insserv_cleanup exit 0 - ####################################################################### ### ### FILES ### ####################################################################### - # glibc %files @@ -903,9 +833,6 @@ exit 0 /%{_lib}/%1/librt.so.1\ /%{_lib}/%1/libthread_db-1.0.so\ /%{_lib}/%1/libthread_db.so.1 - %if %{powerpc_optimize_cpu_power4} - %{optimized_libs power4} - %endif %if %{powerpc_optimize_cpu_power6} %{optimized_libs power6} %{optimized_libs power6x} @@ -1014,7 +941,7 @@ exit 0 %config /etc/init.d/nscd /usr/sbin/nscd /usr/sbin/rcnscd -%dir %attr(0755,root,root) %ghost /var/run/nscd +%dir %attr(0755,root,root) /var/run/nscd %attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/nscd.pid %attr(0666,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/socket %attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/passwd diff --git a/glibc_post_upgrade.c b/glibc_post_upgrade.c index ebd1e6e..a479c79 100644 --- a/glibc_post_upgrade.c +++ b/glibc_post_upgrade.c @@ -34,9 +34,6 @@ main (void) char initpath[256]; struct stat root, init_root; - /* First, get rid of platform-optimized libraries. We remove any we have - ever built, since otherwise we might end up using some old leftover - libraries when new ones aren't installed in their place anymore. */ #ifdef REMOVE_TLS_DIRS const char *library[] = {"libc.so.6", "libc.so.6.1", "libm.so.6", "libm.so.6.1", "librt.so.1", "librtkaio.so.1", @@ -46,14 +43,6 @@ main (void) "/lib/i686/", #endif #ifdef __powerpc64__ -#ifdef REMOVE_PPC_OPTIMIZE_POWER4 - "/lib64/power4/", - "/lib64/ppc970/", -#endif -#ifdef REMOVE_PPC_OPTIMIZE_POWER5 - "/lib64/power5/", - "/lib64/power5+/", -#endif #ifdef REMOVE_PPC_OPTIMIZE_POWER6 "/lib64/power6/", "/lib64/power6x/", @@ -66,14 +55,6 @@ main (void) #endif #endif /* __powerpc64__ */ #ifdef __powerpc__ -#ifdef REMOVE_PPC_OPTIMIZE_POWER4 - "/lib/power4/", - "/lib/ppc970/", -#endif -#ifdef REMOVE_PPC_OPTIMIZE_POWER5 - "/lib/power5/", - "/lib/power5+/", -#endif #ifdef REMOVE_PPC_OPTIMIZE_POWER6 "/lib/power6/", "/lib/power6x/", diff --git a/ld-prelink-unique.diff b/ld-prelink-unique.diff deleted file mode 100644 index 12302db..0000000 --- a/ld-prelink-unique.diff +++ /dev/null @@ -1,57 +0,0 @@ -2010-03-23 Jakub Jelinek - - * elf/dl-lookup.c (do_lookup_x): If tab->entries is NULL, - but tab->size != 0, just unlock and goto success, without - allocating anything or entering anything into the hash table. - (_dl_debug_bindings): Temporarily set tab->entries to NULL - around do_lookup_x in undef_map->l_local_scope[0]. - ---- libc/elf/dl-lookup.c.jj 2009-12-16 00:10:37.000000000 +0100 -+++ libc/elf/dl-lookup.c 2010-03-23 11:03:45.850560036 +0100 -@@ -1,5 +1,6 @@ - /* Look up a symbol in the loaded objects. -- Copyright (C) 1995-2005, 2006, 2007, 2009 Free Software Foundation, Inc. -+ Copyright (C) 1995-2005, 2006, 2007, 2009, 2010 -+ 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 -@@ -414,6 +415,20 @@ do_lookup_x (const char *undef_name, uin - assert (!RTLD_CHECK_FOREIGN_CALL); - #endif - -+#ifdef SHARED -+ /* If tab->entries is NULL, but tab->size is not, it means -+ this is the second, conflict finding, lookup for -+ LD_TRACE_PRELINKING in _dl_debug_bindings. Don't -+ allocate anything and don't enter anything into the -+ hash table. */ -+ if (__builtin_expect (tab->size, 0)) -+ { -+ assert (GLRO(dl_debug_mask) & DL_DEBUG_PRELINK); -+ __rtld_lock_unlock_recursive (tab->lock); -+ goto success; -+ } -+#endif -+ - #define INITIAL_NUNIQUE_SYM_TABLE 31 - size = INITIAL_NUNIQUE_SYM_TABLE; - entries = calloc (sizeof (struct unique_sym), size); -@@ -917,13 +932,17 @@ _dl_debug_bindings (const char *undef_na - { - const uint_fast32_t new_hash = dl_new_hash (undef_name); - unsigned long int old_hash = 0xffffffff; -+ struct unique_sym *saved_entries -+ = GL(dl_ns)[LM_ID_BASE]._ns_unique_sym_table.entries; - -+ GL(dl_ns)[LM_ID_BASE]._ns_unique_sym_table.entries = NULL; - do_lookup_x (undef_name, new_hash, &old_hash, *ref, &val, - undef_map->l_local_scope[0], 0, version, 0, NULL, - type_class, undef_map); - - if (val.s != value->s || val.m != value->m) - conflict = 1; -+ GL(dl_ns)[LM_ID_BASE]._ns_unique_sym_table.entries = saved_entries; - } - - if (value->s) diff --git a/nscd.init b/nscd.init index 52c960e..1316e90 100644 --- a/nscd.init +++ b/nscd.init @@ -66,8 +66,6 @@ rc_reset case "$1" in start) echo -n "Starting Name Service Cache Daemon" - # /var/run might be on tmpfs - [ -d /var/run/nscd ] || mkdir /var/run/nscd /sbin/startproc -p $NSCD_PID $NSCD_BIN rc_status -v ;; diff --git a/powerpc-cpu.tar.bz2 b/powerpc-cpu.tar.bz2 new file mode 100644 index 0000000..715978c --- /dev/null +++ b/powerpc-cpu.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c59f80e38c9f6ad339d72bbfbc454364659686567b7689d33483b9cb4a12bf2a +size 36248 diff --git a/ready b/ready new file mode 100644 index 0000000..473a0f4 diff --git a/resolv.dynamic.diff b/resolv.dynamic.diff new file mode 100644 index 0000000..f9c45e7 --- /dev/null +++ b/resolv.dynamic.diff @@ -0,0 +1,33 @@ +Index: resolv/res_libc.c +=================================================================== +--- resolv/res_libc.c.orig ++++ resolv/res_libc.c +@@ -22,6 +22,7 @@ + #include + #include + #include ++#include + + + /* The following bit is copied from res_data.c (where it is #ifdef'ed +@@ -95,6 +96,20 @@ int + __res_maybe_init (res_state resp, int preinit) + { + if (resp->options & RES_INIT) { ++ static time_t last_mtime, last_check; ++ time_t now; ++ struct stat statbuf; ++ ++ time (&now); ++ if (now != last_check) { ++ last_check = now; ++ if (stat (_PATH_RESCONF, &statbuf) == 0 && last_mtime != statbuf.st_mtime) { ++ last_mtime = statbuf.st_mtime; ++ atomicinclock (lock); ++ atomicinc (__res_initstamp); ++ atomicincunlock (lock); ++ } ++ } + if (__res_initstamp != resp->_u._ext.initstamp) { + if (resp->nscount > 0) + __res_iclose (resp, true); From 2ac1d0166c08385151a792a6d9b6211a43c890918d5850dc3671e3036736ab16 Mon Sep 17 00:00:00 2001 From: OBS User autobuild Date: Fri, 5 Mar 2010 01:01:39 +0000 Subject: [PATCH 02/23] Accepting request 34042 from Base:System checked in (request 34042) OBS-URL: https://build.opensuse.org/request/show/34042 OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=19 --- glibc-2.4.90-nscd.diff | 37 +++++++++++-------------------------- glibc.changes | 5 ----- glibc.spec | 5 ----- 3 files changed, 11 insertions(+), 36 deletions(-) diff --git a/glibc-2.4.90-nscd.diff b/glibc-2.4.90-nscd.diff index ce178a1..f66d910 100644 --- a/glibc-2.4.90-nscd.diff +++ b/glibc-2.4.90-nscd.diff @@ -1,7 +1,7 @@ Index: nscd/cache.c =================================================================== ---- nscd/cache.c.orig 2010-01-18 18:01:41.000000000 +0100 -+++ nscd/cache.c 2010-02-14 14:58:08.000000000 +0100 +--- nscd/cache.c.orig ++++ nscd/cache.c @@ -267,28 +267,31 @@ prune_cache (struct database_dyn *table, if (table->inotify_descr < 0 && table->check_file && now != LONG_MAX) { @@ -47,8 +47,8 @@ Index: nscd/cache.c Note that for the initial step, finding the entries to be removed, Index: nscd/connections.c =================================================================== ---- nscd/connections.c.orig 2010-01-18 18:01:41.000000000 +0100 -+++ nscd/connections.c 2010-02-14 14:58:08.000000000 +0100 +--- nscd/connections.c.orig ++++ nscd/connections.c @@ -119,6 +119,7 @@ struct database_dyn dbs[lastdb] = .suggested_module = DEFAULT_SUGGESTED_MODULE, .reset_res = 0, @@ -94,8 +94,8 @@ Index: nscd/connections.c Index: nscd/nscd.conf =================================================================== ---- nscd/nscd.conf.orig 2010-01-18 18:01:41.000000000 +0100 -+++ nscd/nscd.conf 2010-02-14 14:58:08.000000000 +0100 +--- nscd/nscd.conf.orig ++++ nscd/nscd.conf @@ -61,11 +61,11 @@ auto-propagate group yes @@ -113,8 +113,8 @@ Index: nscd/nscd.conf Index: nscd/nscd.h =================================================================== ---- nscd/nscd.h.orig 2010-01-18 18:01:41.000000000 +0100 -+++ nscd/nscd.h 2010-02-14 14:59:07.000000000 +0100 +--- nscd/nscd.h.orig ++++ nscd/nscd.h @@ -80,8 +80,10 @@ struct database_dyn int propagate; int reset_res; @@ -128,24 +128,9 @@ Index: nscd/nscd.h Index: nscd/nscd_stat.c =================================================================== ---- nscd/nscd_stat.c.orig 2010-01-18 18:01:41.000000000 +0100 -+++ nscd/nscd_stat.c 2010-02-14 15:02:41.000000000 +0100 -@@ -37,8 +37,13 @@ - #endif /* HAVE_SELINUX */ - - --/* We use this to make sure the receiver is the same. */ -+/* We use this to make sure the receiver is the same. Capture mtime -+ of this file if possible. */ -+#if defined(__TIMESTAMP__) -+static const char compilation[21] = __TIMESTAMP__; -+#else - static const char compilation[21] = __DATE__ " " __TIME__; -+#endif - - /* Statistic data for one database. */ - struct dbstat -@@ -302,7 +307,7 @@ receive_print_stats (void) +--- nscd/nscd_stat.c.orig ++++ nscd/nscd_stat.c +@@ -302,7 +302,7 @@ receive_print_stats (void) data.dbs[i].maxnsearched, data.dbs[i].rdlockdelayed, data.dbs[i].wrlockdelayed, diff --git a/glibc.changes b/glibc.changes index de4e885..6b9a5c9 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,8 +1,3 @@ -------------------------------------------------------------------- -Sun Feb 14 15:33:33 CET 2010 - rguenther@suse.de - -- avoid spurious differences in nscd on rebuilds. - ------------------------------------------------------------------- Mon Jan 25 17:35:25 CET 2010 - meissner@suse.de diff --git a/glibc.spec b/glibc.spec index 5c74907..40ac766 100644 --- a/glibc.spec +++ b/glibc.spec @@ -310,14 +310,9 @@ rm sysdeps/x86_64/fpu/s_sincos.S %patch20 %patch21 %patch22 -# avoid changing nscd_stat.c mtime to avoid code generation -# differences on each rebuild -touch -r nscd/nscd_stat.c nscd/s-stamp %patch23 %patch24 %patch25 -touch -r nscd/s-stamp nscd/nscd_stat.c -rm nscd/s-stamp %patch26 %patch27 %patch29 From 9aaedfde6bebef2360b479399919de6b083e481cb3d4961db51eafdd3c41967d Mon Sep 17 00:00:00 2001 From: Petr Baudis Date: Thu, 18 Mar 2010 13:37:59 +0000 Subject: [PATCH 03/23] - Fix /etc/resolv.conf change detection for multi-threaded applications (by Sebastian Kienzl) OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=20 --- glibc-2.4.90-nscd.diff | 37 ++++++++---- glibc-resolv-reload.diff | 124 +++++++++++++++++++++++++++++++++++++++ glibc.changes | 11 ++++ glibc.spec | 47 ++++++++++++++- resolv.dynamic.diff | 33 ----------- 5 files changed, 205 insertions(+), 47 deletions(-) create mode 100644 glibc-resolv-reload.diff delete mode 100644 resolv.dynamic.diff diff --git a/glibc-2.4.90-nscd.diff b/glibc-2.4.90-nscd.diff index f66d910..ce178a1 100644 --- a/glibc-2.4.90-nscd.diff +++ b/glibc-2.4.90-nscd.diff @@ -1,7 +1,7 @@ Index: nscd/cache.c =================================================================== ---- nscd/cache.c.orig -+++ nscd/cache.c +--- nscd/cache.c.orig 2010-01-18 18:01:41.000000000 +0100 ++++ nscd/cache.c 2010-02-14 14:58:08.000000000 +0100 @@ -267,28 +267,31 @@ prune_cache (struct database_dyn *table, if (table->inotify_descr < 0 && table->check_file && now != LONG_MAX) { @@ -47,8 +47,8 @@ Index: nscd/cache.c Note that for the initial step, finding the entries to be removed, Index: nscd/connections.c =================================================================== ---- nscd/connections.c.orig -+++ nscd/connections.c +--- nscd/connections.c.orig 2010-01-18 18:01:41.000000000 +0100 ++++ nscd/connections.c 2010-02-14 14:58:08.000000000 +0100 @@ -119,6 +119,7 @@ struct database_dyn dbs[lastdb] = .suggested_module = DEFAULT_SUGGESTED_MODULE, .reset_res = 0, @@ -94,8 +94,8 @@ Index: nscd/connections.c Index: nscd/nscd.conf =================================================================== ---- nscd/nscd.conf.orig -+++ nscd/nscd.conf +--- nscd/nscd.conf.orig 2010-01-18 18:01:41.000000000 +0100 ++++ nscd/nscd.conf 2010-02-14 14:58:08.000000000 +0100 @@ -61,11 +61,11 @@ auto-propagate group yes @@ -113,8 +113,8 @@ Index: nscd/nscd.conf Index: nscd/nscd.h =================================================================== ---- nscd/nscd.h.orig -+++ nscd/nscd.h +--- nscd/nscd.h.orig 2010-01-18 18:01:41.000000000 +0100 ++++ nscd/nscd.h 2010-02-14 14:59:07.000000000 +0100 @@ -80,8 +80,10 @@ struct database_dyn int propagate; int reset_res; @@ -128,9 +128,24 @@ Index: nscd/nscd.h Index: nscd/nscd_stat.c =================================================================== ---- nscd/nscd_stat.c.orig -+++ nscd/nscd_stat.c -@@ -302,7 +302,7 @@ receive_print_stats (void) +--- nscd/nscd_stat.c.orig 2010-01-18 18:01:41.000000000 +0100 ++++ nscd/nscd_stat.c 2010-02-14 15:02:41.000000000 +0100 +@@ -37,8 +37,13 @@ + #endif /* HAVE_SELINUX */ + + +-/* We use this to make sure the receiver is the same. */ ++/* We use this to make sure the receiver is the same. Capture mtime ++ of this file if possible. */ ++#if defined(__TIMESTAMP__) ++static const char compilation[21] = __TIMESTAMP__; ++#else + static const char compilation[21] = __DATE__ " " __TIME__; ++#endif + + /* Statistic data for one database. */ + struct dbstat +@@ -302,7 +307,7 @@ receive_print_stats (void) data.dbs[i].maxnsearched, data.dbs[i].rdlockdelayed, data.dbs[i].wrlockdelayed, diff --git a/glibc-resolv-reload.diff b/glibc-resolv-reload.diff new file mode 100644 index 0000000..d2013a5 --- /dev/null +++ b/glibc-resolv-reload.diff @@ -0,0 +1,124 @@ +From libc-alpha-return-22754-pasky=ucw.cz@sourceware.org Tue Mar 16 00:47:00 2010 +Return-Path: +X-Original-To: pasky@pasky.or.cz +Delivered-To: pasky@pasky.or.cz +Received: from nikam.ms.mff.cuni.cz (nikam-dmz.ms.mff.cuni.cz [195.113.20.16]) + by machine.or.cz (Postfix) with ESMTPS id C1B8586202A + for ; Tue, 16 Mar 2010 00:47:00 +0100 (CET) +Received: by nikam.ms.mff.cuni.cz (Postfix) + id 9CDEC9AC7A4; Tue, 16 Mar 2010 00:47:00 +0100 (CET) +Delivered-To: pasky@kam.mff.cuni.cz +Received: from jabberwock.ucw.cz (jabberwock.ucw.cz [89.250.246.4]) + by nikam.ms.mff.cuni.cz (Postfix) with ESMTP id 99F0E9AC77B + for ; Tue, 16 Mar 2010 00:47:00 +0100 (CET) +Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) + by jabberwock.ucw.cz (Postfix) with SMTP id 14E1ACF040 + for ; Tue, 16 Mar 2010 00:46:59 +0100 (CET) +Received: (qmail 18956 invoked by alias); 15 Mar 2010 23:46:58 -0000 +Delivered-To: moderator for libc-alpha@sourceware.org +Received: (qmail 15843 invoked by uid 22791); 15 Mar 2010 17:23:15 -0000 +X-SWARE-Spam-Status: No, hits=-2.6 required=5.0 + tests=BAYES_00 +X-Spam-Check-By: sourceware.org +Message-ID: <4B9E6CFA.7020002@riot.org> +Date: Mon, 15 Mar 2010 18:23:06 +0100 +From: Sebastian Kienzl +User-Agent: Thunderbird 2.0.0.23 (Windows/20090812) +MIME-Version: 1.0 +To: libc-alpha@sourceware.org +Subject: Reloading of /etc/resolv.conf +Content-Type: multipart/mixed; + boundary="------------060407080409020101000002" +Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm +Precedence: bulk +List-Id: +List-Unsubscribe: +List-Subscribe: +List-Archive: +List-Post: +List-Help: , +Sender: libc-alpha-owner@sourceware.org +Delivered-To: mailing list libc-alpha@sourceware.org + +This is a multi-part message in MIME format. +--------------060407080409020101000002 +Content-Type: text/plain; charset=ISO-8859-15; format=flowed +Content-Transfer-Encoding: 7bit + +Hello! + +There's a patch in the wild against the resolver which makes it reload +/etc/resolv.conf on change, see +http://sources.redhat.com/ml/libc-alpha/2004-09/msg00130.html + +However, this patch actually doesn't work properly for multi-threaded +programs, as only one thread will notice the change and refresh its +resolver state. I've attached a proper patch. It's for 2.5 but it should +work with current versions, too. + +Even though the patch may not be interesting for upstream, I decided to +let you know about this problem, since the mentioned patch seems to be +used by at least Debian and Ubuntu. + +Regards, +Seb. + + + +--------------060407080409020101000002 +Content-Type: text/plain; + name="glibc-2.5-resolvconf.patch" +Content-Transfer-Encoding: 7bit +Content-Disposition: inline; + filename="glibc-2.5-resolvconf.patch" + +diff -ur resolv.orig/res_libc.c resolv/res_libc.c +--- resolv.orig/res_libc.c 2005-11-01 01:06:40.000000000 +0100 ++++ resolv/res_libc.c 2010-03-15 14:13:18.000000000 +0100 +@@ -22,7 +22,7 @@ + #include + #include + #include +- ++#include + + /* The following bit is copied from res_data.c (where it is #ifdef'ed + out) since res_init() should go into libc.so but the rest of that +@@ -89,12 +89,34 @@ + return (__res_vinit(&_res, 1)); + } + ++static time_t resconf_mtime; ++__libc_lock_define_initialized (static, resconf_mtime_lock); ++ ++/* Check if the modification time of resolv.conf has changed. ++ If so, have all threads re-initialize their resolver states */ ++static void ++__res_check_resconf (void) ++{ ++ struct stat statbuf; ++ if (stat (_PATH_RESCONF, &statbuf) == 0) { ++ __libc_lock_lock (resconf_mtime_lock); ++ if (statbuf.st_mtime != resconf_mtime) { ++ resconf_mtime = statbuf.st_mtime; ++ atomicinclock (lock); ++ atomicinc (__res_initstamp); ++ atomicincunlock (lock); ++ } ++ __libc_lock_unlock (resconf_mtime_lock); ++ } ++} ++ + /* Initialize resp if RES_INIT is not yet set or if res_init in some other + thread requested re-initializing. */ + int + __res_maybe_init (res_state resp, int preinit) + { + if (resp->options & RES_INIT) { ++ __res_check_resconf (); + if (__res_initstamp != resp->_u._ext.initstamp) { + if (resp->nscount > 0) { + __res_iclose (resp, true); + + +--------------060407080409020101000002-- diff --git a/glibc.changes b/glibc.changes index 6b9a5c9..9b84cba 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Thu Mar 18 14:29:42 CET 2010 - pbaudis@suse.cz + +- Fix /etc/resolv.conf change detection for multi-threaded applications + (by Sebastian Kienzl) + +------------------------------------------------------------------- +Sun Feb 14 15:33:33 CET 2010 - rguenther@suse.de + +- avoid spurious differences in nscd on rebuilds. + ------------------------------------------------------------------- Mon Jan 25 17:35:25 CET 2010 - meissner@suse.de diff --git a/glibc.spec b/glibc.spec index 40ac766..d3fe297 100644 --- a/glibc.spec +++ b/glibc.spec @@ -82,7 +82,7 @@ NoSource: 0 Patch0: glibc-2.3-SuSE.diff Patch1: glibc-2.3.90-noversion.diff Patch2: glibc-2.3.90-fnmatch.diff -Patch3: resolv.dynamic.diff +Patch3: glibc-resolv-reload.diff Patch4: glibc-2.3.locales.diff.bz2 Patch5: crypt_blowfish-1.0-suse.diff Patch7: glibc-version.diff @@ -310,9 +310,14 @@ rm sysdeps/x86_64/fpu/s_sincos.S %patch20 %patch21 %patch22 +# avoid changing nscd_stat.c mtime to avoid code generation +# differences on each rebuild +touch -r nscd/nscd_stat.c nscd/s-stamp %patch23 %patch24 %patch25 +touch -r nscd/s-stamp nscd/nscd_stat.c +rm nscd/s-stamp %patch26 %patch27 %patch29 @@ -359,12 +364,13 @@ rm sysdeps/x86_64/fpu/s_sincos.S # 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 @@ -436,6 +442,7 @@ PARALLEL="%{?jobs:-j%jobs}" # fails to build otherwise - need to recheck and fix %define enable_stackguard_randomization 0 %endif + configure_and_build_glibc() { local dirname="$1"; shift local cflags="$1"; shift @@ -459,6 +466,7 @@ configure_and_build_glibc() { make $PARALLEL cd .. } + %if !%{optimize_power} # # Build base glibc @@ -488,10 +496,12 @@ configure_and_build_glibc() { configure_and_build_glibc ppc-cell-be "$BuildFlags -mcpu=cell" "$add_ons" --disable-runbinaries %endif %endif # optimize_power + # # Build html documentation # make -C cc-base html + # # Build glibc_post_upgrade binary # @@ -510,6 +520,8 @@ $BuildCC -static -Os -g $RPM_SOURCE_DIR/glibc_post_upgrade.c -o glibc_post_upgra %endif %endif '-DLIBDIR="/%{_lib}"' '-DGCONV_MODULES_DIR="%{_prefix}/%{_lib}/gconv"' + + ####################################################################### ### ### CHECK @@ -531,6 +543,8 @@ $BuildCC -static -Os -g $RPM_SOURCE_DIR/glibc_post_upgrade.c -o glibc_post_upgra %endif %endif make -C cc-base check-abi || echo check-abi failed + + ####################################################################### ### ### INSTALL @@ -548,12 +562,15 @@ make -C cc-base check-abi || echo check-abi failed # debugging tools currently require these sections directly inside the main # files - specifically valgrind and PurifyPlus. export STRIP_KEEP_SYMTAB=*.so* + # Make sure we will create the gconv-modules.cache mkdir -p $RPM_BUILD_ROOT%{_libdir}/gconv touch $RPM_BUILD_ROOT%{_libdir}/gconv/gconv-modules.cache + # Install base glibc # Do not install in parallel, timezone Makefile will fail make install_root=$RPM_BUILD_ROOT install -C cc-base + # Install power-optimized glibc %if %{optimize_power} # run ldconfig to create the library symlinks @@ -592,6 +609,7 @@ make install_root=$RPM_BUILD_ROOT install -C cc-base fi %endif %endif # optimize_power + # Install locales %if %{build_locales} # Do not install locales in parallel! @@ -601,31 +619,45 @@ make install_root=$RPM_BUILD_ROOT install -C cc-base %endif # Create file list for glibc-locale package %{find_lang} libc + # Prepare obsolete/, used only on some architectures: export RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT/%{_lib}/obsolete + # NPTL is not usable outside of glibc, so include # the generic one (RH#162634) cp -av bits/stdio-lock.h $RPM_BUILD_ROOT%{_prefix}/include/bits/stdio-lock.h + %ifarch s390x # s390x is different ... mkdir $RPM_BUILD_ROOT/lib ln -sf ../%{_lib}/ld-%{version}.so $RPM_BUILD_ROOT/lib/ld64.so.1 %endif + + # Miscelanna: + install -m 0700 glibc_post_upgrade $RPM_BUILD_ROOT%{_sbindir} + install -m 644 $RPM_SOURCE_DIR/bindresvport.blacklist $RPM_BUILD_ROOT/etc install -m 644 $RPM_SOURCE_DIR/nsswitch.conf $RPM_BUILD_ROOT/etc install -m 644 posix/gai.conf $RPM_BUILD_ROOT/etc + mkdir -p $RPM_BUILD_ROOT/etc/default install -m 644 nis/nss $RPM_BUILD_ROOT/etc/default/ + mkdir -p $RPM_BUILD_ROOT/usr/include/resolv install -m 0644 resolv/mapv4v6addr.h $RPM_BUILD_ROOT/usr/include/resolv/ install -m 0644 resolv/mapv4v6hostent.h $RPM_BUILD_ROOT/usr/include/resolv/ + mkdir -p $RPM_BUILD_ROOT/usr/share/doc/glibc cp -p manual/libc/*.html $RPM_BUILD_ROOT/usr/share/doc/glibc + cd manpages; make install_root=$RPM_BUILD_ROOT install; cd .. + + # nscd tools: + cp nscd/nscd.conf $RPM_BUILD_ROOT/etc mkdir -p $RPM_BUILD_ROOT/etc/apparmor.d cp $RPM_SOURCE_DIR/usr.sbin.nscd $RPM_BUILD_ROOT/etc/apparmor.d @@ -635,6 +667,7 @@ ln -sf /etc/init.d/nscd $RPM_BUILD_ROOT/usr/sbin/rcnscd mkdir -p $RPM_BUILD_ROOT/var/run/nscd touch $RPM_BUILD_ROOT/var/run/nscd/{passwd,group,hosts} touch $RPM_BUILD_ROOT/var/run/nscd/{socket,nscd.pid} + # # Create ld.so.conf # @@ -674,23 +707,29 @@ mkdir -p $RPM_BUILD_ROOT/var/cache/ldconfig # Empty the ld.so.cache: rm -f $RPM_BUILD_ROOT/etc/ld.so.cache touch $RPM_BUILD_ROOT/etc/ld.so.cache + # libNoVersion belongs only to glibc-obsolete: %ifarch %ix86 rm -f $RPM_BUILD_ROOT%{_libdir}/libNoVersion* mkdir -p $RPM_BUILD_ROOT/%{_lib}/obsolete/noversion mv -v $RPM_BUILD_ROOT/%{_lib}/libNoVersion* $RPM_BUILD_ROOT/%{_lib}/obsolete/noversion/ %endif + # Don't look at ldd! We don't wish a /bin/sh requires chmod 644 $RPM_BUILD_ROOT/usr/bin/ldd + # Remove timezone data, now coming in standalone package: for i in sbin/sln usr/bin/tzselect usr/sbin/zic usr/sbin/zdump etc/localtime; do rm -f $RPM_BUILD_ROOT/$i done rm -rf $RPM_BUILD_ROOT/usr/share/zoneinfo + # Remove the buildflags tracking section and the build-id for o in $RPM_BUILD_ROOT/%{_libdir}/crt[1in].o $RPM_BUILD_ROOT/%{_libdir}/lib*_nonshared.a; do objcopy -R ".comment.SUSE.OPTs" -R ".note.gnu.build-id" $o done + + ####################################################################### ### ### ... @@ -727,13 +766,15 @@ done %restart_on_update nscd %insserv_cleanup exit 0 + + ####################################################################### ### ### FILES ### ####################################################################### -# glibc +# glibc %files %defattr(-,root,root) %doc LICENSES diff --git a/resolv.dynamic.diff b/resolv.dynamic.diff deleted file mode 100644 index f9c45e7..0000000 --- a/resolv.dynamic.diff +++ /dev/null @@ -1,33 +0,0 @@ -Index: resolv/res_libc.c -=================================================================== ---- resolv/res_libc.c.orig -+++ resolv/res_libc.c -@@ -22,6 +22,7 @@ - #include - #include - #include -+#include - - - /* The following bit is copied from res_data.c (where it is #ifdef'ed -@@ -95,6 +96,20 @@ int - __res_maybe_init (res_state resp, int preinit) - { - if (resp->options & RES_INIT) { -+ static time_t last_mtime, last_check; -+ time_t now; -+ struct stat statbuf; -+ -+ time (&now); -+ if (now != last_check) { -+ last_check = now; -+ if (stat (_PATH_RESCONF, &statbuf) == 0 && last_mtime != statbuf.st_mtime) { -+ last_mtime = statbuf.st_mtime; -+ atomicinclock (lock); -+ atomicinc (__res_initstamp); -+ atomicincunlock (lock); -+ } -+ } - if (__res_initstamp != resp->_u._ext.initstamp) { - if (resp->nscount > 0) - __res_iclose (resp, true); From 67f6df3eb9ca5a0e2d41452b07c2e04d50a3b74118f6ce84c3d7a705dcdcebdc Mon Sep 17 00:00:00 2001 From: Petr Baudis Date: Thu, 25 Mar 2010 16:12:02 +0000 Subject: [PATCH 04/23] OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=21 --- glibc-2.5-ppc-llrintl.diff | 19 ----- glibc-dl-x86-64-pc32.diff | 11 +++ glibc-getnprocs.diff | 148 +++++++++++++++++++++++++++++++++ glibc-memchr-ia64.diff | 39 +++++++++ glibc-ppc64-vdso-time.diff | 28 +++++++ glibc-resolv-reload.diff | 2 +- glibc-sap-captialsharps.diff | 11 +++ glibc-statfs64-ia64.diff | 12 +++ glibc-utf-s390.diff | 84 +++++++++++++++++++ glibc-valloc-assert.diff | 32 +++++++ glibc.changes | 75 +++++++++++++++++ glibc.spec | 34 ++++++-- glibc_post_upgrade.c | 19 +++++ ld-prelink-unique.diff | 57 +++++++++++++ nptl-ppc64-vdso-timedwait.diff | 29 +++++++ powerpc-cpu.tar.bz2 | 3 - resolv.dynamic.diff | 33 ++++++++ 17 files changed, 605 insertions(+), 31 deletions(-) delete mode 100644 glibc-2.5-ppc-llrintl.diff create mode 100644 glibc-dl-x86-64-pc32.diff create mode 100644 glibc-getnprocs.diff create mode 100644 glibc-memchr-ia64.diff create mode 100644 glibc-ppc64-vdso-time.diff create mode 100644 glibc-sap-captialsharps.diff create mode 100644 glibc-statfs64-ia64.diff create mode 100644 glibc-utf-s390.diff create mode 100644 glibc-valloc-assert.diff create mode 100644 ld-prelink-unique.diff create mode 100644 nptl-ppc64-vdso-timedwait.diff delete mode 100644 powerpc-cpu.tar.bz2 create mode 100644 resolv.dynamic.diff diff --git a/glibc-2.5-ppc-llrintl.diff b/glibc-2.5-ppc-llrintl.diff deleted file mode 100644 index 3a65665..0000000 --- a/glibc-2.5-ppc-llrintl.diff +++ /dev/null @@ -1,19 +0,0 @@ -Index: powerpc-cpu/sysdeps/powerpc/powerpc32/powerpc64/fpu/s_llrint.S -=================================================================== ---- powerpc-cpu/sysdeps/powerpc/powerpc32/powerpc64/fpu/s_llrint.S.orig -+++ powerpc-cpu/sysdeps/powerpc/powerpc32/powerpc64/fpu/s_llrint.S -@@ -18,6 +18,7 @@ - 02110-1301 USA. */ - - #include -+#include - - /* long long int[r3, r4] __llrint (double x[fp1]) */ - ENTRY (__llrint) -@@ -41,3 +42,6 @@ weak_alias (__llrint, llrint) - strong_alias (__llrint, __llrintl) - weak_alias (__llrint, llrintl) - #endif -+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1) -+compat_symbol (libm, __llrint, llrintl, GLIBC_2_1) -+#endif diff --git a/glibc-dl-x86-64-pc32.diff b/glibc-dl-x86-64-pc32.diff new file mode 100644 index 0000000..76c25fa --- /dev/null +++ b/glibc-dl-x86-64-pc32.diff @@ -0,0 +1,11 @@ +--- sysdeps/x86_64/dl-machine.h~ 2010-03-01 18:51:13.914317000 +0100 ++++ sysdeps/x86_64/dl-machine.h 2010-03-01 18:52:01.258038000 +0100 +@@ -453,7 +453,7 @@ + case R_X86_64_PC32: + value += reloc->r_addend - (Elf64_Addr) reloc_addr; + *(unsigned int *) reloc_addr = value; +- if (__builtin_expect (value != (unsigned int) value, 0)) ++ if (__builtin_expect (value != (int) value, 0)) + { + fmt = "\ + %s: Symbol `%s' causes overflow in R_X86_64_PC32 relocation\n"; diff --git a/glibc-getnprocs.diff b/glibc-getnprocs.diff new file mode 100644 index 0000000..adb6e9d --- /dev/null +++ b/glibc-getnprocs.diff @@ -0,0 +1,148 @@ +This bug is in reference to a bug introduced in glibc 2.11 but present in glibc +HEAD by the following patch set: + + http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=6a3d03ff58742430a252beac4a1917506512e319 + +The patch came from this bugzilla bug: + + https://bugzilla.redhat.com/show_bug.cgi?id=494631 + +Which simply proposed the first part: + + + nl = memchr (*cp, '\n', *re - *cp); + + while (nl == NULL && *re == buffer_end) + + { + + /* Truncate too long lines. */ + + *re = buffer + 3 * (buffer_end - buffer) / 4; + + n = read_not_cancel (fd, *re, buffer_end - *re); + + if (n < 0) + + return NULL; + + + + nl = memchr (*re, '\n', n); + + **re = '\n'; + + *re += n; + + } + } + + else + + nl = memchr (*cp, '\n', *re - *cp); + +This was checked in with a second part: + + else if (nl + 5 >= *re) + { + memmove (buffer, nl, *re - nl); + *re = buffer + (*re - nl); + nl = *cp = buffer; + + ssize_t n = read_not_cancel (fd, *re, buffer_end - *re); + if (n < 0) + return NULL; + + *re += n; + } + +Which is meant to determine whether there's enough room at the end of the +buffer to hold "cpu*\n". + + else if (nl + 5 >= *re) + { + memmove (buffer, nl, *re - nl); + *re = buffer + (*re - nl); + nl = *cp = buffer; + + ssize_t n = read_not_cancel (fd, *re, buffer_end - *re); + if (n < 0) + return NULL; + + *re += n; + } + + *cp = nl + 1; + +This second block is erroneous (and redundant). If there's not enough room to +complete a cpu[:digit:] line it'll try to move what's partially in the end of +the buffer to the front (preserving that portion) and then read in a bunch +more, assuming that a \n is in the next read. + +But it actually ends up overwriting the current line with the contents of the +second line. + +Consider the following line + +| C | P | U | 1 | \n | C | P | U | 2 | \n | C | P | U | 3 | F | O | O | B | A | +R | F | O | O | B | +A | R | \n | ... + +where sizeof(buffer) == 12. + +The first time through 'buffer' is filled as follows: + +| C | P | U | 1 | \n | C | P | U | 2 | \n | C | P | + +and 'cpu1' is the line that is returned. The second time through 'cpu2' is the +line that is supposed to be returned but this problematic branch is hit and the +last C P is copied to the front of the buffer over top of C P U 2. Following +this U 3 F O O B A R F O is read into the rest of 'buffer': + +| C | P ||| U | 3 | F | O | O | B | A | R | F | O | + +This throws off the whole incrementing calculation. + +This second else block isn't necessary. Jakub's first part covers the scenario +shown in the example above quite well: + +The following test case: + +#include +#include +int main() +{ +int lcpus=get_nprocs(); +printf("logical cpus = %d\n",lcpus); +return 0; +} + +Can be run against the attached /proc/stat file which is known to reproduce the +problem: + +This stat file can be used with the testcase by bind mounting it over +/proc/stat: +cp stat /dev/shm/stat +mount --bind /dev/shm/stat /proc/stat + +When run this should show: + +logical cpus = 1024 + +since cpu1024 is high cpu number. But it shows something like: + +logical cpus = 137 + +Also attached is a patch which removes the erroneous else block. + +When re-run against with this patch it reports the correct number of cpus. + +Thanks to Milton Miller for describing this problem. + + +--- glibc-2.11.1/sysdeps/unix/sysv/linux/getsysstats.c 2010-01-18 11:01:41.000000000 -0600 ++++ glibc-2.11.1-new/sysdeps/unix/sysv/linux/getsysstats.c 2010-03-23 08:00:26.000000000 -0500 +@@ -117,18 +117,6 @@ + if (nl == NULL) + nl = *re - 1; + } +- else if (nl + 5 >= *re) +- { +- memmove (buffer, nl, *re - nl); +- *re = buffer + (*re - nl); +- nl = *cp = buffer; +- +- ssize_t n = read_not_cancel (fd, *re, buffer_end - *re); +- if (n < 0) +- return NULL; +- +- *re += n; +- } + + *cp = nl + 1; + assert (*cp <= *re); diff --git a/glibc-memchr-ia64.diff b/glibc-memchr-ia64.diff new file mode 100644 index 0000000..a95937d --- /dev/null +++ b/glibc-memchr-ia64.diff @@ -0,0 +1,39 @@ +2010-02-05 H.J. Lu + + PR libc/11230 + * sysdeps/ia64/memchr.S: Don't read beyond the last byte + during recovery. + +diff --git a/sysdeps/ia64/memchr.S b/sysdeps/ia64/memchr.S +index cdd71ca..56d8056 100644 +--- a/sysdeps/ia64/memchr.S ++++ b/sysdeps/ia64/memchr.S +@@ -47,7 +47,7 @@ + #define saved_lc r16 + #define chr r17 + #define len r18 +-#define pos0 r20 ++#define last r20 + #define val r21 + #define tmp r24 + #define chrx8 r25 +@@ -67,6 +67,7 @@ ENTRY(__memchr) + mov saved_pr = pr // save the predicates + .body + mov ret0 = str ++ add last = str, in2 // last byte + and tmp = 7, str // tmp = str % 8 + cmp.ne p7, p0 = r0, r0 // clear p7 + extr.u chr = in1, 0, 8 // chr = (unsigned char) in1 +@@ -143,7 +144,10 @@ ENTRY(__memchr) + ld8 tmp = [ret0];; // load the first unchecked 8byte + xor aux[1] = tmp, chrx8;; + czx1.r poschr[1] = aux[1];; +- cmp.ne p7, p0 = 8, poschr[1] ++ cmp.ne p7, p0 = 8, poschr[1];; ++(p7) add ret0 = addr[MEMLAT+2], poschr[1];; ++(p7) cmp.geu p6, p7 = ret0, last // don't go over the last byte ++(p6) br.cond.spnt .notfound;; + (p7) br.cond.spnt .foundit;; + adds ret0 = 8, ret0 // load the next unchecked 8byte + br.sptk .l4;; diff --git a/glibc-ppc64-vdso-time.diff b/glibc-ppc64-vdso-time.diff new file mode 100644 index 0000000..bba82b6 --- /dev/null +++ b/glibc-ppc64-vdso-time.diff @@ -0,0 +1,28 @@ +2010-03-04 Carlos Eduardo Seo + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/time.c: New file. + +Index: src/sysdeps/unix/sysv/linux/powerpc/powerpc64/time.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ src/sysdeps/unix/sysv/linux/powerpc/powerpc64/time.c 2010-03-04 20:02:23.000000000 -0300 +@@ -0,0 +1,19 @@ ++/* Copyright (C) 2010 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, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include diff --git a/glibc-resolv-reload.diff b/glibc-resolv-reload.diff index d2013a5..0011838 100644 --- a/glibc-resolv-reload.diff +++ b/glibc-resolv-reload.diff @@ -117,7 +117,7 @@ diff -ur resolv.orig/res_libc.c resolv/res_libc.c if (resp->options & RES_INIT) { + __res_check_resconf (); if (__res_initstamp != resp->_u._ext.initstamp) { - if (resp->nscount > 0) { + if (resp->nscount > 0) __res_iclose (resp, true); diff --git a/glibc-sap-captialsharps.diff b/glibc-sap-captialsharps.diff new file mode 100644 index 0000000..b0b9e6d --- /dev/null +++ b/glibc-sap-captialsharps.diff @@ -0,0 +1,11 @@ +--- localedata/locales/i18n~ 2010-01-19 03:51:14.208960000 +0100 ++++ localedata/locales/i18n 2010-01-19 03:51:24.444040000 +0100 +@@ -928,7 +928,7 @@ + (,);(,);(,);(,);/ + (,);(,);(,);(,);/ + (,);(,);(,);(,);/ +- (,);(,);(,);(,);/ ++ (,);(,);(,);/ + (,);/ + (,);(,);(,);(,);/ + (,);(,);(,);(,);/ diff --git a/glibc-statfs64-ia64.diff b/glibc-statfs64-ia64.diff new file mode 100644 index 0000000..1804a68 --- /dev/null +++ b/glibc-statfs64-ia64.diff @@ -0,0 +1,12 @@ +--- sysdeps/unix/sysv/linux/statfs64.c~ 2010-01-27 02:47:32.884315000 +0100 ++++ sysdeps/unix/sysv/linux/statfs64.c 2010-01-27 02:49:17.943657000 +0100 +@@ -24,6 +24,9 @@ + #include + #include + ++/* On IA64, ia32el does not provide wrapper for statfs64() for some reason. ++ Force the compatibility code to get compiled in. [bnc#534828] */ ++#undef __ASSUME_STATFS64 + + # if __ASSUME_STATFS64 == 0 + int __no_statfs64 attribute_hidden; diff --git a/glibc-utf-s390.diff b/glibc-utf-s390.diff new file mode 100644 index 0000000..83caab0 --- /dev/null +++ b/glibc-utf-s390.diff @@ -0,0 +1,84 @@ +Hi, + +unfortunately it turned out that the UTF-16 to UTF-32 and UTF-16 to +UTF-8 conversion instructions fail to recognize certain conditions if +the input stream is corrupted. + +The attached patch disables these instructions and adjusts the +software implementation in order to take care of the error condition. +Hopefully we can re-enable them if a millicode fix becomes available. + +Tested without regressions on s390x. + +Please apply if you think it is ok. + +Bye, + +-Andreas- + + +2010-02-11 Andreas Krebbel + + * sysdeps/s390/s390-64/utf8-utf16-z9.c: Disable hardware + instructions cu21 and cu24. Add well-formedness checking + parameter and adjust the software implementation. + * sysdeps/s390/s390-64/utf16-utf32-z9.c: Likewise. + + +Index: libc/sysdeps/s390/s390-64/utf8-utf16-z9.c +=================================================================== +--- libc.orig/sysdeps/s390/s390-64/utf8-utf16-z9.c ++++ libc/sysdeps/s390/s390-64/utf8-utf16-z9.c +@@ -345,9 +345,12 @@ gconv_end (struct __gconv_step *data) + Operation. */ + #define BODY \ + { \ +- if (GLRO (dl_hwcap) & HWCAP_S390_ETF3EH) \ ++ /* The hardware instruction currently fails to report an error for \ ++ isolated low surrogates so we have to disable the instruction \ ++ until this gets resolved. */ \ ++ if (0) /* (GLRO (dl_hwcap) & HWCAP_S390_ETF3EH) */ \ + { \ +- HARDWARE_CONVERT ("cu21 %0, %1"); \ ++ HARDWARE_CONVERT ("cu21 %0, %1, 1"); \ + if (inptr != inend) \ + { \ + /* Check if the third byte is \ +@@ -388,7 +391,7 @@ gconv_end (struct __gconv_step *data) + \ + outptr += 2; \ + } \ +- else if (c >= 0x0800 && c <= 0xd7ff) \ ++ else if ((c >= 0x0800 && c <= 0xd7ff) || c > 0xdfff) \ + { \ + /* Three byte UTF-8 char. */ \ + \ +Index: libc/sysdeps/s390/s390-64/utf16-utf32-z9.c +=================================================================== +--- libc.orig/sysdeps/s390/s390-64/utf16-utf32-z9.c ++++ libc/sysdeps/s390/s390-64/utf16-utf32-z9.c +@@ -203,7 +203,10 @@ gconv_end (struct __gconv_step *data) + swapping). */ + #define BODY \ + { \ +- if (GLRO (dl_hwcap) & HWCAP_S390_ETF3EH) \ ++ /* The hardware instruction currently fails to report an error for \ ++ isolated low surrogates so we have to disable the instruction \ ++ until this gets resolved. */ \ ++ if (0) /* (GLRO (dl_hwcap) & HWCAP_S390_ETF3EH) */ \ + { \ + HARDWARE_CONVERT ("cu24 %0, %1, 1"); \ + if (inptr != inend) \ +@@ -229,6 +232,12 @@ gconv_end (struct __gconv_step *data) + } \ + else \ + { \ ++ /* An isolated low-surrogate was found. This has to be \ ++ considered ill-formed. */ \ ++ if (__builtin_expect (u1 >= 0xdc00, 0)) \ ++ { \ ++ STANDARD_FROM_LOOP_ERR_HANDLER (2); \ ++ } \ + /* It's a surrogate character. At least the first word says \ + it is. */ \ + if (__builtin_expect (inptr + 4 > inend, 0)) \ diff --git a/glibc-valloc-assert.diff b/glibc-valloc-assert.diff new file mode 100644 index 0000000..b884029 --- /dev/null +++ b/glibc-valloc-assert.diff @@ -0,0 +1,32 @@ +Index: glibc-2.11.1/malloc/malloc.c +=================================================================== +--- glibc-2.11.1.orig/malloc/malloc.c 2010-01-18 18:01:41.000000000 +0100 ++++ glibc-2.11.1/malloc/malloc.c 2010-02-23 13:47:59.000000000 +0100 +@@ -3933,9 +3933,10 @@ public_vALLOc(size_t bytes) + if(!p) { + /* Maybe the failure is due to running out of mmapped areas. */ + if(ar_ptr != &main_arena) { +- (void)mutex_lock(&main_arena.mutex); +- p = _int_memalign(&main_arena, pagesz, bytes); +- (void)mutex_unlock(&main_arena.mutex); ++ ar_ptr = &main_arena; ++ (void)mutex_lock(&ar_ptr->mutex); ++ p = _int_memalign(ar_ptr, pagesz, bytes); ++ (void)mutex_unlock(&ar_ptr->mutex); + } else { + #if USE_ARENAS + /* ... or sbrk() has failed and there is still a chance to mmap() */ +@@ -3978,9 +3979,10 @@ public_pVALLOc(size_t bytes) + if(!p) { + /* Maybe the failure is due to running out of mmapped areas. */ + if(ar_ptr != &main_arena) { +- (void)mutex_lock(&main_arena.mutex); +- p = _int_memalign(&main_arena, pagesz, rounded_bytes); +- (void)mutex_unlock(&main_arena.mutex); ++ ar_ptr = &main_arena; ++ (void)mutex_lock(&ar_ptr->mutex); ++ p = _int_memalign(ar_ptr, pagesz, rounded_bytes); ++ (void)mutex_unlock(&ar_ptr->mutex); + } else { + #if USE_ARENAS + /* ... or sbrk() has failed and there is still a chance to mmap() */ diff --git a/glibc.changes b/glibc.changes index 9b84cba..c4a2441 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,14 +1,89 @@ +------------------------------------------------------------------- +Wed Mar 24 13:04:12 CET 2010 - pbaudis@suse.cz + +- Fix get_nprocs() large CPU count handling [bnc#590665] + +------------------------------------------------------------------- +Tue Mar 23 15:09:09 CET 2010 - pbaudis@suse.cz + +- Fix interference of STB_GNU_UNIQUE and prelink [bnc#586979] +- Make time() use VDSO on PPC64 [bnc#590216] +- Make pthread_cond_timedway() use VDSO on PPC64 [bnc#590517] + +------------------------------------------------------------------- +Thu Mar 18 14:45:34 CET 2010 - pbaudis@suse.cz + +- Add PreReq for cat to glibc-locale [bnc#588997] + ------------------------------------------------------------------- Thu Mar 18 14:29:42 CET 2010 - pbaudis@suse.cz - Fix /etc/resolv.conf change detection for multi-threaded applications (by Sebastian Kienzl) +------------------------------------------------------------------- +Fri Mar 5 12:59:44 CET 2010 - pbaudis@suse.cz + +- Fix spurious mapping from lowercase sharp s to uppercase sharp S + which is less standard and causes problems for ISO encodings [bnc#541773] + +------------------------------------------------------------------- +Mon Mar 1 18:55:37 CET 2010 - pbaudis@suse.cz + +- Fix spurious overflow messages on some R_X86_64_PC32 relocations, + patch by Richard Guenther [bnc#583019] + +------------------------------------------------------------------- +Wed Feb 24 11:53:41 CET 2010 - pbaudis@suse.cz + +- Fix assertion failures within valloc(), patch by Michael Matz + [bnc#581391] + +------------------------------------------------------------------- +Wed Feb 17 12:02:24 CET 2010 - pbaudis@suse.cz + +- S/390: Disable two UTF conversion instructions due to the hardware + mishandling some error conditions in the input stream [bnc#579871] + +------------------------------------------------------------------- +Mon Feb 15 22:34:29 CET 2010 - pbaudis@suse.cz + +- Further fix previous power5 fix + ------------------------------------------------------------------- Sun Feb 14 15:33:33 CET 2010 - rguenther@suse.de - avoid spurious differences in nscd on rebuilds. +------------------------------------------------------------------- +Thu Feb 11 21:36:32 CET 2010 - pbaudis@suse.cz + +- Fix another upgrade problem on power5 and older - correctly remove + the old optimized libraries; found out by matz@suse.de [bnc#563978] + +------------------------------------------------------------------- +Fri Feb 5 21:07:54 CET 2010 - pbaudis@suse.cz + +- Final fix for memchr() overflow on IA64 provided by upstream + [bnc#567516] + +------------------------------------------------------------------- +Thu Jan 28 17:11:59 CET 2010 - pbaudis@suse.cz + +- Fix another memchr() overflow on IA64; another known one still + remains a mystery [bnc#567516] + +------------------------------------------------------------------- +Wed Jan 27 02:49:46 CET 2010 - pbaudis@suse.cz + +- Remove now-obsolete powerpc-cpu addon usage [bnc#572819] +- Fix statfs64() on IA64 in 32-bit mode ia32el [bnc#534828] + +------------------------------------------------------------------- +Tue Jan 26 03:33:38 CET 2010 - pbaudis@suse.cz + +- Fix upgrade from previous distributions on power5 and older [bnc#563978] + ------------------------------------------------------------------- Mon Jan 25 17:35:25 CET 2010 - meissner@suse.de diff --git a/glibc.spec b/glibc.spec index d3fe297..15375f2 100644 --- a/glibc.spec +++ b/glibc.spec @@ -70,7 +70,6 @@ Source9: nscd.init Source10: bindresvport.blacklist Source11: ctype_b.c Source12: glibc_post_upgrade.c -Source14: powerpc-cpu.tar.bz2 Source15: glibc.rpmlintrc Source16: baselibs.conf %if %_target_cpu == "i686" @@ -106,7 +105,6 @@ Patch24: glibc-2.3.3-nscd-db-path.diff Patch25: glibc-2.3.5-nscd-zeronegtimeout.diff Patch26: glibc-2.3.90-langpackdir.diff Patch27: glibc-nptl-2.4-nofixsyscallnr.diff -Patch29: glibc-2.5-ppc-llrintl.diff Patch30: glibc-2.6-configure.diff Patch31: glibc-2.2-sunrpc.diff Patch32: glibc-2.8-getconf.diff @@ -125,6 +123,16 @@ Patch46: glibc-2.10.99-ia64-include.diff Patch47: libm-x86-64-exceptions.diff Patch48: glibc-uio-cell.diff Patch50: glibc-nameserver-localhost.diff +Patch54: glibc-statfs64-ia64.diff +Patch55: glibc-memchr-ia64.diff +Patch56: glibc-utf-s390.diff +Patch57: glibc-valloc-assert.diff +Patch58: glibc-dl-x86-64-pc32.diff +Patch59: glibc-sap-captialsharps.diff +Patch60: ld-prelink-unique.diff +Patch61: glibc-ppc64-vdso-time.diff +Patch62: nptl-ppc64-vdso-timedwait.diff +Patch63: glibc-getnprocs.diff Patch500: ARM_glibc-2.10.1-local-eabi-wchar.diff Patch501: ARM_glibc-2.10.1-local-hwcap-updates.diff Patch502: ARM_glibc-2.10.1-local-lowlevellock.diff @@ -184,6 +192,7 @@ License: GPLv2+ ; LGPLv2.1+ Summary: Locale Data for Localized Programs Group: System/Libraries Requires: glibc = %{version} +PreReq: /bin/cat AutoReqProv: on # bug437293 %ifarch ppc64 @@ -278,10 +287,10 @@ versions of your software. # add glibc-ports for arm # this is CURRENTLY BROKEN; ARM-interested contributors need to provide # new tested glibc-ports source -%setup -n glibc-%{version} -q -a 2 -a 3 -a 4 -a 14 +%setup -n glibc-%{version} -q -a 2 -a 3 -a 4 %else # any other leave out ports -%setup -n glibc-%{version} -q -a 3 -a 4 -a 14 +%setup -n glibc-%{version} -q -a 3 -a 4 %endif %patch0 # libNoVersion part is only active on ix86 @@ -320,7 +329,6 @@ touch -r nscd/s-stamp nscd/nscd_stat.c rm nscd/s-stamp %patch26 %patch27 -%patch29 %patch30 %patch31 %patch32 @@ -339,6 +347,16 @@ rm nscd/s-stamp %patch47 %patch48 -p1 %patch50 -p1 +%patch54 +%patch55 -p1 +%patch56 -p1 +%patch57 -p1 +%patch58 +%patch59 +%patch60 -p1 +%patch61 -p1 +%patch62 -p1 +%patch63 -p1 %ifarch %arm armv5tel armv7l %patch500 %patch501 @@ -478,7 +496,7 @@ configure_and_build_glibc() { # # First, base build: pBuildFlags="$BuildFlags -mcpu=%{powerpc_optimize_base} -mtune=%{powerpc_optimize_tune}" - configure_and_build_glibc base "$pBuildFlags" "$add_ons,powerpc-cpu" --with-cpu=%{powerpc_optimize_base} + configure_and_build_glibc base "$pBuildFlags" "$add_ons" --with-cpu=%{powerpc_optimize_base} # Then other power variants: for pcpu in \ %if %{powerpc_optimize_cpu_power6} @@ -488,7 +506,7 @@ configure_and_build_glibc() { power7 \ %endif ; do - configure_and_build_glibc $pcpu "$BuildFlags -mcpu=$pcpu" "$add_ons,powerpc-cpu" \ + configure_and_build_glibc $pcpu "$BuildFlags -mcpu=$pcpu" "$add_ons" \ --with-cpu=$pcpu --disable-runbinaries done # Eventually, special Cell variant: @@ -507,7 +525,7 @@ make -C cc-base html # $BuildCC -static -Os -g $RPM_SOURCE_DIR/glibc_post_upgrade.c -o glibc_post_upgrade \ -Lcc-base -Bcc-base/csu \ - '-DREMOVE_TLS_DIRS' \ + '-DREMOVE_TLS_DIRS' '-DREMOVE_PPC_OPTIMIZE_POWER4' '-DREMOVE_PPC_OPTIMIZE_POWER5' \ %ifarch ppc ppc64 %if !%{powerpc_optimize_cpu_power6} '-DREMOVE_PPC_OPTIMIZE_POWER6' \ diff --git a/glibc_post_upgrade.c b/glibc_post_upgrade.c index a479c79..ebd1e6e 100644 --- a/glibc_post_upgrade.c +++ b/glibc_post_upgrade.c @@ -34,6 +34,9 @@ main (void) char initpath[256]; struct stat root, init_root; + /* First, get rid of platform-optimized libraries. We remove any we have + ever built, since otherwise we might end up using some old leftover + libraries when new ones aren't installed in their place anymore. */ #ifdef REMOVE_TLS_DIRS const char *library[] = {"libc.so.6", "libc.so.6.1", "libm.so.6", "libm.so.6.1", "librt.so.1", "librtkaio.so.1", @@ -43,6 +46,14 @@ main (void) "/lib/i686/", #endif #ifdef __powerpc64__ +#ifdef REMOVE_PPC_OPTIMIZE_POWER4 + "/lib64/power4/", + "/lib64/ppc970/", +#endif +#ifdef REMOVE_PPC_OPTIMIZE_POWER5 + "/lib64/power5/", + "/lib64/power5+/", +#endif #ifdef REMOVE_PPC_OPTIMIZE_POWER6 "/lib64/power6/", "/lib64/power6x/", @@ -55,6 +66,14 @@ main (void) #endif #endif /* __powerpc64__ */ #ifdef __powerpc__ +#ifdef REMOVE_PPC_OPTIMIZE_POWER4 + "/lib/power4/", + "/lib/ppc970/", +#endif +#ifdef REMOVE_PPC_OPTIMIZE_POWER5 + "/lib/power5/", + "/lib/power5+/", +#endif #ifdef REMOVE_PPC_OPTIMIZE_POWER6 "/lib/power6/", "/lib/power6x/", diff --git a/ld-prelink-unique.diff b/ld-prelink-unique.diff new file mode 100644 index 0000000..12302db --- /dev/null +++ b/ld-prelink-unique.diff @@ -0,0 +1,57 @@ +2010-03-23 Jakub Jelinek + + * elf/dl-lookup.c (do_lookup_x): If tab->entries is NULL, + but tab->size != 0, just unlock and goto success, without + allocating anything or entering anything into the hash table. + (_dl_debug_bindings): Temporarily set tab->entries to NULL + around do_lookup_x in undef_map->l_local_scope[0]. + +--- libc/elf/dl-lookup.c.jj 2009-12-16 00:10:37.000000000 +0100 ++++ libc/elf/dl-lookup.c 2010-03-23 11:03:45.850560036 +0100 +@@ -1,5 +1,6 @@ + /* Look up a symbol in the loaded objects. +- Copyright (C) 1995-2005, 2006, 2007, 2009 Free Software Foundation, Inc. ++ Copyright (C) 1995-2005, 2006, 2007, 2009, 2010 ++ 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 +@@ -414,6 +415,20 @@ do_lookup_x (const char *undef_name, uin + assert (!RTLD_CHECK_FOREIGN_CALL); + #endif + ++#ifdef SHARED ++ /* If tab->entries is NULL, but tab->size is not, it means ++ this is the second, conflict finding, lookup for ++ LD_TRACE_PRELINKING in _dl_debug_bindings. Don't ++ allocate anything and don't enter anything into the ++ hash table. */ ++ if (__builtin_expect (tab->size, 0)) ++ { ++ assert (GLRO(dl_debug_mask) & DL_DEBUG_PRELINK); ++ __rtld_lock_unlock_recursive (tab->lock); ++ goto success; ++ } ++#endif ++ + #define INITIAL_NUNIQUE_SYM_TABLE 31 + size = INITIAL_NUNIQUE_SYM_TABLE; + entries = calloc (sizeof (struct unique_sym), size); +@@ -917,13 +932,17 @@ _dl_debug_bindings (const char *undef_na + { + const uint_fast32_t new_hash = dl_new_hash (undef_name); + unsigned long int old_hash = 0xffffffff; ++ struct unique_sym *saved_entries ++ = GL(dl_ns)[LM_ID_BASE]._ns_unique_sym_table.entries; + ++ GL(dl_ns)[LM_ID_BASE]._ns_unique_sym_table.entries = NULL; + do_lookup_x (undef_name, new_hash, &old_hash, *ref, &val, + undef_map->l_local_scope[0], 0, version, 0, NULL, + type_class, undef_map); + + if (val.s != value->s || val.m != value->m) + conflict = 1; ++ GL(dl_ns)[LM_ID_BASE]._ns_unique_sym_table.entries = saved_entries; + } + + if (value->s) diff --git a/nptl-ppc64-vdso-timedwait.diff b/nptl-ppc64-vdso-timedwait.diff new file mode 100644 index 0000000..b41cb03 --- /dev/null +++ b/nptl-ppc64-vdso-timedwait.diff @@ -0,0 +1,29 @@ +Index: glibc-2.11.1/nptl/pthread_cond_timedwait.c +=================================================================== +--- glibc-2.11.1.old/nptl/pthread_cond_timedwait.c ++++ glibc-2.11.1/nptl/pthread_cond_timedwait.c +@@ -27,6 +27,15 @@ + + #include + ++#ifndef HAVE_CLOCK_GETTIME_VSYSCALL ++# undef INTERNAL_VSYSCALL ++# define INTERNAL_VSYSCALL INTERNAL_SYSCALL ++# undef INLINE_VSYSCALL ++# define INLINE_VSYSCALL INLINE_SYSCALL ++#else ++# include ++#endif ++ + + /* Cleanup handler, defined in pthread_cond_wait.c. */ + extern void __condvar_cleanup (void *arg) +@@ -102,7 +111,7 @@ __pthread_cond_timedwait (cond, mutex, a + #ifdef __NR_clock_gettime + INTERNAL_SYSCALL_DECL (err); + int ret; +- ret = INTERNAL_SYSCALL (clock_gettime, err, 2, ++ ret = INTERNAL_VSYSCALL (clock_gettime, err, 2, + (cond->__data.__nwaiters + & ((1 << COND_NWAITERS_SHIFT) - 1)), + &rt); diff --git a/powerpc-cpu.tar.bz2 b/powerpc-cpu.tar.bz2 deleted file mode 100644 index 715978c..0000000 --- a/powerpc-cpu.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c59f80e38c9f6ad339d72bbfbc454364659686567b7689d33483b9cb4a12bf2a -size 36248 diff --git a/resolv.dynamic.diff b/resolv.dynamic.diff new file mode 100644 index 0000000..f9c45e7 --- /dev/null +++ b/resolv.dynamic.diff @@ -0,0 +1,33 @@ +Index: resolv/res_libc.c +=================================================================== +--- resolv/res_libc.c.orig ++++ resolv/res_libc.c +@@ -22,6 +22,7 @@ + #include + #include + #include ++#include + + + /* The following bit is copied from res_data.c (where it is #ifdef'ed +@@ -95,6 +96,20 @@ int + __res_maybe_init (res_state resp, int preinit) + { + if (resp->options & RES_INIT) { ++ static time_t last_mtime, last_check; ++ time_t now; ++ struct stat statbuf; ++ ++ time (&now); ++ if (now != last_check) { ++ last_check = now; ++ if (stat (_PATH_RESCONF, &statbuf) == 0 && last_mtime != statbuf.st_mtime) { ++ last_mtime = statbuf.st_mtime; ++ atomicinclock (lock); ++ atomicinc (__res_initstamp); ++ atomicincunlock (lock); ++ } ++ } + if (__res_initstamp != resp->_u._ext.initstamp) { + if (resp->nscount > 0) + __res_iclose (resp, true); From de4358c978bba5a1944ecc81b805ad8073988fba46a2443a214ccca10128a573 Mon Sep 17 00:00:00 2001 From: Petr Baudis Date: Tue, 20 Apr 2010 11:16:55 +0000 Subject: [PATCH 05/23] OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=22 --- glibc-gai-private4.diff | 74 +++++++++++++++++++++++++++++++++++++++++ glibc.changes | 5 +++ glibc.spec | 2 ++ 3 files changed, 81 insertions(+) create mode 100644 glibc-gai-private4.diff diff --git a/glibc-gai-private4.diff b/glibc-gai-private4.diff new file mode 100644 index 0000000..8dfc671 --- /dev/null +++ b/glibc-gai-private4.diff @@ -0,0 +1,74 @@ +Pending acceptance upstream when this gets RFC'd: +http://sourceware.org/bugzilla/show_bug.cgi?id=11438 + +--- posix/gai.conf~ 2010-04-20 13:05:50.197813000 +0200 ++++ posix/gai.conf 2010-04-20 13:08:46.472675000 +0200 +@@ -66,3 +66,68 @@ + #scopev4 ::ffff:172.16.0.0/108 5 + #scopev4 ::ffff:192.168.0.0/112 5 + #scopev4 ::ffff:0.0.0.0/96 14 ++ ++ ++# Back in 2003, the sorting algorithm used by getaddrinfo() was defined in RFC ++# 3484. However, this document did not take into account (or foresee) the ++# ubiquity of IPv4 NAT on today's internet. This in turn causes some real ++# operational problems that's hindering the deployment of IPv6 for content ++# providers. ++# ++# The problem scenario is the following: ++# ++# An end user is located in a network numbered with private (RFC 1918) IPv4 ++# addresses and transitional 6to4 (RFC 3056) IPv6 addresses. The network is ++# connected to the internet by a CPE/SOHO device implementing NAT for IPv4 and ++# anycasted 6to4 (RFC 3068) for IPv6. ++# ++# When the user attempts to connect to a server whose hostname has both IPv4 ++# and IPv6 addresses published in DNS, an IPv6 connection using the ++# transitional 6to4 service will be preferred. This happens because the scope ++# comparsion fails for IPv4, the RFC 1918 addresses are assumed to have ++# site-local scope, which is smaller than the global scope of the server's IPv4 ++# address. For IPv6, both the server's and the client's (6to4) address have ++# global scope. ++# ++# Unfortunately, the operational reality is that a transitional technique such ++# as 6to4 is much less reliable than IPv4. The relay routers might be located ++# far away from the optimal IPv4 path, and thus cause a significant latency ++# increase, or they might not even work optimally (they're usually operated by ++# voulenteering third parties on a best-effort basis), and finally some ISPs ++# simply filter away all proto-41 traffic. Transitional techniques are useful ++# to give end users with IPv4-only service a real shot at accessing IPv6-only ++# content, but it should never be preferred over IPv4 service when accessing ++# dual-stacked content. ++# ++# RFC 3484 even acknowledges this, by saying to "«avoid the use of transitional ++# addresses when native addresses are available"». ++# ++# An IETF draft document which describes the problem in a much more detailed ++# manner than I have is available here: ++# ++# http://tools.ietf.org/html/draft-denis-v6ops-nat-addrsel-00 ++# ++# There's also an IETF draft that aims to revise RFC 3484 in order to fix this ++# problem (amongst others): ++# ++# http://tools.ietf.org/html/draft-arifumi-6man-rfc3484-revise-02 ++# ++# Quoting from this document: ++# ++# > 2.7. To change private IPv4 address scope ++# > ++# > As detailed in Remi's draft [I-D.denis-v6ops-nat-addrsel], when a ++# > host is in NATed site, and has a private IPv4 address and ++# > transitional addresses like 6to4 and Teredo, the host chooses ++# > transitional IPv6 address to access most of the dual-stack servers. ++# > ++# > This is because private IPv4 address is defined to be site-local ++# > scope, and as in RFC 3484, the scope matching rules (Rule 2) set ++# > lower priority for private IPv4 address. ++# > ++# > By changing the address scope of private IPv4 address to global, this ++# > problem can be solved. ++ ++scopev4 ::ffff:10.0.0.0/104 14 ++scopev4 ::ffff:172.16.0.0/108 14 ++scopev4 ::ffff:192.168.0.0/112 14 diff --git a/glibc.changes b/glibc.changes index c4a2441..20c8e7d 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Tue Apr 20 13:15:19 CEST 2010 - pbaudis@suse.cz + +- Consider private IPv4 addresses as global-scope in gai.conf [bnc#597616] + ------------------------------------------------------------------- Wed Mar 24 13:04:12 CET 2010 - pbaudis@suse.cz diff --git a/glibc.spec b/glibc.spec index 15375f2..41721df 100644 --- a/glibc.spec +++ b/glibc.spec @@ -133,6 +133,7 @@ Patch60: ld-prelink-unique.diff Patch61: glibc-ppc64-vdso-time.diff Patch62: nptl-ppc64-vdso-timedwait.diff Patch63: glibc-getnprocs.diff +Patch64: glibc-gai-private4.diff Patch500: ARM_glibc-2.10.1-local-eabi-wchar.diff Patch501: ARM_glibc-2.10.1-local-hwcap-updates.diff Patch502: ARM_glibc-2.10.1-local-lowlevellock.diff @@ -357,6 +358,7 @@ rm nscd/s-stamp %patch61 -p1 %patch62 -p1 %patch63 -p1 +%patch64 %ifarch %arm armv5tel armv7l %patch500 %patch501 From 2b86d292309f4954f42eed737e2aa29e8509b64de9938d59b03d4915c3bc35c2 Mon Sep 17 00:00:00 2001 From: Petr Baudis Date: Mon, 26 Apr 2010 11:34:14 +0000 Subject: [PATCH 06/23] Accepting request 38530 from home:msmeissn:branches:Base:System Copy from home:msmeissn:branches:Base:System/glibc via accept of submit request 38530 revision 5. Request was accepted with message: reviewed ok,thanks OBS-URL: https://build.opensuse.org/request/show/38530 OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=23 --- glibc-2.5-ppc-llrintl.diff | 19 +++++++++++++++++++ glibc.changes | 6 ++++++ glibc.spec | 27 ++++++++++++++++++++++++++- powerpc-cpu.tar.bz2 | 3 +++ 4 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 glibc-2.5-ppc-llrintl.diff create mode 100644 powerpc-cpu.tar.bz2 diff --git a/glibc-2.5-ppc-llrintl.diff b/glibc-2.5-ppc-llrintl.diff new file mode 100644 index 0000000..3a65665 --- /dev/null +++ b/glibc-2.5-ppc-llrintl.diff @@ -0,0 +1,19 @@ +Index: powerpc-cpu/sysdeps/powerpc/powerpc32/powerpc64/fpu/s_llrint.S +=================================================================== +--- powerpc-cpu/sysdeps/powerpc/powerpc32/powerpc64/fpu/s_llrint.S.orig ++++ powerpc-cpu/sysdeps/powerpc/powerpc32/powerpc64/fpu/s_llrint.S +@@ -18,6 +18,7 @@ + 02110-1301 USA. */ + + #include ++#include + + /* long long int[r3, r4] __llrint (double x[fp1]) */ + ENTRY (__llrint) +@@ -41,3 +42,6 @@ weak_alias (__llrint, llrint) + strong_alias (__llrint, __llrintl) + weak_alias (__llrint, llrintl) + #endif ++#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1) ++compat_symbol (libm, __llrint, llrintl, GLIBC_2_1) ++#endif diff --git a/glibc.changes b/glibc.changes index 20c8e7d..545a3b6 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Thu Apr 22 08:30:50 CEST 2010 - meissner@suse.de + +- for powerpc32 build a generic library and also a power4 library + to allow older 32bit powerpc to work. bnc#596271 + ------------------------------------------------------------------- Tue Apr 20 13:15:19 CEST 2010 - pbaudis@suse.cz diff --git a/glibc.spec b/glibc.spec index 41721df..1518127 100644 --- a/glibc.spec +++ b/glibc.spec @@ -28,8 +28,15 @@ BuildRequires: libselinux-devel %define enable_stackguard_randomization 1 %ifarch ppc ppc64 %define optimize_power 1 + %ifarch ppc + %define powerpc_optimize_base power3 + %define powerpc_optimize_tune power3 + %define powerpc_optimize_cpu_power4 1 + %else %define powerpc_optimize_base power4 %define powerpc_optimize_tune power5 + %define powerpc_optimize_cpu_power4 0 + %endif # We are not building Power CPU specific optimizations for openSUSE. %define powerpc_optimize_cpu_power6 0 %define powerpc_optimize_cpu_power7 0 @@ -37,6 +44,7 @@ BuildRequires: libselinux-devel %else %define optimize_power 0 %define powerpc_optimize_base 0 + %define powerpc_optimize_cpu_power4 0 %define powerpc_optimize_cpu_power6 0 %define powerpc_optimize_cpu_power7 0 %define powerpc_optimize_cpu_cell 0 @@ -498,9 +506,17 @@ configure_and_build_glibc() { # # First, base build: pBuildFlags="$BuildFlags -mcpu=%{powerpc_optimize_base} -mtune=%{powerpc_optimize_tune}" + %if %{powerpc_optimize_base} != "power3" configure_and_build_glibc base "$pBuildFlags" "$add_ons" --with-cpu=%{powerpc_optimize_base} + %else + # Use no default CPU + configure_and_build_glibc base "$pBuildFlags" "$add_ons" + %endif # Then other power variants: for pcpu in \ + %if %{powerpc_optimize_cpu_power4} + power4 \ + %endif %if %{powerpc_optimize_cpu_power6} power6 \ %endif @@ -527,8 +543,11 @@ make -C cc-base html # $BuildCC -static -Os -g $RPM_SOURCE_DIR/glibc_post_upgrade.c -o glibc_post_upgrade \ -Lcc-base -Bcc-base/csu \ - '-DREMOVE_TLS_DIRS' '-DREMOVE_PPC_OPTIMIZE_POWER4' '-DREMOVE_PPC_OPTIMIZE_POWER5' \ + '-DREMOVE_TLS_DIRS' '-DREMOVE_PPC_OPTIMIZE_POWER5' \ %ifarch ppc ppc64 + %if !%{powerpc_optimize_cpu_power4} + '-DREMOVE_PPC_OPTIMIZE_POWER4' \ + %endif %if !%{powerpc_optimize_cpu_power6} '-DREMOVE_PPC_OPTIMIZE_POWER6' \ %endif @@ -598,6 +617,9 @@ make install_root=$RPM_BUILD_ROOT install -C cc-base # it may contain instructions not suitable for the cpu on the builhost my_ldconfig=/sbin/ldconfig for pcpu in \ + %if %{powerpc_optimize_cpu_power4} + power4 \ + %endif %if %{powerpc_optimize_cpu_power6} power6 \ %endif @@ -889,6 +911,9 @@ exit 0 /%{_lib}/%1/librt.so.1\ /%{_lib}/%1/libthread_db-1.0.so\ /%{_lib}/%1/libthread_db.so.1 + %if %{powerpc_optimize_cpu_power4} + %{optimized_libs power4} + %endif %if %{powerpc_optimize_cpu_power6} %{optimized_libs power6} %{optimized_libs power6x} diff --git a/powerpc-cpu.tar.bz2 b/powerpc-cpu.tar.bz2 new file mode 100644 index 0000000..715978c --- /dev/null +++ b/powerpc-cpu.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c59f80e38c9f6ad339d72bbfbc454364659686567b7689d33483b9cb4a12bf2a +size 36248 From b87c70fd9e99e964db00e381a4782d1e29ad0d9d29be61df4ab3616e6897798c Mon Sep 17 00:00:00 2001 From: Marcus Meissner Date: Mon, 26 Apr 2010 13:32:39 +0000 Subject: [PATCH 07/23] remove incorrectly re-added stuff that was previously deleted OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=24 --- glibc-2.5-ppc-llrintl.diff | 19 ------------------- powerpc-cpu.tar.bz2 | 3 --- 2 files changed, 22 deletions(-) delete mode 100644 glibc-2.5-ppc-llrintl.diff delete mode 100644 powerpc-cpu.tar.bz2 diff --git a/glibc-2.5-ppc-llrintl.diff b/glibc-2.5-ppc-llrintl.diff deleted file mode 100644 index 3a65665..0000000 --- a/glibc-2.5-ppc-llrintl.diff +++ /dev/null @@ -1,19 +0,0 @@ -Index: powerpc-cpu/sysdeps/powerpc/powerpc32/powerpc64/fpu/s_llrint.S -=================================================================== ---- powerpc-cpu/sysdeps/powerpc/powerpc32/powerpc64/fpu/s_llrint.S.orig -+++ powerpc-cpu/sysdeps/powerpc/powerpc32/powerpc64/fpu/s_llrint.S -@@ -18,6 +18,7 @@ - 02110-1301 USA. */ - - #include -+#include - - /* long long int[r3, r4] __llrint (double x[fp1]) */ - ENTRY (__llrint) -@@ -41,3 +42,6 @@ weak_alias (__llrint, llrint) - strong_alias (__llrint, __llrintl) - weak_alias (__llrint, llrintl) - #endif -+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1) -+compat_symbol (libm, __llrint, llrintl, GLIBC_2_1) -+#endif diff --git a/powerpc-cpu.tar.bz2 b/powerpc-cpu.tar.bz2 deleted file mode 100644 index 715978c..0000000 --- a/powerpc-cpu.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c59f80e38c9f6ad339d72bbfbc454364659686567b7689d33483b9cb4a12bf2a -size 36248 From b161019527a1e9c0cbd2670e88c5ec39363aee1bca746215c146c6c4822f1a0b Mon Sep 17 00:00:00 2001 From: Petr Baudis Date: Mon, 26 Apr 2010 20:11:02 +0000 Subject: [PATCH 08/23] - Remove stale resolv.dynamic.diff patch file OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=25 --- glibc.changes | 5 +++++ resolv.dynamic.diff | 33 --------------------------------- 2 files changed, 5 insertions(+), 33 deletions(-) delete mode 100644 resolv.dynamic.diff diff --git a/glibc.changes b/glibc.changes index 545a3b6..4fd017f 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Mon Apr 26 22:09:40 CEST 2010 - pbaudis@suse.cz + +- Remove stale resolv.dynamic.diff patch file + ------------------------------------------------------------------- Thu Apr 22 08:30:50 CEST 2010 - meissner@suse.de diff --git a/resolv.dynamic.diff b/resolv.dynamic.diff deleted file mode 100644 index f9c45e7..0000000 --- a/resolv.dynamic.diff +++ /dev/null @@ -1,33 +0,0 @@ -Index: resolv/res_libc.c -=================================================================== ---- resolv/res_libc.c.orig -+++ resolv/res_libc.c -@@ -22,6 +22,7 @@ - #include - #include - #include -+#include - - - /* The following bit is copied from res_data.c (where it is #ifdef'ed -@@ -95,6 +96,20 @@ int - __res_maybe_init (res_state resp, int preinit) - { - if (resp->options & RES_INIT) { -+ static time_t last_mtime, last_check; -+ time_t now; -+ struct stat statbuf; -+ -+ time (&now); -+ if (now != last_check) { -+ last_check = now; -+ if (stat (_PATH_RESCONF, &statbuf) == 0 && last_mtime != statbuf.st_mtime) { -+ last_mtime = statbuf.st_mtime; -+ atomicinclock (lock); -+ atomicinc (__res_initstamp); -+ atomicincunlock (lock); -+ } -+ } - if (__res_initstamp != resp->_u._ext.initstamp) { - if (resp->nscount > 0) - __res_iclose (resp, true); From fd674635064c4cf5c8cb8935c2d372a4d309d2204c455e0ba5e1e36a07f42c62 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 4 May 2010 06:54:49 +0000 Subject: [PATCH 09/23] Accepting request 39338 from home:a_jaeger:branches:openSUSE:Factory Copy from home:a_jaeger:branches:openSUSE:Factory/glibc via accept of submit request 39338 revision 3. Request was accepted with message: Reviewed ok OBS-URL: https://build.opensuse.org/request/show/39338 OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=26 --- glibc.changes | 5 +++++ glibc.spec | 2 +- nscd.init | 2 ++ ready | 0 4 files changed, 8 insertions(+), 1 deletion(-) delete mode 100644 ready diff --git a/glibc.changes b/glibc.changes index 4fd017f..ab18918 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Tue May 4 05:47:41 UTC 2010 - aj@suse.de + +- Handle /var/run on tmpfs + ------------------------------------------------------------------- Mon Apr 26 22:09:40 CEST 2010 - pbaudis@suse.cz diff --git a/glibc.spec b/glibc.spec index 1518127..87bcb98 100644 --- a/glibc.spec +++ b/glibc.spec @@ -1022,7 +1022,7 @@ exit 0 %config /etc/init.d/nscd /usr/sbin/nscd /usr/sbin/rcnscd -%dir %attr(0755,root,root) /var/run/nscd +%dir %attr(0755,root,root) %ghost /var/run/nscd %attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/nscd.pid %attr(0666,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/socket %attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/passwd diff --git a/nscd.init b/nscd.init index 1316e90..52c960e 100644 --- a/nscd.init +++ b/nscd.init @@ -66,6 +66,8 @@ rc_reset case "$1" in start) echo -n "Starting Name Service Cache Daemon" + # /var/run might be on tmpfs + [ -d /var/run/nscd ] || mkdir /var/run/nscd /sbin/startproc -p $NSCD_PID $NSCD_BIN rc_status -v ;; diff --git a/ready b/ready deleted file mode 100644 index 473a0f4..0000000 From e6723e7880810ca499682fd7bd8d09acb676d95c3f6017ec11c3d15a03498320 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 4 May 2010 06:58:36 +0000 Subject: [PATCH 10/23] fix indent OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=27 --- glibc.spec | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/glibc.spec b/glibc.spec index 87bcb98..f7ae388 100644 --- a/glibc.spec +++ b/glibc.spec @@ -131,12 +131,12 @@ Patch46: glibc-2.10.99-ia64-include.diff Patch47: libm-x86-64-exceptions.diff Patch48: glibc-uio-cell.diff Patch50: glibc-nameserver-localhost.diff -Patch54: glibc-statfs64-ia64.diff -Patch55: glibc-memchr-ia64.diff -Patch56: glibc-utf-s390.diff -Patch57: glibc-valloc-assert.diff -Patch58: glibc-dl-x86-64-pc32.diff -Patch59: glibc-sap-captialsharps.diff +Patch54: glibc-statfs64-ia64.diff +Patch55: glibc-memchr-ia64.diff +Patch56: glibc-utf-s390.diff +Patch57: glibc-valloc-assert.diff +Patch58: glibc-dl-x86-64-pc32.diff +Patch59: glibc-sap-captialsharps.diff Patch60: ld-prelink-unique.diff Patch61: glibc-ppc64-vdso-time.diff Patch62: nptl-ppc64-vdso-timedwait.diff From 3219db23916216753f90e57c1f8e0351443b51214df8b110369819e38451552f Mon Sep 17 00:00:00 2001 From: Petr Baudis Date: Mon, 10 May 2010 22:04:33 +0000 Subject: [PATCH 11/23] - Add a hint about /etc/host.conf mdns option removal to the parser error reporting [bnc#569273] OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=28 --- glibc-resolv-mdnshint.diff | 19 +++++++++++++++++++ glibc.changes | 6 ++++++ glibc.spec | 2 ++ ready | 0 4 files changed, 27 insertions(+) create mode 100644 glibc-resolv-mdnshint.diff create mode 100644 ready diff --git a/glibc-resolv-mdnshint.diff b/glibc-resolv-mdnshint.diff new file mode 100644 index 0000000..fec8d52 --- /dev/null +++ b/glibc-resolv-mdnshint.diff @@ -0,0 +1,19 @@ +diff --git a/resolv/res_hconf.c b/resolv/res_hconf.c +index ed55bec..f06db75 100644 +--- a/resolv/res_hconf.c ++++ b/resolv/res_hconf.c +@@ -243,9 +243,12 @@ parse_line (const char *fname, int line_num, const char *str) + if (c == NULL) + { + char *buf; ++ char *hint = ""; + +- if (__asprintf (&buf, _("%s: line %d: bad command `%s'\n"), +- fname, line_num, start) < 0) ++ if (__strncasecmp (start, "mdns", len) == 0 && len == 4) ++ hint = "Multicast DNS is now configured in /etc/nsswitch.conf instead.\nSee also the package and manpage of nss-mdns.\n"; ++ if (__asprintf (&buf, _("%s: line %d: bad command `%s'\n%s"), ++ fname, line_num, start, hint) < 0) + return; + + __fxprintf (NULL, "%s", buf); diff --git a/glibc.changes b/glibc.changes index ab18918..3788b50 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Mon May 10 23:33:35 CEST 2010 - pbaudis@suse.cz + +- Add a hint about /etc/host.conf mdns option removal to the parser + error reporting [bnc#569273] + ------------------------------------------------------------------- Tue May 4 05:47:41 UTC 2010 - aj@suse.de diff --git a/glibc.spec b/glibc.spec index f7ae388..46cb2fb 100644 --- a/glibc.spec +++ b/glibc.spec @@ -142,6 +142,7 @@ Patch61: glibc-ppc64-vdso-time.diff Patch62: nptl-ppc64-vdso-timedwait.diff Patch63: glibc-getnprocs.diff Patch64: glibc-gai-private4.diff +Patch65: glibc-resolv-mdnshint.diff Patch500: ARM_glibc-2.10.1-local-eabi-wchar.diff Patch501: ARM_glibc-2.10.1-local-hwcap-updates.diff Patch502: ARM_glibc-2.10.1-local-lowlevellock.diff @@ -367,6 +368,7 @@ rm nscd/s-stamp %patch62 -p1 %patch63 -p1 %patch64 +%patch65 -p1 %ifarch %arm armv5tel armv7l %patch500 %patch501 diff --git a/ready b/ready new file mode 100644 index 0000000..473a0f4 From b7aa45883fa1cda79425d5981b4a2876ef6c729a122012aac54918d8ee9b87df Mon Sep 17 00:00:00 2001 From: Petr Baudis Date: Wed, 12 May 2010 02:45:48 +0000 Subject: [PATCH 12/23] OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=29 --- glibc-2.11.1-11c19d374bd4.tar.bz2 | 3 - glibc-2.11.1-6d270188ef3f.tar.bz2 | 3 + glibc-dl-x86-64-pc32.diff | 11 --- glibc-gai-private4.diff | 22 +++-- glibc-getnprocs.diff | 148 ------------------------------ glibc-memchr-ia64.diff | 39 -------- glibc-sap-captialsharps.diff | 11 --- glibc-utf-s390.diff | 84 ----------------- glibc-valloc-assert.diff | 32 ------- glibc.changes | 8 ++ glibc.spec | 16 +--- nptl-ppc64-vdso-timedwait.diff | 29 ------ 12 files changed, 24 insertions(+), 382 deletions(-) delete mode 100644 glibc-2.11.1-11c19d374bd4.tar.bz2 create mode 100644 glibc-2.11.1-6d270188ef3f.tar.bz2 delete mode 100644 glibc-dl-x86-64-pc32.diff delete mode 100644 glibc-getnprocs.diff delete mode 100644 glibc-memchr-ia64.diff delete mode 100644 glibc-sap-captialsharps.diff delete mode 100644 glibc-utf-s390.diff delete mode 100644 glibc-valloc-assert.diff delete mode 100644 nptl-ppc64-vdso-timedwait.diff diff --git a/glibc-2.11.1-11c19d374bd4.tar.bz2 b/glibc-2.11.1-11c19d374bd4.tar.bz2 deleted file mode 100644 index ae9b0ca..0000000 --- a/glibc-2.11.1-11c19d374bd4.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e03c84ffe3b41a81a070a896307fa59b4618f2cc053360a65c867a79a32a718c -size 15670997 diff --git a/glibc-2.11.1-6d270188ef3f.tar.bz2 b/glibc-2.11.1-6d270188ef3f.tar.bz2 new file mode 100644 index 0000000..c913963 --- /dev/null +++ b/glibc-2.11.1-6d270188ef3f.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b45efdd3bc1fddfad38ad83c586ae9608df85a65bacd9bb8c2c055e1b68139b7 +size 15668947 diff --git a/glibc-dl-x86-64-pc32.diff b/glibc-dl-x86-64-pc32.diff deleted file mode 100644 index 76c25fa..0000000 --- a/glibc-dl-x86-64-pc32.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- sysdeps/x86_64/dl-machine.h~ 2010-03-01 18:51:13.914317000 +0100 -+++ sysdeps/x86_64/dl-machine.h 2010-03-01 18:52:01.258038000 +0100 -@@ -453,7 +453,7 @@ - case R_X86_64_PC32: - value += reloc->r_addend - (Elf64_Addr) reloc_addr; - *(unsigned int *) reloc_addr = value; -- if (__builtin_expect (value != (unsigned int) value, 0)) -+ if (__builtin_expect (value != (int) value, 0)) - { - fmt = "\ - %s: Symbol `%s' causes overflow in R_X86_64_PC32 relocation\n"; diff --git a/glibc-gai-private4.diff b/glibc-gai-private4.diff index 8dfc671..189b2ea 100644 --- a/glibc-gai-private4.diff +++ b/glibc-gai-private4.diff @@ -1,14 +1,13 @@ -Pending acceptance upstream when this gets RFC'd: -http://sourceware.org/bugzilla/show_bug.cgi?id=11438 - ---- posix/gai.conf~ 2010-04-20 13:05:50.197813000 +0200 -+++ posix/gai.conf 2010-04-20 13:08:46.472675000 +0200 -@@ -66,3 +66,68 @@ - #scopev4 ::ffff:172.16.0.0/108 5 +--- posix/gai.conf~ 2010-05-12 04:10:58.087661000 +0200 ++++ posix/gai.conf 2010-05-12 04:14:40.638820000 +0200 +@@ -67,11 +67,66 @@ #scopev4 ::ffff:192.168.0.0/112 5 #scopev4 ::ffff:0.0.0.0/96 14 -+ -+ + # +-# For sites which use site-local IPv4 addresses behind NAT there is +-# the problem that even if IPv4 addresses are preferred they do not +-# have the same scope and are therefore not sorted first. To change +-# this use only these rules: +# Back in 2003, the sorting algorithm used by getaddrinfo() was defined in RFC +# 3484. However, this document did not take into account (or foresee) the +# ubiquity of IPv4 NAT on today's internet. This in turn causes some real @@ -68,7 +67,10 @@ http://sourceware.org/bugzilla/show_bug.cgi?id=11438 +# > +# > By changing the address scope of private IPv4 address to global, this +# > problem can be solved. -+ + # +-#scopev4 ::ffff:169.254.0.0/112 2 +-#scopev4 ::ffff:127.0.0.0/104 2 +-#scopev4 ::ffff:0.0.0.0/96 14 +scopev4 ::ffff:10.0.0.0/104 14 +scopev4 ::ffff:172.16.0.0/108 14 +scopev4 ::ffff:192.168.0.0/112 14 diff --git a/glibc-getnprocs.diff b/glibc-getnprocs.diff deleted file mode 100644 index adb6e9d..0000000 --- a/glibc-getnprocs.diff +++ /dev/null @@ -1,148 +0,0 @@ -This bug is in reference to a bug introduced in glibc 2.11 but present in glibc -HEAD by the following patch set: - - http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=6a3d03ff58742430a252beac4a1917506512e319 - -The patch came from this bugzilla bug: - - https://bugzilla.redhat.com/show_bug.cgi?id=494631 - -Which simply proposed the first part: - - + nl = memchr (*cp, '\n', *re - *cp); - + while (nl == NULL && *re == buffer_end) - + { - + /* Truncate too long lines. */ - + *re = buffer + 3 * (buffer_end - buffer) / 4; - + n = read_not_cancel (fd, *re, buffer_end - *re); - + if (n < 0) - + return NULL; - + - + nl = memchr (*re, '\n', n); - + **re = '\n'; - + *re += n; - + } - } - + else - + nl = memchr (*cp, '\n', *re - *cp); - -This was checked in with a second part: - - else if (nl + 5 >= *re) - { - memmove (buffer, nl, *re - nl); - *re = buffer + (*re - nl); - nl = *cp = buffer; - - ssize_t n = read_not_cancel (fd, *re, buffer_end - *re); - if (n < 0) - return NULL; - - *re += n; - } - -Which is meant to determine whether there's enough room at the end of the -buffer to hold "cpu*\n". - - else if (nl + 5 >= *re) - { - memmove (buffer, nl, *re - nl); - *re = buffer + (*re - nl); - nl = *cp = buffer; - - ssize_t n = read_not_cancel (fd, *re, buffer_end - *re); - if (n < 0) - return NULL; - - *re += n; - } - - *cp = nl + 1; - -This second block is erroneous (and redundant). If there's not enough room to -complete a cpu[:digit:] line it'll try to move what's partially in the end of -the buffer to the front (preserving that portion) and then read in a bunch -more, assuming that a \n is in the next read. - -But it actually ends up overwriting the current line with the contents of the -second line. - -Consider the following line - -| C | P | U | 1 | \n | C | P | U | 2 | \n | C | P | U | 3 | F | O | O | B | A | -R | F | O | O | B | -A | R | \n | ... - -where sizeof(buffer) == 12. - -The first time through 'buffer' is filled as follows: - -| C | P | U | 1 | \n | C | P | U | 2 | \n | C | P | - -and 'cpu1' is the line that is returned. The second time through 'cpu2' is the -line that is supposed to be returned but this problematic branch is hit and the -last C P is copied to the front of the buffer over top of C P U 2. Following -this U 3 F O O B A R F O is read into the rest of 'buffer': - -| C | P ||| U | 3 | F | O | O | B | A | R | F | O | - -This throws off the whole incrementing calculation. - -This second else block isn't necessary. Jakub's first part covers the scenario -shown in the example above quite well: - -The following test case: - -#include -#include -int main() -{ -int lcpus=get_nprocs(); -printf("logical cpus = %d\n",lcpus); -return 0; -} - -Can be run against the attached /proc/stat file which is known to reproduce the -problem: - -This stat file can be used with the testcase by bind mounting it over -/proc/stat: -cp stat /dev/shm/stat -mount --bind /dev/shm/stat /proc/stat - -When run this should show: - -logical cpus = 1024 - -since cpu1024 is high cpu number. But it shows something like: - -logical cpus = 137 - -Also attached is a patch which removes the erroneous else block. - -When re-run against with this patch it reports the correct number of cpus. - -Thanks to Milton Miller for describing this problem. - - ---- glibc-2.11.1/sysdeps/unix/sysv/linux/getsysstats.c 2010-01-18 11:01:41.000000000 -0600 -+++ glibc-2.11.1-new/sysdeps/unix/sysv/linux/getsysstats.c 2010-03-23 08:00:26.000000000 -0500 -@@ -117,18 +117,6 @@ - if (nl == NULL) - nl = *re - 1; - } -- else if (nl + 5 >= *re) -- { -- memmove (buffer, nl, *re - nl); -- *re = buffer + (*re - nl); -- nl = *cp = buffer; -- -- ssize_t n = read_not_cancel (fd, *re, buffer_end - *re); -- if (n < 0) -- return NULL; -- -- *re += n; -- } - - *cp = nl + 1; - assert (*cp <= *re); diff --git a/glibc-memchr-ia64.diff b/glibc-memchr-ia64.diff deleted file mode 100644 index a95937d..0000000 --- a/glibc-memchr-ia64.diff +++ /dev/null @@ -1,39 +0,0 @@ -2010-02-05 H.J. Lu - - PR libc/11230 - * sysdeps/ia64/memchr.S: Don't read beyond the last byte - during recovery. - -diff --git a/sysdeps/ia64/memchr.S b/sysdeps/ia64/memchr.S -index cdd71ca..56d8056 100644 ---- a/sysdeps/ia64/memchr.S -+++ b/sysdeps/ia64/memchr.S -@@ -47,7 +47,7 @@ - #define saved_lc r16 - #define chr r17 - #define len r18 --#define pos0 r20 -+#define last r20 - #define val r21 - #define tmp r24 - #define chrx8 r25 -@@ -67,6 +67,7 @@ ENTRY(__memchr) - mov saved_pr = pr // save the predicates - .body - mov ret0 = str -+ add last = str, in2 // last byte - and tmp = 7, str // tmp = str % 8 - cmp.ne p7, p0 = r0, r0 // clear p7 - extr.u chr = in1, 0, 8 // chr = (unsigned char) in1 -@@ -143,7 +144,10 @@ ENTRY(__memchr) - ld8 tmp = [ret0];; // load the first unchecked 8byte - xor aux[1] = tmp, chrx8;; - czx1.r poschr[1] = aux[1];; -- cmp.ne p7, p0 = 8, poschr[1] -+ cmp.ne p7, p0 = 8, poschr[1];; -+(p7) add ret0 = addr[MEMLAT+2], poschr[1];; -+(p7) cmp.geu p6, p7 = ret0, last // don't go over the last byte -+(p6) br.cond.spnt .notfound;; - (p7) br.cond.spnt .foundit;; - adds ret0 = 8, ret0 // load the next unchecked 8byte - br.sptk .l4;; diff --git a/glibc-sap-captialsharps.diff b/glibc-sap-captialsharps.diff deleted file mode 100644 index b0b9e6d..0000000 --- a/glibc-sap-captialsharps.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- localedata/locales/i18n~ 2010-01-19 03:51:14.208960000 +0100 -+++ localedata/locales/i18n 2010-01-19 03:51:24.444040000 +0100 -@@ -928,7 +928,7 @@ - (,);(,);(,);(,);/ - (,);(,);(,);(,);/ - (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -+ (,);(,);(,);/ - (,);/ - (,);(,);(,);(,);/ - (,);(,);(,);(,);/ diff --git a/glibc-utf-s390.diff b/glibc-utf-s390.diff deleted file mode 100644 index 83caab0..0000000 --- a/glibc-utf-s390.diff +++ /dev/null @@ -1,84 +0,0 @@ -Hi, - -unfortunately it turned out that the UTF-16 to UTF-32 and UTF-16 to -UTF-8 conversion instructions fail to recognize certain conditions if -the input stream is corrupted. - -The attached patch disables these instructions and adjusts the -software implementation in order to take care of the error condition. -Hopefully we can re-enable them if a millicode fix becomes available. - -Tested without regressions on s390x. - -Please apply if you think it is ok. - -Bye, - --Andreas- - - -2010-02-11 Andreas Krebbel - - * sysdeps/s390/s390-64/utf8-utf16-z9.c: Disable hardware - instructions cu21 and cu24. Add well-formedness checking - parameter and adjust the software implementation. - * sysdeps/s390/s390-64/utf16-utf32-z9.c: Likewise. - - -Index: libc/sysdeps/s390/s390-64/utf8-utf16-z9.c -=================================================================== ---- libc.orig/sysdeps/s390/s390-64/utf8-utf16-z9.c -+++ libc/sysdeps/s390/s390-64/utf8-utf16-z9.c -@@ -345,9 +345,12 @@ gconv_end (struct __gconv_step *data) - Operation. */ - #define BODY \ - { \ -- if (GLRO (dl_hwcap) & HWCAP_S390_ETF3EH) \ -+ /* The hardware instruction currently fails to report an error for \ -+ isolated low surrogates so we have to disable the instruction \ -+ until this gets resolved. */ \ -+ if (0) /* (GLRO (dl_hwcap) & HWCAP_S390_ETF3EH) */ \ - { \ -- HARDWARE_CONVERT ("cu21 %0, %1"); \ -+ HARDWARE_CONVERT ("cu21 %0, %1, 1"); \ - if (inptr != inend) \ - { \ - /* Check if the third byte is \ -@@ -388,7 +391,7 @@ gconv_end (struct __gconv_step *data) - \ - outptr += 2; \ - } \ -- else if (c >= 0x0800 && c <= 0xd7ff) \ -+ else if ((c >= 0x0800 && c <= 0xd7ff) || c > 0xdfff) \ - { \ - /* Three byte UTF-8 char. */ \ - \ -Index: libc/sysdeps/s390/s390-64/utf16-utf32-z9.c -=================================================================== ---- libc.orig/sysdeps/s390/s390-64/utf16-utf32-z9.c -+++ libc/sysdeps/s390/s390-64/utf16-utf32-z9.c -@@ -203,7 +203,10 @@ gconv_end (struct __gconv_step *data) - swapping). */ - #define BODY \ - { \ -- if (GLRO (dl_hwcap) & HWCAP_S390_ETF3EH) \ -+ /* The hardware instruction currently fails to report an error for \ -+ isolated low surrogates so we have to disable the instruction \ -+ until this gets resolved. */ \ -+ if (0) /* (GLRO (dl_hwcap) & HWCAP_S390_ETF3EH) */ \ - { \ - HARDWARE_CONVERT ("cu24 %0, %1, 1"); \ - if (inptr != inend) \ -@@ -229,6 +232,12 @@ gconv_end (struct __gconv_step *data) - } \ - else \ - { \ -+ /* An isolated low-surrogate was found. This has to be \ -+ considered ill-formed. */ \ -+ if (__builtin_expect (u1 >= 0xdc00, 0)) \ -+ { \ -+ STANDARD_FROM_LOOP_ERR_HANDLER (2); \ -+ } \ - /* It's a surrogate character. At least the first word says \ - it is. */ \ - if (__builtin_expect (inptr + 4 > inend, 0)) \ diff --git a/glibc-valloc-assert.diff b/glibc-valloc-assert.diff deleted file mode 100644 index b884029..0000000 --- a/glibc-valloc-assert.diff +++ /dev/null @@ -1,32 +0,0 @@ -Index: glibc-2.11.1/malloc/malloc.c -=================================================================== ---- glibc-2.11.1.orig/malloc/malloc.c 2010-01-18 18:01:41.000000000 +0100 -+++ glibc-2.11.1/malloc/malloc.c 2010-02-23 13:47:59.000000000 +0100 -@@ -3933,9 +3933,10 @@ public_vALLOc(size_t bytes) - if(!p) { - /* Maybe the failure is due to running out of mmapped areas. */ - if(ar_ptr != &main_arena) { -- (void)mutex_lock(&main_arena.mutex); -- p = _int_memalign(&main_arena, pagesz, bytes); -- (void)mutex_unlock(&main_arena.mutex); -+ ar_ptr = &main_arena; -+ (void)mutex_lock(&ar_ptr->mutex); -+ p = _int_memalign(ar_ptr, pagesz, bytes); -+ (void)mutex_unlock(&ar_ptr->mutex); - } else { - #if USE_ARENAS - /* ... or sbrk() has failed and there is still a chance to mmap() */ -@@ -3978,9 +3979,10 @@ public_pVALLOc(size_t bytes) - if(!p) { - /* Maybe the failure is due to running out of mmapped areas. */ - if(ar_ptr != &main_arena) { -- (void)mutex_lock(&main_arena.mutex); -- p = _int_memalign(&main_arena, pagesz, rounded_bytes); -- (void)mutex_unlock(&main_arena.mutex); -+ ar_ptr = &main_arena; -+ (void)mutex_lock(&ar_ptr->mutex); -+ p = _int_memalign(ar_ptr, pagesz, rounded_bytes); -+ (void)mutex_unlock(&ar_ptr->mutex); - } else { - #if USE_ARENAS - /* ... or sbrk() has failed and there is still a chance to mmap() */ diff --git a/glibc.changes b/glibc.changes index 3788b50..91623b6 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Wed May 12 04:24:13 CEST 2010 - pbaudis@suse.cz + +- Upgrade to latest release/2.11/master - glibc-2.11.1-6d270188ef3f + - This contains considerable amount of bugfixes cherrypicked from + the master branch, slated to become glibc-2.11.2 soon with little + further changes + ------------------------------------------------------------------- Mon May 10 23:33:35 CEST 2010 - pbaudis@suse.cz diff --git a/glibc.spec b/glibc.spec index 46cb2fb..e9bc02a 100644 --- a/glibc.spec +++ b/glibc.spec @@ -68,7 +68,7 @@ Release: 1 Url: http://www.gnu.org/software/libc/libc.html PreReq: filesystem BuildRoot: %{_tmppath}/%{name}-%{version}-build -Source: glibc-%{version}-11c19d374bd4.tar.bz2 +Source: glibc-%{version}-6d270188ef3f.tar.bz2 Source2: glibc-ports-2.10.1-2b2b217196.tar.bz2 Source3: noversion.tar.bz2 Source4: manpages.tar.bz2 @@ -132,15 +132,8 @@ Patch47: libm-x86-64-exceptions.diff Patch48: glibc-uio-cell.diff Patch50: glibc-nameserver-localhost.diff Patch54: glibc-statfs64-ia64.diff -Patch55: glibc-memchr-ia64.diff -Patch56: glibc-utf-s390.diff -Patch57: glibc-valloc-assert.diff -Patch58: glibc-dl-x86-64-pc32.diff -Patch59: glibc-sap-captialsharps.diff Patch60: ld-prelink-unique.diff Patch61: glibc-ppc64-vdso-time.diff -Patch62: nptl-ppc64-vdso-timedwait.diff -Patch63: glibc-getnprocs.diff Patch64: glibc-gai-private4.diff Patch65: glibc-resolv-mdnshint.diff Patch500: ARM_glibc-2.10.1-local-eabi-wchar.diff @@ -358,15 +351,8 @@ rm nscd/s-stamp %patch48 -p1 %patch50 -p1 %patch54 -%patch55 -p1 -%patch56 -p1 -%patch57 -p1 -%patch58 -%patch59 %patch60 -p1 %patch61 -p1 -%patch62 -p1 -%patch63 -p1 %patch64 %patch65 -p1 %ifarch %arm armv5tel armv7l diff --git a/nptl-ppc64-vdso-timedwait.diff b/nptl-ppc64-vdso-timedwait.diff deleted file mode 100644 index b41cb03..0000000 --- a/nptl-ppc64-vdso-timedwait.diff +++ /dev/null @@ -1,29 +0,0 @@ -Index: glibc-2.11.1/nptl/pthread_cond_timedwait.c -=================================================================== ---- glibc-2.11.1.old/nptl/pthread_cond_timedwait.c -+++ glibc-2.11.1/nptl/pthread_cond_timedwait.c -@@ -27,6 +27,15 @@ - - #include - -+#ifndef HAVE_CLOCK_GETTIME_VSYSCALL -+# undef INTERNAL_VSYSCALL -+# define INTERNAL_VSYSCALL INTERNAL_SYSCALL -+# undef INLINE_VSYSCALL -+# define INLINE_VSYSCALL INLINE_SYSCALL -+#else -+# include -+#endif -+ - - /* Cleanup handler, defined in pthread_cond_wait.c. */ - extern void __condvar_cleanup (void *arg) -@@ -102,7 +111,7 @@ __pthread_cond_timedwait (cond, mutex, a - #ifdef __NR_clock_gettime - INTERNAL_SYSCALL_DECL (err); - int ret; -- ret = INTERNAL_SYSCALL (clock_gettime, err, 2, -+ ret = INTERNAL_VSYSCALL (clock_gettime, err, 2, - (cond->__data.__nwaiters - & ((1 << COND_NWAITERS_SHIFT) - 1)), - &rt); From 96bf6d5d16317f509062bed53a9332918d7d4be64a59609c01b50465f494f55c Mon Sep 17 00:00:00 2001 From: Petr Baudis Date: Thu, 20 May 2010 00:21:41 +0000 Subject: [PATCH 13/23] OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=30 --- glibc-2.11.1-6d270188ef3f.tar.bz2 | 3 --- glibc-2.11.2-f2020c64596a.tar.bz2 | 3 +++ glibc.changes | 6 ++++++ glibc.spec | 4 ++-- 4 files changed, 11 insertions(+), 5 deletions(-) delete mode 100644 glibc-2.11.1-6d270188ef3f.tar.bz2 create mode 100644 glibc-2.11.2-f2020c64596a.tar.bz2 diff --git a/glibc-2.11.1-6d270188ef3f.tar.bz2 b/glibc-2.11.1-6d270188ef3f.tar.bz2 deleted file mode 100644 index c913963..0000000 --- a/glibc-2.11.1-6d270188ef3f.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b45efdd3bc1fddfad38ad83c586ae9608df85a65bacd9bb8c2c055e1b68139b7 -size 15668947 diff --git a/glibc-2.11.2-f2020c64596a.tar.bz2 b/glibc-2.11.2-f2020c64596a.tar.bz2 new file mode 100644 index 0000000..fbea893 --- /dev/null +++ b/glibc-2.11.2-f2020c64596a.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:badb11c8eef452ee7acf9842fb71daf46c96426dd8ce49f71b2c364c6e600082 +size 15675556 diff --git a/glibc.changes b/glibc.changes index 91623b6..2fc6678 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Thu May 20 02:19:28 CEST 2010 - pbaudis@suse.cz + +- Upgrade to glibc-2.11.2 (f2020c64596a) + - Virtually no changes since previous revision, just official tag + ------------------------------------------------------------------- Wed May 12 04:24:13 CEST 2010 - pbaudis@suse.cz diff --git a/glibc.spec b/glibc.spec index e9bc02a..5aceeca 100644 --- a/glibc.spec +++ b/glibc.spec @@ -63,12 +63,12 @@ Obsoletes: glibc-32bit %endif Provides: rtld(GNU_HASH) AutoReqProv: on -Version: 2.11.1 +Version: 2.11.2 Release: 1 Url: http://www.gnu.org/software/libc/libc.html PreReq: filesystem BuildRoot: %{_tmppath}/%{name}-%{version}-build -Source: glibc-%{version}-6d270188ef3f.tar.bz2 +Source: glibc-%{version}-f2020c64596a.tar.bz2 Source2: glibc-ports-2.10.1-2b2b217196.tar.bz2 Source3: noversion.tar.bz2 Source4: manpages.tar.bz2 From 1a086b0fc67ca57e0b994e3e7a74c3a9626ebf6a068d375ecc6bf0e2700be8c8 Mon Sep 17 00:00:00 2001 From: Petr Baudis Date: Fri, 11 Jun 2010 14:32:35 +0000 Subject: [PATCH 14/23] OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=31 --- glibc-2.11.2-21580967038a.tar.bz2 | 3 +++ glibc-2.11.2-f2020c64596a.tar.bz2 | 3 --- glibc-ldconfigr-aux.diff | 37 +++++++++++++++++++++++++++++++ glibc.changes | 13 +++++++++++ glibc.spec | 4 +++- 5 files changed, 56 insertions(+), 4 deletions(-) create mode 100644 glibc-2.11.2-21580967038a.tar.bz2 delete mode 100644 glibc-2.11.2-f2020c64596a.tar.bz2 create mode 100644 glibc-ldconfigr-aux.diff diff --git a/glibc-2.11.2-21580967038a.tar.bz2 b/glibc-2.11.2-21580967038a.tar.bz2 new file mode 100644 index 0000000..02c7b67 --- /dev/null +++ b/glibc-2.11.2-21580967038a.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b0467d31d53dcb8e9920efa51c338e2ef1bb597ab7d2ed14b9a16103ffd2622 +size 15670351 diff --git a/glibc-2.11.2-f2020c64596a.tar.bz2 b/glibc-2.11.2-f2020c64596a.tar.bz2 deleted file mode 100644 index fbea893..0000000 --- a/glibc-2.11.2-f2020c64596a.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:badb11c8eef452ee7acf9842fb71daf46c96426dd8ce49f71b2c364c6e600082 -size 15675556 diff --git a/glibc-ldconfigr-aux.diff b/glibc-ldconfigr-aux.diff new file mode 100644 index 0000000..bcce030 --- /dev/null +++ b/glibc-ldconfigr-aux.diff @@ -0,0 +1,37 @@ +2010-05-31 Petr Baudis + + * elf/ldconfig.c: Allow aux_cache_file open()ing to fail silently + even in the chroot mode. + + +diff --git a/elf/ldconfig.c b/elf/ldconfig.c +index 6e71b09..6ba8e07 100644 +--- a/elf/ldconfig.c ++++ b/elf/ldconfig.c +@@ -1359,14 +1359,9 @@ main (int argc, char **argv) + + const char *aux_cache_file = _PATH_LDCONFIG_AUX_CACHE; + if (opt_chroot) +- { +- aux_cache_file = chroot_canon (opt_chroot, aux_cache_file); +- if (aux_cache_file == NULL) +- error (EXIT_FAILURE, errno, _("Can't open cache file %s\n"), +- _PATH_LDCONFIG_AUX_CACHE); +- } ++ aux_cache_file = chroot_canon (opt_chroot, aux_cache_file); + +- if (! opt_ignore_aux_cache) ++ if (! opt_ignore_aux_cache && aux_cache_file) + load_aux_cache (aux_cache_file); + else + init_aux_cache (); +@@ -1376,7 +1371,8 @@ main (int argc, char **argv) + if (opt_build_cache) + { + save_cache (cache_file); +- save_aux_cache (aux_cache_file); ++ if (aux_cache_file) ++ save_aux_cache (aux_cache_file); + } + + return 0; diff --git a/glibc.changes b/glibc.changes index 2fc6678..2f00e0c 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,16 @@ +------------------------------------------------------------------- +Fri Jun 11 15:41:07 CEST 2010 - pbaudis@suse.cz + +- Upgrade to latest release/2.11/master - glibc-2.11.2-21580967038a + - Fix buggy x86 CPU family and model check + - Fix sunrpc error condition handling + - Fix crash on unresolved weak symbol reference + +------------------------------------------------------------------- +Tue Jun 1 03:38:28 CEST 2010 - pbaudis@suse.cz + +- Fix ldconfig -r failing on aux cache [bnc#609345] + ------------------------------------------------------------------- Thu May 20 02:19:28 CEST 2010 - pbaudis@suse.cz diff --git a/glibc.spec b/glibc.spec index 5aceeca..a87c4c9 100644 --- a/glibc.spec +++ b/glibc.spec @@ -68,7 +68,7 @@ Release: 1 Url: http://www.gnu.org/software/libc/libc.html PreReq: filesystem BuildRoot: %{_tmppath}/%{name}-%{version}-build -Source: glibc-%{version}-f2020c64596a.tar.bz2 +Source: glibc-%{version}-21580967038a.tar.bz2 Source2: glibc-ports-2.10.1-2b2b217196.tar.bz2 Source3: noversion.tar.bz2 Source4: manpages.tar.bz2 @@ -136,6 +136,7 @@ Patch60: ld-prelink-unique.diff Patch61: glibc-ppc64-vdso-time.diff Patch64: glibc-gai-private4.diff Patch65: glibc-resolv-mdnshint.diff +Patch66: glibc-ldconfigr-aux.diff Patch500: ARM_glibc-2.10.1-local-eabi-wchar.diff Patch501: ARM_glibc-2.10.1-local-hwcap-updates.diff Patch502: ARM_glibc-2.10.1-local-lowlevellock.diff @@ -355,6 +356,7 @@ rm nscd/s-stamp %patch61 -p1 %patch64 %patch65 -p1 +%patch66 -p1 %ifarch %arm armv5tel armv7l %patch500 %patch501 From cf9ef49562b0f251f5906d0e6387c5512496def4cbed1e5f6c7f3945081d44ba Mon Sep 17 00:00:00 2001 From: Stephan Kulow Date: Mon, 28 Jun 2010 21:29:28 +0000 Subject: [PATCH 15/23] Accepting request 42089 from home:jengelh:smp Copy from home:jengelh:smp/glibc via accept of submit request 42089 revision 2. Request was accepted with message: Reviewed ok OBS-URL: https://build.opensuse.org/request/show/42089 OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=32 --- glibc.changes | 5 +++++ glibc.spec | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/glibc.changes b/glibc.changes index 2f00e0c..16e8151 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Sat Jun 26 10:26:17 UTC 2010 - jengelh@medozas.de + +- Use %_smp_mflags + ------------------------------------------------------------------- Fri Jun 11 15:41:07 CEST 2010 - pbaudis@suse.cz diff --git a/glibc.spec b/glibc.spec index a87c4c9..5cd719f 100644 --- a/glibc.spec +++ b/glibc.spec @@ -409,7 +409,7 @@ BuildFlags="$(echo $BuildFlags | sed -e 's#-fstack-protector##' -e 's#-ffortify= BuildCC="gcc" BuildCCplus="g++" add_ons=",libidn" -PARALLEL="%{?jobs:-j%jobs}" +PARALLEL="%{?_smp_mflags}" # #now overwrite for some architectures # From 7cbd74fda261d5fcde65aa726eaf038fecf3544f276179ea911d62bca7fc9419 Mon Sep 17 00:00:00 2001 From: Dirk Mueller Date: Sun, 4 Jul 2010 13:55:39 +0000 Subject: [PATCH 16/23] Accepting request 42388 from home:jengelh:sparc Copy from home:jengelh:sparc/glibc via accept of submit request 42388 revision 3. Request was accepted with message: Reviewed ok OBS-URL: https://build.opensuse.org/request/show/42388 OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=33 --- glibc-sparc64-fxstat.diff | 7 +++++++ glibc.changes | 5 +++++ glibc.spec | 3 +++ 3 files changed, 15 insertions(+) create mode 100644 glibc-sparc64-fxstat.diff diff --git a/glibc-sparc64-fxstat.diff b/glibc-sparc64-fxstat.diff new file mode 100644 index 0000000..fa06e5a --- /dev/null +++ b/glibc-sparc64-fxstat.diff @@ -0,0 +1,7 @@ +Index: glibc-2.10.1/sysdeps/unix/sysv/linux/sparc/sparc64/fxstat.c +=================================================================== +--- glibc-2.10.1.orig/sysdeps/unix/sysv/linux/sparc/sparc64/fxstat.c ++++ glibc-2.10.1/sysdeps/unix/sysv/linux/sparc/sparc64/fxstat.c +@@ -1 +1 @@ +-#include "../../fxstat.c" ++#include "../../i386/fxstat.c" diff --git a/glibc.changes b/glibc.changes index 16e8151..805cb96 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Thu Jul 1 19:52:56 UTC 2010 - jengelh@medozas.de + +- SPARC: restore fxstat functionality in sparc64 mode + ------------------------------------------------------------------- Sat Jun 26 10:26:17 UTC 2010 - jengelh@medozas.de diff --git a/glibc.spec b/glibc.spec index 5cd719f..155e90d 100644 --- a/glibc.spec +++ b/glibc.spec @@ -141,6 +141,8 @@ Patch500: ARM_glibc-2.10.1-local-eabi-wchar.diff Patch501: ARM_glibc-2.10.1-local-hwcap-updates.diff Patch502: ARM_glibc-2.10.1-local-lowlevellock.diff Patch503: ARM_glibc-2.10.1-local-no-hwcap.diff +# http://sources.redhat.com/bugzilla/show_bug.cgi?id=11155 +Patch600: glibc-sparc64-fxstat.diff %description The GNU C Library provides the most important standard libraries used @@ -363,6 +365,7 @@ rm nscd/s-stamp %patch502 %patch503 %endif +%patch600 -p1 # # Inconsistency detected by ld.so: dl-close.c: 719: _dl_close: Assertion `map->l_init_called' failed! # From a0d24f0eb94fd7cc353eadb3a0e5ff6657dc5804d997fe278517b9409bb99f95 Mon Sep 17 00:00:00 2001 From: Petr Baudis Date: Wed, 7 Jul 2010 03:26:30 +0000 Subject: [PATCH 17/23] OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=34 --- glibc-nis-initgroups.diff | 39 +++++++++++++++++++++++++++++++++++++++ glibc.changes | 6 ++++++ glibc.spec | 2 ++ 3 files changed, 47 insertions(+) create mode 100644 glibc-nis-initgroups.diff diff --git a/glibc-nis-initgroups.diff b/glibc-nis-initgroups.diff new file mode 100644 index 0000000..59ac9c5 --- /dev/null +++ b/glibc-nis-initgroups.diff @@ -0,0 +1,39 @@ +2010-05-31 Petr Baudis + + * nis/nss_compat/compat-initgroups.c (internal_getgrent_r): Fix + initialization of skip_initgroups_dyn. + +diff --git a/nis/nss_compat/compat-initgroups.c b/nis/nss_compat/compat-initgroups.c +index 07a3b92..de8d95c 100644 +--- a/nis/nss_compat/compat-initgroups.c ++++ b/nis/nss_compat/compat-initgroups.c +@@ -474,18 +474,21 @@ internal_getgrent_r (ent_t *ent, char *buffer, size_t buflen, const char *user, + /* If the selected module does not support getgrent_r or + initgroups_dyn, abort. We cannot find the needed group + entries. */ +- if (nss_getgrent_r == NULL && nss_initgroups_dyn == NULL) ++ if (nss_initgroups_dyn == NULL || nss_getgrgid_r == NULL) ++ { ++ if (nss_setgrent != NULL) ++ { ++ nss_setgrent (1); ++ ent->need_endgrent = true; ++ } ++ ent->skip_initgroups_dyn = true; ++ } ++ ++ if (ent->skip_initgroups_dyn && nss_getgrent_r == NULL) + return NSS_STATUS_UNAVAIL; + + ent->files = false; + +- if (nss_initgroups_dyn == NULL && nss_setgrent != NULL) +- { +- nss_setgrent (1); +- ent->need_endgrent = true; +- } +- ent->skip_initgroups_dyn = true; +- + return getgrent_next_nss (ent, buffer, buflen, user, group, + start, size, groupsp, limit, errnop); + } diff --git a/glibc.changes b/glibc.changes index 805cb96..89c01c0 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Wed Jul 7 04:12:05 CEST 2010 - pbaudis@suse.cz + +- Fix NIS-compat initgroups routine to work reliably over multiple + invocations [bnc#607064] + ------------------------------------------------------------------- Thu Jul 1 19:52:56 UTC 2010 - jengelh@medozas.de diff --git a/glibc.spec b/glibc.spec index 155e90d..859668b 100644 --- a/glibc.spec +++ b/glibc.spec @@ -137,6 +137,7 @@ Patch61: glibc-ppc64-vdso-time.diff Patch64: glibc-gai-private4.diff Patch65: glibc-resolv-mdnshint.diff Patch66: glibc-ldconfigr-aux.diff +Patch67: glibc-nis-initgroups.diff Patch500: ARM_glibc-2.10.1-local-eabi-wchar.diff Patch501: ARM_glibc-2.10.1-local-hwcap-updates.diff Patch502: ARM_glibc-2.10.1-local-lowlevellock.diff @@ -359,6 +360,7 @@ rm nscd/s-stamp %patch64 %patch65 -p1 %patch66 -p1 +%patch67 -p1 %ifarch %arm armv5tel armv7l %patch500 %patch501 From 3ec5f78982589b3738b698719fdaac4c01a87b7d433afdf8b02a96defb6427ca Mon Sep 17 00:00:00 2001 From: Stephan Kulow Date: Tue, 20 Jul 2010 07:50:26 +0000 Subject: [PATCH 18/23] prepare_spec OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=37 --- glibc.spec | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/glibc.spec b/glibc.spec index 859668b..e3df2c1 100644 --- a/glibc.spec +++ b/glibc.spec @@ -1,5 +1,5 @@ # -# spec file for package glibc (Version 2.11.1) +# spec file for package glibc (Version 2.11.2) # # Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany. # @@ -49,7 +49,7 @@ BuildRequires: libselinux-devel %define powerpc_optimize_cpu_power7 0 %define powerpc_optimize_cpu_cell 0 %endif # ppc, ppc64 -License: BSD3c(or similar) ; GPLv2+ ; LGPLv2.1+ +License: GPLv2+ Summary: Standard Shared Libraries (from the GNU C Library) Group: System/Libraries Obsoletes: ngpt <= 2.2.2 ngpt-devel <= 2.2.2 @@ -143,7 +143,7 @@ Patch501: ARM_glibc-2.10.1-local-hwcap-updates.diff Patch502: ARM_glibc-2.10.1-local-lowlevellock.diff Patch503: ARM_glibc-2.10.1-local-no-hwcap.diff # http://sources.redhat.com/bugzilla/show_bug.cgi?id=11155 -Patch600: glibc-sparc64-fxstat.diff +Patch600: glibc-sparc64-fxstat.diff %description The GNU C Library provides the most important standard libraries used @@ -388,12 +388,12 @@ rm nscd/s-stamp 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 @@ -555,7 +555,6 @@ $BuildCC -static -Os -g $RPM_SOURCE_DIR/glibc_post_upgrade.c -o glibc_post_upgra %endif '-DLIBDIR="/%{_lib}"' '-DGCONV_MODULES_DIR="%{_prefix}/%{_lib}/gconv"' - ####################################################################### ### ### CHECK @@ -578,7 +577,6 @@ $BuildCC -static -Os -g $RPM_SOURCE_DIR/glibc_post_upgrade.c -o glibc_post_upgra %endif make -C cc-base check-abi || echo check-abi failed - ####################################################################### ### ### INSTALL @@ -671,7 +669,6 @@ cp -av bits/stdio-lock.h $RPM_BUILD_ROOT%{_prefix}/include/bits/stdio-lock.h ln -sf ../%{_lib}/ld-%{version}.so $RPM_BUILD_ROOT/lib/ld64.so.1 %endif - # Miscelanna: install -m 0700 glibc_post_upgrade $RPM_BUILD_ROOT%{_sbindir} @@ -692,7 +689,6 @@ cp -p manual/libc/*.html $RPM_BUILD_ROOT/usr/share/doc/glibc cd manpages; make install_root=$RPM_BUILD_ROOT install; cd .. - # nscd tools: cp nscd/nscd.conf $RPM_BUILD_ROOT/etc @@ -766,7 +762,6 @@ for o in $RPM_BUILD_ROOT/%{_libdir}/crt[1in].o $RPM_BUILD_ROOT/%{_libdir}/lib*_n objcopy -R ".comment.SUSE.OPTs" -R ".note.gnu.build-id" $o done - ####################################################################### ### ### ... @@ -804,7 +799,6 @@ done %insserv_cleanup exit 0 - ####################################################################### ### ### FILES @@ -812,6 +806,7 @@ exit 0 ####################################################################### # glibc + %files %defattr(-,root,root) %doc LICENSES From fdd54b6d45e38d959fa48ce4312bb6ff60c8408c3727ff71083ad04769fcb1fc Mon Sep 17 00:00:00 2001 From: Stephan Kulow Date: Tue, 20 Jul 2010 07:50:51 +0000 Subject: [PATCH 19/23] sync with O:F OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=38 --- glibc.spec | 2 +- ready | 0 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 ready diff --git a/glibc.spec b/glibc.spec index e3df2c1..a50ed77 100644 --- a/glibc.spec +++ b/glibc.spec @@ -64,7 +64,7 @@ Obsoletes: glibc-32bit Provides: rtld(GNU_HASH) AutoReqProv: on Version: 2.11.2 -Release: 1 +Release: 3 Url: http://www.gnu.org/software/libc/libc.html PreReq: filesystem BuildRoot: %{_tmppath}/%{name}-%{version}-build diff --git a/ready b/ready deleted file mode 100644 index 473a0f4..0000000 From eb260669dcaf0d331cf7862d1f2611b8ec03970eb9529a6a855e2aa6ab6c992f Mon Sep 17 00:00:00 2001 From: Petr Baudis Date: Sun, 12 Sep 2010 18:45:43 +0000 Subject: [PATCH 20/23] Accepting request 47921 from home:a_jaeger:branches:openSUSE:Factory reviewed ok. OBS-URL: https://build.opensuse.org/request/show/47921 OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=39 --- glibc-make-3.82.patch | 81 +++++++++++++++++++++++++++++++++++++++++++ glibc.changes | 5 +++ glibc.spec | 2 ++ 3 files changed, 88 insertions(+) create mode 100644 glibc-make-3.82.patch diff --git a/glibc-make-3.82.patch b/glibc-make-3.82.patch new file mode 100644 index 0000000..f8608ae --- /dev/null +++ b/glibc-make-3.82.patch @@ -0,0 +1,81 @@ +From: Andreas Schwab +To: libc-hacker at sourceware dot org +Subject: [PATCH] Work around shortest-stem feature in make 3.82+ + +make 3.82+ no longer selects pattern rules by order, but by shortest +stem, so we need to add more rules to make sure we still get the right +matches. + +Andreas. + +2010-09-09 Andreas Schwab + + * Makeconfig (sysd-rules-patterns): Add rtld-%:rtld-%. + (sysd-rules-targets): Remove duplicates. + * elf/rtld-Rules ($(objpfx)rtld-%.os): Add pattern rules with + rtld-%.$o dependency. +--- + Makeconfig | 6 +++--- + elf/rtld-Rules | 9 +++++++++ + 2 files changed, 12 insertions(+), 3 deletions(-) + +diff --git a/Makeconfig b/Makeconfig +index 9778998..807c1d1 100644 +--- a/Makeconfig ++++ b/Makeconfig +@@ -966,7 +966,7 @@ endif + # emitted into sysd-rules. A sysdeps Makeconfig fragment can + # add its own special object file prefix to this list with e.g. foo-%:% + # to have foo-*.? compiled from *.? using $(foo-CPPFLAGS). +-sysd-rules-patterns := %:% rtld-%:% m_%:s_% ++sysd-rules-patterns := %:% rtld-%:rtld-% rtld-%:% m_%:s_% + + # Let sysdeps/ subdirs contain a Makeconfig fragment for us to include here. + sysdep-makeconfigs := $(wildcard $(+sysdep_dirs:=/Makeconfig)) +@@ -975,8 +975,8 @@ include $(sysdep-makeconfigs) + endif + + # Compute just the target patterns. Makeconfig has set sysd-rules-patterns. +-sysd-rules-targets := $(foreach p,$(sysd-rules-patterns),\ +- $(firstword $(subst :, ,$p))) ++sysd-rules-targets := $(sort $(foreach p,$(sysd-rules-patterns),\ ++ $(firstword $(subst :, ,$p)))) + + endif # Makeconfig not yet included + +diff --git a/elf/rtld-Rules b/elf/rtld-Rules +index 9f31a56..fc225f2 100644 +--- a/elf/rtld-Rules ++++ b/elf/rtld-Rules +@@ -93,6 +93,12 @@ else + # These are the basic compilation rules corresponding to the Makerules ones. + # The sysd-rules generated makefile already defines pattern rules for rtld-% + # targets built from sysdeps source files. ++$(objpfx)rtld-%.os: rtld-%.S $(before-compile) ++ $(compile-command.S) $(rtld-CPPFLAGS) ++$(objpfx)rtld-%.os: rtld-%.s $(before-compile) ++ $(compile-command.s) $(rtld-CPPFLAGS) ++$(objpfx)rtld-%.os: rtld-%.c $(before-compile) ++ $(compile-command.c) $(rtld-CPPFLAGS) + $(objpfx)rtld-%.os: %.S $(before-compile) + $(compile-command.S) $(rtld-CPPFLAGS) + $(objpfx)rtld-%.os: %.s $(before-compile) +@@ -101,6 +107,9 @@ $(objpfx)rtld-%.os: %.c $(before-compile) + $(compile-command.c) $(rtld-CPPFLAGS) + + # The rules for generated source files. ++$(objpfx)rtld-%.os: $(objpfx)rtld-%.S $(before-compile); $(compile-command.S) ++$(objpfx)rtld-%.os: $(objpfx)rtld-%.s $(before-compile); $(compile-command.s) ++$(objpfx)rtld-%.os: $(objpfx)rtld-%.c $(before-compile); $(compile-command.c) + $(objpfx)rtld-%.os: $(objpfx)%.S $(before-compile); $(compile-command.S) + $(objpfx)rtld-%.os: $(objpfx)%.s $(before-compile); $(compile-command.s) + $(objpfx)rtld-%.os: $(objpfx)%.c $(before-compile); $(compile-command.c) +-- +1.7.2.2 + + +-- +Andreas Schwab, schwab@redhat.com +GPG Key fingerprint = D4E8 DBE3 3813 BB5D FA84 5EC7 45C6 250E 6F00 984E +"And now for something completely different." + diff --git a/glibc.changes b/glibc.changes index 89c01c0..e9ac4ce 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Sun Sep 12 08:00:57 UTC 2010 - aj@suse.de + +- Work around shortest-stem feature in make 3.82+ + ------------------------------------------------------------------- Wed Jul 7 04:12:05 CEST 2010 - pbaudis@suse.cz diff --git a/glibc.spec b/glibc.spec index a50ed77..9919b7a 100644 --- a/glibc.spec +++ b/glibc.spec @@ -138,6 +138,7 @@ Patch64: glibc-gai-private4.diff Patch65: glibc-resolv-mdnshint.diff Patch66: glibc-ldconfigr-aux.diff Patch67: glibc-nis-initgroups.diff +Patch68: glibc-make-3.82.patch Patch500: ARM_glibc-2.10.1-local-eabi-wchar.diff Patch501: ARM_glibc-2.10.1-local-hwcap-updates.diff Patch502: ARM_glibc-2.10.1-local-lowlevellock.diff @@ -361,6 +362,7 @@ rm nscd/s-stamp %patch65 -p1 %patch66 -p1 %patch67 -p1 +%patch68 -p1 %ifarch %arm armv5tel armv7l %patch500 %patch501 From 7c62cff6e9799b3570a92f419ab7f4ddc75e47117c39c49060c616dbcacc7007 Mon Sep 17 00:00:00 2001 From: Petr Baudis Date: Mon, 13 Sep 2010 15:01:17 +0000 Subject: [PATCH 21/23] Accepting request 48018 from home:a_jaeger:branches:openSUSE:Factory reviewed ok. OBS-URL: https://build.opensuse.org/request/show/48018 OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=40 --- glibc-make-3.82.patch | 30 ++++++++++++++++++++---------- glibc.changes | 8 +++++++- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/glibc-make-3.82.patch b/glibc-make-3.82.patch index f8608ae..702c044 100644 --- a/glibc-make-3.82.patch +++ b/glibc-make-3.82.patch @@ -14,10 +14,10 @@ Andreas. (sysd-rules-targets): Remove duplicates. * elf/rtld-Rules ($(objpfx)rtld-%.os): Add pattern rules with rtld-%.$o dependency. ---- - Makeconfig | 6 +++--- - elf/rtld-Rules | 9 +++++++++ - 2 files changed, 12 insertions(+), 3 deletions(-) + +2010-09-06 Andreas Schwab + + * manual/Makefile: Don't mix pattern rules with normal rules. diff --git a/Makeconfig b/Makeconfig index 9778998..807c1d1 100644 @@ -73,9 +73,19 @@ index 9f31a56..fc225f2 100644 -- 1.7.2.2 - --- -Andreas Schwab, schwab@redhat.com -GPG Key fingerprint = D4E8 DBE3 3813 BB5D FA84 5EC7 45C6 250E 6F00 984E -"And now for something completely different." - +diff --git a/manual/Makefile b/manual/Makefile +index c5866eb..b1f5fa7 100644 +--- a/manual/Makefile ++++ b/manual/Makefile +@@ -232,7 +232,10 @@ ifdef objpfx + .PHONY: stubs + stubs: $(objpfx)stubs + endif +-$(objpfx)stubs ../po/manual.pot $(objpfx)stamp%: ++$(objpfx)stubs ../po/manual.pot: ++ $(make-target-directory) ++ touch $@ ++$(objpfx)stamp%: + $(make-target-directory) + touch $@ + diff --git a/glibc.changes b/glibc.changes index e9ac4ce..d22b858 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,7 +1,13 @@ +------------------------------------------------------------------- +Mon Sep 13 14:36:26 UTC 2010 - aj@suse.de + +- Fix build in manual with make 3.82. + ------------------------------------------------------------------- Sun Sep 12 08:00:57 UTC 2010 - aj@suse.de -- Work around shortest-stem feature in make 3.82+ +- Work around shortest-stem feature in make 3.82+ (patch + glibc-make-3.82.patch) ------------------------------------------------------------------- Wed Jul 7 04:12:05 CEST 2010 - pbaudis@suse.cz From e8fd5cf6b682ddc72b20abc0c78f10827f1415c9d7bad971ae76a97b1ac926de Mon Sep 17 00:00:00 2001 From: OBS User autobuild Date: Tue, 21 Sep 2010 11:02:14 +0000 Subject: [PATCH 22/23] Accepting request 48637 from Base:System checked in (request 48637) OBS-URL: https://build.opensuse.org/request/show/48637 OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=41 --- glibc-make-3.82.patch | 91 ------------------------------------------- glibc.changes | 11 ------ glibc.spec | 2 - 3 files changed, 104 deletions(-) delete mode 100644 glibc-make-3.82.patch diff --git a/glibc-make-3.82.patch b/glibc-make-3.82.patch deleted file mode 100644 index 702c044..0000000 --- a/glibc-make-3.82.patch +++ /dev/null @@ -1,91 +0,0 @@ -From: Andreas Schwab -To: libc-hacker at sourceware dot org -Subject: [PATCH] Work around shortest-stem feature in make 3.82+ - -make 3.82+ no longer selects pattern rules by order, but by shortest -stem, so we need to add more rules to make sure we still get the right -matches. - -Andreas. - -2010-09-09 Andreas Schwab - - * Makeconfig (sysd-rules-patterns): Add rtld-%:rtld-%. - (sysd-rules-targets): Remove duplicates. - * elf/rtld-Rules ($(objpfx)rtld-%.os): Add pattern rules with - rtld-%.$o dependency. - -2010-09-06 Andreas Schwab - - * manual/Makefile: Don't mix pattern rules with normal rules. - -diff --git a/Makeconfig b/Makeconfig -index 9778998..807c1d1 100644 ---- a/Makeconfig -+++ b/Makeconfig -@@ -966,7 +966,7 @@ endif - # emitted into sysd-rules. A sysdeps Makeconfig fragment can - # add its own special object file prefix to this list with e.g. foo-%:% - # to have foo-*.? compiled from *.? using $(foo-CPPFLAGS). --sysd-rules-patterns := %:% rtld-%:% m_%:s_% -+sysd-rules-patterns := %:% rtld-%:rtld-% rtld-%:% m_%:s_% - - # Let sysdeps/ subdirs contain a Makeconfig fragment for us to include here. - sysdep-makeconfigs := $(wildcard $(+sysdep_dirs:=/Makeconfig)) -@@ -975,8 +975,8 @@ include $(sysdep-makeconfigs) - endif - - # Compute just the target patterns. Makeconfig has set sysd-rules-patterns. --sysd-rules-targets := $(foreach p,$(sysd-rules-patterns),\ -- $(firstword $(subst :, ,$p))) -+sysd-rules-targets := $(sort $(foreach p,$(sysd-rules-patterns),\ -+ $(firstword $(subst :, ,$p)))) - - endif # Makeconfig not yet included - -diff --git a/elf/rtld-Rules b/elf/rtld-Rules -index 9f31a56..fc225f2 100644 ---- a/elf/rtld-Rules -+++ b/elf/rtld-Rules -@@ -93,6 +93,12 @@ else - # These are the basic compilation rules corresponding to the Makerules ones. - # The sysd-rules generated makefile already defines pattern rules for rtld-% - # targets built from sysdeps source files. -+$(objpfx)rtld-%.os: rtld-%.S $(before-compile) -+ $(compile-command.S) $(rtld-CPPFLAGS) -+$(objpfx)rtld-%.os: rtld-%.s $(before-compile) -+ $(compile-command.s) $(rtld-CPPFLAGS) -+$(objpfx)rtld-%.os: rtld-%.c $(before-compile) -+ $(compile-command.c) $(rtld-CPPFLAGS) - $(objpfx)rtld-%.os: %.S $(before-compile) - $(compile-command.S) $(rtld-CPPFLAGS) - $(objpfx)rtld-%.os: %.s $(before-compile) -@@ -101,6 +107,9 @@ $(objpfx)rtld-%.os: %.c $(before-compile) - $(compile-command.c) $(rtld-CPPFLAGS) - - # The rules for generated source files. -+$(objpfx)rtld-%.os: $(objpfx)rtld-%.S $(before-compile); $(compile-command.S) -+$(objpfx)rtld-%.os: $(objpfx)rtld-%.s $(before-compile); $(compile-command.s) -+$(objpfx)rtld-%.os: $(objpfx)rtld-%.c $(before-compile); $(compile-command.c) - $(objpfx)rtld-%.os: $(objpfx)%.S $(before-compile); $(compile-command.S) - $(objpfx)rtld-%.os: $(objpfx)%.s $(before-compile); $(compile-command.s) - $(objpfx)rtld-%.os: $(objpfx)%.c $(before-compile); $(compile-command.c) --- -1.7.2.2 - -diff --git a/manual/Makefile b/manual/Makefile -index c5866eb..b1f5fa7 100644 ---- a/manual/Makefile -+++ b/manual/Makefile -@@ -232,7 +232,10 @@ ifdef objpfx - .PHONY: stubs - stubs: $(objpfx)stubs - endif --$(objpfx)stubs ../po/manual.pot $(objpfx)stamp%: -+$(objpfx)stubs ../po/manual.pot: -+ $(make-target-directory) -+ touch $@ -+$(objpfx)stamp%: - $(make-target-directory) - touch $@ - diff --git a/glibc.changes b/glibc.changes index d22b858..89c01c0 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,14 +1,3 @@ -------------------------------------------------------------------- -Mon Sep 13 14:36:26 UTC 2010 - aj@suse.de - -- Fix build in manual with make 3.82. - -------------------------------------------------------------------- -Sun Sep 12 08:00:57 UTC 2010 - aj@suse.de - -- Work around shortest-stem feature in make 3.82+ (patch - glibc-make-3.82.patch) - ------------------------------------------------------------------- Wed Jul 7 04:12:05 CEST 2010 - pbaudis@suse.cz diff --git a/glibc.spec b/glibc.spec index 9919b7a..a50ed77 100644 --- a/glibc.spec +++ b/glibc.spec @@ -138,7 +138,6 @@ Patch64: glibc-gai-private4.diff Patch65: glibc-resolv-mdnshint.diff Patch66: glibc-ldconfigr-aux.diff Patch67: glibc-nis-initgroups.diff -Patch68: glibc-make-3.82.patch Patch500: ARM_glibc-2.10.1-local-eabi-wchar.diff Patch501: ARM_glibc-2.10.1-local-hwcap-updates.diff Patch502: ARM_glibc-2.10.1-local-lowlevellock.diff @@ -362,7 +361,6 @@ rm nscd/s-stamp %patch65 -p1 %patch66 -p1 %patch67 -p1 -%patch68 -p1 %ifarch %arm armv5tel armv7l %patch500 %patch501 From c944b8437af4bb683ee28d99a64f48dd850c0a4e8522db7090afc3e5bb646675 Mon Sep 17 00:00:00 2001 From: Petr Baudis Date: Mon, 1 Nov 2010 22:13:24 +0000 Subject: [PATCH 23/23] - Fix missing hconf setup in nscd - this meant `multi on` in /etc/host.conf was ignored when nscd was used, breaking e.g. resolving of multi-AF records in /etc/hosts [bnc#572188] - Fix two LD_AUDIT security vulnerabilities: spurious $ORIGIN expansion and missing setuid library check when running as setuid [bnc#646960] OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=42 --- glibc-2.11.3-audit.diff | 274 ++++++++++++++++++++++++++++++++++++++++ glibc-make-3.82.patch | 91 +++++++++++++ glibc-nscd-hconf.diff | 35 +++++ glibc.changes | 20 +++ glibc.spec | 15 ++- ready | 0 6 files changed, 433 insertions(+), 2 deletions(-) create mode 100644 glibc-2.11.3-audit.diff create mode 100644 glibc-make-3.82.patch create mode 100644 glibc-nscd-hconf.diff create mode 100644 ready diff --git a/glibc-2.11.3-audit.diff b/glibc-2.11.3-audit.diff new file mode 100644 index 0000000..ccb3bb9 --- /dev/null +++ b/glibc-2.11.3-audit.diff @@ -0,0 +1,274 @@ +commit 22cd1c9bcf57c5829d65b6da825f7a459d40c9eb +Author: Andreas Schwab +Date: Sun Oct 24 20:40:14 2010 -0400 + + Don't expand DST twice in dl_open + +2010-10-18 Andreas Schwab + + * elf/dl-open.c (dl_open_worker): Don't expand DST here, let + _dl_map_object do it. + +diff --git a/elf/dl-open.c b/elf/dl-open.c +index 754a263..c394b3f 100644 +--- a/elf/dl-open.c ++++ b/elf/dl-open.c +@@ -221,35 +221,6 @@ dl_open_worker (void *a) + + assert (_dl_debug_initialize (0, args->nsid)->r_state == RT_CONSISTENT); + +- /* Maybe we have to expand a DST. */ +- if (__builtin_expect (dst != NULL, 0)) +- { +- size_t len = strlen (file); +- +- /* Determine how much space we need. We have to allocate the +- memory locally. */ +- size_t required = DL_DST_REQUIRED (call_map, file, len, +- _dl_dst_count (dst, 0)); +- +- /* Get space for the new file name. */ +- char *new_file = (char *) alloca (required + 1); +- +- /* Generate the new file name. */ +- _dl_dst_substitute (call_map, file, new_file, 0); +- +- /* If the substitution failed don't try to load. */ +- if (*new_file == '\0') +- _dl_signal_error (0, "dlopen", NULL, +- N_("empty dynamic string token substitution")); +- +- /* Now we have a new file name. */ +- file = new_file; +- +- /* It does not matter whether call_map is set even if we +- computed it only because of the DST. Since the path contains +- a slash the value is not used. See dl-load.c. */ +- } +- + /* Load the named object. */ + struct link_map *new; + args->map = new = _dl_map_object (call_map, file, 0, lt_loaded, 0, + + +commit 8e9f92e9d5d7737afdacf79b76d98c4c42980508 +Author: Andreas Schwab +Date: Sun Oct 24 21:43:15 2010 -0400 + + Require suid bit on audit objects in privileged programs + +2010-10-22 Andreas Schwab + + * include/dlfcn.h (__RTLD_SECURE): Define. + * elf/dl-load.c (_dl_map_object): Remove preloaded parameter. Use + mode & __RTLD_SECURE instead. + (open_path): Rename preloaded parameter to secure. + * sysdeps/generic/ldsodefs.h (_dl_map_object): Adjust declaration. + * elf/dl-open.c (dl_open_worker): Adjust call to _dl_map_object. + * elf/dl-deps.c (openaux): Likewise. + * elf/rtld.c (struct map_args): Remove is_preloaded. + (map_doit): Don't use it. + (dl_main): Likewise. + (do_preload): Use __RTLD_SECURE instead of is_preloaded. + (dlmopen_doit): Add __RTLD_SECURE to mode bits. + +diff --git a/elf/dl-deps.c b/elf/dl-deps.c +index a58de5c..a51fb6e 100644 +--- a/elf/dl-deps.c ++++ b/elf/dl-deps.c +@@ -62,7 +62,7 @@ openaux (void *a) + { + struct openaux_args *args = (struct openaux_args *) a; + +- args->aux = _dl_map_object (args->map, args->name, 0, ++ args->aux = _dl_map_object (args->map, args->name, + (args->map->l_type == lt_executable + ? lt_library : args->map->l_type), + args->trace_mode, args->open_mode, +diff --git a/elf/dl-load.c b/elf/dl-load.c +index a7162eb..aa8738f 100644 +--- a/elf/dl-load.c ++++ b/elf/dl-load.c +@@ -1812,7 +1812,7 @@ open_verify (const char *name, struct filebuf *fbp, struct link_map *loader, + if MAY_FREE_DIRS is true. */ + + static int +-open_path (const char *name, size_t namelen, int preloaded, ++open_path (const char *name, size_t namelen, int secure, + struct r_search_path_struct *sps, char **realname, + struct filebuf *fbp, struct link_map *loader, int whatcode, + bool *found_other_class) +@@ -1894,7 +1894,7 @@ open_path (const char *name, size_t namelen, int preloaded, + /* Remember whether we found any existing directory. */ + here_any |= this_dir->status[cnt] != nonexisting; + +- if (fd != -1 && __builtin_expect (preloaded, 0) ++ if (fd != -1 && __builtin_expect (secure, 0) + && INTUSE(__libc_enable_secure)) + { + /* This is an extra security effort to make sure nobody can +@@ -1963,7 +1963,7 @@ open_path (const char *name, size_t namelen, int preloaded, + + struct link_map * + internal_function +-_dl_map_object (struct link_map *loader, const char *name, int preloaded, ++_dl_map_object (struct link_map *loader, const char *name, + int type, int trace_mode, int mode, Lmid_t nsid) + { + int fd; +@@ -2067,7 +2067,8 @@ _dl_map_object (struct link_map *loader, const char *name, int preloaded, + for (l = loader; l; l = l->l_loader) + if (cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH")) + { +- fd = open_path (name, namelen, preloaded, &l->l_rpath_dirs, ++ fd = open_path (name, namelen, mode & __RTLD_SECURE, ++ &l->l_rpath_dirs, + &realname, &fb, loader, LA_SER_RUNPATH, + &found_other_class); + if (fd != -1) +@@ -2082,14 +2083,15 @@ _dl_map_object (struct link_map *loader, const char *name, int preloaded, + && main_map != NULL && main_map->l_type != lt_loaded + && cache_rpath (main_map, &main_map->l_rpath_dirs, DT_RPATH, + "RPATH")) +- fd = open_path (name, namelen, preloaded, &main_map->l_rpath_dirs, ++ fd = open_path (name, namelen, mode & __RTLD_SECURE, ++ &main_map->l_rpath_dirs, + &realname, &fb, loader ?: main_map, LA_SER_RUNPATH, + &found_other_class); + } + + /* Try the LD_LIBRARY_PATH environment variable. */ + if (fd == -1 && env_path_list.dirs != (void *) -1) +- fd = open_path (name, namelen, preloaded, &env_path_list, ++ fd = open_path (name, namelen, mode & __RTLD_SECURE, &env_path_list, + &realname, &fb, + loader ?: GL(dl_ns)[LM_ID_BASE]._ns_loaded, + LA_SER_LIBPATH, &found_other_class); +@@ -2098,12 +2100,12 @@ _dl_map_object (struct link_map *loader, const char *name, int preloaded, + if (fd == -1 && loader != NULL + && cache_rpath (loader, &loader->l_runpath_dirs, + DT_RUNPATH, "RUNPATH")) +- fd = open_path (name, namelen, preloaded, ++ fd = open_path (name, namelen, mode & __RTLD_SECURE, + &loader->l_runpath_dirs, &realname, &fb, loader, + LA_SER_RUNPATH, &found_other_class); + + if (fd == -1 +- && (__builtin_expect (! preloaded, 1) ++ && (__builtin_expect (! (mode & __RTLD_SECURE), 1) + || ! INTUSE(__libc_enable_secure))) + { + /* Check the list of libraries in the file /etc/ld.so.cache, +@@ -2169,7 +2171,7 @@ _dl_map_object (struct link_map *loader, const char *name, int preloaded, + && ((l = loader ?: GL(dl_ns)[nsid]._ns_loaded) == NULL + || __builtin_expect (!(l->l_flags_1 & DF_1_NODEFLIB), 1)) + && rtld_search_dirs.dirs != (void *) -1) +- fd = open_path (name, namelen, preloaded, &rtld_search_dirs, ++ fd = open_path (name, namelen, mode & __RTLD_SECURE, &rtld_search_dirs, + &realname, &fb, l, LA_SER_DEFAULT, &found_other_class); + + /* Add another newline when we are tracing the library loading. */ +diff --git a/elf/dl-open.c b/elf/dl-open.c +index c394b3f..cf8e8cc 100644 +--- a/elf/dl-open.c ++++ b/elf/dl-open.c +@@ -223,7 +223,7 @@ dl_open_worker (void *a) + + /* Load the named object. */ + struct link_map *new; +- args->map = new = _dl_map_object (call_map, file, 0, lt_loaded, 0, ++ args->map = new = _dl_map_object (call_map, file, lt_loaded, 0, + mode | __RTLD_CALLMAP, args->nsid); + + /* If the pointer returned is NULL this means the RTLD_NOLOAD flag is +diff --git a/elf/rtld.c b/elf/rtld.c +index 5ecc4fe..06b534a 100644 +--- a/elf/rtld.c ++++ b/elf/rtld.c +@@ -589,7 +589,6 @@ struct map_args + /* Argument to map_doit. */ + char *str; + struct link_map *loader; +- int is_preloaded; + int mode; + /* Return value of map_doit. */ + struct link_map *map; +@@ -627,16 +626,17 @@ static void + map_doit (void *a) + { + struct map_args *args = (struct map_args *) a; +- args->map = _dl_map_object (args->loader, args->str, +- args->is_preloaded, lt_library, 0, args->mode, +- LM_ID_BASE); ++ args->map = _dl_map_object (args->loader, args->str, lt_library, 0, ++ args->mode, LM_ID_BASE); + } + + static void + dlmopen_doit (void *a) + { + struct dlmopen_args *args = (struct dlmopen_args *) a; +- args->map = _dl_open (args->fname, RTLD_LAZY | __RTLD_DLOPEN | __RTLD_AUDIT, ++ args->map = _dl_open (args->fname, ++ (RTLD_LAZY | __RTLD_DLOPEN | __RTLD_AUDIT ++ | __RTLD_SECURE), + dl_main, LM_ID_NEWLM, _dl_argc, INTUSE(_dl_argv), + __environ); + } +@@ -806,8 +806,7 @@ do_preload (char *fname, struct link_map *main_map, const char *where) + + args.str = fname; + args.loader = main_map; +- args.is_preloaded = 1; +- args.mode = 0; ++ args.mode = __RTLD_SECURE; + + unsigned int old_nloaded = GL(dl_ns)[LM_ID_BASE]._ns_nloaded; + +@@ -1054,7 +1053,6 @@ of this helper program; chances are you did not intend to run this program.\n\ + + args.str = rtld_progname; + args.loader = NULL; +- args.is_preloaded = 0; + args.mode = __RTLD_OPENEXEC; + (void) _dl_catch_error (&objname, &err_str, &malloced, map_doit, + &args); +@@ -1066,7 +1064,7 @@ of this helper program; chances are you did not intend to run this program.\n\ + else + { + HP_TIMING_NOW (start); +- _dl_map_object (NULL, rtld_progname, 0, lt_library, 0, ++ _dl_map_object (NULL, rtld_progname, lt_library, 0, + __RTLD_OPENEXEC, LM_ID_BASE); + HP_TIMING_NOW (stop); + +diff --git a/include/dlfcn.h b/include/dlfcn.h +index a67426d..af92483 100644 +--- a/include/dlfcn.h ++++ b/include/dlfcn.h +@@ -9,6 +9,7 @@ + #define __RTLD_OPENEXEC 0x20000000 + #define __RTLD_CALLMAP 0x10000000 + #define __RTLD_AUDIT 0x08000000 ++#define __RTLD_SECURE 0x04000000 /* Apply additional security checks. */ + + #define __LM_ID_CALLER -2 + +diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h +index fcc943b..fa4b6b2 100644 +--- a/sysdeps/generic/ldsodefs.h ++++ b/sysdeps/generic/ldsodefs.h +@@ -824,11 +824,9 @@ extern void _dl_receive_error (receiver_fct fct, void (*operate) (void *), + + /* Open the shared object NAME and map in its segments. + LOADER's DT_RPATH is used in searching for NAME. +- If the object is already opened, returns its existing map. +- For preloaded shared objects PRELOADED is set to a non-zero +- value to allow additional security checks. */ ++ If the object is already opened, returns its existing map. */ + extern struct link_map *_dl_map_object (struct link_map *loader, +- const char *name, int preloaded, ++ const char *name, + int type, int trace_mode, int mode, + Lmid_t nsid) + internal_function attribute_hidden; diff --git a/glibc-make-3.82.patch b/glibc-make-3.82.patch new file mode 100644 index 0000000..702c044 --- /dev/null +++ b/glibc-make-3.82.patch @@ -0,0 +1,91 @@ +From: Andreas Schwab +To: libc-hacker at sourceware dot org +Subject: [PATCH] Work around shortest-stem feature in make 3.82+ + +make 3.82+ no longer selects pattern rules by order, but by shortest +stem, so we need to add more rules to make sure we still get the right +matches. + +Andreas. + +2010-09-09 Andreas Schwab + + * Makeconfig (sysd-rules-patterns): Add rtld-%:rtld-%. + (sysd-rules-targets): Remove duplicates. + * elf/rtld-Rules ($(objpfx)rtld-%.os): Add pattern rules with + rtld-%.$o dependency. + +2010-09-06 Andreas Schwab + + * manual/Makefile: Don't mix pattern rules with normal rules. + +diff --git a/Makeconfig b/Makeconfig +index 9778998..807c1d1 100644 +--- a/Makeconfig ++++ b/Makeconfig +@@ -966,7 +966,7 @@ endif + # emitted into sysd-rules. A sysdeps Makeconfig fragment can + # add its own special object file prefix to this list with e.g. foo-%:% + # to have foo-*.? compiled from *.? using $(foo-CPPFLAGS). +-sysd-rules-patterns := %:% rtld-%:% m_%:s_% ++sysd-rules-patterns := %:% rtld-%:rtld-% rtld-%:% m_%:s_% + + # Let sysdeps/ subdirs contain a Makeconfig fragment for us to include here. + sysdep-makeconfigs := $(wildcard $(+sysdep_dirs:=/Makeconfig)) +@@ -975,8 +975,8 @@ include $(sysdep-makeconfigs) + endif + + # Compute just the target patterns. Makeconfig has set sysd-rules-patterns. +-sysd-rules-targets := $(foreach p,$(sysd-rules-patterns),\ +- $(firstword $(subst :, ,$p))) ++sysd-rules-targets := $(sort $(foreach p,$(sysd-rules-patterns),\ ++ $(firstword $(subst :, ,$p)))) + + endif # Makeconfig not yet included + +diff --git a/elf/rtld-Rules b/elf/rtld-Rules +index 9f31a56..fc225f2 100644 +--- a/elf/rtld-Rules ++++ b/elf/rtld-Rules +@@ -93,6 +93,12 @@ else + # These are the basic compilation rules corresponding to the Makerules ones. + # The sysd-rules generated makefile already defines pattern rules for rtld-% + # targets built from sysdeps source files. ++$(objpfx)rtld-%.os: rtld-%.S $(before-compile) ++ $(compile-command.S) $(rtld-CPPFLAGS) ++$(objpfx)rtld-%.os: rtld-%.s $(before-compile) ++ $(compile-command.s) $(rtld-CPPFLAGS) ++$(objpfx)rtld-%.os: rtld-%.c $(before-compile) ++ $(compile-command.c) $(rtld-CPPFLAGS) + $(objpfx)rtld-%.os: %.S $(before-compile) + $(compile-command.S) $(rtld-CPPFLAGS) + $(objpfx)rtld-%.os: %.s $(before-compile) +@@ -101,6 +107,9 @@ $(objpfx)rtld-%.os: %.c $(before-compile) + $(compile-command.c) $(rtld-CPPFLAGS) + + # The rules for generated source files. ++$(objpfx)rtld-%.os: $(objpfx)rtld-%.S $(before-compile); $(compile-command.S) ++$(objpfx)rtld-%.os: $(objpfx)rtld-%.s $(before-compile); $(compile-command.s) ++$(objpfx)rtld-%.os: $(objpfx)rtld-%.c $(before-compile); $(compile-command.c) + $(objpfx)rtld-%.os: $(objpfx)%.S $(before-compile); $(compile-command.S) + $(objpfx)rtld-%.os: $(objpfx)%.s $(before-compile); $(compile-command.s) + $(objpfx)rtld-%.os: $(objpfx)%.c $(before-compile); $(compile-command.c) +-- +1.7.2.2 + +diff --git a/manual/Makefile b/manual/Makefile +index c5866eb..b1f5fa7 100644 +--- a/manual/Makefile ++++ b/manual/Makefile +@@ -232,7 +232,10 @@ ifdef objpfx + .PHONY: stubs + stubs: $(objpfx)stubs + endif +-$(objpfx)stubs ../po/manual.pot $(objpfx)stamp%: ++$(objpfx)stubs ../po/manual.pot: ++ $(make-target-directory) ++ touch $@ ++$(objpfx)stamp%: + $(make-target-directory) + touch $@ + diff --git a/glibc-nscd-hconf.diff b/glibc-nscd-hconf.diff new file mode 100644 index 0000000..f933559 --- /dev/null +++ b/glibc-nscd-hconf.diff @@ -0,0 +1,35 @@ +diff --git a/nscd/aicache.c b/nscd/aicache.c +index 3cb2208..2e92929 100644 +--- a/nscd/aicache.c ++++ b/nscd/aicache.c +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + #include "dbg_log.h" + #include "nscd.h" +@@ -103,6 +104,8 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req, + + if (__res_maybe_init (&_res, 0) == -1) + no_more = 1; ++ if (!_res_hconf.initialized) ++ _res_hconf_init (); + + /* If we are looking for both IPv4 and IPv6 address we don't want + the lookup functions to automatically promote IPv4 addresses to +diff --git a/resolv/res_hconf.c b/resolv/res_hconf.c +index ed55bec..c79b85a 100644 +--- a/resolv/res_hconf.c ++++ b/resolv/res_hconf.c +@@ -84,7 +84,9 @@ static const struct cmd + }; + + /* Structure containing the state. */ ++#ifndef NOT_IN_libc + struct hconf _res_hconf; ++#endif + + /* Skip white space. */ + static const char * diff --git a/glibc.changes b/glibc.changes index 89c01c0..4ee76c2 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,23 @@ +------------------------------------------------------------------- +Wed Oct 27 03:14:37 CEST 2010 - pbaudis@suse.cz + +- Fix missing hconf setup in nscd - this meant `multi on` in + /etc/host.conf was ignored when nscd was used, breaking e.g. + resolving of multi-AF records in /etc/hosts [bnc#572188] +- Fix two LD_AUDIT security vulnerabilities: spurious $ORIGIN expansion + and missing setuid library check when running as setuid [bnc#646960] + +------------------------------------------------------------------- +Mon Sep 13 14:36:26 UTC 2010 - aj@suse.de + +- Fix build in manual with make 3.82. + +------------------------------------------------------------------- +Sun Sep 12 08:00:57 UTC 2010 - aj@suse.de + +- Work around shortest-stem feature in make 3.82+ (patch + glibc-make-3.82.patch) + ------------------------------------------------------------------- Wed Jul 7 04:12:05 CEST 2010 - pbaudis@suse.cz diff --git a/glibc.spec b/glibc.spec index a50ed77..8be9a44 100644 --- a/glibc.spec +++ b/glibc.spec @@ -138,6 +138,9 @@ Patch64: glibc-gai-private4.diff Patch65: glibc-resolv-mdnshint.diff Patch66: glibc-ldconfigr-aux.diff Patch67: glibc-nis-initgroups.diff +Patch68: glibc-make-3.82.patch +Patch69: glibc-nscd-hconf.diff +Patch70: glibc-2.11.3-audit.diff Patch500: ARM_glibc-2.10.1-local-eabi-wchar.diff Patch501: ARM_glibc-2.10.1-local-hwcap-updates.diff Patch502: ARM_glibc-2.10.1-local-lowlevellock.diff @@ -361,6 +364,9 @@ rm nscd/s-stamp %patch65 -p1 %patch66 -p1 %patch67 -p1 +%patch68 -p1 +%patch69 -p1 +%patch70 -p1 %ifarch %arm armv5tel armv7l %patch500 %patch501 @@ -388,12 +394,12 @@ rm nscd/s-stamp 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 @@ -555,6 +561,7 @@ $BuildCC -static -Os -g $RPM_SOURCE_DIR/glibc_post_upgrade.c -o glibc_post_upgra %endif '-DLIBDIR="/%{_lib}"' '-DGCONV_MODULES_DIR="%{_prefix}/%{_lib}/gconv"' + ####################################################################### ### ### CHECK @@ -577,6 +584,7 @@ $BuildCC -static -Os -g $RPM_SOURCE_DIR/glibc_post_upgrade.c -o glibc_post_upgra %endif make -C cc-base check-abi || echo check-abi failed + ####################################################################### ### ### INSTALL @@ -669,6 +677,7 @@ cp -av bits/stdio-lock.h $RPM_BUILD_ROOT%{_prefix}/include/bits/stdio-lock.h ln -sf ../%{_lib}/ld-%{version}.so $RPM_BUILD_ROOT/lib/ld64.so.1 %endif + # Miscelanna: install -m 0700 glibc_post_upgrade $RPM_BUILD_ROOT%{_sbindir} @@ -689,6 +698,7 @@ cp -p manual/libc/*.html $RPM_BUILD_ROOT/usr/share/doc/glibc cd manpages; make install_root=$RPM_BUILD_ROOT install; cd .. + # nscd tools: cp nscd/nscd.conf $RPM_BUILD_ROOT/etc @@ -762,6 +772,7 @@ for o in $RPM_BUILD_ROOT/%{_libdir}/crt[1in].o $RPM_BUILD_ROOT/%{_libdir}/lib*_n objcopy -R ".comment.SUSE.OPTs" -R ".note.gnu.build-id" $o done + ####################################################################### ### ### ... @@ -799,6 +810,7 @@ done %insserv_cleanup exit 0 + ####################################################################### ### ### FILES @@ -806,7 +818,6 @@ exit 0 ####################################################################### # glibc - %files %defattr(-,root,root) %doc LICENSES diff --git a/ready b/ready new file mode 100644 index 0000000..473a0f4