From 278d27159a2255d0659b8de308d541c6e48db525a772f23b239e689bd941c41d Mon Sep 17 00:00:00 2001
From: OBS User buildservice-autocommit <null@suse.de>
Date: Mon, 25 Jul 2011 10:28:35 +0000
Subject: [PATCH 1/4] Updating link to change in openSUSE:Factory/glibc
 revision 72.0

OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=60db27dd9c3fed4576035a8353c02b20
---
 glibc.spec | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/glibc.spec b/glibc.spec
index 94a7509..b3905f9 100644
--- a/glibc.spec
+++ b/glibc.spec
@@ -78,7 +78,7 @@ Obsoletes:      glibc-64bit
 Obsoletes:      glibc-32bit
 %endif
 Version:        2.13
-Release:        27
+Release:        29
 Url:            http://www.gnu.org/software/libc/libc.html
 Source:         glibc-%{version}-996cf2ef0727.tar.bz2
 Source2:        http://ftp.gnu.org/gnu/glibc/glibc-ports-2.13.tar.bz2

From f9d5ef479113192c501f0f431bdcd8facd559caa3b9cf108de16f298a2cd3db4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= <crrodriguez@opensuse.org>
Date: Wed, 17 Aug 2011 19:42:24 +0000
Subject: [PATCH 2/4] Accepting request 79155 from home:a_jaeger:glibc214

Update to glibc 2.14

OBS-URL: https://build.opensuse.org/request/show/79155
OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=88
---
 getaddrinfo-ipv6-sanity.diff          |  13 +-
 glibc-2.10-nscd-nostack.diff          |  18 --
 glibc-2.13-996cf2ef0727.tar.bz2       |   3 -
 glibc-2.13-dl-load.patch              | 320 --------------------------
 glibc-2.14-4eddf93f5cc2.tar.bz2       |   3 +
 glibc-2.2-sunrpc.diff                 |   1 +
 glibc-2.3.1.localedef.diff            |  72 ------
 glibc-2.4.90-nscd.diff                |   8 +-
 glibc-2.6-configure.diff              |  40 ----
 glibc-bso-12454.diff                  |  27 ---
 glibc-cpusetsize.diff                 |  28 +--
 glibc-disable-backward-memcpy.diff    |  45 ----
 glibc-fnmatch-multibyte.diff          |  92 --------
 glibc-ports-2.13.tar.bz2              |   3 -
 glibc-ports-2.14.tar.bz2              |   3 +
 glibc-revert-fseek-on-fclose.diff     | 212 +++++++++++++++++
 glibc-static-memcpy.diff              |  61 -----
 glibc-strict-aliasing.diff            |  13 +-
 glibc-vfprintf-positional.diff        |  20 --
 glibc-zarch-longlong.diff             |  41 ----
 glibc.changes                         |  42 ++++
 glibc.rpmlintrc                       |   2 +
 glibc.spec                            |  64 ++----
 glibc2.14-revert-sunrpc-removal.patch |  63 +++++
 manpages.tar.bz2                      |   4 +-
 missing-include-build-fix.diff        |  31 ---
 26 files changed, 372 insertions(+), 857 deletions(-)
 delete mode 100644 glibc-2.10-nscd-nostack.diff
 delete mode 100644 glibc-2.13-996cf2ef0727.tar.bz2
 delete mode 100644 glibc-2.13-dl-load.patch
 create mode 100644 glibc-2.14-4eddf93f5cc2.tar.bz2
 delete mode 100644 glibc-2.3.1.localedef.diff
 delete mode 100644 glibc-2.6-configure.diff
 delete mode 100644 glibc-bso-12454.diff
 delete mode 100644 glibc-disable-backward-memcpy.diff
 delete mode 100644 glibc-fnmatch-multibyte.diff
 delete mode 100644 glibc-ports-2.13.tar.bz2
 create mode 100644 glibc-ports-2.14.tar.bz2
 create mode 100644 glibc-revert-fseek-on-fclose.diff
 delete mode 100644 glibc-static-memcpy.diff
 delete mode 100644 glibc-vfprintf-positional.diff
 delete mode 100644 glibc-zarch-longlong.diff
 create mode 100644 glibc2.14-revert-sunrpc-removal.patch
 delete mode 100644 missing-include-build-fix.diff

