[valgrind] 3.6.0-2

Jakub Jelinek jakub at fedoraproject.org
Fri Jan 28 12:42:34 UTC 2011


commit 4b7bdeb49177fb0904b6ac2c8b76aa10cc6ef9b0
Author: Jakub Jelinek <jakub at redhat.com>
Date:   Fri Jan 28 13:42:00 2011 +0100

    3.6.0-2

 valgrind-3.6.0-pie.patch            |   40 +++++++++++++++++++++++++++++++++++
 valgrind-3.6.0-ppc64-pwrite64.patch |   11 +++++++++
 valgrind.spec                       |   15 ++++++++++--
 3 files changed, 63 insertions(+), 3 deletions(-)
---
diff --git a/valgrind-3.6.0-pie.patch b/valgrind-3.6.0-pie.patch
new file mode 100644
index 0000000..26c976b
--- /dev/null
+++ b/valgrind-3.6.0-pie.patch
@@ -0,0 +1,40 @@
+From eb8d355b64e72bfdf1c8dd2534b1625d5d0118e0 Mon Sep 17 00:00:00 2001
+From: Dodji Seketeli <dodji at seketeli.org>
+Date: Thu, 13 Jan 2011 16:04:39 +0100
+Subject: [PATCH] Fix crash loading certain binaries on ppc64
+
+Increase the space left for VDSO on ppc64 compiled with 64KB page
+size. the size of VDSO is at least 2 pages: one for the code and one
+for the data. We ought to leave more than two page space then. The
+patch leaves 8 pages space to comply with what is done already for 4KB
+page sizes.
+---
+ coregrind/m_ume/elf.c |   10 ++++++----
+ 1 files changed, 6 insertions(+), 4 deletions(-)
+
+--- valgrind/coregrind/m_ume/elf.c
++++ valgrind/coregrind/m_ume/elf.c
+@@ -327,6 +327,7 @@ Int VG_(load_ELF)(Int fd, const HChar* name, /*MOD*/ExeInfo* info)
+    /* The kernel maps position-independent executables at TASK_SIZE*2/3;
+       duplicate this behavior as close as we can. */
+    if (e->e.e_type == ET_DYN && ebase == 0) {
++      ESZ(Addr) hacky_load_address;
+       ebase = VG_PGROUNDDN(info->exe_base 
+                            + (info->exe_end - info->exe_base) * 2 / 3);
+       /* We really don't want to load PIEs at zero or too close.  It
+@@ -336,10 +337,11 @@ Int VG_(load_ELF)(Int fd, const HChar* name, /*MOD*/ExeInfo* info)
+          nonpointers.  So, hackily, move it above 1MB. */
+       /* Later .. is appears ppc32-linux tries to put [vdso] at 1MB,
+          which totally screws things up, because nothing else can go
+-         there.  So bump the hacky load addess along by 0x8000, to
+-         0x108000. */
+-      if (ebase < 0x108000)
+-         ebase = 0x108000;
++         there.  The size of [vdso] is around 2 or 3 pages, so bump
++         the hacky load addess along by 8 * VKI_PAGE_SIZE to be safe.  */
++      hacky_load_address = 0x100000 + 8 * VKI_PAGE_SIZE;
++      if (ebase < hacky_load_address)
++	ebase = hacky_load_address;
+    }
+ 
+    info->phnum = e->e.e_phnum;
diff --git a/valgrind-3.6.0-ppc64-pwrite64.patch b/valgrind-3.6.0-ppc64-pwrite64.patch
new file mode 100644
index 0000000..3ffe8d5
--- /dev/null
+++ b/valgrind-3.6.0-ppc64-pwrite64.patch
@@ -0,0 +1,11 @@
+--- valgrind/coregrind/m_syswrap/syswrap-ppc64-linux.c.jj	2010-10-20 22:19:41.000000000 +0200
++++ valgrind/coregrind/m_syswrap/syswrap-ppc64-linux.c	2011-01-28 13:12:32.698670101 +0100
+@@ -1379,7 +1379,7 @@ static SyscallTableEntry syscall_table[]
+ // _____(__NR_rt_sigsuspend,     sys_rt_sigsuspend),      // 178
+    GENXY(__NR_pread64,           sys_pread64),            // 179
+ 
+-// _____(__NR_pwrite64,          sys_pwrite64),           // 180
++   GENX_(__NR_pwrite64,          sys_pwrite64),           // 180
+    GENX_(__NR_chown,             sys_chown),              // 181
+    GENXY(__NR_getcwd,            sys_getcwd),             // 182
+    LINXY(__NR_capget,            sys_capget),             // 183
diff --git a/valgrind.spec b/valgrind.spec
index 53acc76..cc442d1 100644
--- a/valgrind.spec
+++ b/valgrind.spec
@@ -20,6 +20,8 @@ Patch13: valgrind-3.6.0-s390x-4.patch
 Patch14: valgrind-3.6.0-strcasecmp.patch
 Patch15: valgrind-3.6.0-xlc_dbl_u32-test-patch
 Patch16: valgrind-3.6.0-helgrind-tests.patch
+Patch17: valgrind-3.6.0-ppc64-pwrite64.patch
+Patch18: valgrind-3.6.0-pie.patch
 License: GPLv2
 URL: http://www.valgrind.org/
 Group: Development/Debuggers
@@ -29,10 +31,10 @@ Obsoletes: valgrind-callgrind
 # Ensure glibc{,-devel} is installed for both multilib arches
 BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so
 %endif
-%if 0%{?fedora} >= 13 || 0%{?rhel} >= 6
-BuildRequires: glibc-devel >= 2.12
+%if 0%{?fedora} >= 15
+BuildRequires: glibc-devel >= 2.13
 %else
-BuildRequires: glibc-devel >= 2.11
+BuildRequires: glibc-devel >= 2.12
 %endif
 %ifnarch s390x
 BuildRequires: openmpi-devel >= 1.3.3
@@ -110,6 +112,8 @@ for details.
 %patch14 -p1
 %patch15 -p1
 %patch16 -p1
+%patch17 -p1
+%patch18 -p1
 
 chmod 755 none/tests/s390x/filter_stderr
 
@@ -211,6 +215,11 @@ rm -rf $RPM_BUILD_ROOT
 %endif
 
 %changelog
+* Fri Jan 28 2011 Jakub Jelinek <jakub at redhat.com> 3.6.0-2
+- rebuilt against glibc 2.13 (#673046)
+- hook in pwrite64 syscall on ppc64 (#672858)
+- fix PIE handling on ppc/ppc64 (#665289)
+
 * Fri Nov 12 2010 Jakub Jelinek <jakub at redhat.com> 3.6.0-1
 - update to 3.6.0
 - add s390x support (#632354)


More information about the scm-commits mailing list