From bea251c69668ce002420cd68d2c490c8f8d8ddf0 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 31 Dec 2011 15:07:08 +0100 Subject: valgrind: bump to 3.7.0 and fix build with ccache After bumping to 3.7.0, the valgrind-3.6.1-configure-support-linux-3.patch is no longer necessary since it was added upstream. The valgrind-3.7.0-compiler-check.patch patch is added to fix a compiler version check issue (patch taken from the upstream Subversion repository). The valgrind-3.7.0-fix-ccache-support.patch is added to fix the build process when ccache is used. Signed-off-by: Thomas Petazzoni Tested-by: Marek Belisko Signed-off-by: Peter Korsgaard --- .../valgrind-3.6.1-configure-support-linux-3.patch | 30 --- package/valgrind/valgrind-3.6.1-largefile.patch | 56 ------ package/valgrind/valgrind-3.6.1-more-ioctls.patch | 203 --------------------- .../valgrind-3.6.1-workaround-SIGSEGV-on-PPC.patch | 28 --- .../valgrind/valgrind-3.7.0-compiler-check.patch | 76 ++++++++ .../valgrind-3.7.0-fix-ccache-support.patch | 51 ++++++ package/valgrind/valgrind-3.7.0-largefile.patch | 56 ++++++ package/valgrind/valgrind-3.7.0-more-ioctls.patch | 203 +++++++++++++++++++++ .../valgrind-3.7.0-workaround-SIGSEGV-on-PPC.patch | 25 +++ package/valgrind/valgrind.mk | 3 +- 10 files changed, 412 insertions(+), 319 deletions(-) delete mode 100644 package/valgrind/valgrind-3.6.1-configure-support-linux-3.patch delete mode 100644 package/valgrind/valgrind-3.6.1-largefile.patch delete mode 100644 package/valgrind/valgrind-3.6.1-more-ioctls.patch delete mode 100644 package/valgrind/valgrind-3.6.1-workaround-SIGSEGV-on-PPC.patch create mode 100644 package/valgrind/valgrind-3.7.0-compiler-check.patch create mode 100644 package/valgrind/valgrind-3.7.0-fix-ccache-support.patch create mode 100644 package/valgrind/valgrind-3.7.0-largefile.patch create mode 100644 package/valgrind/valgrind-3.7.0-more-ioctls.patch create mode 100644 package/valgrind/valgrind-3.7.0-workaround-SIGSEGV-on-PPC.patch diff --git a/package/valgrind/valgrind-3.6.1-configure-support-linux-3.patch b/package/valgrind/valgrind-3.6.1-configure-support-linux-3.patch deleted file mode 100644 index a3b24825f..000000000 --- a/package/valgrind/valgrind-3.6.1-configure-support-linux-3.patch +++ /dev/null @@ -1,30 +0,0 @@ -Add support for kernel 3.x. From upstream r11796 (via Debian). - -Signed-off-by: Baruch Siach - -Index: valgrind-3.6.1/configure.in -=================================================================== ---- valgrind-3.6.1.orig/configure.in 2011-02-15 18:31:17.000000000 +0100 -+++ valgrind-3.6.1/configure.in 2011-07-08 22:36:36.051563848 +0200 -@@ -220,7 +220,7 @@ - kernel=`uname -r` - - case "${kernel}" in -- 2.6.*) -+ 2.6.*|3.*) - AC_MSG_RESULT([2.6 family (${kernel})]) - AC_DEFINE([KERNEL_2_6], 1, [Define to 1 if you're using Linux 2.6.x]) - ;; -Index: valgrind-3.6.1/configure -=================================================================== ---- valgrind-3.6.1.orig/configure 2011-07-08 22:37:18.911240743 +0200 -+++ valgrind-3.6.1/configure 2011-07-08 22:37:44.847045178 +0200 -@@ -5348,7 +5348,7 @@ - kernel=`uname -r` - - case "${kernel}" in -- 2.6.*) -+ 2.6.*|3.*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.6 family (${kernel})" >&5 - $as_echo "2.6 family (${kernel})" >&6; } - diff --git a/package/valgrind/valgrind-3.6.1-largefile.patch b/package/valgrind/valgrind-3.6.1-largefile.patch deleted file mode 100644 index d04877bd6..000000000 --- a/package/valgrind/valgrind-3.6.1-largefile.patch +++ /dev/null @@ -1,56 +0,0 @@ -[PATCH] valgrind: don't enable largefile support unconditionally on uClibc - -uClibc can be compiled without largefile support (and errors out if -_FILE_OFFSET_BITS is set to 64), so don't define it if that combination -is detected. - -Signed-off-by: Peter Korsgaard - -Index: valgrind-3.6.1/coregrind/m_initimg/initimg-linux.c -=================================================================== ---- valgrind-3.6.1.orig/coregrind/m_initimg/initimg-linux.c 2011-07-06 09:45:10.203070009 +0200 -+++ valgrind-3.6.1/coregrind/m_initimg/initimg-linux.c 2011-07-06 09:45:17.343070005 +0200 -@@ -54,7 +54,11 @@ - - /* --- !!! --- EXTERNAL HEADERS start --- !!! --- */ - #define _GNU_SOURCE -+#include -+/* uclibc without largefile support #errors on _FILE_OFFSET_BITS=64 */ -+#if !(defined(__UCLIBC__) && !defined(__UCLIBC_HAS_LFS__)) - #define _FILE_OFFSET_BITS 64 -+#endif - /* This is for ELF types etc, and also the AT_ constants. */ - #include - /* --- !!! --- EXTERNAL HEADERS end --- !!! --- */ -Index: valgrind-3.6.1/coregrind/m_main.c -=================================================================== ---- valgrind-3.6.1.orig/coregrind/m_main.c 2011-07-06 09:44:22.203070033 +0200 -+++ valgrind-3.6.1/coregrind/m_main.c 2011-07-06 09:44:42.803070024 +0200 -@@ -2797,7 +2797,11 @@ - - /* --- !!! --- EXTERNAL HEADERS start --- !!! --- */ - #define _GNU_SOURCE -+#include -+/* uclibc without largefile support #errors on _FILE_OFFSET_BITS=64 */ -+#if !(defined(__UCLIBC__) && !defined(__UCLIBC_HAS_LFS__)) - #define _FILE_OFFSET_BITS 64 -+#endif - /* This is in order to get AT_NULL and AT_PAGESIZE. */ - #include - /* --- !!! --- EXTERNAL HEADERS end --- !!! --- */ -Index: valgrind-3.6.1/coregrind/m_ume/elf.c -=================================================================== ---- valgrind-3.6.1.orig/coregrind/m_ume/elf.c 2011-07-06 09:44:51.343070018 +0200 -+++ valgrind-3.6.1/coregrind/m_ume/elf.c 2011-07-06 09:44:58.833070015 +0200 -@@ -48,7 +48,11 @@ - - /* --- !!! --- EXTERNAL HEADERS start --- !!! --- */ - #define _GNU_SOURCE -+#include -+/* uclibc without largefile support #errors on _FILE_OFFSET_BITS=64 */ -+#if !(defined(__UCLIBC__) && !defined(__UCLIBC_HAS_LFS__)) - #define _FILE_OFFSET_BITS 64 -+#endif - /* This is for ELF types etc, and also the AT_ constants. */ - #include - /* --- !!! --- EXTERNAL HEADERS end --- !!! --- */ diff --git a/package/valgrind/valgrind-3.6.1-more-ioctls.patch b/package/valgrind/valgrind-3.6.1-more-ioctls.patch deleted file mode 100644 index 62f013528..000000000 --- a/package/valgrind/valgrind-3.6.1-more-ioctls.patch +++ /dev/null @@ -1,203 +0,0 @@ -Add various ioctl()s - -Patch initially written by Eric Andersen . - -Signed-off-by: Thomas Petazzoni - -Index: valgrind-3.6.1/coregrind/m_syswrap/syswrap-linux.c -=================================================================== ---- valgrind-3.6.1.orig/coregrind/m_syswrap/syswrap-linux.c 2011-07-06 09:50:32.243069845 +0200 -+++ valgrind-3.6.1/coregrind/m_syswrap/syswrap-linux.c 2011-07-06 09:53:39.783069751 +0200 -@@ -3900,7 +3900,33 @@ - case VKI_SG_GET_SG_TABLESIZE: /* 0x227f */ - PRE_MEM_WRITE( "ioctl(SG_GET_SG_TABLESIZE)", ARG3, sizeof(int) ); - break; -+ case VKI_SCSI_IOCTL_GET_IDLUN: -+ PRE_MEM_WRITE( "ioctl(SCSI_IOCTL_GET_IDLUN)", ARG3, sizeof(vki_scsi_idlun_t) ); -+ break; -+ case VKI_SCSI_IOCTL_PROBE_HOST: -+ { -+ int arraylen; -+ char *array = (char*)ARG3; -+ PRE_MEM_READ("ioctl(SCSI_IOCTL_PROBE_HOST)", ARG3, sizeof(char)*4 ); -+ arraylen = array[0] + (array[1]<<8) + (array[2]<<16) + (array[3]<<24); -+ PRE_MEM_WRITE( "ioctl(SCSI_IOCTL_PROBE_HOST)", ARG3, sizeof(char)*arraylen ); -+ } -+ break; -+ case VKI_SCSI_IOCTL_GET_BUS_NUMBER: -+ PRE_MEM_WRITE( "ioctl(SCSI_IOCTL_GET_BUS_NUMBER)", ARG3, sizeof(int) ); -+ break; - -+ case VKI_FDRESET: -+ break; -+ case VKI_FDGETDRVTYP: -+ PRE_MEM_WRITE( "ioctl(FDGETDRVTYP)", ARG3, sizeof(char)*16 ); -+ break; -+ case VKI_FDPOLLDRVSTAT: -+ PRE_MEM_WRITE( "ioctl(FDPOLLDRVSTAT)", ARG3, sizeof(vki_floppy_drive_struct_t) ); -+ break; -+ case VKI_FDGETPRM: -+ PRE_MEM_WRITE( "ioctl(FDGETPRM)", ARG3, sizeof(vki_floppy_struct_t) ); -+ break; - case VKI_IIOCGETCPS: - PRE_MEM_WRITE( "ioctl(IIOCGETCPS)", ARG3, - VKI_ISDN_MAX_CHANNELS * 2 * sizeof(unsigned long) ); -@@ -4215,6 +4241,8 @@ - case VKI_BLKROGET: - PRE_MEM_WRITE( "ioctl(BLKROGET)", ARG3, sizeof(int)); - break; -+ case VKI_BLKRRPART: -+ break; - case VKI_BLKGETSIZE: - PRE_MEM_WRITE( "ioctl(BLKGETSIZE)", ARG3, sizeof(unsigned long)); - break; -@@ -4223,6 +4251,8 @@ - case VKI_BLKRAGET: - PRE_MEM_WRITE( "ioctl(BLKRAGET)", ARG3, sizeof(long)); - break; -+ case VKI_BLKFLSBUF: -+ break; - case VKI_BLKFRASET: - break; - case VKI_BLKFRAGET: -@@ -4289,6 +4319,8 @@ - PRE_MEM_WRITE( "ioctl(CDROMREADTOCENTRY)", ARG3, - sizeof(struct vki_cdrom_tocentry)); - break; -+ case VKI_CDROMEJECT: -+ break; - case VKI_CDROMMULTISESSION: /* 0x5310 */ - PRE_MEM_WRITE( "ioctl(CDROMMULTISESSION)", ARG3, - sizeof(struct vki_cdrom_multisession)); -@@ -4989,7 +5021,28 @@ - case VKI_SG_GET_SG_TABLESIZE: - POST_MEM_WRITE(ARG3, sizeof(int)); - break; -+ case VKI_SCSI_IOCTL_GET_IDLUN: -+ POST_MEM_WRITE(ARG3, sizeof(vki_scsi_idlun_t)); -+ break; -+ case VKI_SCSI_IOCTL_PROBE_HOST: -+ if (RES > 0 && ARG3 ) -+ POST_MEM_WRITE(ARG3, sizeof(char)*RES); -+ break; -+ case VKI_SCSI_IOCTL_GET_BUS_NUMBER: -+ POST_MEM_WRITE(ARG3, sizeof(int)); -+ break; - -+ case VKI_FDRESET: -+ break; -+ case VKI_FDGETDRVTYP: -+ POST_MEM_WRITE( ARG3, sizeof(char)*16 ); -+ break; -+ case VKI_FDPOLLDRVSTAT: -+ POST_MEM_WRITE( ARG3, sizeof(vki_floppy_drive_struct_t) ); -+ break; -+ case VKI_FDGETPRM: -+ POST_MEM_WRITE( ARG3, sizeof(vki_floppy_struct_t) ); -+ break; - case VKI_IIOCGETCPS: - POST_MEM_WRITE( ARG3, VKI_ISDN_MAX_CHANNELS * 2 * sizeof(unsigned long) ); - break; -@@ -5210,6 +5263,8 @@ - case VKI_BLKROGET: - POST_MEM_WRITE(ARG3, sizeof(int)); - break; -+ case VKI_BLKRRPART: -+ break; - case VKI_BLKGETSIZE: - POST_MEM_WRITE(ARG3, sizeof(unsigned long)); - break; -@@ -5218,6 +5273,8 @@ - case VKI_BLKRAGET: - POST_MEM_WRITE(ARG3, sizeof(long)); - break; -+ case VKI_BLKFLSBUF: -+ break; - case VKI_BLKFRASET: - break; - case VKI_BLKFRAGET: -@@ -5259,6 +5316,8 @@ - case VKI_CDROMREADTOCENTRY: - POST_MEM_WRITE(ARG3, sizeof(struct vki_cdrom_tocentry)); - break; -+ case VKI_CDROMEJECT: -+ break; - case VKI_CDROMMULTISESSION: - POST_MEM_WRITE(ARG3, sizeof(struct vki_cdrom_multisession)); - break; -Index: valgrind-3.6.1/include/vki/vki-linux.h -=================================================================== ---- valgrind-3.6.1.orig/include/vki/vki-linux.h 2011-07-06 09:48:16.733069914 +0200 -+++ valgrind-3.6.1/include/vki/vki-linux.h 2011-07-06 09:49:49.413069868 +0200 -@@ -1646,7 +1646,9 @@ - - #define VKI_BLKROSET _VKI_IO(0x12,93) /* set device read-only (0 = read-write) */ - #define VKI_BLKROGET _VKI_IO(0x12,94) /* get read-only status (0 = read_write) */ -+#define VKI_BLKRRPART _VKI_IO(0x12,95) /* re-read partition table */ - #define VKI_BLKGETSIZE _VKI_IO(0x12,96) /* return device size /512 (long *arg) */ -+#define VKI_BLKFLSBUF _VKI_IO(0x12,97) /* flush buffer cache */ - #define VKI_BLKRASET _VKI_IO(0x12,98) /* set read ahead for block device */ - #define VKI_BLKRAGET _VKI_IO(0x12,99) /* get current read ahead setting */ - #define VKI_BLKFRASET _VKI_IO(0x12,100)/* set filesystem (mm/filemap.c) read-ahead */ -@@ -1721,6 +1723,53 @@ - //#define SG_GET_COMMAND_Q 0x2270 /* Yields 0 (queuing off) or 1 (on) */ - #define VKI_SG_SET_COMMAND_Q 0x2271 /* Change queuing state with 0 or 1 */ - -+typedef struct vki_scsi_idlun -+{ -+ int mux4; -+ int host_unique_id; -+ -+} vki_scsi_idlun_t; -+#define VKI_SCSI_IOCTL_GET_IDLUN 0x5382 /* Gets a struct vki_scsi_idlun */ -+#define VKI_SCSI_IOCTL_PROBE_HOST 0x5385 /* Gets an arrary describing the SCSI host */ -+#define VKI_SCSI_IOCTL_GET_BUS_NUMBER 0x5386 /* Get the bus number for a device */ -+ -+//---------------------------------------------------------------------- -+// From linux-2.6.8.1/include/linux/fd.h -+//---------------------------------------------------------------------- -+#define VKI_FDRESET 0x254 /* Takes an int by value */ -+#define VKI_FDGETDRVTYP 0x20f /* Returns char floppy_drive_name[16] */ -+typedef struct vki_floppy_drive_struct { -+ unsigned long flags; -+ unsigned long spinup_date; -+ unsigned long select_date; -+ unsigned long first_read_date; -+ short probed_format; -+ short track; -+ short maxblock; -+ short maxtrack; -+ int generation; -+ int keep_data; -+ int fd_ref; -+ int fd_device; -+ unsigned long last_checked; -+ char *dmabuf; -+ int bufblocks; -+} vki_floppy_drive_struct_t; -+#define VKI_FDPOLLDRVSTAT 0x213 /* returns a struct floppy_drive_struct */ -+typedef struct vki_floppy_struct { -+ unsigned int size; -+ unsigned int sect; -+ unsigned int head; -+ unsigned int track; -+ unsigned int stretch; -+ unsigned char gap; -+ unsigned char rate; -+ unsigned char spec1; -+ unsigned char fmt_gap; -+ const char * name; -+} vki_floppy_struct_t; -+#define VKI_FDGETPRM 0x204 /* returns a struct floppy_struct */ -+ - //---------------------------------------------------------------------- - // From linux-2.6.8.1/include/linux/cdrom.h - //---------------------------------------------------------------------- -@@ -1730,6 +1779,7 @@ - (struct cdrom_tochdr) */ - #define VKI_CDROMREADTOCENTRY 0x5306 /* Read TOC entry - (struct cdrom_tocentry) */ -+#define VKI_CDROMEJECT 0x5309 /* Eject cdrom media */ - #define VKI_CDROMSUBCHNL 0x530b /* Read subchannel data - (struct cdrom_subchnl) */ - #define VKI_CDROMREADMODE2 0x530c /* Read CDROM mode 2 data (2336 Bytes) diff --git a/package/valgrind/valgrind-3.6.1-workaround-SIGSEGV-on-PPC.patch b/package/valgrind/valgrind-3.6.1-workaround-SIGSEGV-on-PPC.patch deleted file mode 100644 index a7885119a..000000000 --- a/package/valgrind/valgrind-3.6.1-workaround-SIGSEGV-on-PPC.patch +++ /dev/null @@ -1,28 +0,0 @@ -From db894abcaa12555f60880a15840010f81d354806 Mon Sep 17 00:00:00 2001 -From: Pierre Habouzit -Date: Tue, 10 May 2011 23:11:45 +0200 -Subject: [PATCH] workaround SIGSEGV on PPC. - -Signed-off-by: Pierre Habouzit ---- - coregrind/m_machine.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -diff --git a/coregrind/m_machine.c b/coregrind/m_machine.c -index 8dc3e17..7921502 100644 ---- a/coregrind/m_machine.c -+++ b/coregrind/m_machine.c -@@ -28,6 +28,10 @@ - The GNU General Public License is contained in the file COPYING. - */ - -+#ifdef __powerpc__ -+# pragma GCC optimize ("-O0") -+#endif -+ - #include "pub_core_basics.h" - #include "pub_core_vki.h" - #include "pub_core_threadstate.h" --- -1.7.5.1.290.g2095dc - diff --git a/package/valgrind/valgrind-3.7.0-compiler-check.patch b/package/valgrind/valgrind-3.7.0-compiler-check.patch new file mode 100644 index 000000000..4a9fcbac1 --- /dev/null +++ b/package/valgrind/valgrind-3.7.0-compiler-check.patch @@ -0,0 +1,76 @@ +Fix the compiler version check so that it doesn't misdetect the +version when the compiler version contains parenthesis. + +Taken from upstream r12274. + +Index: valgrind-3.7.0/configure.in +=================================================================== +--- valgrind-3.7.0.orig/configure.in 2011-12-22 15:21:22.269669307 +0100 ++++ valgrind-3.7.0/configure.in 2011-12-22 15:21:54.029135051 +0100 +@@ -98,18 +98,21 @@ + # We don't want gcc < 3.0 + AC_MSG_CHECKING([for a supported version of gcc]) + +-# Try to get the gcc version, sed-ing out some unexpected stuff +-# that appears with the default gcc on OSX 10.6 and 10.7 respectively. +-# Without this, the version number comes out as 686, 10 or 11 :-( ++# Obtain the compiler version. + # +-# i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3) +-# i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00) ++# A few examples of how the ${CC} --version output looks like: ++# ++# Arch Linux: i686-pc-linux-gnu-gcc (GCC) 4.6.2 ++# Debian Linux: gcc (Debian 4.3.2-1.1) 4.3.2 ++# openSUSE: gcc (SUSE Linux) 4.5.1 20101208 [gcc-4_5-branch revision 167585] ++# Exherbo Linux: x86_64-pc-linux-gnu-gcc (Exherbo gcc-4.6.2) 4.6.2 ++# OS/X 10.6: i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3) ++# OS/X 10.7: i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00) ++# Clang: clang version 2.9 (tags/RELEASE_29/final) + # + [gcc_version=`${CC} --version \ +- | head -n 1 \ +- | $SED 's/i686-apple-darwin10//' \ +- | $SED 's/i686-apple-darwin11//' \ +- | $SED 's/^[^0-9]*\([0-9.]*\).*$/\1/'`] ++ | $SED -n -e 's/[^ ]*gcc[^ ]* ([^)]*) \([0-9.]*\).*$/\1/p' \ ++ -e 's/[^ ]*clang version \([0-9.]*\).*$/\1/p'`] + + is_clang="notclang" + if test "x`${CC} --version | head -n 1 | $SED 's/\(clang\) version.*/\1/'`" = "xclang" ; then +Index: valgrind-3.7.0/configure +=================================================================== +--- valgrind-3.7.0.orig/configure 2011-12-22 15:22:05.138948143 +0100 ++++ valgrind-3.7.0/configure 2011-12-22 15:23:34.807439246 +0100 +@@ -5122,18 +5122,22 @@ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a supported version of gcc" >&5 + $as_echo_n "checking for a supported version of gcc... " >&6; } + +-# Try to get the gcc version, sed-ing out some unexpected stuff +-# that appears with the default gcc on OSX 10.6 and 10.7 respectively. +-# Without this, the version number comes out as 686, 10 or 11 :-( ++# Obtain the compiler version. ++# ++# A few examples of how the ${CC} --version output looks like: + # +-# i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3) +-# i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00) ++# Arch Linux: i686-pc-linux-gnu-gcc (GCC) 4.6.2 ++# Debian Linux: gcc (Debian 4.3.2-1.1) 4.3.2 ++# openSUSE: gcc (SUSE Linux) 4.5.1 20101208 [gcc-4_5-branch revision 167585] ++# Exherbo Linux: x86_64-pc-linux-gnu-gcc (Exherbo gcc-4.6.2) 4.6.2 ++# OS/X 10.6: i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3) ++# OS/X 10.7: i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00) ++# Clang: clang version 2.9 (tags/RELEASE_29/final) + # + gcc_version=`${CC} --version \ +- | head -n 1 \ +- | $SED 's/i686-apple-darwin10//' \ +- | $SED 's/i686-apple-darwin11//' \ +- | $SED 's/^[^0-9]*\([0-9.]*\).*$/\1/'` ++ | $SED -n -e 's/[^ ]*gcc[^ ]* ([^)]*) \([0-9.]*\).*$/\1/p' \ ++ -e 's/[^ ]*clang version \([0-9.]*\).*$/\1/p'` ++ + + is_clang="notclang" + if test "x`${CC} --version | head -n 1 | $SED 's/\(clang\) version.*/\1/'`" = "xclang" ; then diff --git a/package/valgrind/valgrind-3.7.0-fix-ccache-support.patch b/package/valgrind/valgrind-3.7.0-fix-ccache-support.patch new file mode 100644 index 000000000..56d984b0b --- /dev/null +++ b/package/valgrind/valgrind-3.7.0-fix-ccache-support.patch @@ -0,0 +1,51 @@ +Fix link_tool_exe_linux.in to work with ccache + +The link_tool_exe_linux.in Perl script makes the assumption that the +compilation command line is always: + + gcc -o foobar foobar.c -someflags + +I.e, it assumes that the compiler is the first word of the command +line. However, this is not true with ccache, where the command line +is: + + /path/to/ccache /path/to/crossgcc -o foobar foobar.c -someflags + +Since this Perl script simply needs to add additional flags to the +command line, we simply add them at the end of the command line +instead of trying to add them at the beginning. + +Signed-off-by: Thomas Petazzoni + +Index: valgrind-3.6.1/coregrind/link_tool_exe_linux.in +=================================================================== +--- valgrind-3.6.1.orig/coregrind/link_tool_exe_linux.in 2011-12-22 13:59:08.933499060 +0100 ++++ valgrind-3.6.1/coregrind/link_tool_exe_linux.in 2011-12-22 13:59:50.302782709 +0100 +@@ -55,25 +55,13 @@ + if (($#ARGV + 1) < 5); + + my $ala = $ARGV[0]; ++shift; + + # check for plausible-ish alt load address + die "Bogus alt-load address" + if (length($ala) < 3 || index($ala, "0x") != 0); + +-# The cc invokation to do the final link +-my $cc = $ARGV[1]; +- +-# and the 'restargs' are argv[2 ..] +- +-# so, build up the complete command here: +-# 'cc' -static -Ttext='ala' 'restargs' +- +-my $cmd="$cc -static -Wl,-Ttext=$ala"; +- +-# Add the rest of the parameters +-foreach my $n (2 .. $#ARGV) { +- $cmd = "$cmd $ARGV[$n]"; +-} ++my $cmd=join(" ", @ARGV) . " -static -Wl,-Ttext=$ala"; + + #print "link_tool_exe_linux: $cmd\n"; + diff --git a/package/valgrind/valgrind-3.7.0-largefile.patch b/package/valgrind/valgrind-3.7.0-largefile.patch new file mode 100644 index 000000000..53b6e6fa8 --- /dev/null +++ b/package/valgrind/valgrind-3.7.0-largefile.patch @@ -0,0 +1,56 @@ +[PATCH] valgrind: don't enable largefile support unconditionally on uClibc + +uClibc can be compiled without largefile support (and errors out if +_FILE_OFFSET_BITS is set to 64), so don't define it if that combination +is detected. + +Signed-off-by: Peter Korsgaard + +Index: valgrind-3.7.0/coregrind/m_initimg/initimg-linux.c +=================================================================== +--- valgrind-3.7.0.orig/coregrind/m_initimg/initimg-linux.c 2011-10-26 23:24:43.000000000 +0200 ++++ valgrind-3.7.0/coregrind/m_initimg/initimg-linux.c 2011-12-22 14:53:12.798185055 +0100 +@@ -55,7 +55,11 @@ + + /* --- !!! --- EXTERNAL HEADERS start --- !!! --- */ + #define _GNU_SOURCE ++#include ++/* uclibc without largefile support #errors on _FILE_OFFSET_BITS=64 */ ++#if !(defined(__UCLIBC__) && !defined(__UCLIBC_HAS_LFS__)) + #define _FILE_OFFSET_BITS 64 ++#endif + /* This is for ELF types etc, and also the AT_ constants. */ + #include + /* --- !!! --- EXTERNAL HEADERS end --- !!! --- */ +Index: valgrind-3.7.0/coregrind/m_main.c +=================================================================== +--- valgrind-3.7.0.orig/coregrind/m_main.c 2011-10-26 23:24:45.000000000 +0200 ++++ valgrind-3.7.0/coregrind/m_main.c 2011-12-22 14:53:12.798185055 +0100 +@@ -2743,7 +2743,11 @@ + + /* --- !!! --- EXTERNAL HEADERS start --- !!! --- */ + #define _GNU_SOURCE ++#include ++/* uclibc without largefile support #errors on _FILE_OFFSET_BITS=64 */ ++#if !(defined(__UCLIBC__) && !defined(__UCLIBC_HAS_LFS__)) + #define _FILE_OFFSET_BITS 64 ++#endif + /* This is in order to get AT_NULL and AT_PAGESIZE. */ + #include + /* --- !!! --- EXTERNAL HEADERS end --- !!! --- */ +Index: valgrind-3.7.0/coregrind/m_ume/elf.c +=================================================================== +--- valgrind-3.7.0.orig/coregrind/m_ume/elf.c 2011-10-26 23:24:41.000000000 +0200 ++++ valgrind-3.7.0/coregrind/m_ume/elf.c 2011-12-22 14:53:12.798185055 +0100 +@@ -48,7 +48,11 @@ + + /* --- !!! --- EXTERNAL HEADERS start --- !!! --- */ + #define _GNU_SOURCE ++#include ++/* uclibc without largefile support #errors on _FILE_OFFSET_BITS=64 */ ++#if !(defined(__UCLIBC__) && !defined(__UCLIBC_HAS_LFS__)) + #define _FILE_OFFSET_BITS 64 ++#endif + /* This is for ELF types etc, and also the AT_ constants. */ + #include + /* --- !!! --- EXTERNAL HEADERS end --- !!! --- */ diff --git a/package/valgrind/valgrind-3.7.0-more-ioctls.patch b/package/valgrind/valgrind-3.7.0-more-ioctls.patch new file mode 100644 index 000000000..fb5838120 --- /dev/null +++ b/package/valgrind/valgrind-3.7.0-more-ioctls.patch @@ -0,0 +1,203 @@ +Add various ioctl()s + +Patch initially written by Eric Andersen . + +Signed-off-by: Thomas Petazzoni + +Index: valgrind-3.7.0/coregrind/m_syswrap/syswrap-linux.c +=================================================================== +--- valgrind-3.7.0.orig/coregrind/m_syswrap/syswrap-linux.c 2011-10-27 12:55:05.000000000 +0200 ++++ valgrind-3.7.0/coregrind/m_syswrap/syswrap-linux.c 2011-12-22 14:53:16.258126390 +0100 +@@ -4058,7 +4058,33 @@ + case VKI_SG_GET_SG_TABLESIZE: /* 0x227f */ + PRE_MEM_WRITE( "ioctl(SG_GET_SG_TABLESIZE)", ARG3, sizeof(int) ); + break; ++ case VKI_SCSI_IOCTL_GET_IDLUN: ++ PRE_MEM_WRITE( "ioctl(SCSI_IOCTL_GET_IDLUN)", ARG3, sizeof(vki_scsi_idlun_t) ); ++ break; ++ case VKI_SCSI_IOCTL_PROBE_HOST: ++ { ++ int arraylen; ++ char *array = (char*)ARG3; ++ PRE_MEM_READ("ioctl(SCSI_IOCTL_PROBE_HOST)", ARG3, sizeof(char)*4 ); ++ arraylen = array[0] + (array[1]<<8) + (array[2]<<16) + (array[3]<<24); ++ PRE_MEM_WRITE( "ioctl(SCSI_IOCTL_PROBE_HOST)", ARG3, sizeof(char)*arraylen ); ++ } ++ break; ++ case VKI_SCSI_IOCTL_GET_BUS_NUMBER: ++ PRE_MEM_WRITE( "ioctl(SCSI_IOCTL_GET_BUS_NUMBER)", ARG3, sizeof(int) ); ++ break; + ++ case VKI_FDRESET: ++ break; ++ case VKI_FDGETDRVTYP: ++ PRE_MEM_WRITE( "ioctl(FDGETDRVTYP)", ARG3, sizeof(char)*16 ); ++ break; ++ case VKI_FDPOLLDRVSTAT: ++ PRE_MEM_WRITE( "ioctl(FDPOLLDRVSTAT)", ARG3, sizeof(vki_floppy_drive_struct_t) ); ++ break; ++ case VKI_FDGETPRM: ++ PRE_MEM_WRITE( "ioctl(FDGETPRM)", ARG3, sizeof(vki_floppy_struct_t) ); ++ break; + case VKI_IIOCGETCPS: + PRE_MEM_WRITE( "ioctl(IIOCGETCPS)", ARG3, + VKI_ISDN_MAX_CHANNELS * 2 * sizeof(unsigned long) ); +@@ -4373,6 +4399,8 @@ + case VKI_BLKROGET: + PRE_MEM_WRITE( "ioctl(BLKROGET)", ARG3, sizeof(int)); + break; ++ case VKI_BLKRRPART: ++ break; + case VKI_BLKGETSIZE: + PRE_MEM_WRITE( "ioctl(BLKGETSIZE)", ARG3, sizeof(unsigned long)); + break; +@@ -4381,6 +4409,8 @@ + case VKI_BLKRAGET: + PRE_MEM_WRITE( "ioctl(BLKRAGET)", ARG3, sizeof(long)); + break; ++ case VKI_BLKFLSBUF: ++ break; + case VKI_BLKFRASET: + break; + case VKI_BLKFRAGET: +@@ -4447,6 +4477,8 @@ + PRE_MEM_WRITE( "ioctl(CDROMREADTOCENTRY)", ARG3, + sizeof(struct vki_cdrom_tocentry)); + break; ++ case VKI_CDROMEJECT: ++ break; + case VKI_CDROMMULTISESSION: /* 0x5310 */ + PRE_MEM_WRITE( "ioctl(CDROMMULTISESSION)", ARG3, + sizeof(struct vki_cdrom_multisession)); +@@ -5321,7 +5353,28 @@ + case VKI_SG_GET_SG_TABLESIZE: + POST_MEM_WRITE(ARG3, sizeof(int)); + break; ++ case VKI_SCSI_IOCTL_GET_IDLUN: ++ POST_MEM_WRITE(ARG3, sizeof(vki_scsi_idlun_t)); ++ break; ++ case VKI_SCSI_IOCTL_PROBE_HOST: ++ if (RES > 0 && ARG3 ) ++ POST_MEM_WRITE(ARG3, sizeof(char)*RES); ++ break; ++ case VKI_SCSI_IOCTL_GET_BUS_NUMBER: ++ POST_MEM_WRITE(ARG3, sizeof(int)); ++ break; + ++ case VKI_FDRESET: ++ break; ++ case VKI_FDGETDRVTYP: ++ POST_MEM_WRITE( ARG3, sizeof(char)*16 ); ++ break; ++ case VKI_FDPOLLDRVSTAT: ++ POST_MEM_WRITE( ARG3, sizeof(vki_floppy_drive_struct_t) ); ++ break; ++ case VKI_FDGETPRM: ++ POST_MEM_WRITE( ARG3, sizeof(vki_floppy_struct_t) ); ++ break; + case VKI_IIOCGETCPS: + POST_MEM_WRITE( ARG3, VKI_ISDN_MAX_CHANNELS * 2 * sizeof(unsigned long) ); + break; +@@ -5542,6 +5595,8 @@ + case VKI_BLKROGET: + POST_MEM_WRITE(ARG3, sizeof(int)); + break; ++ case VKI_BLKRRPART: ++ break; + case VKI_BLKGETSIZE: + POST_MEM_WRITE(ARG3, sizeof(unsigned long)); + break; +@@ -5550,6 +5605,8 @@ + case VKI_BLKRAGET: + POST_MEM_WRITE(ARG3, sizeof(long)); + break; ++ case VKI_BLKFLSBUF: ++ break; + case VKI_BLKFRASET: + break; + case VKI_BLKFRAGET: +@@ -5591,6 +5648,8 @@ + case VKI_CDROMREADTOCENTRY: + POST_MEM_WRITE(ARG3, sizeof(struct vki_cdrom_tocentry)); + break; ++ case VKI_CDROMEJECT: ++ break; + case VKI_CDROMMULTISESSION: + POST_MEM_WRITE(ARG3, sizeof(struct vki_cdrom_multisession)); + break; +Index: valgrind-3.7.0/include/vki/vki-linux.h +=================================================================== +--- valgrind-3.7.0.orig/include/vki/vki-linux.h 2011-10-26 23:24:31.000000000 +0200 ++++ valgrind-3.7.0/include/vki/vki-linux.h 2011-12-22 14:53:16.258126390 +0100 +@@ -1654,7 +1654,9 @@ + + #define VKI_BLKROSET _VKI_IO(0x12,93) /* set device read-only (0 = read-write) */ + #define VKI_BLKROGET _VKI_IO(0x12,94) /* get read-only status (0 = read_write) */ ++#define VKI_BLKRRPART _VKI_IO(0x12,95) /* re-read partition table */ + #define VKI_BLKGETSIZE _VKI_IO(0x12,96) /* return device size /512 (long *arg) */ ++#define VKI_BLKFLSBUF _VKI_IO(0x12,97) /* flush buffer cache */ + #define VKI_BLKRASET _VKI_IO(0x12,98) /* set read ahead for block device */ + #define VKI_BLKRAGET _VKI_IO(0x12,99) /* get current read ahead setting */ + #define VKI_BLKFRASET _VKI_IO(0x12,100)/* set filesystem (mm/filemap.c) read-ahead */ +@@ -1729,6 +1731,53 @@ + //#define SG_GET_COMMAND_Q 0x2270 /* Yields 0 (queuing off) or 1 (on) */ + #define VKI_SG_SET_COMMAND_Q 0x2271 /* Change queuing state with 0 or 1 */ + ++typedef struct vki_scsi_idlun ++{ ++ int mux4; ++ int host_unique_id; ++ ++} vki_scsi_idlun_t; ++#define VKI_SCSI_IOCTL_GET_IDLUN 0x5382 /* Gets a struct vki_scsi_idlun */ ++#define VKI_SCSI_IOCTL_PROBE_HOST 0x5385 /* Gets an arrary describing the SCSI host */ ++#define VKI_SCSI_IOCTL_GET_BUS_NUMBER 0x5386 /* Get the bus number for a device */ ++ ++//---------------------------------------------------------------------- ++// From linux-2.6.8.1/include/linux/fd.h ++//---------------------------------------------------------------------- ++#define VKI_FDRESET 0x254 /* Takes an int by value */ ++#define VKI_FDGETDRVTYP 0x20f /* Returns char floppy_drive_name[16] */ ++typedef struct vki_floppy_drive_struct { ++ unsigned long flags; ++ unsigned long spinup_date; ++ unsigned long select_date; ++ unsigned long first_read_date; ++ short probed_format; ++ short track; ++ short maxblock; ++ short maxtrack; ++ int generation; ++ int keep_data; ++ int fd_ref; ++ int fd_device; ++ unsigned long last_checked; ++ char *dmabuf; ++ int bufblocks; ++} vki_floppy_drive_struct_t; ++#define VKI_FDPOLLDRVSTAT 0x213 /* returns a struct floppy_drive_struct */ ++typedef struct vki_floppy_struct { ++ unsigned int size; ++ unsigned int sect; ++ unsigned int head; ++ unsigned int track; ++ unsigned int stretch; ++ unsigned char gap; ++ unsigned char rate; ++ unsigned char spec1; ++ unsigned char fmt_gap; ++ const char * name; ++} vki_floppy_struct_t; ++#define VKI_FDGETPRM 0x204 /* returns a struct floppy_struct */ ++ + //---------------------------------------------------------------------- + // From linux-2.6.8.1/include/linux/cdrom.h + //---------------------------------------------------------------------- +@@ -1738,6 +1787,7 @@ + (struct cdrom_tochdr) */ + #define VKI_CDROMREADTOCENTRY 0x5306 /* Read TOC entry + (struct cdrom_tocentry) */ ++#define VKI_CDROMEJECT 0x5309 /* Eject cdrom media */ + #define VKI_CDROMSUBCHNL 0x530b /* Read subchannel data + (struct cdrom_subchnl) */ + #define VKI_CDROMREADMODE2 0x530c /* Read CDROM mode 2 data (2336 Bytes) diff --git a/package/valgrind/valgrind-3.7.0-workaround-SIGSEGV-on-PPC.patch b/package/valgrind/valgrind-3.7.0-workaround-SIGSEGV-on-PPC.patch new file mode 100644 index 000000000..ea91a007e --- /dev/null +++ b/package/valgrind/valgrind-3.7.0-workaround-SIGSEGV-on-PPC.patch @@ -0,0 +1,25 @@ +From db894abcaa12555f60880a15840010f81d354806 Mon Sep 17 00:00:00 2001 +From: Pierre Habouzit +Date: Tue, 10 May 2011 23:11:45 +0200 +Subject: [PATCH] workaround SIGSEGV on PPC. + +Signed-off-by: Pierre Habouzit +--- + coregrind/m_machine.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +Index: valgrind-3.7.0/coregrind/m_machine.c +=================================================================== +--- valgrind-3.7.0.orig/coregrind/m_machine.c 2011-10-27 12:45:52.000000000 +0200 ++++ valgrind-3.7.0/coregrind/m_machine.c 2011-12-22 14:53:19.758067046 +0100 +@@ -27,6 +27,10 @@ + The GNU General Public License is contained in the file COPYING. + */ + ++#ifdef __powerpc__ ++# pragma GCC optimize ("-O0") ++#endif ++ + #include "pub_core_basics.h" + #include "pub_core_vki.h" + #include "pub_core_libcsetjmp.h" // setjmp facilities diff --git a/package/valgrind/valgrind.mk b/package/valgrind/valgrind.mk index 537639f65..24523bf6b 100644 --- a/package/valgrind/valgrind.mk +++ b/package/valgrind/valgrind.mk @@ -4,10 +4,9 @@ # ############################################################# -VALGRIND_VERSION = 3.6.1 +VALGRIND_VERSION = 3.7.0 VALGRIND_SITE = http://valgrind.org/downloads/ VALGRIND_SOURCE = valgrind-$(VALGRIND_VERSION).tar.bz2 - VALGRIND_CONF_OPT = --disable-tls # On ARM, Valgrind only supports ARMv7, and uses the arch part of the -- cgit v1.2.3