[arch-commits] Commit in valgrind/trunk (2 files)

Allan McRae allan at archlinux.org
Sat May 23 04:04:48 UTC 2009


    Date: Saturday, May 23, 2009 @ 00:04:47
  Author: allan
Revision: 39914

upgpkg: valgrind 3.4.1-3
    fixes FS#14786

Added:
  valgrind/trunk/valgrind-3.4.1-x86_64-ldso-strlen.patch
Modified:
  valgrind/trunk/PKGBUILD

-----------------------------------------+
 PKGBUILD                                |   15 +++--
 valgrind-3.4.1-x86_64-ldso-strlen.patch |   82 ++++++++++++++++++++++++++++++
 2 files changed, 92 insertions(+), 5 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2009-05-23 02:30:51 UTC (rev 39913)
+++ PKGBUILD	2009-05-23 04:04:47 UTC (rev 39914)
@@ -3,20 +3,25 @@
 
 pkgname=valgrind
 pkgver=3.4.1
-pkgrel=2
+pkgrel=3
 pkgdesc="A tool to help find memory-management problems in programs"
-arch=(i686 x86_64)
+arch=('i686' 'x86_64')
 license=('GPL')
 url="http://valgrind.org/"
 depends=('glibc>=2.10' 'glibc<2.11' 'perl')
 options=(!emptydirs)
-source=(http://valgrind.org/downloads/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('b5f039dd2271aaf9ae570ab4116f87c7')
-sha256sums=('669ee7aab8a3a905520159b6d7be35d3911e1a4d7a67d90dc1c12c00693184a9')
+source=(http://valgrind.org/downloads/${pkgname}-${pkgver}.tar.bz2
+        valgrind-3.4.1-x86_64-ldso-strlen.patch)
+md5sums=('b5f039dd2271aaf9ae570ab4116f87c7'
+         'd35029d80ee6f10071cab9bc8c799042')
+sha256sums=('669ee7aab8a3a905520159b6d7be35d3911e1a4d7a67d90dc1c12c00693184a9'
+            '96786190dcfe60253295aeaea3a3b7ad2688779a538a09e331134ba077fe3072')
 
 build() {
   cd ${srcdir}/${pkgname}-${pkgver}
 
+  patch -Np1 -i ${srcdir}/valgrind-3.4.1-x86_64-ldso-strlen.patch || return 1
+
   # make sure our CFLAGS are respected
   sed -i -e 's:^CFLAGS="-Wno-long-long":CFLAGS="$CFLAGS -Wno-long-long":' configure.in
 

Added: valgrind-3.4.1-x86_64-ldso-strlen.patch
===================================================================
--- valgrind-3.4.1-x86_64-ldso-strlen.patch	                        (rev 0)
+++ valgrind-3.4.1-x86_64-ldso-strlen.patch	2009-05-23 04:04:47 UTC (rev 39914)
@@ -0,0 +1,82 @@
+--- valgrind/coregrind/pub_core_trampoline.h.jj	2009-04-22 12:10:54.000000000 +0200
++++ valgrind/coregrind/pub_core_trampoline.h	2009-04-22 14:50:39.000000000 +0200
+@@ -66,6 +66,7 @@ extern Char* VG_(x86_linux_REDIR_FOR_ind
+ extern void VG_(amd64_linux_SUBST_FOR_rt_sigreturn);
+ extern void VG_(amd64_linux_REDIR_FOR_vgettimeofday);
+ extern void VG_(amd64_linux_REDIR_FOR_vtime);
++extern UInt VG_(amd64_linux_REDIR_FOR_strlen)( void* );
+ #endif
+ 
+ #if defined(VGP_ppc32_linux)
+--- valgrind/coregrind/m_redir.c.jj	2009-04-22 12:10:54.000000000 +0200
++++ valgrind/coregrind/m_redir.c	2009-04-22 15:32:19.000000000 +0200
+@@ -879,6 +879,20 @@ void VG_(redir_initialise) ( void )
+       (Addr)&VG_(amd64_linux_REDIR_FOR_vtime) 
+    );
+ 
++   /* If we're using memcheck, use these intercepts right from
++      the start, otherwise ld.so makes a lot of noise. */
++   if (0==VG_(strcmp)("Memcheck", VG_(details).name)) {
++
++      static const HChar croakage[]
++        = "Possible fix: install glibc's debuginfo package on this machine.";
++
++      /* this is mandatory - can't sanely continue without it */
++      add_hardwired_spec(
++         "ld-linux-x86-64.so.2", "strlen",
++         (Addr)&VG_(amd64_linux_REDIR_FOR_strlen),
++         croakage
++      );   
++   }
+ #  elif defined(VGP_ppc32_linux)
+    {
+    static const HChar croakage[]
+--- valgrind/coregrind/m_trampoline.S.jj	2009-04-22 12:10:54.000000000 +0200
++++ valgrind/coregrind/m_trampoline.S	2009-04-22 15:18:37.000000000 +0200
+@@ -174,7 +174,29 @@ VG_(amd64_linux_REDIR_FOR_vtime):
+ .LfnE3:
+ .size VG_(amd64_linux_REDIR_FOR_vtime), .-.LfnB3
+ 
+-/* A CIE for the above two functions, followed by their FDEs */
++/* There's no particular reason that this needs to be handwritten
++   assembly, but since that's what this file contains, here's a
++   simple strlen implementation (written in C and compiled by gcc.)
++*/
++.global VG_(amd64_linux_REDIR_FOR_strlen)
++.type   VG_(amd64_linux_REDIR_FOR_strlen), @function
++VG_(amd64_linux_REDIR_FOR_strlen):
++.LfnB4:
++	xorl	%eax, %eax
++	cmpb	$0, (%rdi)
++	movq	%rdi, %rdx
++	je	.L41
++.L40:	addq	$1, %rdx
++	cmpb	$0, (%rdx)
++	jne	.L40
++	movq	%rdx, %rax
++	subq	%rdi, %rax
++.L41:	ret
++.LfnE4:
++.size VG_(amd64_linux_REDIR_FOR_strlen), .-VG_(amd64_linux_REDIR_FOR_strlen)
++
++
++/* A CIE for the above three functions, followed by their FDEs */
+ 	.section .eh_frame,"a", at progbits
+ .Lframe1:
+         .long   .LEcie1-.LScie1
+@@ -212,6 +234,15 @@ VG_(amd64_linux_REDIR_FOR_vtime):
+         .uleb128 0x0
+         .align 8
+ .LEfde3:
++.LSfde4:
++        .long   .LEfde4-.LASfde4
++.LASfde4:
++        .long   .LASfde4-.Lframe1
++        .long   .LfnB4
++        .long   .LfnE4-.LfnB4
++        .uleb128 0x0
++        .align 8
++.LEfde4:
+ 	.previous
+ 
+ .global VG_(trampoline_stuff_end)




More information about the arch-commits mailing list