[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

r5143 - in glibc-package/trunk/debian: . control.in debhelper.in patches patches/amd64 patches/any



Author: aurel32
Date: 2012-01-30 21:59:33 +0000 (Mon, 30 Jan 2012)
New Revision: 5143

Added:
   glibc-package/trunk/debian/patches/amd64/cvs-avx-osxsave.diff
   glibc-package/trunk/debian/patches/any/cvs-fmtmsg-lock.diff
   glibc-package/trunk/debian/patches/any/cvs-reloc-sort.diff
Modified:
   glibc-package/trunk/debian/changelog
   glibc-package/trunk/debian/control
   glibc-package/trunk/debian/control.in/main
   glibc-package/trunk/debian/debhelper.in/libc.NEWS
   glibc-package/trunk/debian/patches/series
Log:
Upload to unstable



Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog	2012-01-28 23:30:07 UTC (rev 5142)
+++ glibc-package/trunk/debian/changelog	2012-01-30 21:59:33 UTC (rev 5143)
@@ -1,4 +1,4 @@
-eglibc (2.13-25) UNRELEASED; urgency=medium
+eglibc (2.13-25) unstable; urgency=medium
 
   [ Aurelien Jarno ]
   * patches/s390/cvs-libm-ulps.diff: new patch to fix FTBFS on s390 with
@@ -21,6 +21,12 @@
     (>= 3.2.1-1) to get accept4 defined on ia64. 
     debian/libc6.1.symbols.ia64: force accept4 version to 2.13-25~.
   * debian/control.in/main: use architecture aliases in build-depends.
+  * patches/amd64/cvs-avx-osxsave.diff: new patch from upstream to disable
+    AVX support if the kernel doesn't support it.
+  * patches/any/cvs-fmtmsg-lock.diff: new patch from upstream to fix a 
+    locking issue in fmtmsg.
+  * patches/any/cvs-reloc-sort.diff: new patch from upstream to fix 
+    relocation issues with dlopen().
 
   [ Samuel Thibault ]
   * patches/hurd-i386/submitted-mmap.diff: New patch to fix iceweasel hang.
@@ -32,7 +38,7 @@
     Closes: #630203, #654712.
   * fixup kfreebsd/local-use-thr-primitives.diff. Closes: #657687.
 
- -- Samuel Thibault <sthibault@debian.org>  Tue, 27 Dec 2011 02:02:41 +0100
+ -- Aurelien Jarno <aurel32@debian.org>  Sun, 29 Jan 2012 23:35:12 +0100
 
 eglibc (2.13-24) unstable; urgency=low
 

Modified: glibc-package/trunk/debian/control
===================================================================
--- glibc-package/trunk/debian/control	2012-01-28 23:30:07 UTC (rev 5142)
+++ glibc-package/trunk/debian/control	2012-01-30 21:59:33 UTC (rev 5143)
@@ -3,7 +3,7 @@
 Priority: required
 Build-Depends: gettext, make (>= 3.80), dpkg-dev (>= 1.16.0), bzip2, xz-utils, file, quilt,
  autoconf, sed (>= 4.0.5-4), gawk, debhelper (>= 7.4.3), tar (>= 1.22), fdupes,
- linux-libc-dev (>= 3.2.1-1) [linux-any],
+ linux-libc-dev (>= 3.2.1) [linux-any],
  mig (>= 1.3-2) [hurd-i386], hurd-dev (>= 20080607-3) [hurd-i386], gnumach-dev [hurd-i386], libpthread-stubs0-dev [hurd-i386],
  kfreebsd-kernel-headers [kfreebsd-any],
  binutils (>= 2.20-3), binutils (>= 2.21) [sparc sparc64],

Modified: glibc-package/trunk/debian/control.in/main
===================================================================
--- glibc-package/trunk/debian/control.in/main	2012-01-28 23:30:07 UTC (rev 5142)
+++ glibc-package/trunk/debian/control.in/main	2012-01-30 21:59:33 UTC (rev 5143)
@@ -3,7 +3,7 @@
 Priority: required
 Build-Depends: gettext, make (>= 3.80), dpkg-dev (>= 1.16.0), bzip2, xz-utils, file, quilt,
  autoconf, sed (>= 4.0.5-4), gawk, debhelper (>= 7.4.3), tar (>= 1.22), fdupes,
- linux-libc-dev (>= 3.2.1-1) [linux-any],
+ linux-libc-dev (>= 3.2.1) [linux-any],
  mig (>= 1.3-2) [hurd-i386], hurd-dev (>= 20080607-3) [hurd-i386], gnumach-dev [hurd-i386], libpthread-stubs0-dev [hurd-i386],
  kfreebsd-kernel-headers [kfreebsd-any],
  binutils (>= 2.20-3), binutils (>= 2.21) [sparc sparc64],

Modified: glibc-package/trunk/debian/debhelper.in/libc.NEWS
===================================================================
--- glibc-package/trunk/debian/debhelper.in/libc.NEWS	2012-01-28 23:30:07 UTC (rev 5142)
+++ glibc-package/trunk/debian/debhelper.in/libc.NEWS	2012-01-30 21:59:33 UTC (rev 5143)
@@ -1,4 +1,4 @@
-eglibc (2.13-25) unstable; urgency=low
+eglibc (2.13-25) unstable; urgency=medium
 
   Starting with the eglibc package version 2.13-5, the libraries are 
   shipped in the multiarch directory /lib/<triplet> instead of the more

Added: glibc-package/trunk/debian/patches/amd64/cvs-avx-osxsave.diff
===================================================================
--- glibc-package/trunk/debian/patches/amd64/cvs-avx-osxsave.diff	                        (rev 0)
+++ glibc-package/trunk/debian/patches/amd64/cvs-avx-osxsave.diff	2012-01-30 21:59:33 UTC (rev 5143)
@@ -0,0 +1,43 @@
+2012-01-26  Ulrich Drepper  <drepper@gmail.com>
+
+	[BZ #13583]
+	* sysdeps/x86_64/multiarch/init-arch.h: Define bit_OSXSAVE.
+	* sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): If
+	bit_AVX is set also check OSXAVE/XCR0 and reset bit_AVX if necessary.
+
+diff --git a/sysdeps/x86_64/multiarch/init-arch.c b/sysdeps/x86_64/multiarch/init-arch.c
+index 65b0ee9..4fabbee 100644
+--- a/sysdeps/x86_64/multiarch/init-arch.c
++++ b/sysdeps/x86_64/multiarch/init-arch.c
+@@ -144,6 +144,18 @@ __init_cpu_features (void)
+   else
+     kind = arch_kind_other;
+ 
++  if (__cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx & bit_AVX)
++    {
++      /* Reset the AVX bit in case OSXSAVE is disabled.  */
++      if ((__cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx & bit_OSXSAVE) == 0
++	  || ({ unsigned int xcrlow;
++	      unsigned int xcrhigh;
++	      asm ("xgetbv"
++		   : "=a" (xcrlow), "=d" (xcrhigh) : "c" (0));
++	      (xcrlow & 6) != 6; }))
++	__cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx &= ~bit_AVX;
++    }
++
+   __cpu_features.family = family;
+   __cpu_features.model = model;
+   atomic_write_barrier ();
+diff --git a/sysdeps/x86_64/multiarch/init-arch.h b/sysdeps/x86_64/multiarch/init-arch.h
+index 2a1df39..408e5ae 100644
+--- a/sysdeps/x86_64/multiarch/init-arch.h
++++ b/sysdeps/x86_64/multiarch/init-arch.h
+@@ -29,6 +29,8 @@
+ # define bit_SSSE3	(1 << 9)
+ # define bit_SSE4_1	(1 << 19)
+ # define bit_SSE4_2	(1 << 20)
++# define bit_OSXSAVE	(1 << 27)
++# define bit_AVX	(1 << 28)
+ 
+ # define index_SSE2	COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_EDX_OFFSET
+ # define index_SSSE3	COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_ECX_OFFSET

Added: glibc-package/trunk/debian/patches/any/cvs-fmtmsg-lock.diff
===================================================================
--- glibc-package/trunk/debian/patches/any/cvs-fmtmsg-lock.diff	                        (rev 0)
+++ glibc-package/trunk/debian/patches/any/cvs-fmtmsg-lock.diff	2012-01-30 21:59:33 UTC (rev 5143)
@@ -0,0 +1,17 @@
+2012-01-16  Ulrich Drepper  <drepper@gmail.com>
+
+	* stdlib/fmtmsg.c (init): Add missing unlock.
+	Patch by Peng Haitao <penght@cn.fujitsu.com>.
+
+
+--- a/stdlib/fmtmsg.c
++++ b/stdlib/fmtmsg.c
+@@ -280,6 +281,8 @@ init (void)
+ 
+ 	  sevlevel_var = end + (*end == ':' ? 1 : 0);
+ 	}
++
++      __libc_lock_unlock (lock);
+     }
+ }
+ 

