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

r3887 - in glibc-package/trunk/debian: . patches patches/hurd-i386



Author: sthibault
Date: 2009-10-20 22:59:28 +0000 (Tue, 20 Oct 2009)
New Revision: 3887

Added:
   glibc-package/trunk/debian/patches/hurd-i386/local-bigmem.diff
Modified:
   glibc-package/trunk/debian/changelog
   glibc-package/trunk/debian/patches/series
Log:
patches/hurd-i386/local-bigmem.diff: New patch to fix dl.so crash when
running on GNU Mach with VM_MAX_ADDRESS < 0xc0000000.


Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog	2009-10-20 00:30:24 UTC (rev 3886)
+++ glibc-package/trunk/debian/changelog	2009-10-20 22:59:28 UTC (rev 3887)
@@ -4,6 +4,10 @@
   * kfreebsd/local-sysdeps.diff: update to revision 2806 (from glibc-bsd).
   * Drop kfreebsd/local-sysdeps-2.10.diff (merged in local-sysdeps.diff).
 
+  [ Samuel Thibault]
+  * patches/hurd-i386/local-bigmem.diff: New patch to fix dl.so crash when
+    running on GNU Mach with VM_MAX_ADDRESS < 0xc0000000.
+
  -- Aurelien Jarno <aurel32@debian.org>  Sun, 18 Oct 2009 18:35:20 +0200
 
 eglibc (2.10.1-1) unstable; urgency=low

Added: glibc-package/trunk/debian/patches/hurd-i386/local-bigmem.diff
===================================================================
--- glibc-package/trunk/debian/patches/hurd-i386/local-bigmem.diff	                        (rev 0)
+++ glibc-package/trunk/debian/patches/hurd-i386/local-bigmem.diff	2009-10-20 22:59:28 UTC (rev 3887)
@@ -0,0 +1,38 @@
+--- a/sysdeps/mach/hurd/dl-sysdep.c	2008-07-07 20:11:39.000000000 +0200
++++ b/sysdeps/mach/hurd/dl-sysdep.c	2009-10-21 00:56:09.000000000 +0200
+@@ -102,12 +102,29 @@
+ 	max=a; break;}
+       fmha=a+=fmhs;}
+     if (err) assert(err==KERN_NO_SPACE);
+-    if (!fmha)fmhs=0;else{
+-    fmhs=max-fmha;
+-    err = __vm_map (__mach_task_self (),
+-		    &fmha, fmhs, 0, 0, MACH_PORT_NULL, 0, 1,
+-		    VM_PROT_NONE, VM_PROT_NONE, VM_INHERIT_COPY);
+-    assert_perror(err);}
++    if (!fmha)
++      fmhs=0;
++    else
++      while (1) {
++	fmhs=max-fmha;
++	err = __vm_map (__mach_task_self (),
++			&fmha, fmhs, 0, 0, MACH_PORT_NULL, 0, 1,
++			VM_PROT_NONE, VM_PROT_NONE, VM_INHERIT_COPY);
++	if (!err)
++	  break;
++	if (err != KERN_INVALID_ADDRESS && err != KERN_NO_SPACE) {
++	while(1);
++	  assert_perror(err);
++	  }
++	vm_address_t new_max = (max - 1) & 0xf0000000U;
++	if (new_max >= max) {
++	  fmhs = 0;
++	  fmha = 0;
++	  break;
++	}
++	max = new_max;
++      }
++    }
+   }
+ /* XXX loser kludge for vm_map kernel bug */
+ #endif

Modified: glibc-package/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series	2009-10-20 00:30:24 UTC (rev 3886)
+++ glibc-package/trunk/debian/patches/series	2009-10-20 22:59:28 UTC (rev 3887)
@@ -105,6 +105,7 @@
 hurd-i386/submitted-readlinkat.diff
 hurd-i386/cvs-termios-IXANY.patch
 hurd-i386/submitted-SOL_IP.patch
+hurd-i386/local-bigmem.diff
 
 ia64/submitted-sysconf.diff
 ia64/submitted-libm.diff


Reply to: