r5489 - in glibc-package/trunk/debian: . patches patches/hurd-i386
Author: sthibault
Date: 2013-02-11 04:08:07 +0000 (Mon, 11 Feb 2013)
New Revision: 5489
Added:
glibc-package/trunk/debian/patches/hurd-i386/tg-pie-sbrk.diff
Modified:
glibc-package/trunk/debian/changelog
glibc-package/trunk/debian/patches/series
Log:
patches/hurd-i386/tg-pie-sbrk.diff: Fix sbrk() use in PIE binaries (e.g.
libgc, perl).
Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog 2013-02-10 23:17:07 UTC (rev 5488)
+++ glibc-package/trunk/debian/changelog 2013-02-11 04:08:07 UTC (rev 5489)
@@ -7,6 +7,8 @@
* patches/hurd-i386/unsubmitted-select-EINTR.diff: Fix select vs signals.
* patches/hurd-i386/cvs-libpthread_lock.diff: Fix file lock primitives
version to fix stdio thread-safety.
+ * patches/hurd-i386/tg-pie-sbrk.diff: Fix sbrk() use in PIE binaries (e.g.
+ libgc, perl).
[ Adam Conrad ]
* debian/testsuite-checking/compare.sh: Disable failing the build on test
Added: glibc-package/trunk/debian/patches/hurd-i386/tg-pie-sbrk.diff
===================================================================
--- glibc-package/trunk/debian/patches/hurd-i386/tg-pie-sbrk.diff (rev 0)
+++ glibc-package/trunk/debian/patches/hurd-i386/tg-pie-sbrk.diff 2013-02-11 04:08:07 UTC (rev 5489)
@@ -0,0 +1,34 @@
+From: Samuel Thibault <samuel.thibault@ens-lyon.org>
+Subject: Fix sbrk in PIE binaries
+
+In PIE mode, the program gets loaded at very low address, and thus _end is very
+low, just before libraries, and thus initializing the brk to it does not make
+sense, since there is no room left there. Hardcode the brk to 0x800000 for now
+as a workaround.
+
+Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+---
+ sysdeps/mach/hurd/brk.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/sysdeps/mach/hurd/brk.c b/sysdeps/mach/hurd/brk.c
+index 1900277..fb74e83 100644
+--- a/sysdeps/mach/hurd/brk.c
++++ b/sysdeps/mach/hurd/brk.c
+@@ -143,8 +143,12 @@ init_brk (void)
+ /* If _hurd_brk is already set, don't change it. The assumption is that
+ it was set in a previous run before something like Emacs's unexec was
+ called and dumped all the data up to the break at that point. */
+- if (_hurd_brk == 0)
++ if (_hurd_brk == 0) {
+ _hurd_brk = (vm_address_t) &_end;
++ if (_hurd_brk < 0x8000000)
++ /* XXX: PIE case, get out of library area */
++ _hurd_brk = 0x8000000;
++ }
+
+ pagend = round_page (_hurd_brk);
+
+--
+tg: (4a7fa7e..) t/pie-sbrk (depends on: baseline)
Modified: glibc-package/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series 2013-02-10 23:17:07 UTC (rev 5488)
+++ glibc-package/trunk/debian/patches/series 2013-02-11 04:08:07 UTC (rev 5489)
@@ -216,6 +216,7 @@
hurd-i386/unsubmitted-setitimer_fix.diff
hurd-i386/unsubmitted-select-EINTR.diff
hurd-i386/cvs-libpthread_lock.diff
+hurd-i386/tg-pie-sbrk.diff
kfreebsd/submitted-libc_once.diff
kfreebsd/local-getaddrinfo-freebsd-kernel.diff
Reply to: