]> git.ipfire.org Git - people/amarx/ipfire-3.x.git/commitdiff
glibc: Update to 2.17.
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 7 Jan 2013 21:04:26 +0000 (22:04 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 7 Jan 2013 21:04:26 +0000 (22:04 +0100)
25 files changed:
glibc/glibc.nm
glibc/patches/glibc-2.17-hardened-pie.patch [moved from glibc/patches/glibc-2.12-hardened-pie.patch with 64% similarity]
glibc/patches/glibc-fedora-__libc_multiple_libcs.patch [new file with mode: 0644]
glibc/patches/glibc-fedora-elf-ORIGIN.patch [new file with mode: 0644]
glibc/patches/glibc-fedora-elf-init-hidden_undef.patch [new file with mode: 0644]
glibc/patches/glibc-fedora-elf-rh737223.patch [new file with mode: 0644]
glibc/patches/glibc-fedora-gai-canonical.patch [new file with mode: 0644]
glibc/patches/glibc-fedora-getrlimit-PLT.patch [new file with mode: 0644]
glibc/patches/glibc-fedora-i386-tls-direct-seg-refs.patch [new file with mode: 0644]
glibc/patches/glibc-fedora-include-bits-ldbl.patch [new file with mode: 0644]
glibc/patches/glibc-fedora-ldd.patch [new file with mode: 0644]
glibc/patches/glibc-fedora-linux-tcsetattr.patch [new file with mode: 0644]
glibc/patches/glibc-fedora-localedata-rh61908.patch [new file with mode: 0644]
glibc/patches/glibc-fedora-localedef.patch [new file with mode: 0644]
glibc/patches/glibc-fedora-locarchive.patch [new file with mode: 0644]
glibc/patches/glibc-fedora-manual-dircategory.patch [new file with mode: 0644]
glibc/patches/glibc-fedora-nis-rh188246.patch [new file with mode: 0644]
glibc/patches/glibc-fedora-nptl-linklibc.patch [new file with mode: 0644]
glibc/patches/glibc-fedora-nscd.patch [new file with mode: 0644]
glibc/patches/glibc-fedora-ppc-unwind.patch [new file with mode: 0644]
glibc/patches/glibc-fedora-pt_chown.patch [new file with mode: 0644]
glibc/patches/glibc-fedora-regcomp-sw11561.patch [new file with mode: 0644]
glibc/patches/glibc-fedora-streams-rh436349.patch [new file with mode: 0644]
glibc/patches/glibc-fedora-uname-getrlimit.patch [new file with mode: 0644]
glibc/patches/glibc-fedora.patch [deleted file]

index 23ac9c7fde08c6faef0431992ce9b906a65dc9f4..ac7f160ecf45dff772f3d7e3ab2f71f34fa783a5 100644 (file)
@@ -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}
similarity index 64%
rename from glibc/patches/glibc-2.12-hardened-pie.patch
rename to glibc/patches/glibc-2.17-hardened-pie.patch
index 689e71c7276333f8606223fdd279e0a2e916f31e..da4fb82539cf184d69a0b10691a9d3ac389e33e5 100644 (file)
@@ -1,13 +1,14 @@
-2009-11-08     Magnus Granberg         <zorry@ume.nu>
+2012-11-11  Magnus Granberg  <zorry@gentoo.org>
 
-               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
-               
+       #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.
 
---- a/Makeconfig       2009-11-06 16:39:18.000000000 +0100
-+++ b/Makeconfig       2009-11-08 03:14:45.000000000 +0100
+--- libc/Makeconfig
++++ libc/Makeconfig
 @@ -447,11 +447,12 @@
             $(common-objpfx)libc% $(+postinit),$^) \
             $(link-extra-libs) $(link-libc) $(+postctorS) $(+postinit)
 ++link = $(+link-pie)
  # Command for statically linking programs with the C library.
  ifndef +link-static
- +link-static = $(CC) -nostdlib -nostartfiles -static -o $@ \
+ +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) $(+prector) \
+             $(+preinit) $(+prectorT) \
              $(filter-out $(addprefix $(csu-objpfx),start.o \
                                                     $(start-installed-name))\
 @@ -549,11 +550,10 @@
@@ -33,6 +34,9 @@
  +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 (file)
index 0000000..d15920a
--- /dev/null
@@ -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 (file)
index 0000000..bfaff83
--- /dev/null
@@ -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 (file)
index 0000000..cd50d3b
--- /dev/null
@@ -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 (file)
index 0000000..5ae6e3a
--- /dev/null
@@ -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 (file)
index 0000000..c058ecf
--- /dev/null
@@ -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 (file)
index 0000000..bd77bb3
--- /dev/null
@@ -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 (file)
index 0000000..80c0f0d
--- /dev/null
@@ -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 (file)
index 0000000..1e5d763
--- /dev/null
@@ -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 (file)
index 0000000..51aec73
--- /dev/null
@@ -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 (file)
index 0000000..066ac48
--- /dev/null
@@ -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 (file)
index 0000000..c8fee0f
--- /dev/null
@@ -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 (file)
index 0000000..ee1463a
--- /dev/null
@@ -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 (file)
index 0000000..9a702af
--- /dev/null
@@ -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 (file)
index 0000000..f681620
--- /dev/null
@@ -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 (file)
index 0000000..9389901
--- /dev/null
@@ -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 (file)
index 0000000..350c350
--- /dev/null
@@ -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 (file)
index 0000000..a26b928
--- /dev/null
@@ -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 (file)
index 0000000..7e9b7ab
--- /dev/null
@@ -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 (file)
index 0000000..f64f449
--- /dev/null
@@ -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 (file)
index 0000000..0edc04f
--- /dev/null
@@ -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 (file)
index 0000000..44b9195
--- /dev/null
@@ -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 (file)
index 0000000..86383d4
--- /dev/null
@@ -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 (file)
index 7b58d3b..0000000
+++ /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)