This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "IPFire 3.x development tree".
The branch, master has been updated via 3994dee19059cb0c20cd666b3c2ccb633e504f88 (commit) via ceb55da58b78aceaf995876230da9aa7a2cc2cd1 (commit) from 9099585c1f1aa59e5c6d45bcdf30f3a80ca26d1d (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit 3994dee19059cb0c20cd666b3c2ccb633e504f88 Author: Michael Tremer michael.tremer@ipfire.org Date: Mon Jan 7 22:04:26 2013 +0100
glibc: Update to 2.17.
commit ceb55da58b78aceaf995876230da9aa7a2cc2cd1 Author: Michael Tremer michael.tremer@ipfire.org Date: Mon Jan 7 22:03:26 2013 +0100
ccache: Update to 3.1.9.
-----------------------------------------------------------------------
Summary of changes: ccache/ccache.nm | 2 +- glibc/glibc.nm | 84 +- ...ned-pie.patch => glibc-2.17-hardened-pie.patch} | 24 +- .../glibc-fedora-__libc_multiple_libcs.patch | 83 + glibc/patches/glibc-fedora-elf-ORIGIN.patch | 98 + .../glibc-fedora-elf-init-hidden_undef.patch | 30 + glibc/patches/glibc-fedora-elf-rh737223.patch | 15 + glibc/patches/glibc-fedora-gai-canonical.patch | 128 ++ glibc/patches/glibc-fedora-getrlimit-PLT.patch | 45 + .../glibc-fedora-i386-tls-direct-seg-refs.patch | 18 + glibc/patches/glibc-fedora-include-bits-ldbl.patch | 30 + glibc/patches/glibc-fedora-ldd.patch | 42 + glibc/patches/glibc-fedora-linux-tcsetattr.patch | 48 + .../patches/glibc-fedora-localedata-rh61908.patch | 38 + glibc/patches/glibc-fedora-localedef.patch | 11 + glibc/patches/glibc-fedora-locarchive.patch | 51 + .../patches/glibc-fedora-manual-dircategory.patch | 20 + glibc/patches/glibc-fedora-nis-rh188246.patch | 21 + glibc/patches/glibc-fedora-nptl-linklibc.patch | 25 + glibc/patches/glibc-fedora-nscd.patch | 12 + glibc/patches/glibc-fedora-ppc-unwind.patch | 20 + glibc/patches/glibc-fedora-pt_chown.patch | 57 + glibc/patches/glibc-fedora-regcomp-sw11561.patch | 147 ++ glibc/patches/glibc-fedora-streams-rh436349.patch | 28 + glibc/patches/glibc-fedora-uname-getrlimit.patch | 61 + glibc/patches/glibc-fedora.patch | 2395 -------------------- 26 files changed, 1052 insertions(+), 2481 deletions(-) rename glibc/patches/{glibc-2.12-hardened-pie.patch => glibc-2.17-hardened-pie.patch} (64%) create mode 100644 glibc/patches/glibc-fedora-__libc_multiple_libcs.patch create mode 100644 glibc/patches/glibc-fedora-elf-ORIGIN.patch create mode 100644 glibc/patches/glibc-fedora-elf-init-hidden_undef.patch create mode 100644 glibc/patches/glibc-fedora-elf-rh737223.patch create mode 100644 glibc/patches/glibc-fedora-gai-canonical.patch create mode 100644 glibc/patches/glibc-fedora-getrlimit-PLT.patch create mode 100644 glibc/patches/glibc-fedora-i386-tls-direct-seg-refs.patch create mode 100644 glibc/patches/glibc-fedora-include-bits-ldbl.patch create mode 100644 glibc/patches/glibc-fedora-ldd.patch create mode 100644 glibc/patches/glibc-fedora-linux-tcsetattr.patch create mode 100644 glibc/patches/glibc-fedora-localedata-rh61908.patch create mode 100644 glibc/patches/glibc-fedora-localedef.patch create mode 100644 glibc/patches/glibc-fedora-locarchive.patch create mode 100644 glibc/patches/glibc-fedora-manual-dircategory.patch create mode 100644 glibc/patches/glibc-fedora-nis-rh188246.patch create mode 100644 glibc/patches/glibc-fedora-nptl-linklibc.patch create mode 100644 glibc/patches/glibc-fedora-nscd.patch create mode 100644 glibc/patches/glibc-fedora-ppc-unwind.patch create mode 100644 glibc/patches/glibc-fedora-pt_chown.patch create mode 100644 glibc/patches/glibc-fedora-regcomp-sw11561.patch create mode 100644 glibc/patches/glibc-fedora-streams-rh436349.patch create mode 100644 glibc/patches/glibc-fedora-uname-getrlimit.patch delete mode 100644 glibc/patches/glibc-fedora.patch
Difference in files: diff --git a/ccache/ccache.nm b/ccache/ccache.nm index b57ee34..ad42d4a 100644 --- a/ccache/ccache.nm +++ b/ccache/ccache.nm @@ -4,7 +4,7 @@ ###############################################################################
name = ccache -version = 3.1.8 +version = 3.1.9 release = 1
groups = Development/Compilers diff --git a/glibc/glibc.nm b/glibc/glibc.nm index 23ac9c7..ac7f160 100644 --- a/glibc/glibc.nm +++ b/glibc/glibc.nm @@ -4,8 +4,8 @@ ###############################################################################
name = glibc -version = 2.16.0 -release = 4 +version = 2.17 +release = 1
maintainer = Michael Tremer michael.tremer@ipfire.org groups = System/Base @@ -23,11 +23,8 @@ description Linux system will not function. end
-# The version of the ports addon. -ports_version = 2.16.0 - source_dl = http://ftp.gnu.org/gnu/glibc/ -sources = %{thisapp}.tar.xz glibc-ports-%{ports_version}.tar.xz +sources = %{thisapp}.tar.xz
build # Optimize glibc for kernel @@ -38,7 +35,7 @@ build autoconf automake gettext - kernel-headers>=%{OPTIMIZED_KERNEL} + kernel-headers >= %{OPTIMIZED_KERNEL} libcap-devel libselinux-devel nss-devel @@ -61,16 +58,7 @@ build
export QUALITY_AGENT_RPATH_ALLOW_ORIGIN=yes
- prepare - # Extract source tarballs. - %{MACRO_EXTRACT_TARBALL} - - # Create link for ports addon. - ln -svf ../glibc-ports-%{ports_version} ports - - # Apply the patches. - %{MACRO_PATCHES} - + prepare_cmds # In the vi_VN.TCVN locale, bash enters an infinite loop at startup. It is # unknown whether this is a bash bug or a Glibc problem. Disable # installation of this locale in order to avoid the problem. @@ -93,56 +81,8 @@ build sed -i Makeconfig \ -e "s/-Wl,--hash-style=both/-Wl,--hash-style=gnu -Wl,-O1/"
- # stdlib/tst-putenvmod is not linked against libc. - sed -i stdlib/Makefile \ - -e "s/^CFLAGS-tst-putenvmod.c.*/& -fno-stack-protector/g" - - # stdio-common/bug22 hits timeout. - sed -i stdio-common/bug22.c \ - -e "s/#define TIMEOUT.*/#define TIMEOUT 300/" - - # These tests don't work or need more investigation: - sed -i dlfcn/Makefile -e "s/default //g" - - sed -i nptl/Makefile \ - -e "s/tst-mutex5 //g" \ - -e "s/tst-mutex5a //g" \ - -e "s/tst-cond11 //g" \ - -e "s/tst-rwlock6 //g" \ - -e "s/tst-rwlock7 //g" \ - -e "s/tst-sem5 //g" \ - -e "s/tst-cancelx4 //g" \ - -e "s/tst-cancelx5 //g" \ - -e "s/tst-cancelx10 //g" \ - -e "s/tst-cancelx18 //g" \ - -e "s/tst-signal1 //g" - - # These are known to fail on x86: - sed -i rt/Makefile \ - -e "s/tst-cpuclock1 //g" \ - -e "s/tst-cpuclock2 //g" - - sed -i elf/Makefile \ - -e "s/tst-tls1 //g" \ - -e "s/tst-tls1-static //g" \ - -e "s/tst-tls2 //g" \ - -e "s/tst-tls2-static //g" \ - -e "s/tst-tls3 //g" \ - -e "s/resolvfail //g" \ - -e "s/constload1 //g" \ - -e "s/order //g" \ - -e "s/lateglobal //g" \ - -e "s/dblload //g" \ - -e "s/dblunload //g" \ - -e "s/reldep6 //g" \ - -e "s/circleload1 //g" \ - -e "s/tst-global1 //g" \ - -e "s/tst-audit2 //g" \ - -e "s/check-localplt //g" \ - -e "s/check-localplt.out$$//g" - - sed -i signal/Makefile \ - -e "s/tst-sigset2//g" + # http://sourceware.org/ml/libc-ports/2011-09/msg00018.html + sed -e "s/PIC/SHARED/g" -i ports/sysdeps/arm/{set,__long}jmp.S end
configure_options = \ @@ -156,7 +96,8 @@ build --disable-werror \ --enable-bind-now \ --enable-nss-crypt \ - --enable-obsolete-rpc + --enable-obsolete-rpc \ + --with-bugurl=http://bugtracker.ipfire.org
if "%{DISTRO_ARCH}" == "armv5tel" # Disable hardware FP for ARM. @@ -192,13 +133,6 @@ build CFLAGS="%{CFLAGS}" CXXFLAGS="%{CXXFLAGS}" end
- #test - # cd $(DIR_SRC)/glibc-build - # make check TIMEOUTFACTOR=16 \ - # CFLAGS="%{CFLAGS} -fno-stack-protector -U_FORTIFY_SOURCE" \ - # CXXFLAGS="%{CXXFLAGS} -fno-stack-protector -U_FORTIFY_SOURCE" - #end - install cd %{DIR_SRC}/glibc-build make install install_root=%{BUILDROOT} diff --git a/glibc/patches/glibc-2.12-hardened-pie.patch b/glibc/patches/glibc-2.12-hardened-pie.patch deleted file mode 100644 index 689e71c..0000000 --- a/glibc/patches/glibc-2.12-hardened-pie.patch +++ /dev/null @@ -1,38 +0,0 @@ -2009-11-08 Magnus Granberg zorry@ume.nu - - bug #292139 - * Makeconfig +link-pie: set +link to +link-pie - +link-static: change $(static-start-installed-name) to S$(static-start-installed-name) - +prector: set +prector to +prectorS +postctor: set +postctor to +postctorS - - ---- a/Makeconfig 2009-11-06 16:39:18.000000000 +0100 -+++ b/Makeconfig 2009-11-08 03:14:45.000000000 +0100 -@@ -447,11 +447,12 @@ - $(common-objpfx)libc% $(+postinit),$^) \ - $(link-extra-libs) $(link-libc) $(+postctorS) $(+postinit) - endif -++link = $(+link-pie) - # Command for statically linking programs with the C library. - ifndef +link-static - +link-static = $(CC) -nostdlib -nostartfiles -static -o $@ \ - $(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \ -- $(addprefix $(csu-objpfx),$(static-start-installed-name)) \ -+ $(addprefix $(csu-objpfx),S$(static-start-installed-name)) \ - $(+preinit) $(+prector) \ - $(filter-out $(addprefix $(csu-objpfx),start.o \ - $(start-installed-name))\ -@@ -549,11 +550,10 @@ - ifeq ($(elf),yes) - +preinit = $(addprefix $(csu-objpfx),crti.o) - +postinit = $(addprefix $(csu-objpfx),crtn.o) --+prector = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtbegin.o` --+postctor = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtend.o` --# Variants of the two previous definitions for linking PIE programs. - +prectorS = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtbeginS.o` - +postctorS = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtendS.o` -++prector = $(+prectorS) -++postctor = $(+postctorS) - +interp = $(addprefix $(elf-objpfx),interp.os) - endif - csu-objpfx = $(common-objpfx)csu/ diff --git a/glibc/patches/glibc-2.17-hardened-pie.patch b/glibc/patches/glibc-2.17-hardened-pie.patch new file mode 100644 index 0000000..da4fb82 --- /dev/null +++ b/glibc/patches/glibc-2.17-hardened-pie.patch @@ -0,0 +1,42 @@ +2012-11-11 Magnus Granberg zorry@gentoo.org + + #442712 + * Makeconfig (+link): Set to +link-pie. + (+link-static-before-libc): Change $(static-start-installed-name) to + S$(static-start-installed-name). + (+prector): Set to +prectorS. + (+postctor): Set to +postctorS. + +--- libc/Makeconfig ++++ libc/Makeconfig +@@ -447,11 +447,12 @@ + $(common-objpfx)libc% $(+postinit),$^) \ + $(link-extra-libs) $(link-libc) $(+postctorS) $(+postinit) + endif +++link = $(+link-pie) + # Command for statically linking programs with the C library. + ifndef +link-static + +link-static-before-libc = $(CC) -nostdlib -nostartfiles -static -o $@ \ + $(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \ +- $(addprefix $(csu-objpfx),$(static-start-installed-name)) \ ++ $(addprefix $(csu-objpfx),S$(static-start-installed-name)) \ + $(+preinit) $(+prectorT) \ + $(filter-out $(addprefix $(csu-objpfx),start.o \ + $(start-installed-name))\ +@@ -549,11 +550,10 @@ + ifeq ($(elf),yes) + +preinit = $(addprefix $(csu-objpfx),crti.o) + +postinit = $(addprefix $(csu-objpfx),crtn.o) +-+prector = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtbegin.o` +-+postctor = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtend.o` +-# Variants of the two previous definitions for linking PIE programs. + +prectorS = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtbeginS.o` + +postctorS = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtendS.o` +++prector = $(+prectorS) +++postctor = $(+postctorS) + # Variants of the two previous definitions for statically linking programs. + +prectorT = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtbeginT.o` + +postctorT = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtend.o` + +interp = $(addprefix $(elf-objpfx),interp.os) + endif + csu-objpfx = $(common-objpfx)csu/ diff --git a/glibc/patches/glibc-fedora-__libc_multiple_libcs.patch b/glibc/patches/glibc-fedora-__libc_multiple_libcs.patch new file mode 100644 index 0000000..d15920a --- /dev/null +++ b/glibc/patches/glibc-fedora-__libc_multiple_libcs.patch @@ -0,0 +1,83 @@ +From 16552c01a66633c9e412984d9d92616bd4e5303c Mon Sep 17 00:00:00 2001 +From: Andreas Schwab schwab@redhat.com +Date: Fri, 11 Jun 2010 11:04:11 +0200 +Subject: [PATCH] Properly set __libc_multiple_libcs + +* elf/rtld.c (_dl_starting_up): Always define. +(dl_main): Always set _dl_starting_up. +* elf/dl-support.c (_dl_starting_up): Always define. +* elf/dl-init.c (_dl_init): Always clear _dl_starting_up. + +--- + ChangeLog | 7 +++++++ + elf/dl-init.c | 4 ---- + elf/dl-support.c | 2 -- + elf/rtld.c | 4 ---- + 4 files changed, 7 insertions(+), 10 deletions(-) + +--- a/elf/dl-init.c ++++ b/elf/dl-init.c +@@ -23,11 +23,9 @@ + /* Type of the initializer. */ + typedef void (*init_t) (int, char **, char **); + +-#ifndef HAVE_INLINED_SYSCALLS + /* Flag, nonzero during startup phase. */ + extern int _dl_starting_up; + extern int _dl_starting_up_internal attribute_hidden; +-#endif + + + static void +@@ -132,9 +130,7 @@ _dl_init (struct link_map *main_map, int argc, char **argv, char **env) + while (i-- > 0) + call_init (main_map->l_initfini[i], argc, argv, env); + +-#ifndef HAVE_INLINED_SYSCALLS + /* Finished starting up. */ + INTUSE(_dl_starting_up) = 0; +-#endif + } + INTDEF (_dl_init) +--- a/elf/dl-support.c ++++ b/elf/dl-support.c +@@ -81,10 +81,8 @@ unsigned long long _dl_load_adds; + create a fake scope containing nothing. */ + struct r_scope_elem _dl_initial_searchlist; + +-#ifndef HAVE_INLINED_SYSCALLS + /* Nonzero during startup. */ + int _dl_starting_up = 1; +-#endif + + /* Random data provided by the kernel. */ + void *_dl_random; +--- a/elf/rtld.c ++++ b/elf/rtld.c +@@ -106,7 +106,6 @@ static struct audit_list + struct audit_list *next; + } *audit_list; + +-#ifndef HAVE_INLINED_SYSCALLS + /* Set nonzero during loading and initialization of executable and + libraries, cleared before the executable's entry point runs. This + must not be initialized to nonzero, because the unused dynamic +@@ -116,7 +115,6 @@ static struct audit_list + never be called. */ + int _dl_starting_up = 0; + INTVARDEF(_dl_starting_up) +-#endif + + /* This is the structure which defines all variables global to ld.so + (except those which cannot be added for some reason). */ +@@ -929,10 +927,8 @@ dl_main (const ElfW(Phdr) *phdr, + /* Process the environment variable which control the behaviour. */ + process_envvars (&mode); + +-#ifndef HAVE_INLINED_SYSCALLS + /* Set up a flag which tells we are just starting. */ + INTUSE(_dl_starting_up) = 1; +-#endif + + if (*user_entry == (ElfW(Addr)) ENTRY_POINT) + { diff --git a/glibc/patches/glibc-fedora-elf-ORIGIN.patch b/glibc/patches/glibc-fedora-elf-ORIGIN.patch new file mode 100644 index 0000000..bfaff83 --- /dev/null +++ b/glibc/patches/glibc-fedora-elf-ORIGIN.patch @@ -0,0 +1,98 @@ +From 207e77fd3f0a94acdf0557608dd4f10ce0e0f22f Mon Sep 17 00:00:00 2001 +From: Andreas Schwab schwab@redhat.com +Date: Mon, 9 May 2011 10:55:58 +0200 +Subject: [PATCH] Never leave $ORIGIN unexpanded + +* elf/dl-load.c (is_dst): Remove parameter secure, all callers +changed. Move check for valid use of $ORIGIN ... +(_dl_dst_substitute): ... here. Reset check_for_trusted when a +path element is skipped. + +--- + ChangeLog | 7 +++++++ + elf/dl-load.c | 34 ++++++++++++++++------------------ + 2 files changed, 23 insertions(+), 18 deletions(-) + +diff --git a/elf/dl-load.c b/elf/dl-load.c +index 18a83d2..6e16a9a 100644 +--- a/elf/dl-load.c ++++ b/elf/dl-load.c +@@ -249,8 +249,7 @@ is_trusted_path_normalize (const char *path, size_t len) + + + static size_t +-is_dst (const char *start, const char *name, const char *str, +- int is_path, int secure) ++is_dst (const char *start, const char *name, const char *str, int is_path) + { + size_t len; + bool is_curly = false; +@@ -279,12 +278,6 @@ is_dst (const char *start, const char *name, const char *str, + && (!is_path || name[len] != ':')) + return 0; + +- if (__builtin_expect (secure, 0) +- && ((name[len] != '\0' && name[len] != '/' +- && (!is_path || name[len] != ':')) +- || (name != start + 1 && (!is_path || name[-2] != ':')))) +- return 0; +- + return len; + } + +@@ -299,13 +292,10 @@ _dl_dst_count (const char *name, int is_path) + { + size_t len; + +- /* $ORIGIN is not expanded for SUID/GUID programs (except if it +- is $ORIGIN alone) and it must always appear first in path. */ + ++name; +- if ((len = is_dst (start, name, "ORIGIN", is_path, +- INTUSE(__libc_enable_secure))) != 0 +- || (len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0 +- || (len = is_dst (start, name, "LIB", is_path, 0)) != 0) ++ if ((len = is_dst (start, name, "ORIGIN", is_path)) != 0 ++ || (len = is_dst (start, name, "PLATFORM", is_path)) != 0 ++ || (len = is_dst (start, name, "LIB", is_path)) != 0) + ++cnt; + + name = strchr (name + len, '$'); +@@ -338,9 +328,16 @@ _dl_dst_substitute (struct link_map *l, const char *name, char *result, + size_t len; + + ++name; +- if ((len = is_dst (start, name, "ORIGIN", is_path, +- INTUSE(__libc_enable_secure))) != 0) ++ if ((len = is_dst (start, name, "ORIGIN", is_path)) != 0) + { ++ /* For SUID/GUID programs $ORIGIN must always appear ++ first in a path element. */ ++ if (__builtin_expect (INTUSE(__libc_enable_secure), 0) ++ && ((name[len] != '\0' && name[len] != '/' ++ && (!is_path || name[len] != ':')) ++ || (name != start + 1 && (!is_path || name[-2] != ':')))) ++ repl = (const char *) -1; ++ else + #ifndef SHARED + if (l == NULL) + repl = _dl_get_origin (); +@@ -351,9 +348,9 @@ _dl_dst_substitute (struct link_map *l, const char *name, char *result, + check_for_trusted = (INTUSE(__libc_enable_secure) + && l->l_type == lt_executable); + } +- else if ((len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0) ++ else if ((len = is_dst (start, name, "PLATFORM", is_path)) != 0) + repl = GLRO(dl_platform); +- else if ((len = is_dst (start, name, "LIB", is_path, 0)) != 0) ++ else if ((len = is_dst (start, name, "LIB", is_path)) != 0) + repl = DL_DST_LIB; + + if (repl != NULL && repl != (const char *) -1) +@@ -373,6 +370,7 @@ _dl_dst_substitute (struct link_map *l, const char *name, char *result, + element, but keep an empty element at the end. */ + if (wp == result && is_path && *name == ':' && name[1] != '\0') + ++name; ++ check_for_trusted = false; + } + else + /* No DST we recognize. */ diff --git a/glibc/patches/glibc-fedora-elf-init-hidden_undef.patch b/glibc/patches/glibc-fedora-elf-init-hidden_undef.patch new file mode 100644 index 0000000..cd50d3b --- /dev/null +++ b/glibc/patches/glibc-fedora-elf-init-hidden_undef.patch @@ -0,0 +1,30 @@ +* Fri May 29 2003 Jakub Jelinek jakub@redhat.com 2.3.2-44 +- make __init_array_start etc. symbols in elf-init.oS hidden undefined + +diff -Nrup a/csu/elf-init.c b/csu/elf-init.c +--- a/csu/elf-init.c 2012-06-05 07:42:49.000000000 -0600 ++++ b/csu/elf-init.c 2012-06-07 12:15:21.570319597 -0600 +@@ -63,6 +63,23 @@ extern void (*__init_array_end []) (int, + extern void (*__fini_array_start []) (void) attribute_hidden; + extern void (*__fini_array_end []) (void) attribute_hidden; + ++#if defined HAVE_VISIBILITY_ATTRIBUTE \ ++ && (defined SHARED || defined LIBC_NONSHARED) ++# define hidden_undef_2(x) #x ++# define hidden_undef_1(x) hidden_undef_2 (x) ++# define hidden_undef(x) \ ++ __asm (hidden_undef_1 (ASM_GLOBAL_DIRECTIVE) " " #x); \ ++ __asm (".hidden " #x); ++#else ++# define hidden_undef(x) ++#endif ++ ++hidden_undef (__preinit_array_start) ++hidden_undef (__preinit_array_end) ++hidden_undef (__init_array_start) ++hidden_undef (__init_array_end) ++hidden_undef (__fini_array_start) ++hidden_undef (__fini_array_end) + + /* These function symbols are provided for the .init/.fini section entry + points automagically by the linker. */ diff --git a/glibc/patches/glibc-fedora-elf-rh737223.patch b/glibc/patches/glibc-fedora-elf-rh737223.patch new file mode 100644 index 0000000..5ae6e3a --- /dev/null +++ b/glibc/patches/glibc-fedora-elf-rh737223.patch @@ -0,0 +1,15 @@ +Binary files a/elf/.rtld.c.rej.swp and b/elf/.rtld.c.rej.swp differ +diff -Nrup a/elf/setup-vdso.h b/elf/setup-vdso.h +--- a/elf/setup-vdso.h 2012-10-10 21:34:38.000000000 -0600 ++++ b/elf/setup-vdso.h 2012-10-11 09:43:14.152958832 -0600 +@@ -93,7 +93,9 @@ setup_vdso (struct link_map *main_map __ + char *copy = malloc (len); + if (copy == NULL) + _dl_fatal_printf ("out of memory\n"); +- l->l_libname->name = l->l_name = memcpy (copy, dsoname, len); ++ l->l_libname->name = memcpy (copy, dsoname, len); ++ if (GLRO(dl_debug_mask)) ++ l->l_name = copy; + } + + /* Add the vDSO to the object list. */ diff --git a/glibc/patches/glibc-fedora-gai-canonical.patch b/glibc/patches/glibc-fedora-gai-canonical.patch new file mode 100644 index 0000000..c058ecf --- /dev/null +++ b/glibc/patches/glibc-fedora-gai-canonical.patch @@ -0,0 +1,128 @@ +From bf18f175afdb59cdcd1016995b351e2bbb1d6ba7 Mon Sep 17 00:00:00 2001 +From: Andreas Schwab schwab@redhat.com +Date: Tue, 21 Jun 2011 17:28:57 +0200 +Subject: [PATCH] Don't use gethostbyaddr to determine canonical name + +* sysdeps/posix/getaddrinfo.c (gaih_inet): Don't use gethostbyaddr +to determine canonical name. + +--- + ChangeLog | 5 +++ + sysdeps/posix/getaddrinfo.c | 77 +++---------------------------------------- + 2 files changed, 10 insertions(+), 72 deletions(-) + +--- a/sysdeps/posix/getaddrinfo.c ++++ b/sysdeps/posix/getaddrinfo.c +@@ -565,8 +565,8 @@ gaih_inet (const char *name, const struct gaih_service *service, + + /* If we do not have to look for IPv6 addresses, use + the simple, old functions, which do not support +- IPv6 scope ids. */ +- if (req->ai_family == AF_INET) ++ IPv6 scope ids, nor retrieving the canonical name. */ ++ if (req->ai_family == AF_INET && (req->ai_flags & AI_CANONNAME) == 0) + { + /* Allocate additional room for struct host_data. */ + size_t tmpbuflen = (512 + MAX_NR_ALIASES * sizeof(char*) +@@ -1107,70 +1107,10 @@ gaih_inet (const char *name, const struct gaih_service *service, + /* Only the first entry gets the canonical name. */ + if (at2 == at && (req->ai_flags & AI_CANONNAME) != 0) + { +- char *tmpbuf2 = NULL; +- bool malloc_tmpbuf2 = false; +- + if (canon == NULL) +- { +- struct hostent *h = NULL; +- int herrno; +- struct hostent th; +- /* Add room for struct host_data. */ +- size_t tmpbuf2len = (512 + (MAX_NR_ALIASES+MAX_NR_ADDRS+1) +- * sizeof(char*) + 16 * sizeof(char)); +- +- do +- { +- if (__libc_use_alloca (alloca_used + 2 * tmpbuf2len)) +- tmpbuf2 = extend_alloca_account (tmpbuf2, tmpbuf2len, +- tmpbuf2len * 2, +- alloca_used); +- else +- { +- char *newp = realloc (malloc_tmpbuf2 ? tmpbuf2 : NULL, +- 2 * tmpbuf2len); +- if (newp == NULL) +- { +- if (malloc_tmpbuf2) +- free (tmpbuf2); +- result = -EAI_MEMORY; +- goto free_and_return; +- } +- +- tmpbuf2 = newp; +- tmpbuf2len = 2 * tmpbuf2len; +- malloc_tmpbuf2 = true; +- } +- +- rc = __gethostbyaddr_r (at2->addr, +- ((at2->family == AF_INET6) +- ? sizeof (struct in6_addr) +- : sizeof (struct in_addr)), +- at2->family, &th, tmpbuf2, +- tmpbuf2len, &h, &herrno); +- } +- while (rc == ERANGE && herrno == NETDB_INTERNAL); +- +- if (rc != 0 && herrno == NETDB_INTERNAL) +- { +- if (malloc_tmpbuf2) +- free (tmpbuf2); +- +- __set_h_errno (herrno); +- result = -EAI_SYSTEM; +- goto free_and_return; +- } +- +- if (h != NULL) +- canon = h->h_name; +- else +- { +- assert (orig_name != NULL); +- /* If the canonical name cannot be determined, use +- the passed in string. */ +- canon = orig_name; +- } +- } ++ /* If the canonical name cannot be determined, use ++ the passed in string. */ ++ canon = orig_name; + + #ifdef HAVE_LIBIDN + if (req->ai_flags & AI_CANONIDN) +@@ -1185,9 +1125,6 @@ gaih_inet (const char *name, const struct gaih_service *service, + int rc = __idna_to_unicode_lzlz (canon, &out, idn_flags); + if (rc != IDNA_SUCCESS) + { +- if (malloc_tmpbuf2) +- free (tmpbuf2); +- + if (rc == IDNA_MALLOC_ERROR) + result = -EAI_MEMORY; + else if (rc == IDNA_DLOPEN_ERROR) +@@ -1217,17 +1154,11 @@ gaih_inet (const char *name, const struct gaih_service *service, + canon = strdup (canon); + if (canon == NULL) + { +- if (malloc_tmpbuf2) +- free (tmpbuf2); +- + result = -EAI_MEMORY; + goto free_and_return; + } + } + } +- +- if (malloc_tmpbuf2) +- free (tmpbuf2); + } + + family = at2->family; diff --git a/glibc/patches/glibc-fedora-getrlimit-PLT.patch b/glibc/patches/glibc-fedora-getrlimit-PLT.patch new file mode 100644 index 0000000..bd77bb3 --- /dev/null +++ b/glibc/patches/glibc-fedora-getrlimit-PLT.patch @@ -0,0 +1,45 @@ +From 70d0a630700f602a457832383161d261fe222db5 Mon Sep 17 00:00:00 2001 +From: Andreas Schwab schwab@redhat.com +Date: Thu, 1 Jul 2010 13:14:26 +0200 +Subject: [PATCH] Fix PLT reference + +* include/sys/resource.h (__getrlimit): Add hidden proto. +* sysdeps/unix/sysv/linux/i386/getrlimit.c: Add libc_hidden_weak. +* sysdeps/mach/hurd/getrlimit.c: Add libc_hidden_def. +* resource/getrlimit.c: Likewise. + +--- + ChangeLog | 7 +++++++ + include/sys/resource.h | 1 + + resource/getrlimit.c | 1 + + sysdeps/mach/hurd/getrlimit.c | 1 + + sysdeps/unix/sysv/linux/i386/getrlimit.c | 1 + + 5 files changed, 11 insertions(+), 0 deletions(-) + +--- a/include/sys/resource.h ++++ b/include/sys/resource.h +@@ -14,5 +14,6 @@ extern int __getrusage (enum __rusage_who __who, struct rusage *__usage) + + extern int __setrlimit (enum __rlimit_resource __resource, + const struct rlimit *__rlimits); ++libc_hidden_proto (__getrlimit) + #endif + #endif +--- a/resource/getrlimit.c ++++ b/resource/getrlimit.c +@@ -27,6 +27,7 @@ __getrlimit (enum __rlimit_resource resource, struct rlimit *rlimits) + __set_errno (ENOSYS); + return -1; + } ++libc_hidden_def (__getrlimit) + weak_alias (__getrlimit, getrlimit) + + stub_warning (getrlimit) +--- a/sysdeps/mach/hurd/getrlimit.c ++++ b/sysdeps/mach/hurd/getrlimit.c +@@ -43,4 +43,5 @@ __getrlimit (enum __rlimit_resource resource, struct rlimit *rlimits) + + return 0; + } ++libc_hidden_def (__getrlimit) + weak_alias (__getrlimit, getrlimit) diff --git a/glibc/patches/glibc-fedora-i386-tls-direct-seg-refs.patch b/glibc/patches/glibc-fedora-i386-tls-direct-seg-refs.patch new file mode 100644 index 0000000..80c0f0d --- /dev/null +++ b/glibc/patches/glibc-fedora-i386-tls-direct-seg-refs.patch @@ -0,0 +1,18 @@ +diff -Nrup a/sysdeps/i386/Makefile b/sysdeps/i386/Makefile +--- a/sysdeps/i386/Makefile 2012-06-05 07:42:49.000000000 -0600 ++++ b/sysdeps/i386/Makefile 2012-06-07 12:15:21.826318641 -0600 +@@ -62,6 +64,14 @@ endif + + ifneq (,$(filter -mno-tls-direct-seg-refs,$(CFLAGS))) + defines += -DNO_TLS_DIRECT_SEG_REFS ++else ++# .a libraries are not performance critical and so we ++# build them without direct TLS segment references ++# always. ++CPPFLAGS-.o += -DNO_TLS_DIRECT_SEG_REFS ++CFLAGS-.o += -mno-tls-direct-seg-refs ++CPPFLAGS-.oS += -DNO_TLS_DIRECT_SEG_REFS ++CFLAGS-.oS += -mno-tls-direct-seg-refs + endif + + ifeq ($(subdir),elf) diff --git a/glibc/patches/glibc-fedora-include-bits-ldbl.patch b/glibc/patches/glibc-fedora-include-bits-ldbl.patch new file mode 100644 index 0000000..1e5d763 --- /dev/null +++ b/glibc/patches/glibc-fedora-include-bits-ldbl.patch @@ -0,0 +1,30 @@ +From 5eb4509a6651d19c7a28c4506d6aa582c9ee095a Mon Sep 17 00:00:00 2001 +From: Jakub Jelinek jakub@redhat.com +Date: Wed, 1 Feb 2006 09:30:43 +0000 +Subject: [PATCH] 128-bit long double fixes + +* include/bits/stdlib-ldbl.h: New file. +* include/bits/wchar-ldbl.h: New file. + +--- + ChangeLog | 5 +++++ + include/bits/stdlib-ldbl.h | 1 + + include/bits/wchar-ldbl.h | 1 + + 3 files changed, 7 insertions(+), 0 deletions(-) + create mode 100644 include/bits/stdlib-ldbl.h + create mode 100644 include/bits/wchar-ldbl.h + +diff --git a/include/bits/stdlib-ldbl.h b/include/bits/stdlib-ldbl.h +new file mode 100644 +index 0000000..6250949 +--- /dev/null ++++ b/include/bits/stdlib-ldbl.h +@@ -0,0 +1 @@ ++#include <stdlib/bits/stdlib-ldbl.h> +diff --git a/include/bits/wchar-ldbl.h b/include/bits/wchar-ldbl.h +new file mode 100644 +index 0000000..29baa2f +--- /dev/null ++++ b/include/bits/wchar-ldbl.h +@@ -0,0 +1 @@ ++#include <wcsmbs/bits/wchar-ldbl.h> diff --git a/glibc/patches/glibc-fedora-ldd.patch b/glibc/patches/glibc-fedora-ldd.patch new file mode 100644 index 0000000..51aec73 --- /dev/null +++ b/glibc/patches/glibc-fedora-ldd.patch @@ -0,0 +1,42 @@ +From 83e5edd390eabe8f8e8e0d051f929b77a30c0767 Mon Sep 17 00:00:00 2001 +From: Andreas Schwab schwab@redhat.com +Date: Fri, 18 Mar 2011 16:22:52 +0100 +Subject: [PATCH] ldd: never run file directly + +* elf/ldd.bash.in: Never run file directly. + +--- + ChangeLog | 4 ++++ + elf/ldd.bash.in | 14 +------------- + 2 files changed, 5 insertions(+), 13 deletions(-) + +--- a/elf/ldd.bash.in ++++ b/elf/ldd.bash.in +@@ -166,18 +166,6 @@ warning: you do not have execution permission for" "`$file'" >&2 + fi + done + case $ret in +- 0) +- # If the program exits with exit code 5, it means the process has been +- # invoked with __libc_enable_secure. Fall back to running it through +- # the dynamic linker. +- try_trace "$file" +- rc=$? +- if [ $rc = 5 ]; then +- try_trace "$RTLD" "$file" +- rc=$? +- fi +- [ $rc = 0 ] || result=1 +- ;; + 1) + # This can be a non-ELF binary or no binary at all. + nonelf "$file" || { +@@ -185,7 +173,7 @@ warning: you do not have execution permission for" "`$file'" >&2 + result=1 + } + ;; +- 2) ++ 0|2) + try_trace "$RTLD" "$file" || result=1 + ;; + *) diff --git a/glibc/patches/glibc-fedora-linux-tcsetattr.patch b/glibc/patches/glibc-fedora-linux-tcsetattr.patch new file mode 100644 index 0000000..066ac48 --- /dev/null +++ b/glibc/patches/glibc-fedora-linux-tcsetattr.patch @@ -0,0 +1,48 @@ +diff -Nrup a/sysdeps/unix/sysv/linux/tcsetattr.c b/sysdeps/unix/sysv/linux/tcsetattr.c +--- a/sysdeps/unix/sysv/linux/tcsetattr.c 2012-06-05 07:42:49.000000000 -0600 ++++ b/sysdeps/unix/sysv/linux/tcsetattr.c 2012-06-07 12:15:21.831318623 -0600 +@@ -48,6 +48,7 @@ tcsetattr (fd, optional_actions, termios + { + struct __kernel_termios k_termios; + unsigned long int cmd; ++ int retval; + + switch (optional_actions) + { +@@ -79,6 +80,35 @@ tcsetattr (fd, optional_actions, termios + memcpy (&k_termios.c_cc[0], &termios_p->c_cc[0], + __KERNEL_NCCS * sizeof (cc_t)); + +- return INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); ++ retval = INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); ++ ++ if (retval == 0 && cmd == TCSETS) ++ { ++ /* The Linux kernel has a bug which silently ignore the invalid ++ c_cflag on pty. We have to check it here. */ ++ int save = errno; ++ retval = INLINE_SYSCALL (ioctl, 3, fd, TCGETS, &k_termios); ++ if (retval) ++ { ++ /* We cannot verify if the setting is ok. We don't return ++ an error (?). */ ++ __set_errno (save); ++ retval = 0; ++ } ++ else if ((termios_p->c_cflag & (PARENB | CREAD)) ++ != (k_termios.c_cflag & (PARENB | CREAD)) ++ || ((termios_p->c_cflag & CSIZE) ++ && ((termios_p->c_cflag & CSIZE) ++ != (k_termios.c_cflag & CSIZE)))) ++ { ++ /* It looks like the Linux kernel silently changed the ++ PARENB/CREAD/CSIZE bits in c_cflag. Report it as an ++ error. */ ++ __set_errno (EINVAL); ++ retval = -1; ++ } ++ } ++ ++ return retval; + } + libc_hidden_def (tcsetattr) diff --git a/glibc/patches/glibc-fedora-localedata-rh61908.patch b/glibc/patches/glibc-fedora-localedata-rh61908.patch new file mode 100644 index 0000000..c8fee0f --- /dev/null +++ b/glibc/patches/glibc-fedora-localedata-rh61908.patch @@ -0,0 +1,38 @@ +* Tue Mar 26 2002 Jakub Jelinek jakub@redhat.com 2.2.5-28 +- add a couple of .ISO-8859-15 locales (#61908) + +diff -Nrup a/localedata/SUPPORTED b/localedata/SUPPORTED +--- a/localedata/SUPPORTED 2012-11-25 12:59:31.000000000 -0700 ++++ b/localedata/SUPPORTED 2012-11-26 12:58:43.298223018 -0700 +@@ -89,6 +89,7 @@ cy_GB.UTF-8/UTF-8 \ + cy_GB/ISO-8859-14 \ + da_DK.UTF-8/UTF-8 \ + da_DK/ISO-8859-1 \ ++da_DK.ISO-8859-15/ISO-8859-15 \ + de_AT.UTF-8/UTF-8 \ + de_AT/ISO-8859-1 \ + de_AT@euro/ISO-8859-15 \ +@@ -121,6 +122,7 @@ en_DK.UTF-8/UTF-8 \ + en_DK/ISO-8859-1 \ + en_GB.UTF-8/UTF-8 \ + en_GB/ISO-8859-1 \ ++en_GB.ISO-8859-15/ISO-8859-15 \ + en_HK.UTF-8/UTF-8 \ + en_HK/ISO-8859-1 \ + en_IE.UTF-8/UTF-8 \ +@@ -136,6 +138,7 @@ en_SG.UTF-8/UTF-8 \ + en_SG/ISO-8859-1 \ + en_US.UTF-8/UTF-8 \ + en_US/ISO-8859-1 \ ++en_US.ISO-8859-15/ISO-8859-15 \ + en_ZA.UTF-8/UTF-8 \ + en_ZA/ISO-8859-1 \ + en_ZM/UTF-8 \ +@@ -385,6 +388,7 @@ sv_FI/ISO-8859-1 \ + sv_FI@euro/ISO-8859-15 \ + sv_SE.UTF-8/UTF-8 \ + sv_SE/ISO-8859-1 \ ++sv_SE.ISO-8859-15/ISO-8859-15 \ + sw_KE/UTF-8 \ + sw_TZ/UTF-8 \ + szl_PL/UTF-8 \ diff --git a/glibc/patches/glibc-fedora-localedef.patch b/glibc/patches/glibc-fedora-localedef.patch new file mode 100644 index 0000000..ee1463a --- /dev/null +++ b/glibc/patches/glibc-fedora-localedef.patch @@ -0,0 +1,11 @@ +diff -Nrup a/localedata/Makefile b/localedata/Makefile +--- a/localedata/Makefile 2012-06-05 07:42:49.000000000 -0600 ++++ b/localedata/Makefile 2012-06-07 12:15:21.776318827 -0600 +@@ -211,6 +211,7 @@ $(INSTALL-SUPPORTED-LOCALES): install-lo + echo -n '...'; \ + input=`echo $$locale | sed 's/([^.]*)[^@]*(.*)/\1\2/'`; \ + $(LOCALEDEF) --alias-file=../intl/locale.alias \ ++ --no-archive \ + -i locales/$$input -c -f charmaps/$$charset \ + $(addprefix --prefix=,$(install_root)) $$locale; \ + echo ' done'; \ diff --git a/glibc/patches/glibc-fedora-locarchive.patch b/glibc/patches/glibc-fedora-locarchive.patch new file mode 100644 index 0000000..9a702af --- /dev/null +++ b/glibc/patches/glibc-fedora-locarchive.patch @@ -0,0 +1,51 @@ +This is a part of commit glibc-2.3.3-1492-ga891c7b, +needed for fedora/build-locale-archive.c only. + +diff -Nrup a/ChangeLog.17 b/ChangeLog.17 +--- a/ChangeLog.17 2012-06-05 07:42:49.000000000 -0600 ++++ b/ChangeLog.17 2012-06-07 12:15:21.564319619 -0600 +@@ -11818,6 +11829,10 @@ d2009-10-30 Ulrich Drepper <drepper@re + [BZ #4368] + * stdlib/stdlib.h: Remove obsolete part of comment for realpath. + ++2007-04-16 Jakub Jelinek jakub@redhat.com ++ ++ * locale/programs/locarchive.c (add_alias, insert_name): Remove static. ++ + 2007-04-16 Ulrich Drepper drepper@redhat.com + + [BZ #4364] +diff -Nrup a/locale/programs/locarchive.c b/locale/programs/locarchive.c +--- a/locale/programs/locarchive.c 2012-06-05 07:42:49.000000000 -0600 ++++ b/locale/programs/locarchive.c 2012-06-07 12:15:21.585319540 -0600 +@@ -252,9 +252,9 @@ oldlocrecentcmp (const void *a, const vo + /* forward decls for below */ + static uint32_t add_locale (struct locarhandle *ah, const char *name, + locale_data_t data, bool replace); +-static void add_alias (struct locarhandle *ah, const char *alias, +- bool replace, const char *oldname, +- uint32_t *locrec_offset_p); ++void add_alias (struct locarhandle *ah, const char *alias, ++ bool replace, const char *oldname, ++ uint32_t *locrec_offset_p); + + + static bool +@@ -635,7 +635,7 @@ close_archive (struct locarhandle *ah) + #include "../../intl/explodename.c" + #include "../../intl/l10nflist.c" + +-static struct namehashent * ++struct namehashent * + insert_name (struct locarhandle *ah, + const char *name, size_t name_len, bool replace) + { +@@ -693,7 +693,7 @@ insert_name (struct locarhandle *ah, + return &namehashtab[idx]; + } + +-static void ++void + add_alias (struct locarhandle *ah, const char *alias, bool replace, + const char *oldname, uint32_t *locrec_offset_p) + { diff --git a/glibc/patches/glibc-fedora-manual-dircategory.patch b/glibc/patches/glibc-fedora-manual-dircategory.patch new file mode 100644 index 0000000..f681620 --- /dev/null +++ b/glibc/patches/glibc-fedora-manual-dircategory.patch @@ -0,0 +1,20 @@ +From 4820b9175535e13df79ce816106016040014916e Mon Sep 17 00:00:00 2001 +From: Jakub Jelinek jakub@redhat.com +Date: Fri, 3 Nov 2006 16:31:21 +0000 +Subject: [PATCH] Change @dircategory. + +--- + manual/libc.texinfo | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +--- a/manual/libc.texinfo ++++ b/manual/libc.texinfo +@@ -7,7 +7,7 @@ + @include macros.texi + + @comment Tell install-info what to do. +-@dircategory Software libraries ++@dircategory Libraries + @direntry + * Libc: (libc). C library. + @end direntry diff --git a/glibc/patches/glibc-fedora-nis-rh188246.patch b/glibc/patches/glibc-fedora-nis-rh188246.patch new file mode 100644 index 0000000..9389901 --- /dev/null +++ b/glibc/patches/glibc-fedora-nis-rh188246.patch @@ -0,0 +1,21 @@ +From baba5d9461d4e8a581ac26fe4412ad783ffc73e7 Mon Sep 17 00:00:00 2001 +From: Jakub Jelinek jakub@redhat.com +Date: Mon, 1 May 2006 08:02:53 +0000 +Subject: [PATCH] Enable SETENT_BATCH_READ nis/nss option by default + +* Mon May 1 2006 Jakub Jelinek jakub@redhat.com 2.4.90-4 +- SETENT_BATCH_READ /etc/default/nss option for speeding up + some usages of NIS+ (#188246) + +diff --git a/nis/nss b/nis/nss +--- a/nis/nss ++++ b/nis/nss +@@ -25,7 +25,7 @@ + # memory with every getXXent() call. Otherwise each getXXent() call + # might result into a network communication with the server to get + # the next entry. +-#SETENT_BATCH_READ=TRUE ++SETENT_BATCH_READ=TRUE + # + # ADJUNCT_AS_SHADOW + # If set to TRUE, the passwd routines in the NIS NSS module will not diff --git a/glibc/patches/glibc-fedora-nptl-linklibc.patch b/glibc/patches/glibc-fedora-nptl-linklibc.patch new file mode 100644 index 0000000..350c350 --- /dev/null +++ b/glibc/patches/glibc-fedora-nptl-linklibc.patch @@ -0,0 +1,25 @@ +diff -Nrup a/nptl/Makefile b/nptl/Makefile +--- a/nptl/Makefile 2012-06-05 07:42:49.000000000 -0600 ++++ b/nptl/Makefile 2012-06-07 12:15:21.816318678 -0600 +@@ -529,15 +529,19 @@ $(addprefix $(objpfx), \ + $(tests) $(xtests) $(test-srcs))): $(objpfx)libpthread.so \ + $(objpfx)libpthread_nonshared.a + $(objpfx)tst-unload: $(common-objpfx)dlfcn/libdl.so +-# $(objpfx)../libc.so is used instead of $(common-objpfx)libc.so, ++# $(objpfx)linklibc.so is used instead of $(common-objpfx)libc.so, + # since otherwise libpthread.so comes before libc.so when linking. + $(addprefix $(objpfx), $(tests-reverse)): \ +- $(objpfx)../libc.so $(objpfx)libpthread.so \ ++ $(objpfx)linklibc.so $(objpfx)libpthread.so \ + $(objpfx)libpthread_nonshared.a + $(objpfx)../libc.so: $(common-objpfx)libc.so ; + $(addprefix $(objpfx),$(tests-static) $(xtests-static)): $(objpfx)libpthread.a + + $(objpfx)tst-atfork2.out: $(objpfx)tst-atfork2mod.so ++ ++$(objpfx)linklibc.so: $(common-objpfx)libc.so ++ ln -s ../libc.so $@ ++generated += libclink.so + else + $(addprefix $(objpfx),$(tests) $(test-srcs)): $(objpfx)libpthread.a + endif diff --git a/glibc/patches/glibc-fedora-nscd.patch b/glibc/patches/glibc-fedora-nscd.patch new file mode 100644 index 0000000..a26b928 --- /dev/null +++ b/glibc/patches/glibc-fedora-nscd.patch @@ -0,0 +1,12 @@ +diff -Nrup a/nscd/nscd.conf b/nscd/nscd.conf +--- a/nscd/nscd.conf 2012-06-05 07:42:49.000000000 -0600 ++++ b/nscd/nscd.conf 2012-06-07 12:15:21.818318670 -0600 +@@ -33,7 +33,7 @@ + # logfile /var/log/nscd.log + # threads 4 + # max-threads 32 +-# server-user nobody ++ server-user nscd + # stat-user somebody + debug-level 0 + # reload-count 5 diff --git a/glibc/patches/glibc-fedora-ppc-unwind.patch b/glibc/patches/glibc-fedora-ppc-unwind.patch new file mode 100644 index 0000000..7e9b7ab --- /dev/null +++ b/glibc/patches/glibc-fedora-ppc-unwind.patch @@ -0,0 +1,20 @@ +glibc-2.3.3-1478-g37582bc + +* Thu Nov 30 2006 Jakub Jelinek jakub@redhat.com 2.5.90-9 +- on ppc64 build __libc_start_main without unwind info, + as it breaks MD_FROB_UPDATE_CONTEXT (#217729, #217775; in the + future that could be fixable just by providing .cfi_undefined r2 + in __libc_start_main instead) + +diff -Nrup a/sysdeps/powerpc/powerpc64/Makefile b/sysdeps/powerpc/powerpc64/Makefile +--- a/sysdeps/powerpc/powerpc64/Makefile 2012-06-05 07:42:49.000000000 -0600 ++++ b/sysdeps/powerpc/powerpc64/Makefile 2012-06-07 12:15:21.828318633 -0600 +@@ -35,6 +35,8 @@ CFLAGS-rtld-memmove.os = $(no-special-re + CFLAGS-rtld-memchr.os = $(no-special-regs) + CFLAGS-rtld-strnlen.os = $(no-special-regs) + ++CFLAGS-libc-start.c += -fno-asynchronous-unwind-tables ++ + ifeq ($(subdir),csu) + sysdep_routines += hp-timing + elide-routines.os += hp-timing diff --git a/glibc/patches/glibc-fedora-pt_chown.patch b/glibc/patches/glibc-fedora-pt_chown.patch new file mode 100644 index 0000000..f64f449 --- /dev/null +++ b/glibc/patches/glibc-fedora-pt_chown.patch @@ -0,0 +1,57 @@ +From ee3d4021aaaeacff7cf2addcdaa48859fffba2aa Mon Sep 17 00:00:00 2001 +From: Andreas Schwab schwab@redhat.com +Date: Thu, 3 Feb 2011 15:45:02 +0100 +Subject: [PATCH] Replace setuid by file capabilities + +* login/programs/pt_chown.c (main): Check for valid file +descriptor instead of privileges. Be careful to drop all +capabilities when not needed. + +--- + ChangeLog | 6 ++++++ + login/programs/pt_chown.c | 14 +++++++++----- + 3 files changed, 16 insertions(+), 6 deletions(-) + +--- a/login/programs/pt_chown.c ++++ b/login/programs/pt_chown.c +@@ -28,6 +28,7 @@ + #include <string.h> + #include <sys/stat.h> + #include <unistd.h> ++#include <fcntl.h> + #ifdef HAVE_LIBCAP + # include <sys/capability.h> + # include <sys/prctl.h> +@@ -142,7 +143,7 @@ main (int argc, char *argv[]) + uid_t uid = getuid (); + int remaining; + +- if (argc == 1 && euid == 0) ++ if (argc == 1 && fcntl (PTY_FILENO, F_GETFD) == 0) + { + #ifdef HAVE_LIBCAP + /* Drop privileges. */ +@@ -175,6 +176,13 @@ main (int argc, char *argv[]) + + /* We aren't going to be using privileges, so drop them right now. */ + setuid (uid); ++#ifdef HAVE_LIBCAP ++ cap_t caps = cap_init (); ++ if (caps == NULL) ++ error (1, errno, "cap_init"); ++ cap_set_proc (caps); ++ cap_free (caps); ++#endif + + /* Set locale via LC_ALL. */ + setlocale (LC_ALL, ""); +@@ -194,9 +202,5 @@ main (int argc, char *argv[]) + return EXIT_FAILURE; + } + +- /* Check if we are properly installed. */ +- if (euid != 0) +- error (FAIL_EXEC, 0, gettext ("needs to be installed setuid `root'")); +- + return EXIT_SUCCESS; + } diff --git a/glibc/patches/glibc-fedora-regcomp-sw11561.patch b/glibc/patches/glibc-fedora-regcomp-sw11561.patch new file mode 100644 index 0000000..0edc04f --- /dev/null +++ b/glibc/patches/glibc-fedora-regcomp-sw11561.patch @@ -0,0 +1,147 @@ +From c1b97d6d896b1f22fdf5d28471ef7859ec840a57 Mon Sep 17 00:00:00 2001 +From: Andreas Schwab schwab@redhat.com +Date: Wed, 1 Sep 2010 17:26:15 +0200 +Subject: [PATCH] Fix handling of collating symbols in regexps + +[BZ #11561] +* posix/regcomp.c (parse_bracket_exp): When looking up collating +elements compare against the byte sequence of it, not its name. + +--- + ChangeLog | 4 +++ + posix/regcomp.c | 72 ++++++++++++++++++++---------------------------------- + 2 files changed, 31 insertions(+), 45 deletions(-) + +--- a/posix/regcomp.c ++++ b/posix/regcomp.c +@@ -2772,40 +2772,29 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token, + + /* Local function for parse_bracket_exp used in _LIBC environement. + Seek the collating symbol entry correspondings to NAME. +- Return the index of the symbol in the SYMB_TABLE. */ ++ Return the index of the symbol in the SYMB_TABLE, ++ or -1 if not found. */ + + auto inline int32_t + __attribute ((always_inline)) +- seek_collating_symbol_entry (name, name_len) +- const unsigned char *name; +- size_t name_len; ++ seek_collating_symbol_entry (const unsigned char *name, size_t name_len) + { +- int32_t hash = elem_hash ((const char *) name, name_len); +- int32_t elem = hash % table_size; +- if (symb_table[2 * elem] != 0) +- { +- int32_t second = hash % (table_size - 2) + 1; +- +- do +- { +- /* First compare the hashing value. */ +- if (symb_table[2 * elem] == hash +- /* Compare the length of the name. */ +- && name_len == extra[symb_table[2 * elem + 1]] +- /* Compare the name. */ +- && memcmp (name, &extra[symb_table[2 * elem + 1] + 1], +- name_len) == 0) +- { +- /* Yep, this is the entry. */ +- break; +- } ++ int32_t elem; + +- /* Next entry. */ +- elem += second; +- } +- while (symb_table[2 * elem] != 0); +- } +- return elem; ++ for (elem = 0; elem < table_size; elem++) ++ if (symb_table[2 * elem] != 0) ++ { ++ int32_t idx = symb_table[2 * elem + 1]; ++ /* Skip the name of collating element name. */ ++ idx += 1 + extra[idx]; ++ if (/* Compare the length of the name. */ ++ name_len == extra[idx] ++ /* Compare the name. */ ++ && memcmp (name, &extra[idx + 1], name_len) == 0) ++ /* Yep, this is the entry. */ ++ return elem; ++ } ++ return -1; + } + + /* Local function for parse_bracket_exp used in _LIBC environment. +@@ -2814,8 +2803,7 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token, + + auto inline unsigned int + __attribute ((always_inline)) +- lookup_collation_sequence_value (br_elem) +- bracket_elem_t *br_elem; ++ lookup_collation_sequence_value (bracket_elem_t *br_elem) + { + if (br_elem->type == SB_CHAR) + { +@@ -2843,7 +2831,7 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token, + int32_t elem, idx; + elem = seek_collating_symbol_entry (br_elem->opr.name, + sym_name_len); +- if (symb_table[2 * elem] != 0) ++ if (elem != -1) + { + /* We found the entry. */ + idx = symb_table[2 * elem + 1]; +@@ -2861,7 +2849,7 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token, + /* Return the collation sequence value. */ + return *(unsigned int *) (extra + idx); + } +- else if (symb_table[2 * elem] == 0 && sym_name_len == 1) ++ else if (sym_name_len == 1) + { + /* No valid character. Match it as a single byte + character. */ +@@ -2883,11 +2871,8 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token, + + auto inline reg_errcode_t + __attribute ((always_inline)) +- build_range_exp (sbcset, mbcset, range_alloc, start_elem, end_elem) +- re_charset_t *mbcset; +- int *range_alloc; +- bitset_t sbcset; +- bracket_elem_t *start_elem, *end_elem; ++ build_range_exp (bitset_t sbcset, re_charset_t *mbcset, int *range_alloc, ++ bracket_elem_t *start_elem, bracket_elem_t *end_elem) + { + unsigned int ch; + uint32_t start_collseq; +@@ -2966,25 +2951,22 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token, + + auto inline reg_errcode_t + __attribute ((always_inline)) +- build_collating_symbol (sbcset, mbcset, coll_sym_alloc, name) +- re_charset_t *mbcset; +- int *coll_sym_alloc; +- bitset_t sbcset; +- const unsigned char *name; ++ build_collating_symbol (bitset_t sbcset, re_charset_t *mbcset, ++ int *coll_sym_alloc, const unsigned char *name) + { + int32_t elem, idx; + size_t name_len = strlen ((const char *) name); + if (nrules != 0) + { + elem = seek_collating_symbol_entry (name, name_len); +- if (symb_table[2 * elem] != 0) ++ if (elem != -1) + { + /* We found the entry. */ + idx = symb_table[2 * elem + 1]; + /* Skip the name of collating element name. */ + idx += 1 + extra[idx]; + } +- else if (symb_table[2 * elem] == 0 && name_len == 1) ++ else if (name_len == 1) + { + /* No valid character, treat it as a normal + character. */ diff --git a/glibc/patches/glibc-fedora-streams-rh436349.patch b/glibc/patches/glibc-fedora-streams-rh436349.patch new file mode 100644 index 0000000..44b9195 --- /dev/null +++ b/glibc/patches/glibc-fedora-streams-rh436349.patch @@ -0,0 +1,28 @@ +This is part of commit glibc-2.3.3-1564-gd0b6ac6 + +* Fri Mar 14 2008 Jakub Jelinek jakub@redhat.com 2.7.90-11 +- remove <stropts.h>, define _XOPEN_STREAMS -1 (#436349) + +diff -Nrup a/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h b/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h +--- a/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h 2012-06-05 07:42:49.000000000 -0600 ++++ b/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h 2012-06-07 12:15:21.817318674 -0600 +@@ -188,4 +188,7 @@ + /* Typed memory objects are not available. */ + #define _POSIX_TYPED_MEMORY_OBJECTS -1 + ++/* Streams are not available. */ ++#define _XOPEN_STREAMS -1 ++ + #endif /* bits/posix_opt.h */ +diff -Nrup a/streams/Makefile b/streams/Makefile +--- a/streams/Makefile 2012-06-05 07:42:49.000000000 -0600 ++++ b/streams/Makefile 2012-06-07 12:15:21.824318649 -0600 +@@ -20,7 +20,7 @@ + # + subdir := streams + +-headers = stropts.h sys/stropts.h bits/stropts.h bits/xtitypes.h ++#headers = stropts.h sys/stropts.h bits/stropts.h bits/xtitypes.h + routines = isastream getmsg getpmsg putmsg putpmsg fattach fdetach + + include ../Rules diff --git a/glibc/patches/glibc-fedora-uname-getrlimit.patch b/glibc/patches/glibc-fedora-uname-getrlimit.patch new file mode 100644 index 0000000..86383d4 --- /dev/null +++ b/glibc/patches/glibc-fedora-uname-getrlimit.patch @@ -0,0 +1,61 @@ +From cde99cd2b7b16a6113acb054e89d490047932a9f Mon Sep 17 00:00:00 2001 +From: Andreas Schwab schwab@redhat.com +Date: Thu, 8 Apr 2010 11:18:26 +0200 +Subject: [PATCH] Don't call uname or getrlimit in libpthread init function + +* sysdeps/unix/sysv/linux/i386/Versions: Export __uname under +GLIBC_PRIVATE. +* nptl/Versions: Export __getrlimit under GLIBC_PRIVATE. +* sysdeps/unix/sysv/linux/i386/smp.h: Call __uname instead of uname. +* nptl/nptl-init.c: Call __getrlimit instead of getrlimit. + +--- + ChangeLog | 8 ++++++++ + nptl/Versions | 1 + + nptl/nptl-init.c | 2 +- + nptl/sysdeps/unix/sysv/linux/i386/Versions | 6 ++++++ + nptl/sysdeps/unix/sysv/linux/i386/smp.h | 2 +- + 5 files changed, 17 insertions(+), 2 deletions(-) + create mode 100644 nptl/sysdeps/unix/sysv/linux/i386/Versions + +--- a/nptl/Version ++++ b/nptl/Versions +@@ -30,6 +30,7 @@ libc { + __libc_alloca_cutoff; + # Internal libc interface to libpthread + __libc_dl_error_tsd; ++ __getrlimit; + } + } + +--- a/nptl/nptl-init.c ++++ b/nptl/nptl-init.c +@@ -414,7 +414,7 @@ __pthread_initialize_minimal_internal (void) + /* Determine the default allowed stack size. This is the size used + in case the user does not specify one. */ + struct rlimit limit; +- if (getrlimit (RLIMIT_STACK, &limit) != 0 ++ if (__getrlimit (RLIMIT_STACK, &limit) != 0 + || limit.rlim_cur == RLIM_INFINITY) + /* The system limit is not usable. Use an architecture-specific + default. */ +--- a/nptl/sysdeps/unix/sysv/linux/i386/Versions ++++ b/nptl/sysdeps/unix/sysv/linux/i386/Versions +@@ -0,0 +1,6 @@ ++libc { ++ GLIBC_PRIVATE { ++ # Internal libc interface to libpthread ++ __uname; ++ } ++} +--- a/nptl/sysdeps/unix/sysv/linux/i386/smp.h ++++ b/nptl/sysdeps/unix/sysv/linux/i386/smp.h +@@ -36,7 +36,7 @@ is_smp_system (void) + char *cp; + + /* Try reading the number using `sysctl' first. */ +- if (uname (&u.uts) == 0) ++ if (__uname (&u.uts) == 0) + cp = u.uts.version; + else + { diff --git a/glibc/patches/glibc-fedora.patch b/glibc/patches/glibc-fedora.patch deleted file mode 100644 index 7b58d3b..0000000 --- a/glibc/patches/glibc-fedora.patch +++ /dev/null @@ -1,2395 +0,0 @@ -diff -Nrup a/ChangeLog b/ChangeLog ---- a/ChangeLog 2012-06-05 07:42:49.000000000 -0600 -+++ b/ChangeLog 2012-06-07 12:15:21.516319798 -0600 -@@ -12178,6 +12178,11 @@ - - * sysdeps/mach/hurd/sys/param.h (DEV_BSIZE): New macro. - -+2011-09-02 Andreas Schwab schwab@redhat.com -+ -+ * nscd/selinux.c (avc_create_thread): Set PR_SET_KEEPCAPS before -+ spawning AVC thread. -+ - 2011-09-08 Andreas Schwab schwab@redhat.com - - * elf/dl-load.c (lose): Check for non-null L. -@@ -12440,6 +12445,11 @@ - * sysdeps/i386/dl-trampoline.S (_dl_runtime_profile): Fix cfi - directive. - -+2011-08-31 Andreas Schwab schwab@redhat.com -+ -+ * include/link.h (FORCED_DYNAMIC_TLS_OFFSET) [NO_TLS_OFFSET == 0]: -+ Change to -1. -+ - 2011-08-24 David S. Miller davem@davemloft.net - - * sysdeps/sparc/sparc64/strcmp.S: Rewrite. -@@ -13245,6 +13255,14 @@ - * config.make.in: Likewise. - * malloc/Makefile: Likewise. - -+2011-06-28 Andreas Schwab schwab@redhat.com -+ -+ * iconvdata/gb18030.c: Update tables. -+ (BODY for FROM_LOOP): Handle non-BMP characters specially. -+ -+ * sysdeps/posix/getaddrinfo.c (gaih_inet): Don't use gethostbyaddr -+ to determine canonical name. -+ - 2011-06-27 Andreas Schwab schwab@redhat.com - - * iconvdata/gb18030.c (BODY for TO_LOOP): Fix encoding of non-BMP -@@ -13376,6 +13394,10 @@ - - * inet/getnetgrent_r.c: Use DL_CALL_FCT in several places. - -+2011-06-21 Andreas Schwab schwab@redhat.com -+ -+ * iconvdata/gb18030.c: Regenerate tables. -+ - 2011-06-20 David S. Miller davem@davemloft.net - - * sysdeps/sparc/sparc32/dl-plt.h: Protect against multiple -@@ -13998,6 +14020,13 @@ - * libio/Makefile (tests): Add bug-fclose1. - * libio/bug-fclose1.c: New file. - -+2011-05-13 Andreas Schwab schwab@redhat.com -+ -+ * elf/dl-load.c (is_dst): Remove parameter secure, all callers -+ changed. Move check for valid use of $ORIGIN ... -+ (_dl_dst_substitute): ... here. Reset check_for_trusted when a -+ path element is skipped. -+ - 2011-05-12 Ulrich Drepper drepper@gmail.com - - [BZ #12511] -@@ -14275,13 +14304,6 @@ - * stdlib/bug-getcontext.c: New file. - * stdlib/Makefile: Add rules to build and run bug-getcontext. - --2011-04-13 Andreas Krebbel Andreas.Krebbel@de.ibm.com -- -- * sysdeps/s390/s390-64/utf16-utf32-z9.c: Wrap the z9-109 -- instructions into .machine "z9-109". -- * sysdeps/s390/s390-64/utf8-utf16-z9.c: Likewise. -- * sysdeps/s390/s390-64/utf8-utf32-z9.c: Likewise. -- - 2011-04-11 Andreas Krebbel Andreas.Krebbel@de.ibm.com - - * sysdeps/s390/s390-32/elf/start.S (_start): Skip extra zeroes -@@ -14579,6 +14601,10 @@ - $LDFLAGS and -nostdlib -nostartfiles to linking step. Change main - to _start. - -+2011-03-18 Andreas Schwab schwab@redhat.com -+ -+ * elf/ldd.bash.in: Never run file directly. -+ - 2011-03-06 Ulrich Drepper drepper@gmail.com - - * elf/dl-load.c (_dl_map_object): If we are looking for the first -@@ -14795,6 +14821,12 @@ - * shadow/sgetspent.c: Check return value of __sgetspent_r instead - of errno. - -+2011-02-03 Andreas Schwab schwab@redhat.com -+ -+ * login/programs/pt_chown.c (main): Check for valid file -+ descriptor instead of privileges. Be careful to drop all -+ capabilities when not needed. -+ - 2011-01-19 Ulrich Drepper drepper@gmail.com - - [BZ #11724] -@@ -15482,6 +15514,19 @@ - * sysdeps/unix/sysv/linux/internal_statvfs.c (INTERNAL_STATVFS): - Mask out sign-bit copies when constructing f_fsid. - -+2010-09-27 Andreas Schwab schwab@redhat.com -+ -+ [BZ #11561] -+ * posix/regcomp.c (parse_bracket_exp): When looking up collating -+ elements compare against the byte sequence of it, not its name. -+ -+ [BZ #6530] -+ * stdio-common/vfprintf.c (process_string_arg): Revert 2000-07-22 -+ change. -+ -+ * nss/nss_files/files-XXX.c (internal_getent): Declare linebuflen -+ as size_t. -+ - 2010-09-24 Petr Baudis pasky@suse.cz - - * debug/stack_chk_fail_local.c: Add missing licence exception. -@@ -16274,6 +16319,17 @@ - call returning > 0 value. - * sysdeps/unix/sysv/linux/getlogin.c (getlogin): Likewise. - -+2010-07-01 Andreas Schwab schwab@redhat.com -+ -+ * include/sys/resource.h (__getrlimit): Add hidden proto. -+ * sysdeps/unix/sysv/linux/i386/getrlimit.c: Add libc_hidden_weak. -+ * sysdeps/mach/hurd/getrlimit.c: Add libc_hidden_def. -+ * resource/getrlimit.c: Likewise. -+ -+2010-06-21 Andreas Schwab schwab@redhat.com -+ -+ * sysdeps/i386/i686/Makefile: Don't pass -mtune to assembler. -+ - 2010-06-07 Andreas Schwab schwab@redhat.com - - * dlfcn/Makefile: Remove explicit dependencies on libc.so and -@@ -16326,6 +16382,21 @@ - * hurd/hurd/fd.h (__file_name_lookup_at): Update comment. - * sysdeps/mach/hurd/linkat.c (linkat): Pass O_NOLINK in FLAGS. - -+2010-06-11 Andreas Schwab schwab@redhat.com -+ -+ * elf/rtld.c (_dl_starting_up): Always define. -+ (dl_main): Always set _dl_starting_up. -+ * elf/dl-support.c (_dl_starting_up): Always define. -+ * elf/dl-init.c (_dl_init): Always clear _dl_starting_up. -+ -+2010-06-10 Andreas Schwab schwab@redhat.com -+ -+ * sysdeps/unix/sysv/linux/i386/Versions: Export __uname under -+ GLIBC_PRIVATE. -+ * nptl/Versions: Export __getrlimit under GLIBC_PRIVATE. -+ * sysdeps/unix/sysv/linux/i386/smp.h: Call __uname instead of uname. -+ * nptl/nptl-init.c: Call __getrlimit instead of getrlimit. -+ - 2010-05-28 Luis Machado luisgpm@br.ibm.com - - * sysdeps/powerpc/powerpc32/power7/memcpy.S: Exchange srdi for srwi. -diff -Nrup a/ChangeLog.15 b/ChangeLog.15 ---- a/ChangeLog.15 2012-06-05 07:42:49.000000000 -0600 -+++ b/ChangeLog.15 2012-06-07 12:15:21.518319790 -0600 -@@ -477,6 +477,14 @@ - - 2004-11-26 Jakub Jelinek jakub@redhat.com - -+ * posix/Makefile (generated: Add getconf.speclist. -+ ($(inst_libexecdir)/getconf): Use getconf.speclist instead of -+ getconf output. -+ ($(objpfx)getconf.speclist): New rule. -+ * posix/getconf.speclist.h: New file. -+ -+2004-11-26 Jakub Jelinek jakub@redhat.com -+ - * sysdeps/generic/unsecvars.h (UNSECURE_ENVVARS): Add GETCONF_DIR. - - 2004-11-26 Kaz Kojima kkojima@rr.iij4u.or.jp -@@ -3182,6 +3190,17 @@ - before return type. - * locale/localename.c (__current_locale_name): Likewise. - -+2004-08-31 Jakub Jelinek jakub@redhat.com -+ -+ * elf/ldconfig.c (parse_conf): Add prefix argument, prepend it -+ before arguments to add_dir and pass to parse_conf_include. -+ (parse_conf_include): Add prefix argument, pass it down to -+ parse_conf. -+ (main): Call arch_startup. Adjust parse_conf caller. -+ Call add_arch_dirs. -+ * sysdeps/generic/dl-cache.h (arch_startup, add_arch_dirs): Define. -+ * sysdeps/unix/sysv/linux/i386/dl-cache.h: New file. -+ - 2004-08-30 Roland McGrath roland@frob.com - - * scripts/extract-abilist.awk: If `lastversion' variable defined, omit -diff -Nrup a/ChangeLog.16 b/ChangeLog.16 ---- a/ChangeLog.16 2012-06-05 07:42:49.000000000 -0600 -+++ b/ChangeLog.16 2012-06-07 12:15:21.523319772 -0600 -@@ -2042,6 +2042,9 @@ - (__MATHDECL_2): Use __REDIRECT_NTH instead of __REDIRECT - followed by __THROW. - -+ * sysdeps/unix/sysv/linux/futimesat.c (futimesat): If -+ file == NULL, use __futimes unconditionally. -+ - 2006-02-02 Ulrich Drepper drepper@redhat.com - - * sysdeps/unix/sysv/linux/futimesat.c [__NR_futimesat] -@@ -2101,6 +2104,11 @@ - * sysdeps/ieee754/ldbl-128/s_llrintl.c (__llrintl): Fix a typo. - * sysdeps/s390/fpu/libm-test-ulps: Remove llrint ulps. - -+2006-01-30 Jakub Jelinek jakub@redhat.com -+ -+ * include/bits/stdlib-ldbl.h: New file. -+ * include/bits/wchar-ldbl.h: New file. -+ - 2006-01-19 Thomas Schwinge tschwinge@gnu.org - - * libio/genops.c: Include <stdbool.h>. -diff -Nrup a/ChangeLog.17 b/ChangeLog.17 ---- a/ChangeLog.17 2012-06-05 07:42:49.000000000 -0600 -+++ b/ChangeLog.17 2012-06-07 12:15:21.564319619 -0600 -@@ -256,6 +256,12 @@ - - * Makerules (libc-abis): Fix search for libc-abis in add-ons. - -+2010-04-06 Ulrich Drepper drepper@redhat.com -+ -+ * sysdeps/posix/getaddrinfo.c (default_scopes): Assign global -+ scope to RFC 1918 addresses. -+ * posix/gai.conf: Document difference from RFC 3484. -+ - 2010-04-05 Thomas Schwinge thomas@schwinge.name - - * sysdeps/gnu/unwind-resume.c: New, moved from nptl/sysdeps/pthread/. -@@ -2953,6 +2959,11 @@ d2009-10-30 Ulrich Drepper <drepper@re - * sysdeps/generic/ldsodefs.h (struct rtld_global): The map element in - the unique symbol hash table should not be const. - -+2009-07-22 Jakub Jelinek jakub@redhat.com -+ -+ * Makeconfig (ASFLAGS): Append $(sysdep-ASFLAGS). -+ * sysdeps/i386/Makefile (sysdep-ASFLAGS): Add -U__i686. -+ - 2009-07-21 Ulrich Drepper drepper@redhat.com - - * sysdeps/x86_64/multiarch/strstr.c: Minor cleanups. Remove -@@ -11818,6 +11829,10 @@ d2009-10-30 Ulrich Drepper <drepper@re - [BZ #4368] - * stdlib/stdlib.h: Remove obsolete part of comment for realpath. - -+2007-04-16 Jakub Jelinek jakub@redhat.com -+ -+ * locale/programs/locarchive.c (add_alias, insert_name): Remove static. -+ - 2007-04-16 Ulrich Drepper drepper@redhat.com - - [BZ #4364] -@@ -13075,6 +13090,15 @@ d2009-10-30 Ulrich Drepper <drepper@re - separators also if no non-zero digits found. - * stdlib/Makefile (tests): Add tst-strtod3. - -+2006-12-10 Jakub Jelinek jakub@redhat.com -+ -+ * sysdeps/unix/sysv/linux/netlinkaccess.h: Include linux/if_addr.h -+ if IFA_MAX is not defined. -+ (IFA_RTA, IFA_PAYLOAD, IFLA_RTA, IFLA_PAYLOAD): Define if not -+ defined. -+ * sysdeps/unix/sysv/linux/check_pf.c: Include netlinkaccess.h -+ instead of asm/types.h, linux/netlink.h and linux/rtnetlink.h. -+ - 2006-12-09 Ulrich Drepper drepper@redhat.com - - [BZ #3632] -diff -Nrup a/Makeconfig b/Makeconfig ---- a/Makeconfig 2012-06-05 07:42:49.000000000 -0600 -+++ b/Makeconfig 2012-06-07 12:15:21.568319604 -0600 -@@ -753,12 +753,12 @@ endif - # The assembler can generate debug information too. - ifndef ASFLAGS - ifeq ($(have-cpp-asm-debuginfo),yes) --ASFLAGS := $(filter -g% -fdebug-prefix-map=%,$(CFLAGS)) -+ASFLAGS = $(filter -g% -fdebug-prefix-map=%,$(CFLAGS)) - else --ASFLAGS := -+ASFLAGS = - endif - endif --ASFLAGS += $(ASFLAGS-config) $(asflags-cpu) -+ASFLAGS += $(ASFLAGS-config) $(asflags-cpu) $(sysdep-ASFLAGS) - - ifndef BUILD_CC - BUILD_CC = $(CC) -diff -Nrup a/NEWS b/NEWS ---- a/NEWS 2012-06-05 07:42:49.000000000 -0600 -+++ b/NEWS 2012-06-07 12:15:21.569319601 -0600 -@@ -196,16 +196,6 @@ Version 2.14 - 12724, 12734, 12738, 12746, 12766, 12775, 12777, 12782, 12788, 12792, - 12795, 12811, 12813, 12814, 12841 - --* The RPC implementation in libc is obsoleted. Old programs keep working -- but new programs cannot be linked with the routines in libc anymore. -- Programs in need of RPC functionality must be linked against TI-RPC. -- The TI-RPC implementation is IPv6 enabled and there are other benefits. -- -- Visible changes of this change include (obviously) the inability to link -- programs using RPC functions without referencing the TI-RPC library and the -- removal of the RPC headers from the glibc headers. -- Implemented by Ulrich Drepper. -- - * New Linux interfaces: clock_adjtime, name_to_handle_at, open_by_handle_at, - syncfs, setns, sendmmsg - -diff -Nrup a/csu/elf-init.c b/csu/elf-init.c ---- a/csu/elf-init.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/csu/elf-init.c 2012-06-07 12:15:21.570319597 -0600 -@@ -63,6 +63,23 @@ extern void (*__init_array_end []) (int, - extern void (*__fini_array_start []) (void) attribute_hidden; - extern void (*__fini_array_end []) (void) attribute_hidden; - -+#if defined HAVE_VISIBILITY_ATTRIBUTE \ -+ && (defined SHARED || defined LIBC_NONSHARED) -+# define hidden_undef_2(x) #x -+# define hidden_undef_1(x) hidden_undef_2 (x) -+# define hidden_undef(x) \ -+ __asm (hidden_undef_1 (ASM_GLOBAL_DIRECTIVE) " " #x); \ -+ __asm (".hidden " #x); -+#else -+# define hidden_undef(x) -+#endif -+ -+hidden_undef (__preinit_array_start) -+hidden_undef (__preinit_array_end) -+hidden_undef (__init_array_start) -+hidden_undef (__init_array_end) -+hidden_undef (__fini_array_start) -+hidden_undef (__fini_array_end) - - /* These function symbols are provided for the .init/.fini section entry - points automagically by the linker. */ -diff -Nrup a/debug/tst-chk1.c b/debug/tst-chk1.c ---- a/debug/tst-chk1.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/debug/tst-chk1.c 2012-06-07 12:15:21.571319593 -0600 -@@ -16,6 +16,9 @@ - License along with the GNU C Library; if not, see - http://www.gnu.org/licenses/. */ - -+/* Hack: make sure GCC doesn't know __chk_fail () will not return. */ -+#define __noreturn__ -+ - #include <assert.h> - #include <fcntl.h> - #include <locale.h> -@@ -244,7 +247,7 @@ do_test (void) - if (memcmp (a.buf1, "aabcdabcjj", 10)) - FAIL (); - --#if __USE_FORTIFY_LEVEL < 2 -+#if __USE_FORTIFY_LEVEL < 2 || !__GNUC_PREREQ (4, 0) - /* The following tests are supposed to crash with -D_FORTIFY_SOURCE=2 - and sufficient GCC support, as the string operations overflow - from a.buf1 into a.buf2. */ -@@ -359,7 +362,7 @@ do_test (void) - memset (a.buf1 + 9, 'j', l0 + 2); - CHK_FAIL_END - --# if __USE_FORTIFY_LEVEL >= 2 -+# if __USE_FORTIFY_LEVEL >= 2 && __GNUC_PREREQ (4, 0) - # define O 0 - # else - # define O 1 -diff -Nrup a/elf/Makefile b/elf/Makefile ---- a/elf/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/elf/Makefile 2012-06-07 12:15:21.572319589 -0600 -@@ -50,6 +50,7 @@ include ../Makeconfig - ifeq ($(unwind-find-fde),yes) - routines += unwind-dw2-fde-glibc - shared-only-routines += unwind-dw2-fde-glibc -+CFLAGS-unwind-dw2-fde-glibc.c += -fno-strict-aliasing - endif - - before-compile = $(objpfx)trusted-dirs.h -diff -Nrup a/elf/dl-init.c b/elf/dl-init.c ---- a/elf/dl-init.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/elf/dl-init.c 2012-06-07 12:15:21.573319585 -0600 -@@ -23,11 +23,9 @@ - /* Type of the initializer. */ - typedef void (*init_t) (int, char **, char **); - --#ifndef HAVE_INLINED_SYSCALLS - /* Flag, nonzero during startup phase. */ - extern int _dl_starting_up; - extern int _dl_starting_up_internal attribute_hidden; --#endif - - - static void -@@ -132,9 +130,7 @@ _dl_init (struct link_map *main_map, int - while (i-- > 0) - call_init (main_map->l_initfini[i], argc, argv, env); - --#ifndef HAVE_INLINED_SYSCALLS - /* Finished starting up. */ - INTUSE(_dl_starting_up) = 0; --#endif - } - INTDEF (_dl_init) -diff -Nrup a/elf/dl-load.c b/elf/dl-load.c ---- a/elf/dl-load.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/elf/dl-load.c 2012-06-07 12:15:21.575319577 -0600 -@@ -249,8 +249,7 @@ is_trusted_path_normalize (const char *p - - - static size_t --is_dst (const char *start, const char *name, const char *str, -- int is_path, int secure) -+is_dst (const char *start, const char *name, const char *str, int is_path) - { - size_t len; - bool is_curly = false; -@@ -279,12 +278,6 @@ is_dst (const char *start, const char *n - && (!is_path || name[len] != ':')) - return 0; - -- if (__builtin_expect (secure, 0) -- && ((name[len] != '\0' && name[len] != '/' -- && (!is_path || name[len] != ':')) -- || (name != start + 1 && (!is_path || name[-2] != ':')))) -- return 0; -- - return len; - } - -@@ -299,13 +292,10 @@ _dl_dst_count (const char *name, int is_ - { - size_t len; - -- /* $ORIGIN is not expanded for SUID/GUID programs (except if it -- is $ORIGIN alone) and it must always appear first in path. */ - ++name; -- if ((len = is_dst (start, name, "ORIGIN", is_path, -- INTUSE(__libc_enable_secure))) != 0 -- || (len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0 -- || (len = is_dst (start, name, "LIB", is_path, 0)) != 0) -+ if ((len = is_dst (start, name, "ORIGIN", is_path)) != 0 -+ || (len = is_dst (start, name, "PLATFORM", is_path)) != 0 -+ || (len = is_dst (start, name, "LIB", is_path)) != 0) - ++cnt; - - name = strchr (name + len, '$'); -@@ -338,9 +328,16 @@ _dl_dst_substitute (struct link_map *l, - size_t len; - - ++name; -- if ((len = is_dst (start, name, "ORIGIN", is_path, -- INTUSE(__libc_enable_secure))) != 0) -+ if ((len = is_dst (start, name, "ORIGIN", is_path)) != 0) - { -+ /* For SUID/GUID programs $ORIGIN must always appear -+ first in a path element. */ -+ if (__builtin_expect (INTUSE(__libc_enable_secure), 0) -+ && ((name[len] != '\0' && name[len] != '/' -+ && (!is_path || name[len] != ':')) -+ || (name != start + 1 && (!is_path || name[-2] != ':')))) -+ repl = (const char *) -1; -+ else - #ifndef SHARED - if (l == NULL) - repl = _dl_get_origin (); -@@ -351,9 +348,9 @@ _dl_dst_substitute (struct link_map *l, - check_for_trusted = (INTUSE(__libc_enable_secure) - && l->l_type == lt_executable); - } -- else if ((len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0) -+ else if ((len = is_dst (start, name, "PLATFORM", is_path)) != 0) - repl = GLRO(dl_platform); -- else if ((len = is_dst (start, name, "LIB", is_path, 0)) != 0) -+ else if ((len = is_dst (start, name, "LIB", is_path)) != 0) - repl = DL_DST_LIB; - - if (repl != NULL && repl != (const char *) -1) -@@ -373,6 +370,7 @@ _dl_dst_substitute (struct link_map *l, - element, but keep an empty element at the end. */ - if (wp == result && is_path && *name == ':' && name[1] != '\0') - ++name; -+ check_for_trusted = false; - } - else - /* No DST we recognize. */ -diff -Nrup a/elf/dl-support.c b/elf/dl-support.c ---- a/elf/dl-support.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/elf/dl-support.c 2012-06-07 12:15:21.576319573 -0600 -@@ -81,10 +81,8 @@ unsigned long long _dl_load_adds; - create a fake scope containing nothing. */ - struct r_scope_elem _dl_initial_searchlist; - --#ifndef HAVE_INLINED_SYSCALLS - /* Nonzero during startup. */ - int _dl_starting_up = 1; --#endif - - /* Random data provided by the kernel. */ - void *_dl_random; -diff -Nrup a/elf/ldconfig.c b/elf/ldconfig.c ---- a/elf/ldconfig.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/elf/ldconfig.c 2012-06-07 12:15:21.577319570 -0600 -@@ -1033,17 +1033,19 @@ search_dirs (void) - - - static void parse_conf_include (const char *config_file, unsigned int lineno, -- bool do_chroot, const char *pattern); -+ const char *prefix, bool do_chroot, -+ const char *pattern); - - /* Parse configuration file. */ - static void --parse_conf (const char *filename, bool do_chroot) -+parse_conf (const char *filename, const char *prefix, bool do_chroot) - { - FILE *file = NULL; - char *line = NULL; - const char *canon; - size_t len = 0; - unsigned int lineno; -+ size_t prefix_len = prefix ? strlen (prefix) : 0; - - if (do_chroot && opt_chroot) - { -@@ -1106,7 +1108,14 @@ Warning: ignoring configuration file tha - cp += 8; - while ((dir = strsep (&cp, " \t")) != NULL) - if (dir[0] != '\0') -- parse_conf_include (filename, lineno, do_chroot, dir); -+ parse_conf_include (filename, lineno, prefix, do_chroot, dir); -+ } -+ else if (prefix != NULL) -+ { -+ size_t cp_len = strlen (cp); -+ char new_cp [prefix_len + cp_len + 1]; -+ memcpy (mempcpy (new_cp, prefix, prefix_len), cp, cp_len + 1); -+ add_dir (new_cp); - } - else if (!strncasecmp (cp, "hwcap", 5) && isblank (cp[5])) - { -@@ -1169,7 +1178,7 @@ Warning: ignoring configuration file tha - config files to read. */ - static void - parse_conf_include (const char *config_file, unsigned int lineno, -- bool do_chroot, const char *pattern) -+ const char *prefix, bool do_chroot, const char *pattern) - { - if (opt_chroot && pattern[0] != '/') - error (EXIT_FAILURE, 0, -@@ -1201,7 +1210,7 @@ parse_conf_include (const char *config_f - { - case 0: - for (size_t i = 0; i < gl.gl_pathc; ++i) -- parse_conf (gl.gl_pathv[i], false); -+ parse_conf (gl.gl_pathv[i], prefix, false); - globfree64 (&gl); - break; - -@@ -1244,6 +1253,8 @@ main (int argc, char **argv) - /* Set the text message domain. */ - textdomain (_libc_intl_domainname); - -+ arch_startup (argc, argv); -+ - /* Parse and process arguments. */ - int remaining; - argp_parse (&argp, argc, argv, 0, &remaining, NULL); -@@ -1353,12 +1364,14 @@ main (int argc, char **argv) - - if (!opt_only_cline) - { -- parse_conf (config_file, true); -+ parse_conf (config_file, NULL, true); - - /* Always add the standard search paths. */ - add_system_dir (SLIBDIR); - if (strcmp (SLIBDIR, LIBDIR)) - add_system_dir (LIBDIR); -+ -+ add_arch_dirs (config_file); - } - - const char *aux_cache_file = _PATH_LDCONFIG_AUX_CACHE; -diff -Nrup a/elf/ldd.bash.in b/elf/ldd.bash.in ---- a/elf/ldd.bash.in 2012-06-05 07:42:49.000000000 -0600 -+++ b/elf/ldd.bash.in 2012-06-07 12:15:21.577319570 -0600 -@@ -166,18 +166,6 @@ warning: you do not have execution permi - fi - done - case $ret in -- 0) -- # If the program exits with exit code 5, it means the process has been -- # invoked with __libc_enable_secure. Fall back to running it through -- # the dynamic linker. -- try_trace "$file" -- rc=$? -- if [ $rc = 5 ]; then -- try_trace "$RTLD" "$file" -- rc=$? -- fi -- [ $rc = 0 ] || result=1 -- ;; - 1) - # This can be a non-ELF binary or no binary at all. - nonelf "$file" || { -@@ -185,7 +173,7 @@ warning: you do not have execution permi - result=1 - } - ;; -- 2) -+ 0|2) - try_trace "$RTLD" "$file" || result=1 - ;; - *) -diff -Nrup a/elf/rtld.c b/elf/rtld.c ---- a/elf/rtld.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/elf/rtld.c 2012-06-07 12:15:21.579319564 -0600 -@@ -106,7 +106,6 @@ static struct audit_list - struct audit_list *next; - } *audit_list; - --#ifndef HAVE_INLINED_SYSCALLS - /* Set nonzero during loading and initialization of executable and - libraries, cleared before the executable's entry point runs. This - must not be initialized to nonzero, because the unused dynamic -@@ -116,7 +115,6 @@ static struct audit_list - never be called. */ - int _dl_starting_up = 0; - INTVARDEF(_dl_starting_up) --#endif - - /* This is the structure which defines all variables global to ld.so - (except those which cannot be added for some reason). */ -@@ -929,10 +927,8 @@ dl_main (const ElfW(Phdr) *phdr, - /* Process the environment variable which control the behaviour. */ - process_envvars (&mode); - --#ifndef HAVE_INLINED_SYSCALLS - /* Set up a flag which tells we are just starting. */ - INTUSE(_dl_starting_up) = 1; --#endif - - if (*user_entry == (ElfW(Addr)) ENTRY_POINT) - { -@@ -1408,7 +1404,9 @@ of this helper program; chances are you - char *copy = malloc (len); - if (copy == NULL) - _dl_fatal_printf ("out of memory\n"); -- l->l_libname->name = l->l_name = memcpy (copy, dsoname, len); -+ l->l_libname->name = memcpy (copy, dsoname, len); -+ if (GLRO(dl_debug_mask)) -+ l->l_name = copy; - } - - /* Add the vDSO to the object list. */ -@@ -2343,7 +2341,6 @@ ERROR: ld.so: object '%s' cannot be load - - /* Make sure no new search directories have been added. */ - assert (GLRO(dl_init_all_dirs) == GL(dl_all_dirs)); -- - if (! prelinked && rtld_multiple_ref) - { - /* There was an explicit ref to the dynamic linker as a shared lib. -diff -Nrup a/include/bits/stdlib-ldbl.h b/include/bits/stdlib-ldbl.h ---- a/include/bits/stdlib-ldbl.h 1969-12-31 17:00:00.000000000 -0700 -+++ b/include/bits/stdlib-ldbl.h 2012-06-07 12:15:21.580319560 -0600 -@@ -0,0 +1 @@ -+#include <stdlib/bits/stdlib-ldbl.h> -diff -Nrup a/include/bits/wchar-ldbl.h b/include/bits/wchar-ldbl.h ---- a/include/bits/wchar-ldbl.h 1969-12-31 17:00:00.000000000 -0700 -+++ b/include/bits/wchar-ldbl.h 2012-06-07 12:15:21.580319560 -0600 -@@ -0,0 +1 @@ -+#include <wcsmbs/bits/wchar-ldbl.h> -diff -Nrup a/include/link.h b/include/link.h ---- a/include/link.h 2012-06-05 07:42:49.000000000 -0600 -+++ b/include/link.h 2012-06-07 12:15:21.581319556 -0600 -@@ -289,7 +289,7 @@ struct link_map - #endif - #ifndef FORCED_DYNAMIC_TLS_OFFSET - # if NO_TLS_OFFSET == 0 --# define FORCED_DYNAMIC_TLS_OFFSET 1 -+# define FORCED_DYNAMIC_TLS_OFFSET -1 - # elif NO_TLS_OFFSET == -1 - # define FORCED_DYNAMIC_TLS_OFFSET -2 - # else -diff -Nrup a/include/sys/resource.h b/include/sys/resource.h ---- a/include/sys/resource.h 2012-06-05 07:42:49.000000000 -0600 -+++ b/include/sys/resource.h 2012-06-07 12:15:21.582319552 -0600 -@@ -14,5 +14,6 @@ extern int __getrusage (enum __rusage_wh - - extern int __setrlimit (enum __rlimit_resource __resource, - const struct rlimit *__rlimits); -+libc_hidden_proto (__getrlimit) - #endif - #endif -diff -Nrup a/inet/Makefile b/inet/Makefile ---- a/inet/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/inet/Makefile 2012-06-07 12:15:21.582319552 -0600 -@@ -54,6 +54,8 @@ tests := htontest test_ifindex tst-ntoa - - include ../Rules - -+CFLAGS-tst-inet6_rth.c += -fno-strict-aliasing -+ - ifeq ($(have-thread-library),yes) - - CFLAGS-gethstbyad_r.c = -DUSE_NSCD=1 -fexceptions -diff -Nrup a/intl/locale.alias b/intl/locale.alias ---- a/intl/locale.alias 2012-06-05 07:42:49.000000000 -0600 -+++ b/intl/locale.alias 2012-06-07 12:15:21.583319548 -0600 -@@ -56,8 +56,6 @@ korean ko_KR.eucKR - korean.euc ko_KR.eucKR - ko_KR ko_KR.eucKR - lithuanian lt_LT.ISO-8859-13 --no_NO nb_NO.ISO-8859-1 --no_NO.ISO-8859-1 nb_NO.ISO-8859-1 - norwegian nb_NO.ISO-8859-1 - nynorsk nn_NO.ISO-8859-1 - polish pl_PL.ISO-8859-2 -diff -Nrup a/libio/stdio.h b/libio/stdio.h ---- a/libio/stdio.h 2012-06-05 07:42:49.000000000 -0600 -+++ b/libio/stdio.h 2012-06-07 12:15:21.584319544 -0600 -@@ -168,10 +168,12 @@ typedef _G_fpos64_t fpos64_t; - extern struct _IO_FILE *stdin; /* Standard input stream. */ - extern struct _IO_FILE *stdout; /* Standard output stream. */ - extern struct _IO_FILE *stderr; /* Standard error output stream. */ -+#ifdef __STDC__ - /* C89/C99 say they're macros. Make them happy. */ - #define stdin stdin - #define stdout stdout - #define stderr stderr -+#endif - - __BEGIN_NAMESPACE_STD - /* Remove file FILENAME. */ -diff -Nrup a/locale/iso-4217.def b/locale/iso-4217.def ---- a/locale/iso-4217.def 2012-06-05 07:42:49.000000000 -0600 -+++ b/locale/iso-4217.def 2012-06-07 12:15:21.584319544 -0600 -@@ -8,6 +8,7 @@ - * - * !!! The list has to be sorted !!! - */ -+DEFINE_INT_CURR("ADP") /* Andorran Peseta -> EUR */ - DEFINE_INT_CURR("AED") /* United Arab Emirates Dirham */ - DEFINE_INT_CURR("AFN") /* Afghanistan Afgani */ - DEFINE_INT_CURR("ALL") /* Albanian Lek */ -@@ -15,12 +16,14 @@ DEFINE_INT_CURR("AMD") /* Armenia Dram - DEFINE_INT_CURR("ANG") /* Netherlands Antilles */ - DEFINE_INT_CURR("AOA") /* Angolan Kwanza */ - DEFINE_INT_CURR("ARS") /* Argentine Peso */ -+DEFINE_INT_CURR("ATS") /* Austrian Schilling -> EUR */ - DEFINE_INT_CURR("AUD") /* Australian Dollar */ - DEFINE_INT_CURR("AWG") /* Aruba Guilder */ - DEFINE_INT_CURR("AZM") /* Azerbaijan Manat */ - DEFINE_INT_CURR("BAM") /* Bosnian and Herzegovina Convertible Mark */ - DEFINE_INT_CURR("BBD") /* Barbados Dollar */ - DEFINE_INT_CURR("BDT") /* Bangladesh Taka */ -+DEFINE_INT_CURR("BEF") /* Belgian Franc -> EUR */ - DEFINE_INT_CURR("BGN") /* Bulgarian Lev */ - DEFINE_INT_CURR("BHD") /* Bahraini Dinar */ - DEFINE_INT_CURR("BIF") /* Burundi Franc */ -@@ -44,6 +47,7 @@ DEFINE_INT_CURR("CUP") /* Cuban Peso * - DEFINE_INT_CURR("CVE") /* Cape Verde Escudo */ - DEFINE_INT_CURR("CYP") /* Cypriot Pound */ - DEFINE_INT_CURR("CZK") /* Czech Koruna */ -+DEFINE_INT_CURR("DEM") /* German Mark -> EUR */ - DEFINE_INT_CURR("DJF") /* Djibouti Franc */ - DEFINE_INT_CURR("DKK") /* Danish Krone (Faroe Islands, Greenland) */ - DEFINE_INT_CURR("DOP") /* Dominican Republic */ -@@ -51,16 +55,20 @@ DEFINE_INT_CURR("DZD") /* Algerian Dina - DEFINE_INT_CURR("EEK") /* Estonian Kroon */ - DEFINE_INT_CURR("EGP") /* Egyptian Pound */ - DEFINE_INT_CURR("ERN") /* Eritrean Nakfa */ -+DEFINE_INT_CURR("ESP") /* Spanish Peseta -> EUR */ - DEFINE_INT_CURR("ETB") /* Ethiopian Birr */ - DEFINE_INT_CURR("EUR") /* European Union Euro */ -+DEFINE_INT_CURR("FIM") /* Finnish Markka -> EUR */ - DEFINE_INT_CURR("FJD") /* Fiji Dollar */ - DEFINE_INT_CURR("FKP") /* Falkland Islands Pound (Malvinas) */ -+DEFINE_INT_CURR("FRF") /* French Franc -> EUR */ - DEFINE_INT_CURR("GBP") /* British Pound */ - DEFINE_INT_CURR("GEL") /* Georgia Lari */ - DEFINE_INT_CURR("GHC") /* Ghana Cedi */ - DEFINE_INT_CURR("GIP") /* Gibraltar Pound */ - DEFINE_INT_CURR("GMD") /* Gambian Dalasi */ - DEFINE_INT_CURR("GNF") /* Guinea Franc */ -+DEFINE_INT_CURR("GRD") /* Greek Drachma -> EUR */ - DEFINE_INT_CURR("GTQ") /* Guatemala Quetzal */ - DEFINE_INT_CURR("GYD") /* Guyana Dollar */ - DEFINE_INT_CURR("HKD") /* Hong Kong Dollar */ -@@ -69,12 +77,14 @@ DEFINE_INT_CURR("HRK") /* Croatia Kuna - DEFINE_INT_CURR("HTG") /* Haiti Gourde */ - DEFINE_INT_CURR("HUF") /* Hungarian Forint */ - DEFINE_INT_CURR("IDR") /* Indonesia Rupiah */ -+DEFINE_INT_CURR("IEP") /* Irish Pound -> EUR */ - DEFINE_INT_CURR("ILS") /* Israeli Shekel */ - DEFINE_INT_CURR("IMP") /* Isle of Man Pounds */ - DEFINE_INT_CURR("INR") /* Indian Rupee (Bhutan) */ - DEFINE_INT_CURR("IQD") /* Iraqi Dinar */ - DEFINE_INT_CURR("IRR") /* Iranian Rial */ - DEFINE_INT_CURR("ISK") /* Iceland Krona */ -+DEFINE_INT_CURR("ITL") /* Italian Lira -> EUR */ - DEFINE_INT_CURR("JEP") /* Jersey Pound */ - DEFINE_INT_CURR("JMD") /* Jamaican Dollar */ - DEFINE_INT_CURR("JOD") /* Jordanian Dinar */ -@@ -94,6 +104,7 @@ DEFINE_INT_CURR("LKR") /* Sri Lankan Ru - DEFINE_INT_CURR("LRD") /* Liberian Dollar */ - DEFINE_INT_CURR("LSL") /* Lesotho Maloti */ - DEFINE_INT_CURR("LTL") /* Lithuanian Litas */ -+DEFINE_INT_CURR("LUF") /* Luxembourg Franc -> EUR */ - DEFINE_INT_CURR("LVL") /* Latvia Lat */ - DEFINE_INT_CURR("LYD") /* Libyan Arab Jamahiriya Dinar */ - DEFINE_INT_CURR("MAD") /* Moroccan Dirham */ -@@ -114,6 +125,7 @@ DEFINE_INT_CURR("MZM") /* Mozambique Me - DEFINE_INT_CURR("NAD") /* Namibia Dollar */ - DEFINE_INT_CURR("NGN") /* Nigeria Naira */ - DEFINE_INT_CURR("NIO") /* Nicaragua Cordoba Oro */ -+DEFINE_INT_CURR("NLG") /* Netherlands Guilder -> EUR */ - DEFINE_INT_CURR("NOK") /* Norwegian Krone */ - DEFINE_INT_CURR("NPR") /* Nepalese Rupee */ - DEFINE_INT_CURR("NZD") /* New Zealand Dollar */ -@@ -124,6 +136,7 @@ DEFINE_INT_CURR("PGK") /* Papau New Gui - DEFINE_INT_CURR("PHP") /* Philippines Peso */ - DEFINE_INT_CURR("PKR") /* Pakistan Rupee */ - DEFINE_INT_CURR("PLN") /* Polish Zloty */ -+DEFINE_INT_CURR("PTE") /* Portugese Escudo -> EUR */ - DEFINE_INT_CURR("PYG") /* Paraguay Guarani */ - DEFINE_INT_CURR("QAR") /* Qatar Rial */ - DEFINE_INT_CURR("ROL") /* Romanian Leu */ -diff -Nrup a/locale/programs/locarchive.c b/locale/programs/locarchive.c ---- a/locale/programs/locarchive.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/locale/programs/locarchive.c 2012-06-07 12:15:21.585319540 -0600 -@@ -252,9 +252,9 @@ oldlocrecentcmp (const void *a, const vo - /* forward decls for below */ - static uint32_t add_locale (struct locarhandle *ah, const char *name, - locale_data_t data, bool replace); --static void add_alias (struct locarhandle *ah, const char *alias, -- bool replace, const char *oldname, -- uint32_t *locrec_offset_p); -+void add_alias (struct locarhandle *ah, const char *alias, -+ bool replace, const char *oldname, -+ uint32_t *locrec_offset_p); - - - static bool -@@ -635,7 +635,7 @@ close_archive (struct locarhandle *ah) - #include "../../intl/explodename.c" - #include "../../intl/l10nflist.c" - --static struct namehashent * -+struct namehashent * - insert_name (struct locarhandle *ah, - const char *name, size_t name_len, bool replace) - { -@@ -693,7 +693,7 @@ insert_name (struct locarhandle *ah, - return &namehashtab[idx]; - } - --static void -+void - add_alias (struct locarhandle *ah, const char *alias, bool replace, - const char *oldname, uint32_t *locrec_offset_p) - { -diff -Nrup a/localedata/ChangeLog b/localedata/ChangeLog ---- a/localedata/ChangeLog 2012-06-05 07:42:49.000000000 -0600 -+++ b/localedata/ChangeLog 2012-06-07 12:15:21.683319174 -0600 -@@ -181,6 +181,14 @@ - * tests-mbwc/tst_funcs.h (TST_DECL_VARS, TST_HEAD_LOCALE): - Remove unused variable. - -+2011-06-28 Andreas Schwab schwab@redhat.com -+ -+ * charmaps/GB18030: Correct some entries. -+ -+2011-06-21 Andreas Schwab schwab@redhat.com -+ -+ * charmaps/GB18030: Readd lost characters. -+ - 2011-05-21 Ulrich Drepper drepper@gmail.com - - [BZ #12788] -diff -Nrup a/localedata/Makefile b/localedata/Makefile ---- a/localedata/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/localedata/Makefile 2012-06-07 12:15:21.776318827 -0600 -@@ -211,6 +211,7 @@ $(INSTALL-SUPPORTED-LOCALES): install-lo - echo -n '...'; \ - input=`echo $$locale | sed 's/([^.]*)[^@]*(.*)/\1\2/'`; \ - $(LOCALEDEF) --alias-file=../intl/locale.alias \ -+ --no-archive \ - -i locales/$$input -c -f charmaps/$$charset \ - $(addprefix --prefix=,$(install_root)) $$locale; \ - echo ' done'; \ -diff -Nrup a/localedata/SUPPORTED b/localedata/SUPPORTED ---- a/localedata/SUPPORTED 2012-06-05 07:42:49.000000000 -0600 -+++ b/localedata/SUPPORTED 2012-06-07 12:15:21.805318719 -0600 -@@ -88,6 +88,7 @@ cy_GB.UTF-8/UTF-8 \ - cy_GB/ISO-8859-14 \ - da_DK.UTF-8/UTF-8 \ - da_DK/ISO-8859-1 \ -+da_DK.ISO-8859-15/ISO-8859-15 \ - de_AT.UTF-8/UTF-8 \ - de_AT/ISO-8859-1 \ - de_AT@euro/ISO-8859-15 \ -@@ -119,6 +120,7 @@ en_DK.UTF-8/UTF-8 \ - en_DK/ISO-8859-1 \ - en_GB.UTF-8/UTF-8 \ - en_GB/ISO-8859-1 \ -+en_GB.ISO-8859-15/ISO-8859-15 \ - en_HK.UTF-8/UTF-8 \ - en_HK/ISO-8859-1 \ - en_IE.UTF-8/UTF-8 \ -@@ -134,6 +136,7 @@ en_SG.UTF-8/UTF-8 \ - en_SG/ISO-8859-1 \ - en_US.UTF-8/UTF-8 \ - en_US/ISO-8859-1 \ -+en_US.ISO-8859-15/ISO-8859-15 \ - en_ZA.UTF-8/UTF-8 \ - en_ZA/ISO-8859-1 \ - en_ZM/UTF-8 \ -@@ -317,6 +320,8 @@ nl_NL/ISO-8859-1 \ - nl_NL@euro/ISO-8859-15 \ - nn_NO.UTF-8/UTF-8 \ - nn_NO/ISO-8859-1 \ -+no_NO.UTF-8/UTF-8 \ -+no_NO/ISO-8859-1 \ - nr_ZA/UTF-8 \ - nso_ZA/UTF-8 \ - oc_FR.UTF-8/UTF-8 \ -@@ -378,6 +383,7 @@ sv_FI/ISO-8859-1 \ - sv_FI@euro/ISO-8859-15 \ - sv_SE.UTF-8/UTF-8 \ - sv_SE/ISO-8859-1 \ -+sv_SE.ISO-8859-15/ISO-8859-15 \ - sw_KE/UTF-8 \ - sw_TZ/UTF-8 \ - ta_IN/UTF-8 \ -diff -Nrup a/localedata/locales/cy_GB b/localedata/locales/cy_GB ---- a/localedata/locales/cy_GB 2012-06-05 07:42:49.000000000 -0600 -+++ b/localedata/locales/cy_GB 2012-06-07 12:15:21.805318719 -0600 -@@ -248,9 +248,9 @@ mon "<U0049><U006F><U006E><U0061 - d_t_fmt "<U0044><U0079><U0064><U0064><U0020><U0025><U0041><U0020><U0025><U0064><U0020><U006d><U0069><U0073><U0020><U0025><U0042><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" - d_fmt "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0079>" - t_fmt "<U0025><U0054>" --am_pm "<U0061><U006D>";"<U0070><U006D>" -+am_pm "<U0041><U004D>";"<U0050><U004D>" - t_fmt_ampm "<U0025><U006C><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U0050><U0020><U0025><U005A>" --date_fmt "<U0025><U0061><U0020><U0025><U0065><U0020><U0025><U0062>/ -+date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/ - <U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/ - <U0025><U005A><U0020><U0025><U0059>" - first_workday 2 -diff -Nrup a/localedata/locales/en_GB b/localedata/locales/en_GB ---- a/localedata/locales/en_GB 2012-06-05 07:42:49.000000000 -0600 -+++ b/localedata/locales/en_GB 2012-06-07 12:15:21.806318715 -0600 -@@ -116,7 +116,7 @@ mon "<U004A><U0061><U006E><U0075 - d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" - d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" - t_fmt "<U0025><U0054>" --am_pm "<U0061><U006D>";"<U0070><U006D>" -+am_pm "<U0041><U004D>";"<U0050><U004D>" - t_fmt_ampm "<U0025><U006C><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U0050><U0020><U0025><U005A>" - date_fmt "<U0025><U0061><U0020><U0025><U0065><U0020><U0025><U0062>/ - <U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/ -diff -Nrup a/localedata/locales/no_NO b/localedata/locales/no_NO ---- a/localedata/locales/no_NO 1969-12-31 17:00:00.000000000 -0700 -+++ b/localedata/locales/no_NO 2012-06-07 12:15:21.806318715 -0600 -@@ -0,0 +1,69 @@ -+escape_char / -+comment_char % -+ -+% Norwegian language locale for Norway -+% Source: Norsk Standardiseringsforbund -+% Address: University Library, -+% Drammensveien 41, N-9242 Oslo, Norge -+% Contact: Kolbjoern Aamboe -+% Tel: +47 - 22859109 -+% Fax: +47 - 22434497 -+% Email: kolbjorn.aambo@usit.uio.no -+% Language: no -+% Territory: NO -+% Revision: 4.3 -+% Date: 1996-10-15 -+% Application: general -+% Users: general -+% Repertoiremap: mnemonic.ds -+% Charset: ISO-8859-1 -+% Distribution and use is free, also -+% for commercial purposes. -+ -+LC_IDENTIFICATION -+copy "nb_NO" -+END LC_IDENTIFICATION -+ -+LC_COLLATE -+copy "nb_NO" -+END LC_COLLATE -+ -+LC_CTYPE -+copy "nb_NO" -+END LC_CTYPE -+ -+LC_MONETARY -+copy "nb_NO" -+END LC_MONETARY -+ -+LC_NUMERIC -+copy "nb_NO" -+END LC_NUMERIC -+ -+LC_TIME -+copy "nb_NO" -+END LC_TIME -+ -+LC_MESSAGES -+copy "nb_NO" -+END LC_MESSAGES -+ -+LC_PAPER -+copy "nb_NO" -+END LC_PAPER -+ -+LC_TELEPHONE -+copy "nb_NO" -+END LC_TELEPHONE -+ -+LC_MEASUREMENT -+copy "nb_NO" -+END LC_MEASUREMENT -+ -+LC_NAME -+copy "nb_NO" -+END LC_NAME -+ -+LC_ADDRESS -+copy "nb_NO" -+END LC_ADDRESS -diff -Nrup a/localedata/locales/zh_TW b/localedata/locales/zh_TW ---- a/localedata/locales/zh_TW 2012-06-05 07:42:49.000000000 -0600 -+++ b/localedata/locales/zh_TW 2012-06-07 12:15:21.807318711 -0600 -@@ -1,7 +1,7 @@ - comment_char % - escape_char / - % --% Chinese language locale for Taiwan R.O.C. -+% Chinese language locale for Taiwan - % charmap: BIG5-CP950 - % - % Original Author: -@@ -17,7 +17,7 @@ escape_char / - % Reference: http://wwwold.dkuug.dk/JTC1/SC22/WG20/docs/n690.pdf - - LC_IDENTIFICATION --title "Chinese locale for Taiwan R.O.C." -+title "Chinese locale for Taiwan" - source "" - address "" - contact "" -@@ -25,7 +25,7 @@ email "bug-glibc-locales@gnu.org" - tel "" - fax "" - language "Chinese" --territory "Taiwan R.O.C." -+territory "Taiwan" - revision "0.2" - date "2000-08-02" - % -diff -Nrup a/login/programs/pt_chown.c b/login/programs/pt_chown.c ---- a/login/programs/pt_chown.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/login/programs/pt_chown.c 2012-06-07 12:15:21.807318711 -0600 -@@ -28,6 +28,7 @@ - #include <string.h> - #include <sys/stat.h> - #include <unistd.h> -+#include <fcntl.h> - #ifdef HAVE_LIBCAP - # include <sys/capability.h> - # include <sys/prctl.h> -@@ -142,7 +143,7 @@ main (int argc, char *argv[]) - uid_t uid = getuid (); - int remaining; - -- if (argc == 1 && euid == 0) -+ if (argc == 1 && fcntl (PTY_FILENO, F_GETFD) == 0) - { - #ifdef HAVE_LIBCAP - /* Drop privileges. */ -@@ -175,6 +176,13 @@ main (int argc, char *argv[]) - - /* We aren't going to be using privileges, so drop them right now. */ - setuid (uid); -+#ifdef HAVE_LIBCAP -+ cap_t caps = cap_init (); -+ if (caps == NULL) -+ error (1, errno, "cap_init"); -+ cap_set_proc (caps); -+ cap_free (caps); -+#endif - - /* Set locale via LC_ALL. */ - setlocale (LC_ALL, ""); -@@ -194,9 +202,5 @@ main (int argc, char *argv[]) - return EXIT_FAILURE; - } - -- /* Check if we are properly installed. */ -- if (euid != 0) -- error (FAIL_EXEC, 0, gettext ("needs to be installed setuid `root'")); -- - return EXIT_SUCCESS; - } -diff -Nrup a/manual/libc.texinfo b/manual/libc.texinfo ---- a/manual/libc.texinfo 2012-06-05 07:42:49.000000000 -0600 -+++ b/manual/libc.texinfo 2012-06-07 12:15:21.808318708 -0600 -@@ -7,7 +7,7 @@ - @include macros.texi - - @comment Tell install-info what to do. --@dircategory Software libraries -+@dircategory Libraries - @direntry - * Libc: (libc). C library. - @end direntry -diff -Nrup a/misc/sys/cdefs.h b/misc/sys/cdefs.h ---- a/misc/sys/cdefs.h 2012-06-05 07:42:49.000000000 -0600 -+++ b/misc/sys/cdefs.h 2012-06-07 12:15:21.808318708 -0600 -@@ -142,7 +142,10 @@ - #define __bos0(ptr) __builtin_object_size (ptr, 0) - #define __fortify_function __extern_always_inline __attribute_artificial__ - --#if __GNUC_PREREQ (4,3) -+#if __GNUC_PREREQ (4,3) \ -+ || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ -+ && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ -+ && __GNUC_RH_RELEASE__ >= 31) - # define __warndecl(name, msg) \ - extern void name (void) __attribute__((__warning__ (msg))) - # define __warnattr(msg) __attribute__((__warning__ (msg))) -@@ -320,7 +323,10 @@ - - /* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 - inline semantics, unless -fgnu89-inline is used. */ --#if !defined __cplusplus || __GNUC_PREREQ (4,3) -+#if !defined __cplusplus || __GNUC_PREREQ (4,3) \ -+ || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ -+ && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ -+ && __GNUC_RH_RELEASE__ >= 31) - # if defined __GNUC_STDC_INLINE__ || defined __cplusplus - # define __extern_inline extern __inline __attribute__ ((__gnu_inline__)) - # define __extern_always_inline \ -@@ -333,7 +339,10 @@ - - /* GCC 4.3 and above allow passing all anonymous arguments of an - __extern_always_inline function to some other vararg function. */ --#if __GNUC_PREREQ (4,3) -+#if __GNUC_PREREQ (4,3) \ -+ || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ -+ && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ -+ && __GNUC_RH_RELEASE__ >= 31) - # define __va_arg_pack() __builtin_va_arg_pack () - # define __va_arg_pack_len() __builtin_va_arg_pack_len () - #endif -diff -Nrup a/nis/Makefile b/nis/Makefile ---- a/nis/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/nis/Makefile 2012-06-07 12:15:21.810318702 -0600 -@@ -71,6 +71,8 @@ libnss_nisplus-inhibit-o = $(filter-out - - include ../Rules - -+CFLAGS-nis_findserv.c += -fno-strict-aliasing -+CFLAGS-ypclnt.c += -fno-strict-aliasing - - $(objpfx)libnss_compat.so: $(objpfx)libnsl.so$(libnsl.so-version) - $(objpfx)libnss_nis.so: $(objpfx)libnsl.so$(libnsl.so-version) \ -diff -Nrup a/nis/nss b/nis/nss ---- a/nis/nss 2012-06-05 07:42:49.000000000 -0600 -+++ b/nis/nss 2012-06-07 12:15:21.811318698 -0600 -@@ -25,7 +25,7 @@ - # memory with every getXXent() call. Otherwise each getXXent() call - # might result into a network communication with the server to get - # the next entry. --#SETENT_BATCH_READ=TRUE -+SETENT_BATCH_READ=TRUE - # - # ADJUNCT_AS_SHADOW - # If set to TRUE, the passwd routines in the NIS NSS module will not -diff -Nrup a/nptl/ChangeLog b/nptl/ChangeLog ---- a/nptl/ChangeLog 2012-06-05 07:42:49.000000000 -0600 -+++ b/nptl/ChangeLog 2012-06-07 12:15:21.813318690 -0600 -@@ -5562,6 +5562,11 @@ - Move definition inside libpthread, libc, librt check. Provide - definition for rtld. - -+2004-09-02 Jakub Jelinek jakub@redhat.com -+ -+ * pthread_cond_destroy.c (__pthread_cond_destroy): If there are -+ waiters, awake all waiters on the associated mutex. -+ - 2004-09-02 Ulrich Drepper drepper@redhat.com - - * sysdeps/alpha/jmpbuf-unwind.h: Define __libc_unwind_longjmp. -@@ -7636,6 +7641,11 @@ - - * Makefile [$(build-shared) = yes] (tests): Depend on $(test-modules). - -+2003-07-22 Jakub Jelinek jakub@redhat.com -+ -+ * descr.h: Don't include lowlevellock.h, pthreaddef.h and dl-sysdep.h -+ if __need_struct_pthread_size, instead define lll_lock_t. -+ - 2003-07-25 Jakub Jelinek jakub@redhat.com - - * tst-cancel17.c (do_test): Check if aio_cancel failed. -diff -Nrup a/nptl/Makefile b/nptl/Makefile ---- a/nptl/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/nptl/Makefile 2012-06-07 12:15:21.816318678 -0600 -@@ -529,15 +529,19 @@ $(addprefix $(objpfx), \ - $(tests) $(xtests) $(test-srcs))): $(objpfx)libpthread.so \ - $(objpfx)libpthread_nonshared.a - $(objpfx)tst-unload: $(common-objpfx)dlfcn/libdl.so --# $(objpfx)../libc.so is used instead of $(common-objpfx)libc.so, -+# $(objpfx)linklibc.so is used instead of $(common-objpfx)libc.so, - # since otherwise libpthread.so comes before libc.so when linking. - $(addprefix $(objpfx), $(tests-reverse)): \ -- $(objpfx)../libc.so $(objpfx)libpthread.so \ -+ $(objpfx)linklibc.so $(objpfx)libpthread.so \ - $(objpfx)libpthread_nonshared.a - $(objpfx)../libc.so: $(common-objpfx)libc.so ; - $(addprefix $(objpfx),$(tests-static) $(xtests-static)): $(objpfx)libpthread.a - - $(objpfx)tst-atfork2.out: $(objpfx)tst-atfork2mod.so -+ -+$(objpfx)linklibc.so: $(common-objpfx)libc.so -+ ln -s ../libc.so $@ -+generated += libclink.so - else - $(addprefix $(objpfx),$(tests) $(test-srcs)): $(objpfx)libpthread.a - endif -diff -Nrup a/nptl/Versions b/nptl/Versions ---- a/nptl/Versions 2012-06-05 07:42:49.000000000 -0600 -+++ b/nptl/Versions 2012-06-07 12:15:21.817318674 -0600 -@@ -30,6 +30,7 @@ libc { - __libc_alloca_cutoff; - # Internal libc interface to libpthread - __libc_dl_error_tsd; -+ __getrlimit; - } - } - -diff -Nrup a/nptl/nptl-init.c b/nptl/nptl-init.c ---- a/nptl/nptl-init.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/nptl/nptl-init.c 2012-06-07 12:15:21.817318674 -0600 -@@ -414,7 +414,7 @@ __pthread_initialize_minimal_internal (v - /* Determine the default allowed stack size. This is the size used - in case the user does not specify one. */ - struct rlimit limit; -- if (getrlimit (RLIMIT_STACK, &limit) != 0 -+ if (__getrlimit (RLIMIT_STACK, &limit) != 0 - || limit.rlim_cur == RLIM_INFINITY) - /* The system limit is not usable. Use an architecture-specific - default. */ -diff -Nrup a/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h b/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h ---- a/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h 2012-06-05 07:42:49.000000000 -0600 -+++ b/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h 2012-06-07 12:15:21.817318674 -0600 -@@ -188,4 +188,7 @@ - /* Typed memory objects are not available. */ - #define _POSIX_TYPED_MEMORY_OBJECTS -1 - -+/* Streams are not available. */ -+#define _XOPEN_STREAMS -1 -+ - #endif /* bits/posix_opt.h */ -diff -Nrup a/nptl/sysdeps/unix/sysv/linux/i386/Versions b/nptl/sysdeps/unix/sysv/linux/i386/Versions ---- a/nptl/sysdeps/unix/sysv/linux/i386/Versions 1969-12-31 17:00:00.000000000 -0700 -+++ b/nptl/sysdeps/unix/sysv/linux/i386/Versions 2012-06-07 12:15:21.818318670 -0600 -@@ -0,0 +1,6 @@ -+libc { -+ GLIBC_PRIVATE { -+ # Internal libc interface to libpthread -+ __uname; -+ } -+} -diff -Nrup a/nptl/sysdeps/unix/sysv/linux/i386/smp.h b/nptl/sysdeps/unix/sysv/linux/i386/smp.h ---- a/nptl/sysdeps/unix/sysv/linux/i386/smp.h 2012-06-05 07:42:49.000000000 -0600 -+++ b/nptl/sysdeps/unix/sysv/linux/i386/smp.h 2012-06-07 12:15:21.818318670 -0600 -@@ -36,7 +36,7 @@ is_smp_system (void) - char *cp; - - /* Try reading the number using `sysctl' first. */ -- if (uname (&u.uts) == 0) -+ if (__uname (&u.uts) == 0) - cp = u.uts.version; - else - { -diff -Nrup a/nptl/sysdeps/unix/sysv/linux/kernel-features.h b/nptl/sysdeps/unix/sysv/linux/kernel-features.h ---- a/nptl/sysdeps/unix/sysv/linux/kernel-features.h 1969-12-31 17:00:00.000000000 -0700 -+++ b/nptl/sysdeps/unix/sysv/linux/kernel-features.h 2012-06-07 12:15:21.818318670 -0600 -@@ -0,0 +1,6 @@ -+#include_next <kernel-features.h> -+ -+/* NPTL can always assume all clone thread flags work. */ -+#ifndef __ASSUME_CLONE_THREAD_FLAGS -+# define __ASSUME_CLONE_THREAD_FLAGS 1 -+#endif -diff -Nrup a/nscd/nscd.conf b/nscd/nscd.conf ---- a/nscd/nscd.conf 2012-06-05 07:42:49.000000000 -0600 -+++ b/nscd/nscd.conf 2012-06-07 12:15:21.818318670 -0600 -@@ -33,7 +33,7 @@ - # logfile /var/log/nscd.log - # threads 4 - # max-threads 32 --# server-user nobody -+ server-user nscd - # stat-user somebody - debug-level 0 - # reload-count 5 -diff -Nrup a/nscd/nscd.init b/nscd/nscd.init ---- a/nscd/nscd.init 2012-06-05 07:42:49.000000000 -0600 -+++ b/nscd/nscd.init 2012-06-07 12:15:21.818318670 -0600 -@@ -9,6 +9,7 @@ - # slow naming services like NIS, NIS+, LDAP, or hesiod. - # processname: /usr/sbin/nscd - # config: /etc/nscd.conf -+# config: /etc/sysconfig/nscd - # - ### BEGIN INIT INFO - # Provides: nscd -@@ -28,20 +29,8 @@ - # Source function library. - . /etc/init.d/functions - --# nscd does not run on any kernel lower than 2.2.0 because of threading --# problems, so we require that in first place. --case $(uname -r) in -- 2.[2-9].*) -- # this is okay -- ;; -- [3-9]*) -- # these are of course also okay -- ;; -- *) -- #this is not -- exit 1 -- ;; --esac -+# Source an auxiliary options file if we have one, and pick up NSCD_OPTIONS. -+[ -r /etc/sysconfig/nscd ] && . /etc/sysconfig/nscd - - RETVAL=0 - prog=nscd -@@ -50,7 +39,7 @@ start () { - [ -d /var/run/nscd ] || mkdir /var/run/nscd - [ -d /var/db/nscd ] || mkdir /var/db/nscd - echo -n $"Starting $prog: " -- daemon /usr/sbin/nscd -+ daemon /usr/sbin/nscd $NSCD_OPTIONS - RETVAL=$? - echo - [ $RETVAL -eq 0 ] && touch /var/lock/subsys/nscd -@@ -83,11 +72,11 @@ restart() { - # See how we were called. - case "$1" in - start) -- start -+ [ -e /var/lock/subsys/nscd ] || start - RETVAL=$? - ;; - stop) -- stop -+ [ ! -e /var/lock/subsys/nscd ] || stop - RETVAL=$? - ;; - status) -@@ -99,14 +88,17 @@ case "$1" in - RETVAL=$? - ;; - try-restart | condrestart) -- [ -e /var/lock/subsys/nscd ] && restart -+ [ ! -e /var/lock/subsys/nscd ] || restart - RETVAL=$? - ;; - force-reload | reload) - echo -n $"Reloading $prog: " -- killproc /usr/sbin/nscd -HUP -- RETVAL=$? -- echo -+ RETVAL=0 -+ /usr/sbin/nscd -i passwd || RETVAL=$? -+ /usr/sbin/nscd -i group || RETVAL=$? -+ /usr/sbin/nscd -i hosts || RETVAL=$? -+ /usr/sbin/nscd -i services || RETVAL=$? -+ echo - ;; - *) - echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}" -diff -Nrup a/nscd/selinux.c b/nscd/selinux.c ---- a/nscd/selinux.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/nscd/selinux.c 2012-06-07 12:15:21.819318667 -0600 -@@ -269,6 +269,18 @@ avc_create_thread (void (*run) (void)) - { - int rc; - -+#if defined HAVE_LIBAUDIT && defined HAVE_LIBCAP -+ if (server_user != NULL && getuid () == 0) -+ { -+ /* We need to preserve the capabilities in the AVC thread. */ -+ if (prctl (PR_SET_KEEPCAPS, 1) == -1) -+ { -+ dbg_log (_("Failed to set keep-capabilities")); -+ error (EXIT_FAILURE, errno, _("prctl(KEEPCAPS) failed")); -+ } -+ } -+#endif -+ - rc = - pthread_create (&avc_notify_thread, NULL, (void *(*) (void *)) run, NULL); - if (rc != 0) -diff -Nrup a/nss/Makefile b/nss/Makefile ---- a/nss/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/nss/Makefile 2012-06-07 12:15:21.819318667 -0600 -@@ -101,6 +101,7 @@ $(libnss_db-dbs:%=$(objpfx)%.c): $(objpf - echo '#include "$<"') > $@.new - mv -f $@.new $@ - -+CFLAGS-files-hosts.c += -fno-strict-aliasing - - $(objpfx)makedb: $(makedb-modules:%=$(objpfx)%.o) - -diff -Nrup a/nss/nss_files/files-XXX.c b/nss/nss_files/files-XXX.c ---- a/nss/nss_files/files-XXX.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/nss/nss_files/files-XXX.c 2012-06-07 12:15:21.819318667 -0600 -@@ -189,7 +189,7 @@ internal_getent (struct STRUCTURE *resul - { - char *p; - struct parser_data *data = (void *) buffer; -- int linebuflen = buffer + buflen - data->linebuffer; -+ size_t linebuflen = buffer + buflen - data->linebuffer; - int parse_result; - - if (buflen < sizeof *data + 2) -diff -Nrup a/posix/Makefile b/posix/Makefile ---- a/posix/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/posix/Makefile 2012-06-07 12:15:21.820318664 -0600 -@@ -305,15 +305,8 @@ $(inst_libexecdir)/getconf: $(inst_bindi - mv -f $@/$$spec.new $@/$$spec; \ - done < $(objpfx)getconf.speclist - --$(objpfx)getconf.speclist: $(objpfx)getconf --ifeq (no,$(cross-compiling)) -- LC_ALL=C GETCONF_DIR=/dev/null \ -- $(run-program-prefix) $< _POSIX_V7_WIDTH_RESTRICTED_ENVS > $@.new -- LC_ALL=C GETCONF_DIR=/dev/null \ -- $(run-program-prefix) $< _POSIX_V6_WIDTH_RESTRICTED_ENVS >> $@.new -- LC_ALL=C GETCONF_DIR=/dev/null \ -- $(run-program-prefix) $< _XBS5_WIDTH_RESTRICTED_ENVS >> $@.new --else -- > $@.new --endif -+$(objpfx)getconf.speclist: getconf.speclist.h -+ $(CC) -E $(CFLAGS) $(CPPFLAGS) $< \ -+ | sed -n -e '/START_OF_STRINGS/,$${/(POSIX_V[67]|XBS5)_/{s/^[^"]*"//;s/".*$$//;p}}' \ -+ > $@.new - mv -f $@.new $@ -diff -Nrup a/posix/gai.conf b/posix/gai.conf ---- a/posix/gai.conf 2012-06-05 07:42:49.000000000 -0600 -+++ b/posix/gai.conf 2012-06-07 12:15:21.820318664 -0600 -@@ -41,7 +41,7 @@ - # - # precedence <mask> <value> - # Add another rule to the RFC 3484 precedence table. See section 2.1 --# and 10.3 in RFC 3484. The default is: -+# and 10.3 in RFC 3484. The RFC requires: - # - #precedence ::1/128 50 - #precedence ::/0 40 -@@ -58,7 +58,7 @@ - # Add another rule to the RFC 3484 scope table for IPv4 addresses. - # By default the scope IDs described in section 3.2 in RFC 3484 are - # used. Changing these defaults should hardly ever be necessary. --# The defaults are equivalent to: -+# The definitions in RFC 1918 are equivalent to: - # - #scopev4 ::ffff:169.254.0.0/112 2 - #scopev4 ::ffff:127.0.0.0/104 2 -@@ -75,3 +75,5 @@ - #scopev4 ::ffff:169.254.0.0/112 2 - #scopev4 ::ffff:127.0.0.0/104 2 - #scopev4 ::ffff:0.0.0.0/96 14 -+# -+# This is what the Red Hat setting currently uses. -diff -Nrup a/posix/getconf.speclist.h b/posix/getconf.speclist.h ---- a/posix/getconf.speclist.h 1969-12-31 17:00:00.000000000 -0700 -+++ b/posix/getconf.speclist.h 2012-06-07 12:15:21.820318664 -0600 -@@ -0,0 +1,39 @@ -+#include <unistd.h> -+const char *START_OF_STRINGS = -+#if _POSIX_V7_ILP32_OFF32 == 1 -+"POSIX_V7_ILP32_OFF32" -+#endif -+#if _POSIX_V7_ILP32_OFFBIG == 1 -+"POSIX_V7_ILP32_OFFBIG" -+#endif -+#if _POSIX_V7_LP64_OFF64 == 1 -+"POSIX_V7_LP64_OFF64" -+#endif -+#if _POSIX_V7_LPBIG_OFFBIG == 1 -+"POSIX_V7_LPBIG_OFFBIG" -+#endif -+#if _POSIX_V6_ILP32_OFF32 == 1 -+"POSIX_V6_ILP32_OFF32" -+#endif -+#if _POSIX_V6_ILP32_OFFBIG == 1 -+"POSIX_V6_ILP32_OFFBIG" -+#endif -+#if _POSIX_V6_LP64_OFF64 == 1 -+"POSIX_V6_LP64_OFF64" -+#endif -+#if _POSIX_V6_LPBIG_OFFBIG == 1 -+"POSIX_V6_LPBIG_OFFBIG" -+#endif -+#if _XBS5_ILP32_OFF32 == 1 -+"XBS5_ILP32_OFF32" -+#endif -+#if _XBS5_ILP32_OFFBIG == 1 -+"XBS5_ILP32_OFFBIG" -+#endif -+#if _XBS5_LP64_OFF64 == 1 -+"XBS5_LP64_OFF64" -+#endif -+#if _XBS5_LPBIG_OFFBIG == 1 -+"XBS5_LPBIG_OFFBIG" -+#endif -+""; -diff -Nrup a/posix/regcomp.c b/posix/regcomp.c ---- a/posix/regcomp.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/posix/regcomp.c 2012-06-07 12:15:21.821318661 -0600 -@@ -2772,40 +2772,29 @@ parse_bracket_exp (re_string_t *regexp, - - /* Local function for parse_bracket_exp used in _LIBC environement. - Seek the collating symbol entry correspondings to NAME. -- Return the index of the symbol in the SYMB_TABLE. */ -+ Return the index of the symbol in the SYMB_TABLE, -+ or -1 if not found. */ - - auto inline int32_t - __attribute ((always_inline)) -- seek_collating_symbol_entry (name, name_len) -- const unsigned char *name; -- size_t name_len; -+ seek_collating_symbol_entry (const unsigned char *name, size_t name_len) - { -- int32_t hash = elem_hash ((const char *) name, name_len); -- int32_t elem = hash % table_size; -- if (symb_table[2 * elem] != 0) -- { -- int32_t second = hash % (table_size - 2) + 1; -+ int32_t elem; - -- do -- { -- /* First compare the hashing value. */ -- if (symb_table[2 * elem] == hash -- /* Compare the length of the name. */ -- && name_len == extra[symb_table[2 * elem + 1]] -- /* Compare the name. */ -- && memcmp (name, &extra[symb_table[2 * elem + 1] + 1], -- name_len) == 0) -- { -- /* Yep, this is the entry. */ -- break; -- } -- -- /* Next entry. */ -- elem += second; -- } -- while (symb_table[2 * elem] != 0); -- } -- return elem; -+ for (elem = 0; elem < table_size; elem++) -+ if (symb_table[2 * elem] != 0) -+ { -+ int32_t idx = symb_table[2 * elem + 1]; -+ /* Skip the name of collating element name. */ -+ idx += 1 + extra[idx]; -+ if (/* Compare the length of the name. */ -+ name_len == extra[idx] -+ /* Compare the name. */ -+ && memcmp (name, &extra[idx + 1], name_len) == 0) -+ /* Yep, this is the entry. */ -+ return elem; -+ } -+ return -1; - } - - /* Local function for parse_bracket_exp used in _LIBC environment. -@@ -2814,8 +2803,7 @@ parse_bracket_exp (re_string_t *regexp, - - auto inline unsigned int - __attribute ((always_inline)) -- lookup_collation_sequence_value (br_elem) -- bracket_elem_t *br_elem; -+ lookup_collation_sequence_value (bracket_elem_t *br_elem) - { - if (br_elem->type == SB_CHAR) - { -@@ -2843,7 +2831,7 @@ parse_bracket_exp (re_string_t *regexp, - int32_t elem, idx; - elem = seek_collating_symbol_entry (br_elem->opr.name, - sym_name_len); -- if (symb_table[2 * elem] != 0) -+ if (elem != -1) - { - /* We found the entry. */ - idx = symb_table[2 * elem + 1]; -@@ -2861,7 +2849,7 @@ parse_bracket_exp (re_string_t *regexp, - /* Return the collation sequence value. */ - return *(unsigned int *) (extra + idx); - } -- else if (symb_table[2 * elem] == 0 && sym_name_len == 1) -+ else if (sym_name_len == 1) - { - /* No valid character. Match it as a single byte - character. */ -@@ -2883,11 +2871,8 @@ parse_bracket_exp (re_string_t *regexp, - - auto inline reg_errcode_t - __attribute ((always_inline)) -- build_range_exp (sbcset, mbcset, range_alloc, start_elem, end_elem) -- re_charset_t *mbcset; -- int *range_alloc; -- bitset_t sbcset; -- bracket_elem_t *start_elem, *end_elem; -+ build_range_exp (bitset_t sbcset, re_charset_t *mbcset, int *range_alloc, -+ bracket_elem_t *start_elem, bracket_elem_t *end_elem) - { - unsigned int ch; - uint32_t start_collseq; -@@ -2966,25 +2951,22 @@ parse_bracket_exp (re_string_t *regexp, - - auto inline reg_errcode_t - __attribute ((always_inline)) -- build_collating_symbol (sbcset, mbcset, coll_sym_alloc, name) -- re_charset_t *mbcset; -- int *coll_sym_alloc; -- bitset_t sbcset; -- const unsigned char *name; -+ build_collating_symbol (bitset_t sbcset, re_charset_t *mbcset, -+ int *coll_sym_alloc, const unsigned char *name) - { - int32_t elem, idx; - size_t name_len = strlen ((const char *) name); - if (nrules != 0) - { - elem = seek_collating_symbol_entry (name, name_len); -- if (symb_table[2 * elem] != 0) -+ if (elem != -1) - { - /* We found the entry. */ - idx = symb_table[2 * elem + 1]; - /* Skip the name of collating element name. */ - idx += 1 + extra[idx]; - } -- else if (symb_table[2 * elem] == 0 && name_len == 1) -+ else if (name_len == 1) - { - /* No valid character, treat it as a normal - character. */ -diff -Nrup a/resolv/Makefile b/resolv/Makefile ---- a/resolv/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/resolv/Makefile 2012-06-07 12:15:21.822318657 -0600 -@@ -80,6 +80,7 @@ ifeq (yes,$(have-ssp)) - CFLAGS-libresolv += -fstack-protector - endif - CFLAGS-res_hconf.c = -fexceptions -+CFLAGS-res_send.c += -fno-strict-aliasing - - # The BIND code elicits some harmless warnings. - +cflags += -Wno-strict-prototypes -Wno-write-strings -diff -Nrup a/resource/getrlimit.c b/resource/getrlimit.c ---- a/resource/getrlimit.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/resource/getrlimit.c 2012-06-07 12:15:21.823318653 -0600 -@@ -27,6 +27,7 @@ __getrlimit (enum __rlimit_resource reso - __set_errno (ENOSYS); - return -1; - } -+libc_hidden_def (__getrlimit) - weak_alias (__getrlimit, getrlimit) - - stub_warning (getrlimit) -diff -Nrup a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c ---- a/stdio-common/vfprintf.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/stdio-common/vfprintf.c 2012-06-07 12:15:21.823318653 -0600 -@@ -1168,42 +1168,9 @@ vfprintf (FILE *s, const CHAR_T *format, - else if (!is_long && spec != L_('S')) \ - { \ - if (prec != -1) \ -- { \ -- /* Search for the end of the string, but don't search past \ -- the length (in bytes) specified by the precision. Also \ -- don't use incomplete characters. */ \ -- if (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_MB_CUR_MAX) == 1) \ -- len = __strnlen (string, prec); \ -- else \ -- { \ -- /* In case we have a multibyte character set the \ -- situation is more complicated. We must not copy \ -- bytes at the end which form an incomplete character. */\ -- size_t ignore_size = (unsigned) prec > 1024 ? 1024 : prec;\ -- wchar_t ignore[ignore_size]; \ -- const char *str2 = string; \ -- const char *strend = string + prec; \ -- if (strend < string) \ -- strend = (const char *) UINTPTR_MAX; \ -- \ -- mbstate_t ps; \ -- memset (&ps, '\0', sizeof (ps)); \ -- \ -- while (str2 != NULL && str2 < strend) \ -- if (__mbsnrtowcs (ignore, &str2, strend - str2, \ -- ignore_size, &ps) == (size_t) -1) \ -- { \ -- /* Conversion function has set errno. */ \ -- done = -1; \ -- goto all_done; \ -- } \ -- \ -- if (str2 == NULL) \ -- len = strlen (string); \ -- else \ -- len = str2 - string - (ps.__count & 7); \ -- } \ -- } \ -+ /* Search for th eend of the string, but don't search past \ -+ the length (in bytes) specified by the precision. */ \ -+ len = __strnlen (string, prec); \ - else \ - len = strlen (string); \ - } \ -diff -Nrup a/streams/Makefile b/streams/Makefile ---- a/streams/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/streams/Makefile 2012-06-07 12:15:21.824318649 -0600 -@@ -20,7 +20,7 @@ - # - subdir := streams - --headers = stropts.h sys/stropts.h bits/stropts.h bits/xtitypes.h -+#headers = stropts.h sys/stropts.h bits/stropts.h bits/xtitypes.h - routines = isastream getmsg getpmsg putmsg putpmsg fattach fdetach - - include ../Rules -diff -Nrup a/sunrpc/Makefile b/sunrpc/Makefile ---- a/sunrpc/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/sunrpc/Makefile 2012-06-07 12:15:21.825318645 -0600 -@@ -52,7 +52,7 @@ headers-in-tirpc = $(addprefix rpc/,auth - des_crypt.h) - headers-not-in-tirpc = $(addprefix rpc/,key_prot.h rpc_des.h) \ - $(rpcsvc:%=rpcsvc/%) rpcsvc/bootparam.h --headers = rpc/netdb.h -+headers = rpc/netdb.h $(headers-in-tirpc) $(headers-not-in-tirpc) - install-others = $(inst_sysconfdir)/rpc - generated = $(rpcsvc:%.x=rpcsvc/%.h) $(rpcsvc:%.x=x%.c) $(rpcsvc:%.x=x%.stmp) \ - $(rpcsvc:%.x=rpcsvc/%.stmp) rpcgen -@@ -150,6 +150,10 @@ sunrpc-CPPFLAGS = -D_RPC_THREAD_SAFE_ - CPPFLAGS += $(sunrpc-CPPFLAGS) - BUILD_CPPFLAGS += $(sunrpc-CPPFLAGS) - -+CFLAGS-clnt_tcp.c += -fno-strict-aliasing -+CFLAGS-clnt_udp.c += -fno-strict-aliasing -+CFLAGS-clnt_unix.c += -fno-strict-aliasing -+ - $(objpfx)tst-getmyaddr: $(common-objpfx)linkobj/libc.so - $(objpfx)tst-xdrmem: $(common-objpfx)linkobj/libc.so - $(objpfx)tst-xdrmem2: $(common-objpfx)linkobj/libc.so -diff -Nrup a/sysdeps/generic/dl-cache.h b/sysdeps/generic/dl-cache.h ---- a/sysdeps/generic/dl-cache.h 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/generic/dl-cache.h 2012-06-07 12:15:21.825318645 -0600 -@@ -35,6 +35,14 @@ - # define add_system_dir(dir) add_dir (dir) - #endif - -+#ifndef arch_startup -+# define arch_startup(argc, argv) do { } while (0) -+#endif -+ -+#ifndef add_arch_dirs -+# define add_arch_dirs(config_file) do { } while (0) -+#endif -+ - #define CACHEMAGIC "ld.so-1.7.0" - - /* libc5 and glibc 2.0/2.1 use the same format. For glibc 2.2 another -diff -Nrup a/sysdeps/i386/Makefile b/sysdeps/i386/Makefile ---- a/sysdeps/i386/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/i386/Makefile 2012-06-07 12:15:21.826318641 -0600 -@@ -2,6 +2,8 @@ - # Every i386 port in use uses gas syntax (I think). - asm-CPPFLAGS += -DGAS_SYNTAX - -+sysdep-ASFLAGS += -U__i686 -+ - # The i386 `long double' is a distinct type we support. - long-double-fcts = yes - -@@ -62,6 +64,14 @@ endif - - ifneq (,$(filter -mno-tls-direct-seg-refs,$(CFLAGS))) - defines += -DNO_TLS_DIRECT_SEG_REFS -+else -+# .a libraries are not performance critical and so we -+# build them without direct TLS segment references -+# always. -+CPPFLAGS-.o += -DNO_TLS_DIRECT_SEG_REFS -+CFLAGS-.o += -mno-tls-direct-seg-refs -+CPPFLAGS-.oS += -DNO_TLS_DIRECT_SEG_REFS -+CFLAGS-.oS += -mno-tls-direct-seg-refs - endif - - ifeq ($(subdir),elf) -diff -Nrup a/sysdeps/i386/i686/Makefile b/sysdeps/i386/i686/Makefile ---- a/sysdeps/i386/i686/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/i386/i686/Makefile 2012-06-07 12:15:21.826318641 -0600 -@@ -9,19 +9,3 @@ stack-align-test-flags += -msse - ifeq ($(subdir),string) - sysdep_routines += cacheinfo - endif -- --ifeq (yes,$(config-asflags-i686)) --CFLAGS-.o += -Wa,-mtune=i686 --CFLAGS-.os += -Wa,-mtune=i686 --CFLAGS-.op += -Wa,-mtune=i686 --CFLAGS-.og += -Wa,-mtune=i686 --CFLAGS-.ob += -Wa,-mtune=i686 --CFLAGS-.oS += -Wa,-mtune=i686 -- --ASFLAGS-.o += -Wa,-mtune=i686 --ASFLAGS-.os += -Wa,-mtune=i686 --ASFLAGS-.op += -Wa,-mtune=i686 --ASFLAGS-.og += -Wa,-mtune=i686 --ASFLAGS-.ob += -Wa,-mtune=i686 --ASFLAGS-.oS += -Wa,-mtune=i686 --endif -diff -Nrup a/sysdeps/ia64/libgcc-compat.c b/sysdeps/ia64/libgcc-compat.c ---- a/sysdeps/ia64/libgcc-compat.c 1969-12-31 17:00:00.000000000 -0700 -+++ b/sysdeps/ia64/libgcc-compat.c 2012-06-07 12:15:21.826318641 -0600 -@@ -0,0 +1,84 @@ -+/* pre-.hidden libgcc compatibility -+ Copyright (C) 2002 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 <stdint.h> -+#include <shlib-compat.h> -+ -+#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_2_6) -+ -+typedef int int128_t __attribute__((__mode__(TI))); -+ -+extern long double __divtf3 (long double, long double) attribute_hidden; -+long double INTUSE (__divtf3) (long double x, long double y) -+{ -+ return __divtf3 (x, y); -+} -+symbol_version (INTUSE (__divtf3), __divtf3, GLIBC_2.2); -+ -+extern double __divdf3 (double, double) attribute_hidden; -+double INTUSE (__divdf3) (double x, double y) -+{ -+ return __divdf3 (x, y); -+} -+symbol_version (INTUSE (__divdf3), __divdf3, GLIBC_2.2); -+ -+extern float __divsf3 (float, float) attribute_hidden; -+float INTUSE (__divsf3) (float x, float y) -+{ -+ return __divsf3 (x, y); -+} -+symbol_version (INTUSE (__divsf3), __divsf3, GLIBC_2.2); -+ -+extern int64_t __divdi3 (int64_t, int64_t) attribute_hidden; -+int64_t INTUSE (__divdi3) (int64_t x, int64_t y) -+{ -+ return __divdi3 (x, y); -+} -+symbol_version (INTUSE (__divdi3), __divdi3, GLIBC_2.2); -+ -+extern int64_t __moddi3 (int64_t, int64_t) attribute_hidden; -+int64_t INTUSE (__moddi3) (int64_t x, int64_t y) -+{ -+ return __moddi3 (x, y); -+} -+symbol_version (INTUSE (__moddi3), __moddi3, GLIBC_2.2); -+ -+extern uint64_t __udivdi3 (uint64_t, uint64_t) attribute_hidden; -+uint64_t INTUSE (__udivdi3) (uint64_t x, uint64_t y) -+{ -+ return __udivdi3 (x, y); -+} -+symbol_version (INTUSE (__udivdi3), __udivdi3, GLIBC_2.2); -+ -+extern uint64_t __umoddi3 (uint64_t, uint64_t) attribute_hidden; -+uint64_t INTUSE (__umoddi3) (uint64_t x, uint64_t y) -+{ -+ return __umoddi3 (x, y); -+} -+symbol_version (INTUSE (__umoddi3), __umoddi3, GLIBC_2.2); -+ -+extern int128_t __multi3 (int128_t, int128_t) attribute_hidden; -+int128_t INTUSE (__multi3) (int128_t x, int128_t y) -+{ -+ return __multi3 (x, y); -+} -+symbol_version (INTUSE (__multi3), __multi3, GLIBC_2.2); -+ -+#endif -diff -Nrup a/sysdeps/mach/hurd/getrlimit.c b/sysdeps/mach/hurd/getrlimit.c ---- a/sysdeps/mach/hurd/getrlimit.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/mach/hurd/getrlimit.c 2012-06-07 12:15:21.826318641 -0600 -@@ -43,4 +43,5 @@ __getrlimit (enum __rlimit_resource reso - - return 0; - } -+libc_hidden_def (__getrlimit) - weak_alias (__getrlimit, getrlimit) -diff -Nrup a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c ---- a/sysdeps/posix/getaddrinfo.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/posix/getaddrinfo.c 2012-06-07 12:15:21.827318637 -0600 -@@ -565,8 +565,8 @@ gaih_inet (const char *name, const struc - - /* If we do not have to look for IPv6 addresses, use - the simple, old functions, which do not support -- IPv6 scope ids. */ -- if (req->ai_family == AF_INET) -+ IPv6 scope ids, nor retrieving the canonical name. */ -+ if (req->ai_family == AF_INET && (req->ai_flags & AI_CANONNAME) == 0) - { - size_t tmpbuflen = 512; - assert (tmpbuf == NULL); -@@ -1105,68 +1105,10 @@ gaih_inet (const char *name, const struc - /* Only the first entry gets the canonical name. */ - if (at2 == at && (req->ai_flags & AI_CANONNAME) != 0) - { -- char *tmpbuf2 = NULL; -- bool malloc_tmpbuf2 = false; -- - if (canon == NULL) -- { -- struct hostent *h = NULL; -- int herrno; -- struct hostent th; -- size_t tmpbuf2len = 512; -- -- do -- { -- if (__libc_use_alloca (alloca_used + 2 * tmpbuf2len)) -- tmpbuf2 = extend_alloca_account (tmpbuf2, tmpbuf2len, -- tmpbuf2len * 2, -- alloca_used); -- else -- { -- char *newp = realloc (malloc_tmpbuf2 ? tmpbuf2 : NULL, -- 2 * tmpbuf2len); -- if (newp == NULL) -- { -- if (malloc_tmpbuf2) -- free (tmpbuf2); -- result = -EAI_MEMORY; -- goto free_and_return; -- } -- -- tmpbuf2 = newp; -- tmpbuf2len = 2 * tmpbuf2len; -- malloc_tmpbuf2 = true; -- } -- -- rc = __gethostbyaddr_r (at2->addr, -- ((at2->family == AF_INET6) -- ? sizeof (struct in6_addr) -- : sizeof (struct in_addr)), -- at2->family, &th, tmpbuf2, -- tmpbuf2len, &h, &herrno); -- } -- while (rc == ERANGE && herrno == NETDB_INTERNAL); -- -- if (rc != 0 && herrno == NETDB_INTERNAL) -- { -- if (malloc_tmpbuf2) -- free (tmpbuf2); -- -- __set_h_errno (herrno); -- result = -EAI_SYSTEM; -- goto free_and_return; -- } -- -- if (h != NULL) -- canon = h->h_name; -- else -- { -- assert (orig_name != NULL); -- /* If the canonical name cannot be determined, use -- the passed in string. */ -- canon = orig_name; -- } -- } -+ /* If the canonical name cannot be determined, use -+ the passed in string. */ -+ canon = orig_name; - - #ifdef HAVE_LIBIDN - if (req->ai_flags & AI_CANONIDN) -@@ -1181,9 +1123,6 @@ gaih_inet (const char *name, const struc - int rc = __idna_to_unicode_lzlz (canon, &out, idn_flags); - if (rc != IDNA_SUCCESS) - { -- if (malloc_tmpbuf2) -- free (tmpbuf2); -- - if (rc == IDNA_MALLOC_ERROR) - result = -EAI_MEMORY; - else if (rc == IDNA_DLOPEN_ERROR) -@@ -1213,17 +1152,11 @@ gaih_inet (const char *name, const struc - canon = strdup (canon); - if (canon == NULL) - { -- if (malloc_tmpbuf2) -- free (tmpbuf2); -- - result = -EAI_MEMORY; - goto free_and_return; - } - } - } -- -- if (malloc_tmpbuf2) -- free (tmpbuf2); - } - - family = at2->family; -@@ -1360,10 +1293,12 @@ static const struct scopeentry - /* Link-local addresses: scope 2. */ - { { { 169, 254, 0, 0 } }, htonl_c (0xffff0000), 2 }, - { { { 127, 0, 0, 0 } }, htonl_c (0xff000000), 2 }, -+#if 0 - /* Site-local addresses: scope 5. */ - { { { 10, 0, 0, 0 } }, htonl_c (0xff000000), 5 }, - { { { 172, 16, 0, 0 } }, htonl_c (0xfff00000), 5 }, - { { { 192, 168, 0, 0 } }, htonl_c (0xffff0000), 5 }, -+#endif - /* Default: scope 14. */ - { { { 0, 0, 0, 0 } }, htonl_c (0x00000000), 14 } - }; -diff -Nrup a/sysdeps/powerpc/powerpc64/Makefile b/sysdeps/powerpc/powerpc64/Makefile ---- a/sysdeps/powerpc/powerpc64/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/powerpc/powerpc64/Makefile 2012-06-07 12:15:21.828318633 -0600 -@@ -35,6 +35,9 @@ CFLAGS-rtld-memmove.os = $(no-special-re - CFLAGS-rtld-memchr.os = $(no-special-regs) - CFLAGS-rtld-strnlen.os = $(no-special-regs) - -+CFLAGS-libc-start.c += -fno-asynchronous-unwind-tables -+CFLAGS-gmon-start.c = -fno-strict-aliasing -+ - ifeq ($(subdir),csu) - sysdep_routines += hp-timing - elide-routines.os += hp-timing -diff -Nrup a/sysdeps/s390/s390-64/utf16-utf32-z9.c b/sysdeps/s390/s390-64/utf16-utf32-z9.c ---- a/sysdeps/s390/s390-64/utf16-utf32-z9.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/s390/s390-64/utf16-utf32-z9.c 2012-06-07 12:15:21.829318630 -0600 -@@ -168,10 +168,7 @@ gconv_end (struct __gconv_step *data) - register unsigned long long outlen asm("11") = outend - outptr; \ - uint64_t cc = 0; \ - \ -- asm volatile (".machine push \n\t" \ -- ".machine "z9-109" \n\t" \ -- "0: " INSTRUCTION " \n\t" \ -- ".machine pop \n\t" \ -+ asm volatile ("0: " INSTRUCTION " \n\t" \ - " jo 0b \n\t" \ - " ipm %2 \n" \ - : "+a" (pOutput), "+a" (pInput), "+d" (cc), \ -diff -Nrup a/sysdeps/s390/s390-64/utf8-utf16-z9.c b/sysdeps/s390/s390-64/utf8-utf16-z9.c ---- a/sysdeps/s390/s390-64/utf8-utf16-z9.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/s390/s390-64/utf8-utf16-z9.c 2012-06-07 12:15:21.829318630 -0600 -@@ -150,10 +150,7 @@ gconv_end (struct __gconv_step *data) - register unsigned long long outlen asm("11") = outend - outptr; \ - uint64_t cc = 0; \ - \ -- asm volatile (".machine push \n\t" \ -- ".machine "z9-109" \n\t" \ -- "0: " INSTRUCTION " \n\t" \ -- ".machine pop \n\t" \ -+ asm volatile ("0: " INSTRUCTION " \n\t" \ - " jo 0b \n\t" \ - " ipm %2 \n" \ - : "+a" (pOutput), "+a" (pInput), "+d" (cc), \ -diff -Nrup a/sysdeps/s390/s390-64/utf8-utf32-z9.c b/sysdeps/s390/s390-64/utf8-utf32-z9.c ---- a/sysdeps/s390/s390-64/utf8-utf32-z9.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/s390/s390-64/utf8-utf32-z9.c 2012-06-07 12:15:21.829318630 -0600 -@@ -154,10 +154,7 @@ gconv_end (struct __gconv_step *data) - register unsigned long long outlen asm("11") = outend - outptr; \ - uint64_t cc = 0; \ - \ -- asm volatile (".machine push \n\t" \ -- ".machine "z9-109" \n\t" \ -- "0: " INSTRUCTION " \n\t" \ -- ".machine pop \n\t" \ -+ asm volatile ("0: " INSTRUCTION " \n\t" \ - " jo 0b \n\t" \ - " ipm %2 \n" \ - : "+a" (pOutput), "+a" (pInput), "+d" (cc), \ -diff -Nrup a/sysdeps/unix/nice.c b/sysdeps/unix/nice.c ---- a/sysdeps/unix/nice.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/unix/nice.c 2012-06-07 12:15:21.829318630 -0600 -@@ -41,7 +41,12 @@ nice (int incr) - __set_errno (save); - } - -- result = setpriority (PRIO_PROCESS, 0, prio + incr); -+ prio += incr; -+ if (prio < PRIO_MIN) -+ prio = PRIO_MIN; -+ else if (prio >= PRIO_MAX) -+ prio = PRIO_MAX - 1; -+ result = setpriority (PRIO_PROCESS, 0, prio); - if (result == -1) - { - if (errno == EACCES) -diff -Nrup a/sysdeps/unix/sysv/linux/check_pf.c b/sysdeps/unix/sysv/linux/check_pf.c ---- a/sysdeps/unix/sysv/linux/check_pf.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/check_pf.c 2012-06-07 12:15:21.830318627 -0600 -@@ -26,16 +26,14 @@ - #include <unistd.h> - #include <sys/socket.h> - --#include <asm/types.h> --#include <linux/netlink.h> --#include <linux/rtnetlink.h> -- - #include <not-cancel.h> - #include <kernel-features.h> - #include <bits/libc-lock.h> - #include <atomic.h> - #include <nscd/nscd-client.h> - -+#include "netlinkaccess.h" -+ - - #ifndef IFA_F_HOMEADDRESS - # define IFA_F_HOMEADDRESS 0 -diff -Nrup a/sysdeps/unix/sysv/linux/futimesat.c b/sysdeps/unix/sysv/linux/futimesat.c ---- a/sysdeps/unix/sysv/linux/futimesat.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/futimesat.c 2012-06-07 12:15:21.830318627 -0600 -@@ -36,14 +36,14 @@ futimesat (fd, file, tvp) - { - int result; - -+ if (file == NULL) -+ return __futimes (fd, tvp); -+ - #ifdef __NR_futimesat - # ifndef __ASSUME_ATFCTS - if (__have_atfcts >= 0) - # endif - { -- if (file == NULL) -- return __futimes (fd, tvp); -- - result = INLINE_SYSCALL (futimesat, 3, fd, file, tvp); - # ifndef __ASSUME_ATFCTS - if (result == -1 && errno == ENOSYS) -@@ -57,22 +57,7 @@ futimesat (fd, file, tvp) - #ifndef __ASSUME_ATFCTS - char *buf = NULL; - -- if (file == NULL) -- { -- static const char procfd[] = "/proc/self/fd/%d"; -- /* Buffer for the path name we are going to use. It consists of -- - the string /proc/self/fd/ -- - the file descriptor number. -- The final NUL is included in the sizeof. A bit of overhead -- due to the format elements compensates for possible negative -- numbers. */ -- size_t buflen = sizeof (procfd) + sizeof (int) * 3; -- buf = alloca (buflen); -- -- __snprintf (buf, buflen, procfd, fd); -- file = buf; -- } -- else if (fd != AT_FDCWD && file[0] != '/') -+ if (fd != AT_FDCWD && file[0] != '/') - { - size_t filelen = strlen (file); - if (__builtin_expect (filelen == 0, 0)) -diff -Nrup a/sysdeps/unix/sysv/linux/i386/dl-cache.h b/sysdeps/unix/sysv/linux/i386/dl-cache.h ---- a/sysdeps/unix/sysv/linux/i386/dl-cache.h 1969-12-31 17:00:00.000000000 -0700 -+++ b/sysdeps/unix/sysv/linux/i386/dl-cache.h 2012-06-07 12:15:21.830318627 -0600 -@@ -0,0 +1,59 @@ -+/* Support for reading /etc/ld.so.cache files written by Linux ldconfig. -+ Copyright (C) 2004 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. */ -+ -+static inline int -+is_ia64 (void) -+{ -+ unsigned int fl1, fl2; -+ -+ /* See if we can use cpuid. */ -+ __asm__ ("pushfl; pushfl; popl %0; movl %0,%1; xorl %2,%0;" -+ "pushl %0; popfl; pushfl; popl %0; popfl" -+ : "=&r" (fl1), "=&r" (fl2) -+ : "i" (0x00200000)); -+ if (((fl1 ^ fl2) & 0x00200000) == 0) -+ return 0; -+ -+ /* Host supports cpuid. See if cpuid gives capabilities, try -+ CPUID(0). Preserve %ebx and %ecx; cpuid insn clobbers these, we -+ don't need their CPUID values here, and %ebx may be the PIC -+ register. */ -+ __asm__ ("pushl %%ecx; pushl %%ebx; cpuid; popl %%ebx; popl %%ecx" -+ : "=a" (fl1) : "0" (0) : "edx", "cc"); -+ if (fl1 == 0) -+ return 0; -+ -+ /* Invoke CPUID(1), return %edx; caller can examine bits to -+ determine what's supported. */ -+ __asm__ ("pushl %%ecx; pushl %%ebx; cpuid; popl %%ebx; popl %%ecx" -+ : "=d" (fl2), "=a" (fl1) : "1" (1) : "cc"); -+ return (fl2 & (1 << 30)) != 0; -+} -+ -+#define arch_startup(argc, argv) \ -+ do { \ -+ /* On IA-64, try to execute 64-bit ldconfig if possible. \ -+ This is because the badly designed /emul/ia32-linux hack \ -+ will cause 32-bit ldconfig to do all sorts of weird things. */ \ -+ if (is_ia64 ()) \ -+ execv ("/emul/ia32-linux/../../sbin/ldconfig", \ -+ (char *const *) argv); \ -+ } while (0) -+ -+#include_next <dl-cache.h> -diff -Nrup a/sysdeps/unix/sysv/linux/i386/getrlimit.c b/sysdeps/unix/sysv/linux/i386/getrlimit.c ---- a/sysdeps/unix/sysv/linux/i386/getrlimit.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/i386/getrlimit.c 2012-06-07 12:15:21.830318627 -0600 -@@ -35,4 +35,5 @@ __new_getrlimit (enum __rlimit_resource - } - - weak_alias (__new_getrlimit, __getrlimit); -+libc_hidden_weak (__getrlimit) - versioned_symbol (libc, __new_getrlimit, getrlimit, GLIBC_2_2); -diff -Nrup a/sysdeps/unix/sysv/linux/ia64/dl-procinfo.c b/sysdeps/unix/sysv/linux/ia64/dl-procinfo.c ---- a/sysdeps/unix/sysv/linux/ia64/dl-procinfo.c 1969-12-31 17:00:00.000000000 -0700 -+++ b/sysdeps/unix/sysv/linux/ia64/dl-procinfo.c 2012-06-07 12:15:21.831318623 -0600 -@@ -0,0 +1,5 @@ -+#ifdef IS_IN_ldconfig -+#include <sysdeps/i386/dl-procinfo.c> -+#else -+#include <sysdeps/generic/dl-procinfo.c> -+#endif -diff -Nrup a/sysdeps/unix/sysv/linux/ia64/dl-procinfo.h b/sysdeps/unix/sysv/linux/ia64/dl-procinfo.h ---- a/sysdeps/unix/sysv/linux/ia64/dl-procinfo.h 1969-12-31 17:00:00.000000000 -0700 -+++ b/sysdeps/unix/sysv/linux/ia64/dl-procinfo.h 2012-06-07 12:15:21.831318623 -0600 -@@ -0,0 +1,5 @@ -+#ifdef IS_IN_ldconfig -+#include <sysdeps/unix/sysv/linux/i386/dl-procinfo.h> -+#else -+#include <sysdeps/generic/dl-procinfo.h> -+#endif -diff -Nrup a/sysdeps/unix/sysv/linux/netlinkaccess.h b/sysdeps/unix/sysv/linux/netlinkaccess.h ---- a/sysdeps/unix/sysv/linux/netlinkaccess.h 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/netlinkaccess.h 2012-06-07 12:15:21.831318623 -0600 -@@ -24,6 +24,24 @@ - - #include <kernel-features.h> - -+#ifndef IFA_MAX -+/* 2.6.19 kernel headers helpfully removed some macros and -+ moved lots of stuff into new headers, some of which aren't -+ included by linux/rtnetlink.h. */ -+#include <linux/if_addr.h> -+#endif -+ -+#ifndef IFA_RTA -+# define IFA_RTA(r) \ -+ ((struct rtattr*) ((char*)(r) + NLMSG_ALIGN (sizeof (struct ifaddrmsg)))) -+# define IFA_PAYLOAD(n) NLMSG_PAYLOAD (n, sizeof (struct ifaddrmsg)) -+#endif -+ -+#ifndef IFLA_RTA -+# define IFLA_RTA(r) \ -+ ((struct rtattr*) ((char*)(r) + NLMSG_ALIGN (sizeof (struct ifinfomsg)))) -+# define IFLA_PAYLOAD(n) NLMSG_PAYLOAD (n, sizeof (struct ifinfomsg)) -+#endif - - struct netlink_res - { -diff -Nrup a/sysdeps/unix/sysv/linux/paths.h b/sysdeps/unix/sysv/linux/paths.h ---- a/sysdeps/unix/sysv/linux/paths.h 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/paths.h 2012-06-07 12:15:21.831318623 -0600 -@@ -62,7 +62,7 @@ - #define _PATH_TTY "/dev/tty" - #define _PATH_UNIX "/boot/vmlinux" - #define _PATH_UTMP "/var/run/utmp" --#define _PATH_VI "/usr/bin/vi" -+#define _PATH_VI "/bin/vi" - #define _PATH_WTMP "/var/log/wtmp" - - /* Provide trailing slash, since mostly used for building pathnames. */ -diff -Nrup a/sysdeps/unix/sysv/linux/tcsetattr.c b/sysdeps/unix/sysv/linux/tcsetattr.c ---- a/sysdeps/unix/sysv/linux/tcsetattr.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/tcsetattr.c 2012-06-07 12:15:21.831318623 -0600 -@@ -48,6 +48,7 @@ tcsetattr (fd, optional_actions, termios - { - struct __kernel_termios k_termios; - unsigned long int cmd; -+ int retval; - - switch (optional_actions) - { -@@ -79,6 +80,35 @@ tcsetattr (fd, optional_actions, termios - memcpy (&k_termios.c_cc[0], &termios_p->c_cc[0], - __KERNEL_NCCS * sizeof (cc_t)); - -- return INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); -+ retval = INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); -+ -+ if (retval == 0 && cmd == TCSETS) -+ { -+ /* The Linux kernel has a bug which silently ignore the invalid -+ c_cflag on pty. We have to check it here. */ -+ int save = errno; -+ retval = INLINE_SYSCALL (ioctl, 3, fd, TCGETS, &k_termios); -+ if (retval) -+ { -+ /* We cannot verify if the setting is ok. We don't return -+ an error (?). */ -+ __set_errno (save); -+ retval = 0; -+ } -+ else if ((termios_p->c_cflag & (PARENB | CREAD)) -+ != (k_termios.c_cflag & (PARENB | CREAD)) -+ || ((termios_p->c_cflag & CSIZE) -+ && ((termios_p->c_cflag & CSIZE) -+ != (k_termios.c_cflag & CSIZE)))) -+ { -+ /* It looks like the Linux kernel silently changed the -+ PARENB/CREAD/CSIZE bits in c_cflag. Report it as an -+ error. */ -+ __set_errno (EINVAL); -+ retval = -1; -+ } -+ } -+ -+ return retval; - } - libc_hidden_def (tcsetattr)
hooks/post-receive -- IPFire 3.x development tree