diff --git a/getaddrinfo-ipv6-sanity.diff b/getaddrinfo-ipv6-sanity.diff
index c89228d..c982e8b 100644
--- a/getaddrinfo-ipv6-sanity.diff
+++ b/getaddrinfo-ipv6-sanity.diff
@@ -13,16 +13,7 @@ Index: sysdeps/posix/getaddrinfo.c
  {
    const struct gaih_typeproto *tp = gaih_inet_typeproto;
    struct gaih_servtuple *st = (struct gaih_servtuple *) &nullserv;
-@@ -706,7 +706,7 @@ gaih_inet (const char *name, const struc
- 	      no_data = 0;
- 	      nss_gethostbyname4_r fct4
- 		= __nss_lookup_function (nip, "gethostbyname4_r");
--	      if (fct4 != NULL)
-+	      if (fct4 != NULL && usable_ipv6)
- 		{
- 		  int herrno;
- 
-@@ -763,7 +763,7 @@ gaih_inet (const char *name, const struc
+@@ -766,7 +766,7 @@ gaih_inet (const char *name, const struc
  		  if (fct != NULL)
  		    {
  		      if (req->ai_family == AF_INET6
@@ -31,7 +22,7 @@ Index: sysdeps/posix/getaddrinfo.c
  			{
  			  gethosts (AF_INET6, struct in6_addr);
  			  no_inet6_data = no_data;
-@@ -2156,7 +2156,7 @@ getaddrinfo (const char *name, const cha
+@@ -2157,7 +2157,7 @@ getaddrinfo (const char *name, const cha
    if (hints->ai_family == AF_UNSPEC || hints->ai_family == AF_INET
        || hints->ai_family == AF_INET6)
      {
diff --git a/glibc-2.10-nscd-nostack.diff b/glibc-2.10-nscd-nostack.diff
deleted file mode 100644
index 0e778ef..0000000
--- a/glibc-2.10-nscd-nostack.diff
+++ /dev/null
@@ -1,18 +0,0 @@
-Index: nscd/nscd.h
-===================================================================
---- nscd/nscd.h.orig
-+++ nscd/nscd.h
-@@ -59,7 +59,12 @@ typedef enum
- 
- /* Maximum size of stack frames we allow the thread to use.  We use
-    80% of the thread stack size.  */
--#define MAX_STACK_USE ((8 * NSCD_THREAD_STACKSIZE) / 10)
-+// #define MAX_STACK_USE ((8 * NSCD_THREAD_STACKSIZE) / 10)
-+/* alloca() calls use extra space on stack that we cannot reliably
-+   account for, the optimization effect is not that big and they are
-+   prone to hard-to-debug crashes. In short, they are much more trouble
-+   than they are worth. */
-+#define MAX_STACK_USE 0
- 
- 
- /* Structure describing dynamic part of one database.  */
diff --git a/glibc-2.13-996cf2ef0727.tar.bz2 b/glibc-2.13-996cf2ef0727.tar.bz2
deleted file mode 100644
index 0e56656..0000000
--- a/glibc-2.13-996cf2ef0727.tar.bz2
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:023aef147d380f0e4ca2ff0617355b0ef69e41f00db7c463c800fabdb62e8faa
-size 16381764
diff --git a/glibc-2.13-dl-load.patch b/glibc-2.13-dl-load.patch
deleted file mode 100644
index 89443e3..0000000
--- a/glibc-2.13-dl-load.patch
+++ /dev/null
@@ -1,320 +0,0 @@
-2011-05-11  Ulrich Drepper  <drepper@gmail.com>
-
-        [BZ #12393]
-        * elf/dl-load.c (is_trusted_path): Remove unnecessary test.
-        (is_trusted_path_normalize): Skip initial colon.  Append slash
-        to empty buffer.  Duplicate is_trusted_path code but allow
-        constructed patch to be prefix.
-        (is_dst): Allow $ORIGIN followed by /.
-        (_dl_dst_substitute): Correct clearing of check_for_trusted.
-        Correct testing of result of is_trusted_path_normalize
-        (decompose_rpath): Fix warning.
-
-2011-05-07  Petr Baudis  <pasky@suse.cz>
-            Ulrich Drepper  <drepper@gmail.com>
-
-        [BZ #12393]
-        * elf/dl-load.c (fillin_rpath): Move trusted path check...
-        (is_trusted_path): ...to here.
-        (is_trusted_path_normalize): Wrapper for /../ and /./ normalization.
-        (_dl_dst_substitute): Verify expanded $ORIGIN path elements
-        using is_trusted_path_normalize() in setuid scripts.
-
-2011-03-14  Andreas Schwab  <schwab@redhat.com>
-
-        * elf/dl-load.c (_dl_dst_substitute): When skipping the first
-        rpath element also skip the following colon.
-        (expand_dynamic_string_token): Add is_path parameter and pass
-        down to DL_DST_REQUIRED and _dl_dst_substitute.
-        (decompose_rpath): Call expand_dynamic_string_token with
-        non-zero is_path.  Ignore empty rpaths.
-        (_dl_map_object_from_fd): Call expand_dynamic_string_token
-        with zero is_path.
-
-2011-03-06  Ulrich Drepper  <drepper@gmail.com>
-
-        * elf/dl-load.c (_dl_map_object): If we are looking for the first
-        to-be-loaded object along a path to loader is ld.so.
-
-
---- glibc-2.13/elf/dl-load.c	2011-05-20 21:53:43.766426054 +0200
-+++ glibc-2.14/elf/dl-load.c	2011-05-31 09:59:16.781617374 +0200
-@@ -1,5 +1,5 @@
- /* Map in a shared object's segments from the file.
--   Copyright (C) 1995-2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
-+   Copyright (C) 1995-2007, 2009, 2010, 2011 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
-@@ -168,6 +168,87 @@ local_strdup (const char *s)
- }
- 
- 
-+static bool
-+is_trusted_path (const char *path, size_t len)
-+{
-+  const char *trun = system_dirs;
-+
-+  for (size_t idx = 0; idx < nsystem_dirs_len; ++idx)
-+    {
-+      if (len == system_dirs_len[idx] && memcmp (trun, path, len) == 0)
-+	/* Found it.  */
-+	return true;
-+
-+      trun += system_dirs_len[idx] + 1;
-+    }
-+
-+  return false;
-+}
-+
-+
-+static bool
-+is_trusted_path_normalize (const char *path, size_t len)
-+{
-+  if (len == 0)
-+    return false;
-+
-+  if (*path == ':')
-+    {
-+      ++path;
-+      --len;
-+    }
-+
-+  char *npath = (char *) alloca (len + 2);
-+  char *wnp = npath;
-+  while (*path != '\0')
-+    {
-+      if (path[0] == '/')
-+	{
-+	  if (path[1] == '.')
-+	    {
-+	      if (path[2] == '.' && (path[3] == '/' || path[3] == '\0'))
-+		{
-+		  while (wnp > npath && *--wnp != '/')
-+		    ;
-+		  path += 3;
-+		  continue;
-+		}
-+	      else if (path[2] == '/' || path[2] == '\0')
-+		{
-+		  path += 2;
-+		  continue;
-+		}
-+	    }
-+
-+	  if (wnp > npath && wnp[-1] == '/')
-+	    {
-+	      ++path;
-+	      continue;
-+	    }
-+	}
-+
-+      *wnp++ = *path++;
-+    }
-+
-+  if (wnp == npath || wnp[-1] != '/')
-+    *wnp++ = '/';
-+
-+  const char *trun = system_dirs;
-+
-+  for (size_t idx = 0; idx < nsystem_dirs_len; ++idx)
-+    {
-+      if (wnp - npath >= system_dirs_len[idx]
-+	  && memcmp (trun, npath, system_dirs_len[idx]) == 0)
-+	/* Found it.  */
-+	return true;
-+
-+      trun += system_dirs_len[idx] + 1;
-+    }
-+
-+  return false;
-+}
-+
-+
- static size_t
- is_dst (const char *start, const char *name, const char *str,
- 	int is_path, int secure)
-@@ -200,7 +281,8 @@ is_dst (const char *start, const char *n
-     return 0;
- 
-   if (__builtin_expect (secure, 0)
--      && ((name[len] != '\0' && (!is_path || name[len] != ':'))
-+      && ((name[len] != '\0' && name[len] != '/'
-+	   && (!is_path || name[len] != ':'))
- 	  || (name != start + 1 && (!is_path || name[-2] != ':'))))
-     return 0;
- 
-@@ -240,13 +322,14 @@ _dl_dst_substitute (struct link_map *l,
- 		    int is_path)
- {
-   const char *const start = name;
--  char *last_elem, *wp;
- 
-   /* Now fill the result path.  While copying over the string we keep
-      track of the start of the last path element.  When we come accross
-      a DST we copy over the value or (if the value is not available)
-      leave the entire path element out.  */
--  last_elem = wp = result;
-+  char *wp = result;
-+  char *last_elem = result;
-+  bool check_for_trusted = false;
- 
-   do
-     {
-@@ -265,6 +348,9 @@ _dl_dst_substitute (struct link_map *l,
- 	      else
- #endif
- 		repl = l->l_origin;
-+
-+	      check_for_trusted = (INTUSE(__libc_enable_secure)
-+				   && l->l_type == lt_executable);
- 	    }
- 	  else if ((len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0)
- 	    repl = GLRO(dl_platform);
-@@ -284,6 +370,10 @@ _dl_dst_substitute (struct link_map *l,
- 	      name += len;
- 	      while (*name != '\0' && (!is_path || *name != ':'))
- 		++name;
-+	      /* Also skip following colon if this is the first rpath
-+		 element, but keep an empty element at the end.  */
-+	      if (wp == result && is_path && *name == ':' && name[1] != '\0')
-+		++name;
- 	    }
- 	  else
- 	    /* No DST we recognize.  */
-@@ -293,11 +383,28 @@ _dl_dst_substitute (struct link_map *l,
- 	{
- 	  *wp++ = *name++;
- 	  if (is_path && *name == ':')
--	    last_elem = wp;
-+	    {
-+	      /* In SUID/SGID programs, after $ORIGIN expansion the
-+		 normalized path must be rooted in one of the trusted
-+		 directories.  */
-+	      if (__builtin_expect (check_for_trusted, false)
-+		  && !is_trusted_path_normalize (last_elem, wp - last_elem))
-+		wp = last_elem;
-+	      else
-+		last_elem = wp;
-+
-+	      check_for_trusted = false;
-+	    }
- 	}
-     }
-   while (*name != '\0');
- 
-+  /* In SUID/SGID programs, after $ORIGIN expansion the normalized
-+     path must be rooted in one of the trusted directories.  */
-+  if (__builtin_expect (check_for_trusted, false)
-+      && !is_trusted_path_normalize (last_elem, wp - last_elem))
-+    wp = last_elem;
-+
-   *wp = '\0';
- 
-   return result;
-@@ -310,7 +417,7 @@ _dl_dst_substitute (struct link_map *l,
-    belonging to the map is loaded.  In this case the path element
-    containing $ORIGIN is left out.  */
- static char *
--expand_dynamic_string_token (struct link_map *l, const char *s)
-+expand_dynamic_string_token (struct link_map *l, const char *s, int is_path)
- {
-   /* We make two runs over the string.  First we determine how large the
-      resulting string is and then we copy it over.  Since this is no
-@@ -321,7 +428,7 @@ expand_dynamic_string_token (struct link
-   char *result;
- 
-   /* Determine the number of DST elements.  */
--  cnt = DL_DST_COUNT (s, 1);
-+  cnt = DL_DST_COUNT (s, is_path);
- 
-   /* If we do not have to replace anything simply copy the string.  */
-   if (__builtin_expect (cnt, 0) == 0)
-@@ -335,7 +442,7 @@ expand_dynamic_string_token (struct link
-   if (result == NULL)
-     return NULL;
- 
--  return _dl_dst_substitute (l, s, result, 1);
-+  return _dl_dst_substitute (l, s, result, is_path);
- }
- 
- 
-@@ -407,33 +514,8 @@ fillin_rpath (char *rpath, struct r_sear
- 	cp[len++] = '/';
- 
-       /* Make sure we don't use untrusted directories if we run SUID.  */
--      if (__builtin_expect (check_trusted, 0))
--	{
--	  const char *trun = system_dirs;
--	  size_t idx;
--	  int unsecure = 1;
--
--	  /* All trusted directories must be complete names.  */
--	  if (cp[0] == '/')
--	    {
--	      for (idx = 0; idx < nsystem_dirs_len; ++idx)
--		{
--		  if (len == system_dirs_len[idx]
--		      && memcmp (trun, cp, len) == 0)
--		    {
--		      /* Found it.  */
--		      unsecure = 0;
--		      break;
--		    }
--
--		  trun += system_dirs_len[idx] + 1;
--		}
--	    }
--
--	  if (unsecure)
--	    /* Simply drop this directory.  */
--	    continue;
--	}
-+      if (__builtin_expect (check_trusted, 0) && !is_trusted_path (cp, len))
-+	continue;
- 
-       /* See if this directory is already known.  */
-       for (dirp = GL(dl_all_dirs); dirp != NULL; dirp = dirp->next)
-@@ -551,13 +633,21 @@ decompose_rpath (struct r_search_path_st
- 
-   /* Make a writable copy.  At the same time expand possible dynamic
-      string tokens.  */
--  copy = expand_dynamic_string_token (l, rpath);
-+  copy = expand_dynamic_string_token (l, rpath, 1);
-   if (copy == NULL)
-     {
-       errstring = N_("cannot create RUNPATH/RPATH copy");
-       goto signal_error;
-     }
- 
-+  /* Ignore empty rpaths.  */
-+  if (*copy == 0)
-+    {
-+      free (copy);
-+      sps->dirs = (struct r_search_path_elem **) -1;
-+      return false;
-+    }
-+
-   /* Count the number of necessary elements in the result array.  */
-   nelems = 0;
-   for (cp = copy; *cp != '\0'; ++cp)
-@@ -2109,7 +2201,9 @@ _dl_map_object (struct link_map *loader,
- 	    {
- #ifdef SHARED
- 	      // XXX Correct to unconditionally default to namespace 0?
--	      l = loader ?: GL(dl_ns)[LM_ID_BASE]._ns_loaded;
-+	      l = (loader
-+		   ?: GL(dl_ns)[LM_ID_BASE]._ns_loaded
-+		   ?: &GL(dl_rtld_map));
- #else
- 	      l = loader;
- #endif
-@@ -2175,7 +2269,7 @@ _dl_map_object (struct link_map *loader,
-     {
-       /* The path may contain dynamic string tokens.  */
-       realname = (loader
--		  ? expand_dynamic_string_token (loader, name)
-+		  ? expand_dynamic_string_token (loader, name, 0)
- 		  : local_strdup (name));
-       if (realname == NULL)
- 	fd = -1;
diff --git a/glibc-2.14-4eddf93f5cc2.tar.bz2 b/glibc-2.14-4eddf93f5cc2.tar.bz2
new file mode 100644
index 0000000..b4e0165
--- /dev/null
+++ b/glibc-2.14-4eddf93f5cc2.tar.bz2
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:497c07f228208e8a0660ae5ee8919e4a6b5b59bb867891c7c02de8995310960e
+size 15640100
diff --git a/glibc-2.2-sunrpc.diff b/glibc-2.2-sunrpc.diff
index 5297ca9..c8ab99b 100644
--- a/glibc-2.2-sunrpc.diff
+++ b/glibc-2.2-sunrpc.diff
@@ -1,6 +1,7 @@
 For details see:
 http://sourceware.org/bugzilla/show_bug.cgi?id=5379
 
+
 Index: sunrpc/clnt_udp.c
 ===================================================================
 --- sunrpc/clnt_udp.c.orig
diff --git a/glibc-2.3.1.localedef.diff b/glibc-2.3.1.localedef.diff
deleted file mode 100644
index 8858980..0000000
--- a/glibc-2.3.1.localedef.diff
+++ /dev/null
@@ -1,72 +0,0 @@
-Check:
-http://sourceware.org/bugzilla/show_bug.cgi?id=10855
-
--------------------------------------------------------------------
-Mon Oct 21 17:20:04 CEST 2002 - schwab@suse.de
-
-- Fix alignment in locale-archive.
-
-Index: locale/programs/locarchive.c
-===================================================================
---- locale/programs/locarchive.c.orig
-+++ locale/programs/locarchive.c
-@@ -75,6 +75,9 @@ static const char *locnames[] =
- #define RESERVE_MMAP_SIZE	512 * 1024 * 1024
- 
- 
-+#define ALIGN(offset, alignment) \
-+  (((offset) + (alignment) - 1) & -(alignment))
-+
- static void
- create_archive (const char *archivefname, struct locarhandle *ah)
- {
-@@ -94,7 +97,8 @@ create_archive (const char *archivefname
-   /* Create the initial content of the archive.  */
-   head.magic = AR_MAGIC;
-   head.serial = 0;
--  head.namehash_offset = sizeof (struct locarhead);
-+  head.namehash_offset = ALIGN (sizeof (struct locarhead),
-+				__alignof__ (struct namehashent));
-   head.namehash_used = 0;
-   head.namehash_size = next_prime (INITIAL_NUM_NAMES);
- 
-@@ -103,12 +107,15 @@ create_archive (const char *archivefname
-   head.string_used = 0;
-   head.string_size = INITIAL_SIZE_STRINGS;
- 
--  head.locrectab_offset = head.string_offset + head.string_size;
-+  head.locrectab_offset = ALIGN (head.string_offset + head.string_size,
-+				 __alignof__ (struct locrecent));
-   head.locrectab_used = 0;
-   head.locrectab_size = INITIAL_NUM_LOCREC;
- 
--  head.sumhash_offset = (head.locrectab_offset
--			 + head.locrectab_size * sizeof (struct locrecent));
-+  head.sumhash_offset = ALIGN (head.locrectab_offset
-+			       + (head.locrectab_size
-+				  * sizeof (struct locrecent)),
-+			       __alignof__ (struct sumhashent));
-   head.sumhash_used = 0;
-   head.sumhash_size = next_prime (INITIAL_NUM_SUMS);
- 
-@@ -356,13 +363,16 @@ enlarge_archive (struct locarhandle *ah,
-   newhead.string_size = MAX ((2 * newhead.string_used + 3) & -4,
- 			     newhead.string_size);
- 
--  newhead.locrectab_offset = newhead.string_offset + newhead.string_size;
-+  newhead.locrectab_offset = ALIGN (newhead.string_offset
-+				    + newhead.string_size,
-+				    __alignof__ (struct locrecent));
-   newhead.locrectab_size = MAX (2 * newhead.locrectab_used,
- 				newhead.locrectab_size);
- 
--  newhead.sumhash_offset = (newhead.locrectab_offset
--			    + (newhead.locrectab_size
--			       * sizeof (struct locrecent)));
-+  newhead.sumhash_offset = ALIGN (newhead.locrectab_offset
-+				  + (newhead.locrectab_size
-+				     * sizeof (struct locrecent)),
-+				  __alignof__ (struct sumhashent));
-   newhead.sumhash_size = MAX (next_prime (2 * newhead.sumhash_used),
- 			      newhead.sumhash_size);
- 
diff --git a/glibc-2.4.90-nscd.diff b/glibc-2.4.90-nscd.diff
index ce178a1..43a66dc 100644
--- a/glibc-2.4.90-nscd.diff
+++ b/glibc-2.4.90-nscd.diff
@@ -2,7 +2,7 @@ Index: nscd/cache.c
 ===================================================================
 --- nscd/cache.c.orig	2010-01-18 18:01:41.000000000 +0100
 +++ nscd/cache.c	2010-02-14 14:58:08.000000000 +0100
-@@ -267,28 +267,31 @@ prune_cache (struct database_dyn *table,
+@@ -267,27 +267,29 @@
    if (table->inotify_descr < 0 && table->check_file && now != LONG_MAX)
      {
        struct stat64 st;
@@ -14,7 +14,7 @@ Index: nscd/cache.c
  	{
 -	  char buf[128];
 -	  /* We cannot stat() the file, disable file checking if the
--             file does not exist.  */
+-	     file does not exist.  */
 -	  dbg_log (_("cannot stat() file `%s': %s"),
 -		   table->filename, strerror_r (errno, buf, sizeof (buf)));
 -	  if (errno == ENOENT)
@@ -37,14 +37,12 @@ Index: nscd/cache.c
  	    }
  	}
      }
- 
 +  /* now == 0 means just check for changed files */
 +  if (now == (time_t)0)
 +    return 0;
-+
+ 
    /* We run through the table and find values which are not valid anymore.
  
-      Note that for the initial step, finding the entries to be removed,
 Index: nscd/connections.c
 ===================================================================
 --- nscd/connections.c.orig	2010-01-18 18:01:41.000000000 +0100
diff --git a/glibc-2.6-configure.diff b/glibc-2.6-configure.diff
deleted file mode 100644
index 530a453..0000000
--- a/glibc-2.6-configure.diff
+++ /dev/null
@@ -1,40 +0,0 @@
---- configure.in.orig	2011-05-20 15:36:44.880141789 +0200
-+++ configure.in	2011-05-20 15:39:31.237690293 +0200
-@@ -1406,7 +1406,7 @@
- 		      fi
- 		    fi
- 		  fi
--		  rm -f conftest.[cs]
-+		  rm -f conftest.*
- 		 ])
-     if test $libc_cv_visibility_attribute != yes; then
-       AC_MSG_ERROR(compiler support for visibility attribute is required)
-@@ -1422,7 +1422,7 @@
- 		  int bar (int x) { return x; }
- EOF
- 		  libc_cv_broken_visibility_attribute=yes
--		  if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s1>&AS_MESSAGE_LOG_FD); then
-+		  if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s >&AS_MESSAGE_LOG_FD); then
- changequote(,)dnl
- 		    if grep '\.hidden[ 	_]foo' conftest.s >/dev/null; then
- changequote([,])dnl
---- configure.orig	2011-05-20 15:39:38.413972560 +0200
-+++ configure	2011-05-20 15:40:52.292884126 +0200
-@@ -6112,7 +6112,7 @@
- 		  int bar (int x) { return x; }
- EOF
- 		  libc_cv_broken_visibility_attribute=yes
--		  if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s1>&5'
-+		  if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s>&5'
-   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
-   (eval $ac_try) 2>&5
-   ac_status=$?
-@@ -6753,7 +6753,7 @@
- 		  else
- 		    libc_cv_have_section_quotes=unknown
- 		  fi
--		  rm -f conftest.cs
-+		  rm -f conftest.*
- 
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_have_section_quotes" >&5
diff --git a/glibc-bso-12454.diff b/glibc-bso-12454.diff
deleted file mode 100644
index 68c26da..0000000
--- a/glibc-bso-12454.diff
+++ /dev/null
@@ -1,27 +0,0 @@
-2011-03-02  Andreas Schwab  <schwab@redhat.com>
-
-       [BZ #12454]
-       * elf/dl-deps.c (_dl_map_object_deps): Don't try to sort
-       dependencies when there are none.
-
---- a/elf/dl-deps.c.orig	2011-05-25 16:42:39.000000000 +0200
-+++ a/elf/dl-deps.c	2011-05-25 16:44:07.000000000 +0200
-@@ -619,7 +619,8 @@
- 
-   /* We can skip looking for the binary itself which is at the front
-      of the search list.  */
--  assert (nlist > 1);
-+  if (nlist > 1)
-+    {
-   i = 1;
-   bool seen[nlist];
-   memset (seen, false, nlist * sizeof (seen[0]));
-@@ -669,7 +670,7 @@
- 
-     next:;
-     }
--
-+    }
-   /* Terminate the list of dependencies.  */
-   l_initfini[nlist] = NULL;
-   atomic_write_barrier ();
diff --git a/glibc-cpusetsize.diff b/glibc-cpusetsize.diff
index 4e67f90..4049a3f 100644
--- a/glibc-cpusetsize.diff
+++ b/glibc-cpusetsize.diff
@@ -2,20 +2,20 @@ Index: bits/sched.h
 ===================================================================
 --- bits/sched.h.orig
 +++ bits/sched.h
-@@ -38,7 +38,7 @@ struct sched_param
- #if defined _SCHED_H && !defined __cpu_set_t_defined
- # define __cpu_set_t_defined
- /* Size definition for CPU sets.  */
--# define __CPU_SETSIZE	1024
-+# define __CPU_SETSIZE	4096
- # define __NCPUBITS	(8 * sizeof (__cpu_mask))
- 
- /* Type for array elements in 'cpu_set'.  */
-Index: sysdeps/unix/sysv/linux/bits/sched.h
-===================================================================
---- sysdeps/unix/sysv/linux/bits/sched.h.orig
-+++ sysdeps/unix/sysv/linux/bits/sched.h
-@@ -106,7 +106,7 @@ struct __sched_param
+@@ -54,7 +54,7 @@ struct __sched_param
+ #if defined _SCHED_H && !defined __cpu_set_t_defined
+ # define __cpu_set_t_defined
+ /* Size definition for CPU sets.  */
+-# define __CPU_SETSIZE	1024
++# define __CPU_SETSIZE	4096
+ # define __NCPUBITS	(8 * sizeof (__cpu_mask))
+ 
+ /* Type for array elements in 'cpu_set_t'.  */
+Index: sysdeps/unix/sysv/linux/bits/sched.h
+===================================================================
+--- sysdeps/unix/sysv/linux/bits/sched.h.orig
++++ sysdeps/unix/sysv/linux/bits/sched.h
+@@ -113,7 +113,7 @@ struct __sched_param
  #if defined _SCHED_H && !defined __cpu_set_t_defined
  # define __cpu_set_t_defined
  /* Size definition for CPU sets.  */
diff --git a/glibc-disable-backward-memcpy.diff b/glibc-disable-backward-memcpy.diff
deleted file mode 100644
index fda40ca..0000000
--- a/glibc-disable-backward-memcpy.diff
+++ /dev/null
@@ -1,45 +0,0 @@
-Index: glibc-2.13/sysdeps/x86_64/multiarch/Makefile
-===================================================================
---- glibc-2.13.orig/sysdeps/x86_64/multiarch/Makefile
-+++ glibc-2.13/sysdeps/x86_64/multiarch/Makefile
-@@ -6,7 +6,7 @@ endif
- ifeq ($(subdir),string)
- sysdep_routines += stpncpy-c strncpy-c strcmp-ssse3 strncmp-ssse3 \
- 		   strend-sse4 memcmp-sse4 memcpy-ssse3 mempcpy-ssse3 \
--		   memmove-ssse3 memcpy-ssse3-back mempcpy-ssse3-back \
-+		   memmove-ssse3 mempcpy-ssse3-back \
- 		   memmove-ssse3-back strcasestr-nonascii strcasecmp_l-ssse3 \
- 		   strncase_l-ssse3 strlen-sse4 strlen-no-bsf \
- 		   memset-x86-64
-Index: glibc-2.13/sysdeps/x86_64/multiarch/memcpy.S
-===================================================================
---- glibc-2.13.orig/sysdeps/x86_64/multiarch/memcpy.S
-+++ glibc-2.13/sysdeps/x86_64/multiarch/memcpy.S
-@@ -35,9 +35,11 @@ ENTRY(memcpy)
- 	testl	$bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip)
- 	jz	2f
- 	leaq	__memcpy_ssse3(%rip), %rax
-+	/* disable backward memcpy for glibc 2.13 
- 	testl	$bit_Fast_Copy_Backward, __cpu_features+FEATURE_OFFSET+index_Fast_Copy_Backward(%rip)
- 	jz	2f
- 	leaq	__memcpy_ssse3_back(%rip), %rax
-+	*/
- 2:	ret
- END(memcpy)
- 
-Index: glibc-2.13/sysdeps/x86_64/multiarch/memcpy_chk.S
-===================================================================
---- glibc-2.13.orig/sysdeps/x86_64/multiarch/memcpy_chk.S
-+++ glibc-2.13/sysdeps/x86_64/multiarch/memcpy_chk.S
-@@ -36,9 +36,11 @@ ENTRY(__memcpy_chk)
- 	testl	$bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip)
- 	jz	2f
- 	leaq	__memcpy_chk_ssse3(%rip), %rax
-+	/* disable backwards memcpy until glibc 2.14
- 	testl	$bit_Fast_Copy_Backward, __cpu_features+FEATURE_OFFSET+index_Fast_Copy_Backward(%rip)
- 	jz	2f
- 	leaq	__memcpy_chk_ssse3_back(%rip), %rax
-+	*/
- 2:	ret
- END(__memcpy_chk)
- # else
diff --git a/glibc-fnmatch-multibyte.diff b/glibc-fnmatch-multibyte.diff
deleted file mode 100644
index 42f49a4..0000000
--- a/glibc-fnmatch-multibyte.diff
+++ /dev/null
@@ -1,92 +0,0 @@
-When fnmatch detects an invalid multibyte character it should fall back to
-single byte matching, so that "*" has a chance to match such a string.
-
-Andreas.
-
-Ported to glibc-2.11.3 by Petr Baudis.
-
-2005-04-12  Andreas Schwab  <schwab@suse.de>
-
-	* posix/fnmatch.c (fnmatch): If conversion to wide character
-	fails fall back to single byte matching.
-
-Index: glibc-2.11.2/posix/fnmatch.c
-===================================================================
---- glibc-2.11.2.orig/posix/fnmatch.c
-+++ glibc-2.11.2/posix/fnmatch.c
-@@ -333,6 +333,7 @@ fnmatch (pattern, string, flags)
- # if HANDLE_MULTIBYTE
-   if (__builtin_expect (MB_CUR_MAX, 1) != 1)
-     {
-+      const char *orig_pattern = pattern;
-       mbstate_t ps;
-       size_t n;
-       const char *p;
-@@ -356,10 +357,8 @@ fnmatch (pattern, string, flags)
- 						 alloca_used);
- 	  n = mbsrtowcs (wpattern, &p, n + 1, &ps);
- 	  if (__builtin_expect (n == (size_t) -1, 0))
--	    /* Something wrong.
--	       XXX Do we have to set `errno' to something which mbsrtows hasn't
--	       already done?  */
--	    return -1;
-+	    /* Something wrong.  Fall back to single byte matching.  */
-+	    goto try_singlebyte;
- 	  if (p)
- 	    {
- 	      memset (&ps, '\0', sizeof (ps));
-@@ -371,10 +370,8 @@ fnmatch (pattern, string, flags)
- 	prepare_wpattern:
- 	  n = mbsrtowcs (NULL, &pattern, 0, &ps);
- 	  if (__builtin_expect (n == (size_t) -1, 0))
--	    /* Something wrong.
--	       XXX Do we have to set `errno' to something which mbsrtows hasn't
--	       already done?  */
--	    return -1;
-+	    /* Something wrong.  Fall back to single byte matching.  */
-+	    goto try_singlebyte;
- 	  wpattern_malloc = wpattern
- 	    = (wchar_t *) malloc ((n + 1) * sizeof (wchar_t));
- 	  assert (mbsinit (&ps));
-@@ -396,14 +393,8 @@ fnmatch (pattern, string, flags)
- 						alloca_used);
- 	  n = mbsrtowcs (wstring, &p, n + 1, &ps);
- 	  if (__builtin_expect (n == (size_t) -1, 0))
--	    {
--	      /* Something wrong.
--		 XXX Do we have to set `errno' to something which
--		 mbsrtows hasn't already done?  */
--	    free_return:
--	      free (wpattern_malloc);
--	      return -1;
--	    }
-+	    /* Something wrong.  Fall back to single byte matching.  */
-+	    goto free_and_try_singlebyte;
- 	  if (p)
- 	    {
- 	      memset (&ps, '\0', sizeof (ps));
-@@ -415,10 +406,8 @@ fnmatch (pattern, string, flags)
- 	prepare_wstring:
- 	  n = mbsrtowcs (NULL, &string, 0, &ps);
- 	  if (__builtin_expect (n == (size_t) -1, 0))
--	    /* Something wrong.
--	       XXX Do we have to set `errno' to something which mbsrtows hasn't
--	       already done?  */
--	    goto free_return;
-+	    /* Something wrong.  Fall back to single byte matching.  */
-+	    goto free_and_try_singlebyte;
- 
- 	  wstring_malloc = wstring
- 	    = (wchar_t *) malloc ((n + 1) * sizeof (wchar_t));
-@@ -439,6 +428,11 @@ fnmatch (pattern, string, flags)
-       free (wpattern_malloc);
- 
-       return res;
-+
-+    free_and_try_singlebyte:
-+      free(wpattern_malloc);
-+    try_singlebyte:
-+      pattern = orig_pattern;
-     }
- # endif  /* mbstate_t and mbsrtowcs or _LIBC.  */
- 
diff --git a/glibc-ports-2.13.tar.bz2 b/glibc-ports-2.13.tar.bz2
deleted file mode 100644
index f2e7a58..0000000
--- a/glibc-ports-2.13.tar.bz2
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b11c4501ae929883447f409c31d65e82822b1c5693075a825a3d54612876ee5a
-size 625945
diff --git a/glibc-ports-2.14.tar.bz2 b/glibc-ports-2.14.tar.bz2
new file mode 100644
index 0000000..663c30d
--- /dev/null
+++ b/glibc-ports-2.14.tar.bz2
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:808f0f6938af4d17fe6c091597df02d85ca5b4a3da21daf5065cba9a32ec7d02
+size 627448
diff --git a/glibc-revert-fseek-on-fclose.diff b/glibc-revert-fseek-on-fclose.diff
new file mode 100644
index 0000000..6bf0be3
--- /dev/null
+++ b/glibc-revert-fseek-on-fclose.diff
@@ -0,0 +1,212 @@
+This reverts the following patch from upstream PR 12724,
+which can cause surprising changes in fclose behaviour when multiple
+file handles refer to the same file (fclose on one changes file position
+on the other).
+See bnc #711829.
+
+git diff -R 'fcabc0f8b185f9e0a9289720be5ede6c39b3bf21^!'
+
+2011-05-13  Ulrich Drepper  <drepper@gmail.com>
+
+	[BZ #12724]
+	* libio/fileops.c (_IO_new_file_close_it): Always flush when
+	currently writing and seek to current position when not.
+	* libio/Makefile (tests): Add bug-fclose1.
+	* libio/bug-fclose1.c: New file.
+
+ 2011-05-12  Ulrich Drepper  <drepper@gmail.com>
+ 
+ 	[BZ #12511]
+diff --git b/libio/Makefile a/libio/Makefile
+index ec30904..83b9458 100644
+--- b/libio/Makefile
++++ a/libio/Makefile
+@@ -1,4 +1,4 @@
+-# Copyright (C) 1995-2004,2006-2009,2011 Free Software Foundation, Inc.
++# Copyright (C) 1995-2004,2006,2007,2008,2009 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
+@@ -58,7 +58,7 @@ tests = tst_swprintf tst_wprintf tst_swscanf tst_wscanf tst_getwc tst_putwc   \
+ 	tst-memstream1 tst-memstream2 \
+ 	tst-wmemstream1 tst-wmemstream2 \
+ 	bug-memstream1 bug-wmemstream1 \
+-	tst-setvbuf1 tst-popen1 tst-fgetwc bug-wsetpos bug-fclose1
++	tst-setvbuf1 tst-popen1 tst-fgetwc bug-wsetpos
+ test-srcs = test-freopen
+ 
+ all: # Make this the default target; it will be defined in Rules.
+diff --git b/libio/bug-fclose1.c a/libio/bug-fclose1.c
+deleted file mode 100644
+index f1e09f5..0000000
+--- b/libio/bug-fclose1.c
++++ /dev/null
+@@ -1,132 +0,0 @@
+-// BZ #12724
+-
+-static void do_prepare (void);
+-#define PREPARE(argc, argv) do_prepare ()
+-static int do_test (void);
+-#define TEST_FUNCTION do_test()
+-#include "../test-skeleton.c"
+-
+-
+-static int fd;
+-
+-
+-static void
+-do_prepare (void)
+-{
+-  fd = create_temp_file ("bug-fclose1.", NULL);
+-  if (fd == -1)
+-    {
+-      printf ("cannot create temporary file: %m\n");
+-      exit (1);
+-    }
+-}
+-
+-
+-static int
+-do_test (void)
+-{
+-  static const char pattern[] = "hello world";
+-
+-  /* Prepare a seekable file.  */
+-  if (write (fd, pattern, sizeof pattern) != sizeof pattern)
+-    {
+-      printf ("cannot write pattern: %m\n");
+-      return 1;
+-    }
+-  if (lseek (fd, 1, SEEK_SET) != 1)
+-    {
+-      printf ("cannot seek after write: %m\n");
+-      return 1;
+-    }
+-
+-  /* Create an output stream visiting the file; when it is closed, all
+-     other file descriptors visiting the file must see the new file
+-     position.  */
+-  int fd2 = dup (fd);
+-  if (fd2 < 0)
+-    {
+-      printf ("cannot duplicate descriptor for writing: %m\n");
+-      return 1;
+-    }
+-  FILE *f = fdopen (fd2, "w");
+-  if (f == NULL)
+-    {
+-      printf ("first fdopen failed: %m\n");
+-      return 1;
+-    }
+-  if (fputc (pattern[1], f) != pattern[1])
+-    {
+-      printf ("fputc failed: %m\n");
+-      return 1;
+-    }
+-  if (fclose (f) != 0)
+-    {
+-      printf ("first fclose failed: %m\n");
+-      return 1;
+-    }
+-  errno = 0;
+-  if (lseek (fd2, 0, SEEK_CUR) != -1)
+-    {
+-      printf ("lseek after fclose after write did not fail\n");
+-      return 1;
+-    }
+-  if (errno != EBADF)
+-    {
+-      printf ("lseek after fclose after write did not fail with EBADF: %m\n");
+-      return 1;
+-    }
+-  off_t o = lseek (fd, 0, SEEK_CUR);
+-  if (o != 2)
+-    {
+-      printf ("\
+-lseek on original descriptor after first fclose returned %ld, expected 2\n",
+-	      (long int) o);
+-      return 1;
+-    }
+-
+-  /* Likewise for an input stream.  */
+-  fd2 = dup (fd);
+-  if (fd2 < 0)
+-     {
+-      printf ("cannot duplicate descriptor for reading: %m\n");
+-      return 1;
+-    }
+-  f = fdopen (fd2, "r");
+-   if (f == NULL)
+-    {
+-      printf ("second fdopen failed: %m\n");
+-      return 1;
+-    }
+-   char c = fgetc (f);
+-   if (c != pattern[2])
+-     {
+-       printf ("getc returned %c, expected %c\n", c, pattern[2]);
+-       return 1;
+-     }
+-  if (fclose (f) != 0)
+-    {
+-      printf ("second fclose failed: %m\n");
+-      return 1;
+-    }
+-  errno = 0;
+-  if (lseek (fd2, 0, SEEK_CUR) != -1)
+-    {
+-      printf ("lseek after fclose after read did not fail\n");
+-      return 1;
+-    }
+-  if (errno != EBADF)
+-    {
+-      printf ("lseek after fclose after read did not fail with EBADF: %m\n");
+-      return 1;
+-    }
+-  o = lseek (fd, 0, SEEK_CUR);
+-  if (o != 3)
+-    {
+-      printf ("\
+-lseek on original descriptor after second fclose returned %ld, expected 3\n",
+-	      (long int) o);
+-      return 1;
+-    }
+-
+-  return 0;
+-}
+Index: glibc-2.14/libio/fileops.c
+===================================================================
+--- glibc-2.14.orig/libio/fileops.c
++++ glibc-2.14/libio/fileops.c
+@@ -160,28 +160,20 @@ int
+ _IO_new_file_close_it (fp)
+      _IO_FILE *fp;
+ {
++  int write_status;
+   if (!_IO_file_is_open (fp))
+     return EOF;
+ 
+-  int write_status;
+-  if (_IO_in_put_mode (fp))
++  if ((fp->_flags & _IO_NO_WRITES) == 0
++      && (fp->_flags & _IO_CURRENTLY_PUTTING) != 0)
+     write_status = _IO_do_flush (fp);
+-  else if (fp->_offset != _IO_pos_BAD && fp->_IO_read_base != NULL
+-	   && !_IO_in_backup (fp))
+-    {
+-      off64_t o = _IO_SEEKOFF (fp, 0, _IO_seek_cur, 0);
+-      if (o == WEOF)
+-	write_status = EOF;
+-      else
+-	write_status = _IO_SYSSEEK (fp, o, SEEK_SET) < 0 ? EOF : 0;
+-    }
+   else
+     write_status = 0;
+ 
+   INTUSE(_IO_unsave_markers) (fp);
+ 
+   int close_status = ((fp->_flags2 & _IO_FLAGS2_NOCLOSE) == 0
+ 		      ? _IO_SYSCLOSE (fp) : 0);
+ 
+   /* Free buffer. */
+ #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
diff --git a/glibc-static-memcpy.diff b/glibc-static-memcpy.diff
deleted file mode 100644
index 8ed7718..0000000
--- a/glibc-static-memcpy.diff
+++ /dev/null
@@ -1,61 +0,0 @@
-2011-02-06  Mike Frysinger  <vapier@gentoo.org>
-
-        [BZ #12653]
-        * sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S: Only protect
-        MEMCPY_CHK with USE_AS_BCOPY ifdef check.
-        * sysdeps/i386/i686/multiarch/memcpy-ssse3.S: Likewise.
-        * sysdeps/x86_64/multiarch/memcpy-ssse3.S: Likewise.
-        * sysdeps/x86_64/multiarch/memcpy-ssse3-back.S: Likewise.
-
-Index: glibc-2.13/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S
-===================================================================
---- glibc-2.13.orig/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S
-+++ glibc-2.13/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S
-@@ -110,7 +110,7 @@ __i686.get_pc_thunk.bx:
- #endif
- 
- 	.section .text.ssse3,"ax",@progbits
--#if defined SHARED && !defined NOT_IN_libc && !defined USE_AS_BCOPY
-+#if !defined USE_AS_BCOPY
- ENTRY (MEMCPY_CHK)
- 	movl	12(%esp), %eax
- 	cmpl	%eax, 16(%esp)
-Index: glibc-2.13/sysdeps/i386/i686/multiarch/memcpy-ssse3.S
-===================================================================
---- glibc-2.13.orig/sysdeps/i386/i686/multiarch/memcpy-ssse3.S
-+++ glibc-2.13/sysdeps/i386/i686/multiarch/memcpy-ssse3.S
-@@ -110,7 +110,7 @@ __i686.get_pc_thunk.bx:
- #endif
- 
- 	.section .text.ssse3,"ax",@progbits
--#if defined SHARED && !defined NOT_IN_libc && !defined USE_AS_BCOPY
-+#if !defined USE_AS_BCOPY
- ENTRY (MEMCPY_CHK)
- 	movl	12(%esp), %eax
- 	cmpl	%eax, 16(%esp)
-Index: glibc-2.13/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S
-===================================================================
---- glibc-2.13.orig/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S
-+++ glibc-2.13/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S
-@@ -49,7 +49,7 @@
-   ud2
- 
- 	.section .text.ssse3,"ax",@progbits
--#if defined SHARED && !defined NOT_IN_libc
-+#if !defined USE_AS_BCOPY
- ENTRY (MEMCPY_CHK)
- 	cmpq	%rdx, %rcx
- 	jb	HIDDEN_JUMPTARGET (__chk_fail)
-Index: glibc-2.13/sysdeps/x86_64/multiarch/memcpy-ssse3.S
-===================================================================
---- glibc-2.13.orig/sysdeps/x86_64/multiarch/memcpy-ssse3.S
-+++ glibc-2.13/sysdeps/x86_64/multiarch/memcpy-ssse3.S
-@@ -49,7 +49,7 @@
-   ud2
- 
- 	.section .text.ssse3,"ax",@progbits
--#if defined SHARED && !defined NOT_IN_libc
-+#if !defined USE_AS_BCOPY
- ENTRY (MEMCPY_CHK)
- 	cmpq	%rdx, %rcx
- 	jb	HIDDEN_JUMPTARGET (__chk_fail)
diff --git a/glibc-strict-aliasing.diff b/glibc-strict-aliasing.diff
index ef7df01..e8287e9 100644
--- a/glibc-strict-aliasing.diff
+++ b/glibc-strict-aliasing.diff
@@ -62,9 +62,9 @@ Index: resolv/Makefile
  +cflags += -Wno-strict-prototypes -Wno-write-strings
 Index: sunrpc/Makefile
 ===================================================================
---- sunrpc/Makefile.orig	2011-05-25 20:00:57.381005790 +0200
-+++ sunrpc/Makefile	2011-06-15 14:57:37.657361569 +0200
-@@ -129,6 +129,10 @@
+--- sunrpc/Makefile.orig
++++ sunrpc/Makefile
+@@ -152,6 +152,10 @@ CFLAGS-openchild.c = -fexceptions
  
  CPPFLAGS += -D_RPC_THREAD_SAFE_
  
@@ -72,10 +72,9 @@ Index: sunrpc/Makefile
 +CFLAGS-clnt_udp.c = -fno-strict-aliasing
 +CFLAGS-clnt_unix.c = -fno-strict-aliasing
 +
- include ../Rules
- 
- $(objpfx)rpcgen: $(addprefix $(objpfx),$(rpcgen-objs)) \
-
+ $(objpfx)tst-getmyaddr: $(common-objpfx)linkobj/libc.so
+ $(objpfx)tst-xdrmem: $(common-objpfx)linkobj/libc.so
+ $(objpfx)tst-xdrmem2: $(common-objpfx)linkobj/libc.so
 Index: sysdeps/powerpc/powerpc64/elf/Makefile
 ===================================================================
 --- sysdeps/powerpc/powerpc64/elf/Makefile.orig
diff --git a/glibc-vfprintf-positional.diff b/glibc-vfprintf-positional.diff
deleted file mode 100644
index 9947188..0000000
--- a/glibc-vfprintf-positional.diff
+++ /dev/null
@@ -1,20 +0,0 @@
-2011-01-27  Petr Baudis  <pasky@suse.cz>
-
-	* stdio-common/vfprintf.c (vfprintf): Pass correct newlen
-	to extend_alloca().
-
-diff --git a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c
-index fc370e8..ecf5dfa 100644
---- a/stdio-common/vfprintf.c
-+++ b/stdio-common/vfprintf.c
-@@ -1682,7 +1682,9 @@ do_positional:
- 	  {
- 	    /* Extend the array of format specifiers.  */
- 	    struct printf_spec *old = specs;
--	    specs = extend_alloca (specs, nspecs_max, 2 * nspecs_max);
-+	    specs = extend_alloca (specs, nspecs_max,
-+				   2 * nspecs_max
-+				   * sizeof (struct printf_spec));
- 
- 	    /* Copy the old array's elements to the new space.  */
- 	    memmove (specs, old, nspecs * sizeof (struct printf_spec));
diff --git a/glibc-zarch-longlong.diff b/glibc-zarch-longlong.diff
deleted file mode 100644
index d61a019..0000000
--- a/glibc-zarch-longlong.diff
+++ /dev/null
@@ -1,41 +0,0 @@
-Index: glibc/stdlib/longlong.h
-===================================================================
---- glibc.orig/stdlib/longlong.h
-+++ glibc/stdlib/longlong.h
-@@ -303,6 +303,7 @@ UDItype __umulsidi3 (USItype, USItype);
- #endif
- 
- #if (defined (__i370__) || defined (__s390__) || defined (__mvs__)) && W_TYPE_SIZE == 32
-+#if !defined (__zarch__)
- #define smul_ppmm(xh, xl, m0, m1) \
-   do {									\
-     union {DItype __ll;							\
-@@ -324,6 +325,28 @@ UDItype __umulsidi3 (USItype, USItype);
- 	     : "0" (__x.__ll), "r" (d));				\
-     (q) = __x.__i.__l; (r) = __x.__i.__h;				\
-   } while (0)
-+#else
-+#define smul_ppmm(xh, xl, m0, m1) \
-+  do {                                                                  \
-+    register SItype r0 __asm__ ("0");                                   \
-+    register SItype r1 __asm__ ("1") = m0;                              \
-+                                                                        \
-+    __asm__ ("mr\t%%r0,%3"                                              \
-+             : "=r" (r0), "=r" (r1)                                     \
-+             : "r"  (r1),  "r" (m1));                                   \
-+    (xh) = r1; (xl) = r0;                                               \
-+  } while (0)
-+#define sdiv_qrnnd(q, r, n1, n0, d) \
-+  do {									\
-+    register SItype r0 __asm__ ("0") = n0;                              \
-+    register SItype r1 __asm__ ("1") = n1;                              \
-+                                                                        \
-+    __asm__ ("dr\t%%r0,%3"						\
-+	     : "=r" (r0), "=r" (r1)		         		\
-+	     : "r" (r0), "r" (r1), "r" (d));				\
-+    (q) = r0; (r) = r1;                  				\
-+  } while (0)
-+#endif /* __zarch__ */
- #endif
- 
- #if (defined (__i386__) || defined (__i486__)) && W_TYPE_SIZE == 32
diff --git a/glibc.changes b/glibc.changes
index 0d5ee00..be00dc8 100644
--- a/glibc.changes
+++ b/glibc.changes
@@ -1,3 +1,29 @@
+-------------------------------------------------------------------
+Wed Aug 17 18:56:03 UTC 2011 - aj@suse.de
+
+- Enhance rpmlintrc to ignore shlib policy violation.
+- Remove obsolete patches glibc-fnmatch-multibyte.diff,
+  glibc-2.3.1.localedef.diff, glibc-2.10-nscd-nostack.diff.
+
+-------------------------------------------------------------------
+Wed Aug 17 14:47:11 UTC 2011 - aj@suse.de
+
+- Update to current 2.14 branch: Various bugfixes.
+  Remove upstreamed patches missing-include-build-fix.diff,
+  glibc-2.14-res_send.patch, glibc-dl-fxstatat64.patch)
+
+-------------------------------------------------------------------
+Wed Aug 17 14:09:50 UTC 2011 - aj@suse.de
+
+- Revert removal of sunrpc code (patch glibc2.14-revert-sunrpc-removal.patch).
+
+-------------------------------------------------------------------
+Fri Aug 12 14:55:12 CEST 2011 - matz@suse.de
+
+- Revert seeking on fclose, incomplete implementation of POSIX
+  behaviour can confuse current users.  [bnc #711829]
+  (patch glibc-revert-fseek-on-fclose.diff)
+
 -------------------------------------------------------------------
 Thu Jul 21 12:37:09 UTC 2011 - rhafer@suse.de
 
@@ -22,6 +48,22 @@ Tue Jul 19 08:41:55 UTC 2011 - lnussel@suse.de
     previous versions if the password contains 8bit chracters!
   * libcrypt now exports crypt_gensalt
 
+-------------------------------------------------------------------
+Fri Jul 15 07:54:46 UTC 2011 - aj@suse.de
+
+- Update to glibc 2.14:
+  *  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.
+  * Various bugfixes, new locales, new linux kernel interfaces.
+  * New program sotruss to traces calls through PLTs
+  * Removed the following obsoleted patches: glibc-2.6-configure.diff,
+    glibc-disable-backward-memcpy.diff, glibc-static-memcpy.diff,
+    glibc-zarch-longlong.diff, glibc-bso-12454.diff,
+    glibc-vfprintf-positional.diff
+- Build without -fno-strict-aliasing.
+
 -------------------------------------------------------------------
 Tue Jul 12 14:21:29 UTC 2011 - aj@suse.de
 
diff --git a/glibc.rpmlintrc b/glibc.rpmlintrc
index c3289a4..6ddd33d 100644
--- a/glibc.rpmlintrc
+++ b/glibc.rpmlintrc
@@ -12,3 +12,5 @@ addFilter(".*shared-lib-without-dependency-information /lib.*/ld-2.*.so")
 addFilter(".*permissions-missing-postin missing %set_permissions /usr/.*pt_chown in %post")
 # Do not require permissions, this will lead to a cycle (bnc#700925):
 addFilter("glibc\..*: permissions-missing-requires")
+# We will not rename glibc to follow the shlib policy
+addFilter("shlib-policy-missing-suffix")
diff --git a/glibc.spec b/glibc.spec
index b3905f9..d33fa26 100644
--- a/glibc.spec
+++ b/glibc.spec
@@ -77,11 +77,13 @@ Obsoletes:      glibc-64bit
 %ifarch ppc
 Obsoletes:      glibc-32bit
 %endif
-Version:        2.13
-Release:        29
+AutoReqProv:    on
+Version:        2.14
+Release:        1
 Url:            http://www.gnu.org/software/libc/libc.html
-Source:         glibc-%{version}-996cf2ef0727.tar.bz2
-Source2:        http://ftp.gnu.org/gnu/glibc/glibc-ports-2.13.tar.bz2
+BuildRoot:      %{_tmppath}/%{name}-%{version}-build
+Source:         glibc-%{version}-4eddf93f5cc2.tar.bz2
+Source2:        http://ftp.gnu.org/gnu/glibc/glibc-ports-2.14.tar.bz2
 Source3:        noversion.tar.bz2
 Source4:        manpages.tar.bz2
 Source5:        usr.sbin.nscd
@@ -110,10 +112,8 @@ NoSource:       0
 #
 # PATCH-FIX-OPENSUSE remove lfs test from testsuite aj@suse.de
 Patch0:         glibc-testsuite.patch
-# PATCH-FIX-OPENSUSE handle glibc binaries 
+# PATCH-FIX-OPENSUSE handle glibc binaries
 Patch1:         glibc-2.3.90-noversion.diff
-# PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
-Patch2:         glibc-fnmatch-multibyte.diff
 # PATCH-FIX-OPENSUSE reload /etc/resolv.conf on change
 Patch3:         glibc-resolv-reload.diff
 # PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
@@ -125,8 +125,6 @@ Patch7:         glibc-version.diff
 # PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
 Patch8:         glibc-2.4.90-revert-only-euro.diff
 # PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
-Patch11:        glibc-2.3.1.localedef.diff
-# PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
 Patch12:        glibc-2.3.2.no_archive.diff
 # PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
 Patch13:        libm-x86-64.diff.bz2
@@ -148,8 +146,6 @@ Patch23:        glibc-2.3.3-nscd-db-path.diff
 Patch24:        glibc-2.3.5-nscd-zeronegtimeout.diff
 # PATCH-FIX-OPENSUSE prefer -lang rpm packages
 Patch25:        glibc-2.3.90-langpackdir.diff
-# PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
-Patch27:        glibc-2.6-configure.diff
 # PATCH-FIX-OPENSUSE Fix hangs in UDP RPC calls bso#5379 bnc#257745 aj@suse.de
 Patch28:        glibc-2.2-sunrpc.diff
 # PATCH-FIX-OPENSUSE Do not generate hardlink for getconf
@@ -160,16 +156,12 @@ Patch30:        getaddrinfo-ipv6-sanity.diff
 Patch33:        glibc-compiled-binaries.diff
 # PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
 Patch36:        glibc-no-unwind-tables.diff
-# PATCH-FIX-OPENSUSE bnc#387202
-Patch37:        glibc-2.10-nscd-nostack.diff
 # PATCH-FEATURE-SLE increase cpusetsize to 4096, needs to be kept for compatibility kukuk@suse.de
 Patch38:        glibc-cpusetsize.diff
 # PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
 Patch40:        libm-x86-64-exceptions.diff
 # PATCH-FIX-OPENSUSE - Allow compilation with -altivec aj@suse.de
 Patch41:        glibc-uio-cell.diff
-# PATCH-FIX-UPSTREAM -- add missing includes aj@suse.de
-Patch43:        missing-include-build-fix.diff
 # PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
 Patch45:        glibc-gai-private4.diff
 # PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
@@ -182,22 +174,10 @@ Patch48:        glibc-malloc-arena-max.diff
 Patch49:        glibc-fini-unwind.diff
 # PATCH-FIX-UPSTREAM install gconv-modules aj@suse.de
 Patch50:        glibc-gconvcache-s390.diff
-# PATCH-FIX-UPSTREAM - Fix alloca argument bso#12445 aj@suse.de
-Patch51:        glibc-vfprintf-positional.diff
 # PATCH-FIX-OPENSUSE bnc#657627
 Patch52:        glibc-elf-localscope.diff
-# PATCH-FIX-UPSTREAM Fix longlong.h for zArch
-Patch53:        glibc-zarch-longlong.diff
-# PATCH-FEATURE-OPENSUSE disable backward memcpy aj@suse.de
-Patch54:        glibc-disable-backward-memcpy.diff
-# PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
-Patch55:        glibc-bso-12454.diff
-# PATCH-FIX-UPSTREAM fix static memcpy
-Patch56:        glibc-static-memcpy.diff
 # FIX-OPENSUSE compile some files with -fno-strict-aliasing
 Patch58:        glibc-strict-aliasing.diff
-# PATCH-FIX-UPSTREAM fix preloading of shared libs aj@suse.de
-Patch59:        glibc-2.13-dl-load.patch
 # PATCH-FIX-UPSTREAM fix x86 <bits/sigcontext.h> aj@suse.de
 Patch60:        glibc-x86-bits-sigcontext.patch
 # PATCH-FEATURE-UPSTREAM Speedup getsysstats call aj@suse.de
@@ -210,7 +190,10 @@ Patch63:        glibc-2.13-localedef.patch
 Patch64:        glibc-fix-rwlock-stack-imbalance.patch
 # PATCH-FIX-OPENSUSE disable rewriting ::1 to 127.0.0.1 for /etc/hosts bnc#684534, bnc#706719
 Patch65:        glibc-fix-double-loopback.diff
-#
+# PATCH-FEATURE-OPENSUSE Revert sunrpc removal aj@suse.de
+Patch66:        glibc2.14-revert-sunrpc-removal.patch
+# PATCH-FIX-OPENSUSE revert seeking on fclose for now bnc#711829 matz@suse.de 
+Patch67:        glibc-revert-fseek-on-fclose.diff
 # PATCH-FEATURE-OPENSUSE -- add sha support to crypt_blowfish lnussel@suse.de
 Patch80:        crypt_blowfish-1.1-sha.diff
 
@@ -387,15 +370,11 @@ mv crypt_blowfish-%crypt_bf_version/*.[chS] crypt/
 %patch0
 # libNoVersion part is only active on ix86
 %patch1
-# Disabled
-# %patch2 -p1
 %patch3
 %patch4
 %patch5 -p1
 %patch7
 %patch8
-# Disabled
-#%patch11
 %patch12
 %patch13 -E
 # We have s_sincos.c in patch13, remove duplicate
@@ -404,7 +383,8 @@ rm sysdeps/x86_64/fpu/s_sincos.S
 %patch16
 %patch18
 %patch20
-%patch21
+# XXX Did not patch for 2.14:
+#%patch21
 # avoid changing nscd_stat.c mtime to avoid code generation
 # differences on each rebuild
 touch -r nscd/nscd_stat.c nscd/s-stamp
@@ -414,18 +394,14 @@ touch -r nscd/nscd_stat.c nscd/s-stamp
 touch -r nscd/s-stamp nscd/nscd_stat.c
 rm nscd/s-stamp
 %patch25
-%patch27
 %patch28
 %patch29
 %patch30
 %patch33
 %patch36
-# Disable for now
-#%patch37
 %patch38
 %patch40
 %patch41 -p1
-%patch43 -p1
 %patch45
 %patch46 -p1
 %patch47 -p1
@@ -434,20 +410,16 @@ rm nscd/s-stamp
 %endif
 %patch49
 %patch50
-%patch51 -p1
 %patch52
-%patch53 -p1
-%patch54 -p1
-%patch55 -p1
-%patch56 -p1
 %patch58
-%patch59 -p1
 %patch60 -p1
 %patch61 -p1
 %patch62 -p1
 %patch63 -p1
 %patch64 -p1
 %patch65 -p1
+%patch66 -p1
+%patch67 -p1
 
 #
 # Inconsistency detected by ld.so: dl-close.c: 719: _dl_close: Assertion `map->l_init_called' failed!
@@ -917,7 +889,6 @@ exit 0
 %doc %{_mandir}/man1/getent.1.gz
 %doc %{_mandir}/man1/localedef.1.gz
 %doc %{_mandir}/man5/*
-%doc %{_mandir}/man8/rpcinfo.8.gz
 /%{_lib}/ld-%{version}.so
 %ifarch ppc s390 mips hppa
 	/%{_lib}/ld.so.1
@@ -1025,11 +996,11 @@ exit 0
 %dir %attr(0755,root,root) %{_libdir}/getconf
 %{_libdir}/getconf/*
 %{_sbindir}/glibc_post_upgrade
-%{_sbindir}/rpcinfo
 %{_sbindir}/iconvconfig
 
 %ifarch %ix86
 
+
 %files obsolete
 %defattr (755,root,root,755)
 %dir /%{_lib}/obsolete/
@@ -1138,11 +1109,14 @@ exit 0
 %defattr(-,root,root)
 /%{_lib}/libmemusage.so
 /%{_lib}/libpcprofile.so
+%dir /%{_libdir}/audit
+/%{_libdir}/audit/sotruss-lib.so
 # These need gd-devel for building
 # %%{_bindir}/memusage
 # %%{_bindir}/memusagestat
 %{_bindir}/mtrace
 %{_bindir}/pcprofiledump
+%{_bindir}/sotruss
 %{_bindir}/xtrace
 
 %changelog
diff --git a/glibc2.14-revert-sunrpc-removal.patch b/glibc2.14-revert-sunrpc-removal.patch
new file mode 100644
index 0000000..fe14b5f
--- /dev/null
+++ b/glibc2.14-revert-sunrpc-removal.patch
@@ -0,0 +1,63 @@
+Index: glibc-2.14/nis/Makefile
+===================================================================
+--- glibc-2.14.orig/nis/Makefile
++++ glibc-2.14/nis/Makefile
+@@ -23,9 +23,9 @@ subdir	:= nis
+ 
+ aux			:= nis_hash
+ 
++headers			:= $(wildcard rpcsvc/*.[hx])
+ distribute		:= nss-nis.h nss-nisplus.h nis_intern.h Banner \
+-			   nisplus-parser.h nis_xdr.h nss \
+-			   $(wildcard rpcsvc/*.[hx])
++			   nisplus-parser.h nis_xdr.h nss
+ 
+ # These are the databases available for the nis (and perhaps later nisplus)
+ # service.  This must be a superset of the services in nss.
+Index: glibc-2.14/NEWS
+===================================================================
+--- glibc-2.14.orig/NEWS
++++ glibc-2.14/NEWS
+@@ -20,16 +20,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
+ 
+Index: glibc-2.14/include/libc-symbols.h
+===================================================================
+--- glibc-2.14.orig/include/libc-symbols.h
++++ glibc-2.14/include/libc-symbols.h
+@@ -635,7 +635,7 @@ for linking")
+ # define libc_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
+ # define libc_hidden_def(name) hidden_def (name)
+ # define libc_hidden_weak(name) hidden_weak (name)
+-# define libc_hidden_nolink(name, version) hidden_nolink (name, libc, version)
++# define libc_hidden_nolink(name, version) hidden_def (name)
+ # define libc_hidden_ver(local, name) hidden_ver (local, name)
+ # define libc_hidden_data_def(name) hidden_data_def (name)
+ # define libc_hidden_data_weak(name) hidden_data_weak (name)
+Index: glibc-2.14/sunrpc/Makefile
+===================================================================
+--- glibc-2.14.orig/sunrpc/Makefile
++++ glibc-2.14/sunrpc/Makefile
+@@ -53,7 +53,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
diff --git a/manpages.tar.bz2 b/manpages.tar.bz2
index ffb101e..e133d04 100644
--- a/manpages.tar.bz2
+++ b/manpages.tar.bz2
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:e84aeb3808f86c7cd169ca795b31d1fdef21864c74b827ca750f3d478f0a95a5
-size 12562
+oid sha256:33df2d6951abd1d111570be780e3e6b265183d51b2f0a34699c6e39380b8ea4c
+size 11611
diff --git a/missing-include-build-fix.diff b/missing-include-build-fix.diff
deleted file mode 100644
index d1fc51e..0000000
--- a/missing-include-build-fix.diff
+++ /dev/null
@@ -1,31 +0,0 @@
-2011-06-14  Andreas Jaeger  <aj@suse.de>
-
-	* pthread_rwlock_init.c: Include <string.h> for
-	memset declaration.
-
-2011-06-14  Andreas Jaeger  <aj@suse.de>
-
-	* sysdeps/unix/sysv/linux/check_native.c: Include <string.h> for
-	memset declaration.
-
---- a/sysdeps/unix/sysv/linux/check_native.c
-+++ b/sysdeps/unix/sysv/linux/check_native.c
-@@ -23,6 +23,7 @@
- #include <stddef.h>
- #include <stdint.h>
- #include <stdlib.h>
-+#include <string.h>
- #include <time.h>
- #include <unistd.h>
- #include <net/if.h>
-
---- a/nptl/pthread_rwlock_init.c
-+++ b/nptl/pthread_rwlock_init.c
-@@ -18,6 +18,7 @@
-    02111-1307 USA.  */
- 
- #include "pthreadP.h"
-+#include <string.h>
- #include <kernel-features.h>
- 
- 

From 257877d3c339deb143a5404f1624765060474e2e1c8ef0779d90c8782b28c2f1 Mon Sep 17 00:00:00 2001
From: Andreas Jaeger <aj@suse.com>
Date: Thu, 18 Aug 2011 11:43:18 +0000
Subject: [PATCH 3/4] Accepting request 79220 from
 home:a_jaeger:branches:openSUSE:Factory

Fix crash (access-after-free) in dl_lookup_x.  [bnc#703140]

OBS-URL: https://build.opensuse.org/request/show/79220
OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=89
---
 glibc-fix-lookup-crash.patch | 19 +++++++++++++++++++
 glibc.changes                |  6 ++++++
 glibc.spec                   |  3 +++
 3 files changed, 28 insertions(+)
 create mode 100644 glibc-fix-lookup-crash.patch

diff --git a/glibc-fix-lookup-crash.patch b/glibc-fix-lookup-crash.patch
new file mode 100644
index 0000000..d4aaf5c
--- /dev/null
+++ b/glibc-fix-lookup-crash.patch
@@ -0,0 +1,19 @@
+Index: glibc-2.11.3/elf/dl-close.c
+===================================================================
+--- glibc-2.11.3.orig/elf/dl-close.c	2011-05-27 15:08:23.000000000 +0200
++++ glibc-2.11.3/elf/dl-close.c	2011-07-13 19:28:52.000000000 +0200
+@@ -127,7 +127,13 @@ _dl_close_worker (struct link_map *map)
+ 	    {
+ 	      struct link_map **oldp = map->l_initfini;
+ 	      map->l_initfini = map->l_orig_initfini;
+-	      _dl_scope_free (oldp);
++	      /* We can't remove the l_initfini memory because
++	         it's shared with l_searchlist.r_list.  We don't clear
++		 the latter so when we dlopen this object again that
++		 entry would point to stale memory.  And we don't want
++		 to recompute it as it would involve a new call to
++		 map_object_deps.
++	      _dl_scope_free (oldp); */
+ 	    }
+ 	}
+ 
diff --git a/glibc.changes b/glibc.changes
index be00dc8..16fc211 100644
--- a/glibc.changes
+++ b/glibc.changes
@@ -1,3 +1,8 @@
+-------------------------------------------------------------------
+Wed Aug 17 18:57:00 UTC 2011 - matz@suse.de
+
+- Fix crash (access-after-free) in dl_lookup_x.  [bnc#703140]
+
 -------------------------------------------------------------------
 Wed Aug 17 18:56:03 UTC 2011 - aj@suse.de
 
@@ -29,6 +34,7 @@ Thu Jul 21 12:37:09 UTC 2011 - rhafer@suse.de
 
 - Disable rewriting ::1 to 127.0.0.1 for /etc/hosts entries.
   (bnc#684534, bnc#706719)
+  (patch glibc-fix-double-loopback.diff)
 
 -------------------------------------------------------------------
 Wed Jul 20 15:04:33 UTC 2011 - lnussel@suse.de
diff --git a/glibc.spec b/glibc.spec
index d33fa26..06fe12e 100644
--- a/glibc.spec
+++ b/glibc.spec
@@ -194,6 +194,8 @@ Patch65:        glibc-fix-double-loopback.diff
 Patch66:        glibc2.14-revert-sunrpc-removal.patch
 # PATCH-FIX-OPENSUSE revert seeking on fclose for now bnc#711829 matz@suse.de 
 Patch67:        glibc-revert-fseek-on-fclose.diff
+# PATCH-FIX-OPENSUSE Fix crash (access-after-free) in dl_lookup_x bnc#703140 matz@suse.de
+Patch68:        glibc-fix-lookup-crash.patch
 # PATCH-FEATURE-OPENSUSE -- add sha support to crypt_blowfish lnussel@suse.de
 Patch80:        crypt_blowfish-1.1-sha.diff
 
@@ -420,6 +422,7 @@ rm nscd/s-stamp
 %patch65 -p1
 %patch66 -p1
 %patch67 -p1
+%patch68 -p1
 
 #
 # Inconsistency detected by ld.so: dl-close.c: 719: _dl_close: Assertion `map->l_init_called' failed!

From 1f4c05e41c42e625b17678219dc297aaa88533a7d370e7d325af6803826df141 Mon Sep 17 00:00:00 2001
From: Andreas Jaeger <aj@suse.com>
Date: Thu, 18 Aug 2011 12:05:28 +0000
Subject: [PATCH 4/4] Accepting request 79226 from
 home:a_jaeger:branches:openSUSE:Factory

Fix crash (access-after-free) in dl_lookup_x.  [bnc#703140];mark subpackages as noarch.

OBS-URL: https://build.opensuse.org/request/show/79226
OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=90
---
 glibc.changes | 5 +++++
 glibc.spec    | 3 +++
 2 files changed, 8 insertions(+)

diff --git a/glibc.changes b/glibc.changes
index 16fc211..b150122 100644
--- a/glibc.changes
+++ b/glibc.changes
@@ -1,3 +1,8 @@
+-------------------------------------------------------------------
+Thu Aug 18 11:55:08 UTC 2011 - aj@suse.de
+
+- Mark glibc-info, glibc-html and glibc-i18ndata as noarch packages.
+
 -------------------------------------------------------------------
 Wed Aug 17 18:57:00 UTC 2011 - matz@suse.de
 
diff --git a/glibc.spec b/glibc.spec
index 06fe12e..783c6d0 100644
--- a/glibc.spec
+++ b/glibc.spec
@@ -211,6 +211,7 @@ Summary:        Info Files for the GNU C Library
 Group:          Documentation/Other
 Requires(post): %{install_info_prereq}
 Requires(postun): %{install_info_prereq}
+BuildArch:      noarch
 
 %description info
 This package contains the documentation for the GNU C library stored as
@@ -221,6 +222,7 @@ complete and is partially out of date.
 License:        GPLv2+ ; LGPLv2.1+
 Summary:        HTML Documentation for the GNU C Library
 Group:          Documentation/HTML
+BuildArch:      noarch
 
 %description html
 This package contains the HTML documentation for the GNU C library. Due
@@ -231,6 +233,7 @@ partially out of date.
 License:        LGPLv2.1+
 Summary:        Database Sources for 'locale'
 Group:          System/Libraries
+BuildArch:      noarch
 
 %description i18ndata
 This package contains the data needed to build the locale data files to