From 35e1e2257357e7607c08341de205c8ef302a9fdc Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Wed, 26 Mar 2014 14:16:13 +0000
Subject: valgrind: update to 3.9.0 for glibc 2.18

---
 abs/extra/valgrind/PKGBUILD                        | 22 +++---
 abs/extra/valgrind/valgrind-3.7.0-glibc-2.16.patch | 41 ------------
 abs/extra/valgrind/valgrind-3.8.1-glibc-2.18.patch | 33 +++++++++
 .../valgrind/valgrind-3.8.1-ptrace-build-fix.patch | 78 ++++++++++++++++++++++
 abs/extra/valgrind/valgrind-3.8.1-xaddb.patch      | 34 ++++++++++
 5 files changed, 155 insertions(+), 53 deletions(-)
 delete mode 100644 abs/extra/valgrind/valgrind-3.7.0-glibc-2.16.patch
 create mode 100644 abs/extra/valgrind/valgrind-3.8.1-glibc-2.18.patch
 create mode 100644 abs/extra/valgrind/valgrind-3.8.1-ptrace-build-fix.patch
 create mode 100644 abs/extra/valgrind/valgrind-3.8.1-xaddb.patch

diff --git a/abs/extra/valgrind/PKGBUILD b/abs/extra/valgrind/PKGBUILD
index bf8d65e..1e65355 100644
--- a/abs/extra/valgrind/PKGBUILD
+++ b/abs/extra/valgrind/PKGBUILD
@@ -1,32 +1,30 @@
-# $Id: PKGBUILD 163013 2012-07-05 13:49:57Z allan $
+# $Id$
 # Maintainer: Dan McGee <dan@archlinux.org>
 # Maintainer: Allan McRae <allan@archlinux.org>
 
 pkgname=valgrind
-pkgver=3.7.0
-pkgrel=3
+pkgver=3.9.0
+pkgrel=1
 pkgdesc="A tool to help find memory-management problems in programs"
 arch=('i686' 'x86_64')
 license=('GPL')
 url="http://valgrind.org/"
-depends=('glibc>=2.16' 'glibc<2.17' 'perl')
+depends=('glibc>=2.18' 'glibc<2.19' 'perl')
 makedepends=('gdb')
-options=('!emptydirs')
-source=(http://valgrind.org/downloads/${pkgname}-${pkgver}.tar.bz2
-        valgrind-3.7.0-glibc-2.16.patch)
-md5sums=('a855fda56edf05614f099dca316d1775'
-         '8362c9c10b8d7d08d1be628a717cfba7')
+options=('staticlibs' '!emptydirs')
+source=(http://valgrind.org/downloads/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('0947de8112f946b9ce64764af7be6df2')
+
 
 build() {
   cd ${srcdir}/${pkgname}-${pkgver}
-  
-  patch -Np1 -i ${srcdir}/valgrind-3.7.0-glibc-2.16.patch
 
-  if [ "${CARCH}" = "x86_64" ]; then
+  if [[ ${CARCH} = "x86_64" ]]; then
     ./configure --prefix=/usr --mandir=/usr/share/man --enable-only64bit
   else
     ./configure --prefix=/usr --mandir=/usr/share/man
   fi
+
   make
 }
 
diff --git a/abs/extra/valgrind/valgrind-3.7.0-glibc-2.16.patch b/abs/extra/valgrind/valgrind-3.7.0-glibc-2.16.patch
deleted file mode 100644
index 4d28ff1..0000000
--- a/abs/extra/valgrind/valgrind-3.7.0-glibc-2.16.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-diff -Naur valgrind-3.7.0-orig/configure valgrind-3.7.0/configure
---- valgrind-3.7.0-orig/configure	2011-11-05 21:24:39.000000000 +1000
-+++ valgrind-3.7.0/configure	2011-12-27 15:43:54.832120449 +1000
-@@ -6402,6 +6402,28 @@
- 	DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
- 	DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
- 	;;
-+     2.15)
-+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.15 family" >&5
-+$as_echo "2.15 family" >&6; }
-+
-+$as_echo "#define GLIBC_2_15 1" >>confdefs.h
-+
-+	DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
-+	DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
-+	DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
-+	;;
-+
-+     2.16)
-+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.16 family" >&5
-+$as_echo "2.16 family" >&6; }
-+
-+$as_echo "#define GLIBC_2_16 1" >>confdefs.h
-+
-+	DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
-+	DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
-+	DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
-+	;;
-+
-      darwin)
- 	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin" >&5
- $as_echo "Darwin" >&6; }
-@@ -6422,7 +6433,7 @@
-      *)
- 	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported version ${GLIBC_VERSION}" >&5
- $as_echo "unsupported version ${GLIBC_VERSION}" >&6; }
--	as_fn_error "Valgrind requires glibc version 2.2 - 2.14" "$LINENO" 5
-+	as_fn_error "Valgrind requires glibc version 2.2 - 2.16" "$LINENO" 5
- 	as_fn_error "or Darwin libc" "$LINENO" 5
- 	;;
- esac
diff --git a/abs/extra/valgrind/valgrind-3.8.1-glibc-2.18.patch b/abs/extra/valgrind/valgrind-3.8.1-glibc-2.18.patch
new file mode 100644
index 0000000..9f471ad
--- /dev/null
+++ b/abs/extra/valgrind/valgrind-3.8.1-glibc-2.18.patch
@@ -0,0 +1,33 @@
+diff -Naur valgrind-3.8.1-orig/configure.in valgrind-3.8.1/configure.in
+--- valgrind-3.8.1-orig/configure.in	2013-08-13 22:36:20.201676976 +1000
++++ valgrind-3.8.1/configure.in	2013-08-13 22:38:18.402750093 +1000
+@@ -906,6 +906,20 @@
+ 	DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+ 	DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+ 	;;
++     2.17)
++	AC_MSG_RESULT(2.17 family)
++	AC_DEFINE([GLIBC_2_17], 1, [Define to 1 if you're using glibc 2.17.x])
++	DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
++	DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
++	DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
++	;;
++     2.18)
++	AC_MSG_RESULT(2.18 family)
++	AC_DEFINE([GLIBC_2_18], 1, [Define to 1 if you're using glibc 2.18.x])
++	DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
++	DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
++	DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
++	;;
+      darwin)
+ 	AC_MSG_RESULT(Darwin)
+ 	AC_DEFINE([DARWIN_LIBC], 1, [Define to 1 if you're using Darwin])
+@@ -919,7 +933,7 @@
+ 
+      *)
+ 	AC_MSG_RESULT([unsupported version ${GLIBC_VERSION}])
+-	AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.16])
++	AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.18])
+ 	AC_MSG_ERROR([or Darwin libc])
+ 	;;
+ esac
diff --git a/abs/extra/valgrind/valgrind-3.8.1-ptrace-build-fix.patch b/abs/extra/valgrind/valgrind-3.8.1-ptrace-build-fix.patch
new file mode 100644
index 0000000..89af000
--- /dev/null
+++ b/abs/extra/valgrind/valgrind-3.8.1-ptrace-build-fix.patch
@@ -0,0 +1,78 @@
+Index: coregrind/vgdb.c
+===================================================================
+--- coregrind/vgdb.c	(revision 13470)
++++ coregrind/vgdb.c	(revision 13471)
+@@ -100,11 +100,10 @@
+ 
+ #if defined(PTRACEINVOKER)
+ #include <sys/user.h>
+ #if defined(VGO_linux)
+ #  include <sys/prctl.h>
+-#  include <linux/ptrace.h>
+ #endif
+ #endif
+ 
+ 
+ // Outputs information for the user about ptrace not working.
+
+Index: coregrind/vgdb.c
+===================================================================
+--- coregrind/vgdb.c	(revision 13481)
++++ coregrind/vgdb.c	(revision 13482)
+@@ -691,7 +691,7 @@
+ //       runtime check not yet done.
+ //   0 : PTRACE_GETREGS runtime check has failed.
+ //   1 : PTRACE_GETREGS defined and runtime check ok.
+-#ifdef PTRACE_GETREGS
++#ifdef HAVE_PTRACE_GETREGS
+ static int has_working_ptrace_getregs = -1;
+ #endif
+ 
+@@ -702,7 +702,7 @@
+ Bool getregs (int pid, void *regs, long regs_bsz)
+ {
+    DEBUG(1, "getregs regs_bsz %ld\n", regs_bsz);
+-#  ifdef PTRACE_GETREGS
++#  ifdef HAVE_PTRACE_GETREGS
+    if (has_working_ptrace_getregs) {
+       // Platforms having GETREGS
+       long res;
+@@ -773,7 +773,7 @@
+    DEBUG(1, "setregs regs_bsz %ld\n", regs_bsz);
+ // Note : the below is checking for GETREGS, not SETREGS
+ // as if one is defined and working, the other one should also work.
+-#  ifdef PTRACE_GETREGS
++#  ifdef HAVE_PTRACE_GETREGS
+    if (has_working_ptrace_getregs) {
+       // Platforms having SETREGS
+       long res;
+Index: configure.in
+===================================================================
+--- configure.in	(revision 13481)
++++ configure.in	(revision 13482)
+@@ -1040,6 +1040,25 @@
+ 
+ AM_CONDITIONAL([HAVE_GNU_STPNCPY], [test x$ac_have_gnu_stpncpy = xyes])
+ 
++# Check for PTRACE_GETREGS
++
++AC_MSG_CHECKING([for PTRACE_GETREGS])
++AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
++#include <stddef.h>
++#include <sys/ptrace.h>
++#include <sys/user.h>
++]], [[
++  void *p;
++  long res = ptrace (PTRACE_GETREGS, 0, p, p);
++]])], [
++AC_MSG_RESULT([yes])
++AC_DEFINE([HAVE_PTRACE_GETREGS], 1,
++          [Define to 1 if you have the `PTRACE_GETREGS' ptrace request.])
++], [
++AC_MSG_RESULT([no])
++])
++
++
+ # Check for CLOCK_MONOTONIC
+ 
+ AC_MSG_CHECKING([for CLOCK_MONOTONIC])
diff --git a/abs/extra/valgrind/valgrind-3.8.1-xaddb.patch b/abs/extra/valgrind/valgrind-3.8.1-xaddb.patch
new file mode 100644
index 0000000..ca5a597
--- /dev/null
+++ b/abs/extra/valgrind/valgrind-3.8.1-xaddb.patch
@@ -0,0 +1,34 @@
+Index: priv/guest_amd64_toIR.c
+===================================================================
+--- VEX/priv/guest_amd64_toIR.c	(revision 2580)
++++ VEX/priv/guest_amd64_toIR.c	(revision 2581)
+@@ -20268,6 +20268,14 @@
+       delta = dis_movx_E_G ( vbi, pfx, delta, 2, sz, True );
+       return delta;
+ 
++   case 0xC0: { /* XADD Gb,Eb */ 
++      Bool decode_OK = False;
++      delta = dis_xadd_G_E ( &decode_OK, vbi, pfx, 1, delta );
++      if (!decode_OK)
++         goto decode_failure;
++      return delta;
++   }
++
+    case 0xC1: { /* XADD Gv,Ev */ 
+       Bool decode_OK = False;
+       delta = dis_xadd_G_E ( &decode_OK, vbi, pfx, sz, delta );
+@@ -27143,14 +27151,6 @@
+ 
+       /* =-=-=-=-=-=-=-=-=- XADD -=-=-=-=-=-=-=-=-=-= */
+ 
+-      case 0xC0: { /* XADD Gb,Eb */ 
+-         Bool decode_OK = False;
+-         delta = dis_xadd_G_E ( &decode_OK, vbi, pfx, 1, delta );
+-         if (!decode_OK)
+-            goto decode_failure;
+-         break;
+-      }
+-
+       /* =-=-=-=-=-=-=-=-=- SGDT and SIDT =-=-=-=-=-=-=-=-=-=-= */
+ 
+       /* =-=-=-=-=-=-=-=-=- unimp2 =-=-=-=-=-=-=-=-=-=-= */
-- 
cgit v0.12