Added: glibc-package/trunk/debian/patches/any/cvs-reloc-sort.diff
===================================================================
--- glibc-package/trunk/debian/patches/any/cvs-reloc-sort.diff	                        (rev 0)
+++ glibc-package/trunk/debian/patches/any/cvs-reloc-sort.diff	2012-01-30 21:59:33 UTC (rev 5143)
@@ -0,0 +1,149 @@
+2012-01-27  Ulrich Drepper  <drepper@gmail.com>
+
+	[BZ #13618]
+	* elf/dl-open.c (dl_open_worker): Sort objects by dependency before
+	relocation.
+
+diff --git a/elf/dl-open.c b/elf/dl-open.c
+index a0b5c50..a56bdc1 100644
+--- a/elf/dl-open.c
++++ b/elf/dl-open.c
+@@ -302,45 +302,109 @@ dl_open_worker (void *a)
+   if (GLRO(dl_lazy))
+     reloc_mode |= mode & RTLD_LAZY;
+ 
+-  /* Relocate the objects loaded.  We do this in reverse order so that copy
+-     relocs of earlier objects overwrite the data written by later objects.  */
+-
++  /* Sort the objects by dependency for the relocation process.  This
++     allows IFUNC relocations to work and it also means copy
++     relocation of dependencies are if necessary overwritten.  */
++  size_t nmaps = 0;
+   struct link_map *l = new;
+-  while (l->l_next)
+-    l = l->l_next;
+-  while (1)
++  do
++    {
++      if (! l->l_real->l_relocated)
++	++nmaps;
++      l = l->l_next;
++    }
++  while (l != NULL);
++  struct link_map *maps[nmaps];
++  nmaps = 0;
++  l = new;
++  do
+     {
+       if (! l->l_real->l_relocated)
++	maps[nmaps++] = l;
++      l = l->l_next;
++    }
++  while (l != NULL);
++  if (nmaps > 1)
++    {
++      char seen[nmaps];
++      memset (seen, '\0', nmaps);
++      size_t i = 0;
++      while (1)
+ 	{
+-#ifdef SHARED
+-	  if (__builtin_expect (GLRO(dl_profile) != NULL, 0))
++	  ++seen[i];
++	  struct link_map *thisp = maps[i];
++
++	  /* Find the last object in the list for which the current one is
++	     a dependency and move the current object behind the object
++	     with the dependency.  */
++	  size_t k = nmaps - 1;
++	  while (k > i)
+ 	    {
+-	      /* If this here is the shared object which we want to profile
+-		 make sure the profile is started.  We can find out whether
+-		 this is necessary or not by observing the `_dl_profile_map'
+-		 variable.  If was NULL but is not NULL afterwars we must
+-		 start the profiling.  */
+-	      struct link_map *old_profile_map = GL(dl_profile_map);
++	      struct link_map **runp = maps[k]->l_initfini;
++	      if (runp != NULL)
++		/* Look through the dependencies of the object.  */
++		while (*runp != NULL)
++		  if (__builtin_expect (*runp++ == thisp, 0))
++		    {
++		      /* Move the current object to the back past the last
++			 object with it as the dependency.  */
++		      memmove (&maps[i], &maps[i + 1],
++			       (k - i) * sizeof (maps[0]));
++		      maps[k] = thisp;
++
++		      if (seen[i + 1] > 1)
++			{
++			  ++i;
++			  goto next_clear;
++			}
++
++		      char this_seen = seen[i];
++		      memmove (&seen[i], &seen[i + 1],
++			       (k - i) * sizeof (seen[0]));
++		      seen[k] = this_seen;
++
++		      goto next;
++		    }
++
++	      --k;
++	    }
+ 
+-	      _dl_relocate_object (l, l->l_scope, reloc_mode | RTLD_LAZY, 1);
++	  if (++i == nmaps)
++	    break;
++	next_clear:
++	  memset (&seen[i], 0, (nmaps - i) * sizeof (seen[0]));
++	next:;
++	}
++    }
+ 
+-	      if (old_profile_map == NULL && GL(dl_profile_map) != NULL)
+-		{
+-		  /* We must prepare the profiling.  */
+-		  _dl_start_profile ();
++  for (size_t i = nmaps; i-- > 0; )
++    {
++      l = maps[i];
+ 
+-		  /* Prevent unloading the object.  */
+-		  GL(dl_profile_map)->l_flags_1 |= DF_1_NODELETE;
+-		}
++#ifdef SHARED
++      if (__builtin_expect (GLRO(dl_profile) != NULL, 0))
++	{
++	  /* If this here is the shared object which we want to profile
++	     make sure the profile is started.  We can find out whether
++	     this is necessary or not by observing the `_dl_profile_map'
++	     variable.  If it was NULL but is not NULL afterwars we must
++	     start the profiling.  */
++	  struct link_map *old_profile_map = GL(dl_profile_map);
++
++	  _dl_relocate_object (l, l->l_scope, reloc_mode | RTLD_LAZY, 1);
++
++	  if (old_profile_map == NULL && GL(dl_profile_map) != NULL)
++	    {
++	      /* We must prepare the profiling.  */
++	      _dl_start_profile ();
++
++	      /* Prevent unloading the object.  */
++	      GL(dl_profile_map)->l_flags_1 |= DF_1_NODELETE;
+ 	    }
+-	  else
+-#endif
+-	    _dl_relocate_object (l, l->l_scope, reloc_mode, 0);
+ 	}
+-
+-      if (l == new)
+-	break;
+-      l = l->l_prev;
++      else
++#endif
++	_dl_relocate_object (l, l->l_scope, reloc_mode, 0);
+     }
+ 
+   /* If the file is not loaded now as a dependency, add the search

Modified: glibc-package/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series	2012-01-28 23:30:07 UTC (rev 5142)
+++ glibc-package/trunk/debian/patches/series	2012-01-30 21:59:33 UTC (rev 5143)
@@ -77,6 +77,7 @@
 amd64/cvs-pthread-stack-alignment.diff
 amd64/cvs-avx-detection.diff
 amd64/cvs-dl_trampoline-cfi.diff
+amd64/cvs-avx-osxsave.diff
 
 arm/local-atomic.diff
 arm/local-eabi-wchar.diff
@@ -317,3 +318,5 @@
 any/local-linuxthreads-XPG7.diff
 any/cvs-tzfile.diff
 any/cvs-vfscanf.diff
+any/cvs-fmtmsg-lock.diff
+any/cvs-reloc-sort.diff


Reply to: