From 5228f768cd839d72ccbe9ede5a5c6ab73675cd91 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Fri, 29 Jun 2012 19:17:51 +0000 Subject: [PATCH] valgrind: update the package to latest svn, rework and modularize it. tested and working on mips now SVN-Revision: 32532 --- utils/valgrind/Makefile | 144 +++++++++--- utils/valgrind/files/default.supp | 24 ++ utils/valgrind/files/uclibc.supp | 212 ------------------ utils/valgrind/files/valgrind.sh | 10 - .../valgrind/patches/001-uclibc_syscall.patch | 205 ----------------- .../002-fix_load_address_substitution.patch | 76 ------- utils/valgrind/patches/100-a_out_header.patch | 10 - .../patches/100-fix_configure_check.patch | 11 + utils/valgrind/patches/110-add_a_out_h.patch | 157 +++++++++++++ 9 files changed, 310 insertions(+), 539 deletions(-) create mode 100644 utils/valgrind/files/default.supp delete mode 100644 utils/valgrind/files/uclibc.supp delete mode 100644 utils/valgrind/files/valgrind.sh delete mode 100644 utils/valgrind/patches/001-uclibc_syscall.patch delete mode 100644 utils/valgrind/patches/002-fix_load_address_substitution.patch delete mode 100644 utils/valgrind/patches/100-a_out_header.patch create mode 100644 utils/valgrind/patches/100-fix_configure_check.patch create mode 100644 utils/valgrind/patches/110-add_a_out_h.patch diff --git a/utils/valgrind/Makefile b/utils/valgrind/Makefile index 3e8cdcbd94..128a5c9af8 100644 --- a/utils/valgrind/Makefile +++ b/utils/valgrind/Makefile @@ -8,23 +8,67 @@ include $(TOPDIR)/rules.mk PKG_NAME:=valgrind -PKG_VERSION:=3.3.1 -PKG_RELEASE:=2 +PKG_REV:=r12684 +PKG_VERSION:=3.7.0+svn_$(PKG_REV) +PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 -PKG_SOURCE_URL:=http://valgrind.org/downloads/ -PKG_MD5SUM:=0539e2fa4aadb2cd4ca4bba65b1fe8b5 +PKG_SOURCE_URL:=svn://svn.valgrind.org/valgrind/trunk +PKG_SOURCE_SUBDIR=$(PKG_NAME)-$(PKG_VERSION) +PKG_SOURCE_VERSION:=$(PKG_REV) +PKG_MIRROR_MD5SUM:=841cfcaf265fae0b866c6cb4c563e3c0 + +PKG_FIXUP = autoreconf +PKG_INSTALL := 1 + +PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR) include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/kernel.mk define Package/valgrind SECTION:=utils CATEGORY:=Utilities - DEPENDS:=@TARGET_x86||@TARGET_rdc||@TARGET_ps3||@TARGET_magicbox||@TARGET_amcc||@TARGET_uml - TITLE:=debugging and profiling Linux programs + DEPENDS:=@mips||mipsel||i386||arm||armeb||powerpc +libpthread +librt + TITLE:=debugging and profiling tools for Linux URL:=http://www.valgrind.org endef +define Package/valgrind/default + $(Package/valgrind) + DEPENDS := valgrind +endef + +define Package/valgrind-cachegrind + $(Package/valgrind/default) + TITLE += (cache profiling) +endef + +define Package/valgrind-callgrind + $(Package/valgrind/default) + TITLE += (callgraph profiling) +endef + +define Package/valgrind-drd + $(Package/valgrind/default) + TITLE += (thread error detection) +endef + +define Package/valgrind-massif + $(Package/valgrind/default) + TITLE += (heap profiling) +endef + +define Package/valgrind-helgrind + $(Package/valgrind/default) + TITLE += (thread debugging) +endef + +define Package/valgrind-vgdb + $(Package/valgrind/default) + TITLE += (GDB interface) +endef + define Package/valgrind/description Valgrind is an award-winning suite of tools for debugging and profiling Linux programs. With the tools that come with Valgrind, @@ -34,9 +78,12 @@ define Package/valgrind/description to speed up and reduce memory use of your programs. endef +CONFIGURE_VARS += \ + UNAME_R=$(LINUX_VERSION) + CONFIGURE_ARGS += \ - --disable-tls \ --enable-only32bit \ + --enable-tls \ --without-x \ --without-uiout \ --disable-valgrindmi \ @@ -44,30 +91,75 @@ CONFIGURE_ARGS += \ --disable-valgrindtk \ --without-included-gettext -DEFAULT_SUPP += "uclibc.supp" +define Package/valgrind/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/valgrind* $(1)/usr/bin/ + $(INSTALL_DIR) $(1)/usr/lib/valgrind + $(CP) \ + ./files/default.supp \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/none-* \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/vgpreload_core*.so \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/$(LINUX_KARCH)-*.xml \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/32bit-core*.xml \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/32bit-linux*.xml \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/memcheck-* \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/vgpreload_memcheck*.so \ + $(1)/usr/lib/valgrind/ +endef -define Build/Compile - $(TARGET_CC) $(TARGET_CFLAGS) -c -o $(PKG_BUILD_DIR)/abort.o ./src/abort.c - $(TARGET_CROSS)ar rcu $(PKG_BUILD_DIR)/abort.a $(PKG_BUILD_DIR)/abort.o - $(MAKE) -C $(PKG_BUILD_DIR) \ - $(TARGET_CONFIGURE_OPTS) \ - DESTDIR="$(PKG_INSTALL_DIR)" \ - CFLAGS="$(TARGET_CFLAGS)" \ - AM_CFLAGS_X86_LINUX="$(TARGET_CFLAGS) -I$(PKG_BUILD_DIR)/coregrind" \ - AM_CFLAGS_AMD64_LINUX="$(TARGET_CFLAGS) -I$(PKG_BUILD_DIR)/coregrind" \ - AM_CFLAGS_PPC32_LINUX="$(TARGET_CFLAGS) -I$(PKG_BUILD_DIR)/coregrind" \ - AM_CFLAGS_PPC64_LINUX="$(TARGET_CFLAGS) -I$(PKG_BUILD_DIR)/coregrind" \ - TOOL_LDADD_COMMON="$(LIBGCC_A) $(PKG_BUILD_DIR)/abort.a" \ - all install +define Package/valgrind-cachegrind/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/cg_* $(1)/usr/bin/ + $(INSTALL_DIR) $(1)/usr/lib/valgrind + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/cachegrind-* \ + $(1)/usr/lib/valgrind/ endef -define Package/valgrind/install +define Package/valgrind-callgrind/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/callgrind* $(1)/usr/bin/ + $(INSTALL_DIR) $(1)/usr/lib/valgrind + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/callgrind-* \ + $(1)/usr/lib/valgrind/ +endef + +define Package/valgrind-drd/install + $(INSTALL_DIR) $(1)/usr/lib/valgrind + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/drd-* \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/vgpreload_drd*.so \ + $(1)/usr/lib/valgrind/ +endef + +define Package/valgrind-massif/install $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/ - $(INSTALL_BIN) ./files/valgrind.sh $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ms_print $(1)/usr/bin/ $(INSTALL_DIR) $(1)/usr/lib/valgrind - $(CP) ./files/uclibc.supp $(1)/usr/lib/valgrind/ - $(CP) $(PKG_INSTALL_DIR)/usr/lib/valgrind/*-linux $(1)/usr/lib/valgrind/ + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/massif-* \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/vgpreload_massif*.so \ + $(1)/usr/lib/valgrind/ +endef + +define Package/valgrind-helgrind/install + $(INSTALL_DIR) $(1)/usr/lib/valgrind + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/helgrind-* \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/vgpreload_helgrind*.so \ + $(1)/usr/lib/valgrind/ +endef + +define Package/valgrind-vgdb/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/vgdb $(1)/usr/bin/ endef $(eval $(call BuildPackage,valgrind)) +$(eval $(call BuildPackage,valgrind-cachegrind)) +$(eval $(call BuildPackage,valgrind-callgrind)) +$(eval $(call BuildPackage,valgrind-drd)) +$(eval $(call BuildPackage,valgrind-massif)) +$(eval $(call BuildPackage,valgrind-helgrind)) +$(eval $(call BuildPackage,valgrind-vgdb)) diff --git a/utils/valgrind/files/default.supp b/utils/valgrind/files/default.supp new file mode 100644 index 0000000000..ada71f9f9b --- /dev/null +++ b/utils/valgrind/files/default.supp @@ -0,0 +1,24 @@ +{ + ld(Addr1) + Memcheck:Addr1 + fun:* + obj:/lib/ld-* +} +{ + ld(Addr2) + Memcheck:Addr2 + fun:* + obj:/lib/ld-* +} +{ + ld(Addr4) + Memcheck:Addr4 + fun:* + obj:/lib/ld-* +} +{ + ld(Cond) + Memcheck:Cond + fun:* + obj:/lib/ld-* +} diff --git a/utils/valgrind/files/uclibc.supp b/utils/valgrind/files/uclibc.supp deleted file mode 100644 index e15326602a..0000000000 --- a/utils/valgrind/files/uclibc.supp +++ /dev/null @@ -1,212 +0,0 @@ -{ - - Memcheck:Addr1 - fun:_dl_strdup - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr1 - fun:_dl_malloc - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Cond - fun:_dl_get_ready_to_run - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr1 - fun:_dl_get_ready_to_run - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr2 - fun:_dl_get_ready_to_run - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr4 - fun:_dl_get_ready_to_run - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr1 - fun:_dl_add_elf_hash_table - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr2 - fun:_dl_add_elf_hash_table - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr4 - fun:_dl_add_elf_hash_table - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr1 - fun:_dl_check_if_named_library_is_loaded - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr4 - fun:_dl_check_if_named_library_is_loaded - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr1 - fun:_dl_check_hashed_files - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr4 - fun:_dl_check_hashed_files - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr1 - fun:_dl_load_elf_shared_library - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr2 - fun:_dl_load_elf_shared_library - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr4 - fun:_dl_load_elf_shared_library - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr2 - fun:_dl_load_shared_library - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr1 - fun:_dl_find_hash - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr4 - fun:_dl_find_hash - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr4 - fun:_dl_fixup - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr2 - fun:_dl_fixup - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr4 - fun:_dl_linux_resolve - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr4 - fun:_dl_linux_resolver - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr2 - fun:_dl_parse_lazy_relocation_information - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr2 - obj:/lib/ld-uClibc* - fun:_dl_parse_lazy_relocation_information -} -{ - - Memcheck:Addr4 - fun:_dl_parse_lazy_relocation_information - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr4 - obj:/lib/ld-uClibc* - obj:/lib/ld-uClibc* - fun:_dl_parse_lazy_relocation_information -} -{ - - Memcheck:Addr4 - obj:/lib/ld-uClibc* - fun:_dl_parse_lazy_relocation_information -} -{ - - Memcheck:Addr2 - obj:/lib/ld-uClibc* - fun:_dl_parse_relocation_information -} -{ - - Memcheck:Addr2 - fun:_dl_parse_relocation_information - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr4 - fun:_dl_parse_relocation_information - obj:/lib/ld-uClibc* -} -{ - - Memcheck:Addr4 - obj:/lib/ld-uClibc* - fun:_dl_parse_relocation_information -} -{ - - Memcheck:Addr4 - obj:/lib/ld-uClibc* - obj:/lib/ld-uClibc* - fun:_dl_parse_relocation_information -} -{ - - Memcheck:Addr2 - obj:/lib/ld-uClibc-0.9.28.so - fun:* -} -{ - - Memcheck:Addr4 - obj:/lib/ld-uClibc-0.9.28.so - fun:* -} diff --git a/utils/valgrind/files/valgrind.sh b/utils/valgrind/files/valgrind.sh deleted file mode 100644 index 4b8eb2e57b..0000000000 --- a/utils/valgrind/files/valgrind.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -e -# -# Valgrind wrapper - -# Use special suppression file for uClibc -export VALGRIND_OPTS="$VALGRIND_OPTS --suppressions=/usr/lib/valgrind/uclibc.supp" - -# Use 'exec' to avoid having another shell process hanging around. -exec $0.bin "$@" - diff --git a/utils/valgrind/patches/001-uclibc_syscall.patch b/utils/valgrind/patches/001-uclibc_syscall.patch deleted file mode 100644 index 8fe9fee1b0..0000000000 --- a/utils/valgrind/patches/001-uclibc_syscall.patch +++ /dev/null @@ -1,205 +0,0 @@ ---- a/coregrind/m_syswrap/syswrap-amd64-linux.c -+++ b/coregrind/m_syswrap/syswrap-amd64-linux.c -@@ -1165,7 +1165,7 @@ - GENXY(__NR_times, sys_times), // 100 - PLAXY(__NR_ptrace, sys_ptrace), // 101 - GENX_(__NR_getuid, sys_getuid), // 102 -- // (__NR_syslog, sys_syslog), // 103 -+ LINXY(__NR_syslog, sys_syslog), // 103 - GENX_(__NR_getgid, sys_getgid), // 104 - - GENX_(__NR_setuid, sys_setuid), // 105 ---- a/include/vki/vki-linux.h -+++ b/include/vki/vki-linux.h -@@ -1582,7 +1582,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 */ -@@ -1657,6 +1659,54 @@ - //#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 - //---------------------------------------------------------------------- -@@ -1666,6 +1716,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) ---- a/coregrind/m_syswrap/syswrap-generic.c -+++ b/coregrind/m_syswrap/syswrap-generic.c -@@ -3288,6 +3288,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, -@@ -3611,6 +3638,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; -@@ -3619,6 +3648,8 @@ - case VKI_BLKRAGET: - PRE_MEM_WRITE( "ioctl(BLKRAGET)", ARG3, sizeof(long)); - break; -+ case VKI_BLKFLSBUF: -+ break; - case VKI_BLKFRASET: - break; - case VKI_BLKFRAGET: -@@ -3685,6 +3716,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)); -@@ -4274,6 +4307,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) ); -@@ -4492,6 +4547,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; -@@ -4500,6 +4557,8 @@ - case VKI_BLKRAGET: - POST_MEM_WRITE(ARG3, sizeof(long)); - break; -+ case VKI_BLKFLSBUF: -+ break; - case VKI_BLKFRASET: - break; - case VKI_BLKFRAGET: -@@ -4541,6 +4600,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; diff --git a/utils/valgrind/patches/002-fix_load_address_substitution.patch b/utils/valgrind/patches/002-fix_load_address_substitution.patch deleted file mode 100644 index 41031f63a7..0000000000 --- a/utils/valgrind/patches/002-fix_load_address_substitution.patch +++ /dev/null @@ -1,76 +0,0 @@ ---- a/Makefile.am -+++ b/Makefile.am -@@ -204,26 +204,30 @@ valt_load_address_x86_linux.lds: Makefil - $(CC) @FLAG_M32@ -Wl,--verbose -nostdlib 2>&1 | sed \ - -e '1,/^=====\+$$/d' \ - -e '/^=====\+$$/d' \ -- -e '/\. = 0x[0-9A-Fa-f]\+ + SIZEOF_HEADERS/s/0x[0-9A-Fa-f]\+/valt_load_address/g' > $@ \ -+ -e '/\. = 0x[0-9A-Fa-f]\+ + SIZEOF_HEADERS/s/0x[0-9A-Fa-f]\+/valt_load_address/g' \ -+ -e '/SEGMENT_START("text-segment", 0x[0-9A-Fa-f]\+)/s/0x[0-9A-Fa-f]\+/valt_load_address/g' > $@ \ - || rm -f $@ - - valt_load_address_amd64_linux.lds: Makefile - $(CC) -m64 -Wl,--verbose -nostdlib 2>&1 | sed \ - -e '1,/^=====\+$$/d' \ - -e '/^=====\+$$/d' \ -- -e '/\. = 0x[0-9A-Fa-f]\+ + SIZEOF_HEADERS/s/0x[0-9A-Fa-f]\+/valt_load_address/g' > $@ \ -+ -e '/\. = 0x[0-9A-Fa-f]\+ + SIZEOF_HEADERS/s/0x[0-9A-Fa-f]\+/valt_load_address/g' \ -+ -e '/SEGMENT_START("text-segment", 0x[0-9A-Fa-f]\+)/s/0x[0-9A-Fa-f]\+/valt_load_address/g' > $@ \ - || rm -f $@ - - valt_load_address_ppc32_linux.lds: Makefile - $(CC) @FLAG_M32@ -Wl,--verbose -nostdlib 2>&1 | sed \ - -e '1,/^=====\+$$/d' \ - -e '/^=====\+$$/d' \ -- -e '/\. = 0x[0-9A-Fa-f]\+ + SIZEOF_HEADERS/s/0x[0-9A-Fa-f]\+/valt_load_address/g' > $@ \ -+ -e '/\. = 0x[0-9A-Fa-f]\+ + SIZEOF_HEADERS/s/0x[0-9A-Fa-f]\+/valt_load_address/g' \ -+ -e '/SEGMENT_START("text-segment", 0x[0-9A-Fa-f]\+)/s/0x[0-9A-Fa-f]\+/valt_load_address/g' > $@ \ - || rm -f $@ - - valt_load_address_ppc64_linux.lds: Makefile - $(CC) -m64 -Wl,--verbose -nostdlib 2>&1 | sed \ - -e '1,/^=====\+$$/d' \ - -e '/^=====\+$$/d' \ -- -e '/\. = 0x[0-9A-Fa-f]\+ + SIZEOF_HEADERS/s/0x[0-9A-Fa-f]\+/valt_load_address/g' > $@ \ -+ -e '/\. = 0x[0-9A-Fa-f]\+ + SIZEOF_HEADERS/s/0x[0-9A-Fa-f]\+/valt_load_address/g' \ -+ -e '/SEGMENT_START("text-segment", 0x[0-9A-Fa-f]\+)/s/0x[0-9A-Fa-f]\+/valt_load_address/g' > $@ \ - || rm -f $@ ---- a/Makefile.in -+++ b/Makefile.in -@@ -914,28 +914,32 @@ valt_load_address_x86_linux.lds: Makefil - $(CC) @FLAG_M32@ -Wl,--verbose -nostdlib 2>&1 | sed \ - -e '1,/^=====\+$$/d' \ - -e '/^=====\+$$/d' \ -- -e '/\. = 0x[0-9A-Fa-f]\+ + SIZEOF_HEADERS/s/0x[0-9A-Fa-f]\+/valt_load_address/g' > $@ \ -+ -e '/\. = 0x[0-9A-Fa-f]\+ + SIZEOF_HEADERS/s/0x[0-9A-Fa-f]\+/valt_load_address/g' \ -+ -e '/SEGMENT_START("text-segment", 0x[0-9A-Fa-f]\+)/s/0x[0-9A-Fa-f]\+/valt_load_address/g' > $@ \ - || rm -f $@ - - valt_load_address_amd64_linux.lds: Makefile - $(CC) -m64 -Wl,--verbose -nostdlib 2>&1 | sed \ - -e '1,/^=====\+$$/d' \ - -e '/^=====\+$$/d' \ -- -e '/\. = 0x[0-9A-Fa-f]\+ + SIZEOF_HEADERS/s/0x[0-9A-Fa-f]\+/valt_load_address/g' > $@ \ -+ -e '/\. = 0x[0-9A-Fa-f]\+ + SIZEOF_HEADERS/s/0x[0-9A-Fa-f]\+/valt_load_address/g' \ -+ -e '/SEGMENT_START("text-segment", 0x[0-9A-Fa-f]\+)/s/0x[0-9A-Fa-f]\+/valt_load_address/g' > $@ \ - || rm -f $@ - - valt_load_address_ppc32_linux.lds: Makefile - $(CC) @FLAG_M32@ -Wl,--verbose -nostdlib 2>&1 | sed \ - -e '1,/^=====\+$$/d' \ - -e '/^=====\+$$/d' \ -- -e '/\. = 0x[0-9A-Fa-f]\+ + SIZEOF_HEADERS/s/0x[0-9A-Fa-f]\+/valt_load_address/g' > $@ \ -+ -e '/\. = 0x[0-9A-Fa-f]\+ + SIZEOF_HEADERS/s/0x[0-9A-Fa-f]\+/valt_load_address/g' \ -+ -e '/SEGMENT_START("text-segment", 0x[0-9A-Fa-f]\+)/s/0x[0-9A-Fa-f]\+/valt_load_address/g' > $@ \ - || rm -f $@ - - valt_load_address_ppc64_linux.lds: Makefile - $(CC) -m64 -Wl,--verbose -nostdlib 2>&1 | sed \ - -e '1,/^=====\+$$/d' \ - -e '/^=====\+$$/d' \ -- -e '/\. = 0x[0-9A-Fa-f]\+ + SIZEOF_HEADERS/s/0x[0-9A-Fa-f]\+/valt_load_address/g' > $@ \ -+ -e '/\. = 0x[0-9A-Fa-f]\+ + SIZEOF_HEADERS/s/0x[0-9A-Fa-f]\+/valt_load_address/g' \ -+ -e '/SEGMENT_START("text-segment", 0x[0-9A-Fa-f]\+)/s/0x[0-9A-Fa-f]\+/valt_load_address/g' > $@ \ - || rm -f $@ - # Tell versions [3.59,3.63) of GNU make to not export all variables. - # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/utils/valgrind/patches/100-a_out_header.patch b/utils/valgrind/patches/100-a_out_header.patch deleted file mode 100644 index 5a78926d80..0000000000 --- a/utils/valgrind/patches/100-a_out_header.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/coregrind/m_debuginfo/readstabs.c -+++ b/coregrind/m_debuginfo/readstabs.c -@@ -44,6 +44,7 @@ - #include "priv_readstabs.h" /* self */ - - /* --- !!! --- EXTERNAL HEADERS start --- !!! --- */ -+#define CONFIG_ARCH_SUPPORTS_AOUT /* XXX */ - #include /* stabs defns */ - /* --- !!! --- EXTERNAL HEADERS end --- !!! --- */ - diff --git a/utils/valgrind/patches/100-fix_configure_check.patch b/utils/valgrind/patches/100-fix_configure_check.patch new file mode 100644 index 0000000000..b06cc3bf71 --- /dev/null +++ b/utils/valgrind/patches/100-fix_configure_check.patch @@ -0,0 +1,11 @@ +--- a/configure.in ++++ b/configure.in +@@ -260,7 +260,7 @@ case "${host_os}" in + # Ok, this is linux. Check the kernel version + AC_MSG_CHECKING([for the kernel version]) + +- kernel=`uname -r` ++ kernel=${UNAME_R:-`uname -r`} + + case "${kernel}" in + 2.6.*|3.*) diff --git a/utils/valgrind/patches/110-add_a_out_h.patch b/utils/valgrind/patches/110-add_a_out_h.patch new file mode 100644 index 0000000000..7d95fb340d --- /dev/null +++ b/utils/valgrind/patches/110-add_a_out_h.patch @@ -0,0 +1,157 @@ +--- /dev/null ++++ b/include/a.out.h +@@ -0,0 +1,138 @@ ++#ifndef __A_OUT_GNU_H__ ++#define __A_OUT_GNU_H__ ++ ++#include ++ ++#define __GNU_EXEC_MACROS__ ++ ++struct exec ++{ ++ unsigned long a_info; /* Use macros N_MAGIC, etc for access. */ ++ unsigned int a_text; /* Length of text, in bytes. */ ++ unsigned int a_data; /* Length of data, in bytes. */ ++ unsigned int a_bss; /* Length of uninitialized data area for file, in bytes. */ ++ unsigned int a_syms; /* Length of symbol table data in file, in bytes. */ ++ unsigned int a_entry; /* Start address. */ ++ unsigned int a_trsize;/* Length of relocation info for text, in bytes. */ ++ unsigned int a_drsize;/* Length of relocation info for data, in bytes. */ ++}; ++ ++enum machine_type ++{ ++ M_OLDSUN2 = 0, ++ M_68010 = 1, ++ M_68020 = 2, ++ M_SPARC = 3, ++ M_386 = 100, ++ M_MIPS1 = 151, ++ M_MIPS2 = 152 ++}; ++ ++#define N_MAGIC(exec) ((exec).a_info & 0xffff) ++#define N_MACHTYPE(exec) ((enum machine_type)(((exec).a_info >> 16) & 0xff)) ++#define N_FLAGS(exec) (((exec).a_info >> 24) & 0xff) ++#define N_SET_INFO(exec, magic, type, flags) \ ++ ((exec).a_info = ((magic) & 0xffff) \ ++ | (((int)(type) & 0xff) << 16) \ ++ | (((flags) & 0xff) << 24)) ++#define N_SET_MAGIC(exec, magic) \ ++ ((exec).a_info = ((exec).a_info & 0xffff0000) | ((magic) & 0xffff)) ++#define N_SET_MACHTYPE(exec, machtype) \ ++ ((exec).a_info = \ ++ ((exec).a_info&0xff00ffff) | ((((int)(machtype))&0xff) << 16)) ++#define N_SET_FLAGS(exec, flags) \ ++ ((exec).a_info = \ ++ ((exec).a_info&0x00ffffff) | (((flags) & 0xff) << 24)) ++ ++/* Code indicating object file or impure executable. */ ++#define OMAGIC 0407 ++/* Code indicating pure executable. */ ++#define NMAGIC 0410 ++/* Code indicating demand-paged executable. */ ++#define ZMAGIC 0413 ++/* This indicates a demand-paged executable with the header in the text. ++ The first page is unmapped to help trap NULL pointer references. */ ++#define QMAGIC 0314 ++/* Code indicating core file. */ ++#define CMAGIC 0421 ++ ++#define N_TRSIZE(a) ((a).a_trsize) ++#define N_DRSIZE(a) ((a).a_drsize) ++#define N_SYMSIZE(a) ((a).a_syms) ++#define N_BADMAG(x) \ ++ (N_MAGIC(x) != OMAGIC && N_MAGIC(x) != NMAGIC \ ++ && N_MAGIC(x) != ZMAGIC && N_MAGIC(x) != QMAGIC) ++#define _N_HDROFF(x) (1024 - sizeof (struct exec)) ++#define N_TXTOFF(x) \ ++ (N_MAGIC(x) == ZMAGIC ? _N_HDROFF((x)) + sizeof (struct exec) : \ ++ (N_MAGIC(x) == QMAGIC ? 0 : sizeof (struct exec))) ++#define N_DATOFF(x) (N_TXTOFF(x) + (x).a_text) ++#define N_TRELOFF(x) (N_DATOFF(x) + (x).a_data) ++#define N_DRELOFF(x) (N_TRELOFF(x) + N_TRSIZE(x)) ++#define N_SYMOFF(x) (N_DRELOFF(x) + N_DRSIZE(x)) ++#define N_STROFF(x) (N_SYMOFF(x) + N_SYMSIZE(x)) ++ ++/* Address of text segment in memory after it is loaded. */ ++#define N_TXTADDR(x) (N_MAGIC(x) == QMAGIC ? 4096 : 0) ++ ++/* Address of data segment in memory after it is loaded. */ ++#define SEGMENT_SIZE 1024 ++ ++#define _N_SEGMENT_ROUND(x) (((x) + SEGMENT_SIZE - 1) & ~(SEGMENT_SIZE - 1)) ++#define _N_TXTENDADDR(x) (N_TXTADDR(x)+(x).a_text) ++ ++#define N_DATADDR(x) \ ++ (N_MAGIC(x)==OMAGIC? (_N_TXTENDADDR(x)) \ ++ : (_N_SEGMENT_ROUND (_N_TXTENDADDR(x)))) ++#define N_BSSADDR(x) (N_DATADDR(x) + (x).a_data) ++ ++#if !defined (N_NLIST_DECLARED) ++struct nlist ++{ ++ union ++ { ++ char *n_name; ++ struct nlist *n_next; ++ long n_strx; ++ } n_un; ++ unsigned char n_type; ++ char n_other; ++ short n_desc; ++ unsigned long n_value; ++}; ++#endif /* no N_NLIST_DECLARED. */ ++ ++#define N_UNDF 0 ++#define N_ABS 2 ++#define N_TEXT 4 ++#define N_DATA 6 ++#define N_BSS 8 ++#define N_FN 15 ++#define N_EXT 1 ++#define N_TYPE 036 ++#define N_STAB 0340 ++#define N_INDR 0xa ++#define N_SETA 0x14 /* Absolute set element symbol. */ ++#define N_SETT 0x16 /* Text set element symbol. */ ++#define N_SETD 0x18 /* Data set element symbol. */ ++#define N_SETB 0x1A /* Bss set element symbol. */ ++#define N_SETV 0x1C /* Pointer to set vector in data area. */ ++ ++#if !defined (N_RELOCATION_INFO_DECLARED) ++/* This structure describes a single relocation to be performed. ++ The text-relocation section of the file is a vector of these structures, ++ all of which apply to the text section. ++ Likewise, the data-relocation section applies to the data section. */ ++ ++struct relocation_info ++{ ++ int r_address; ++ unsigned int r_symbolnum:24; ++ unsigned int r_pcrel:1; ++ unsigned int r_length:2; ++ unsigned int r_extern:1; ++ unsigned int r_pad:4; ++}; ++#endif /* no N_RELOCATION_INFO_DECLARED. */ ++ ++#endif /* __A_OUT_GNU_H__ */ +--- /dev/null ++++ b/include/bits/a.out.h +@@ -0,0 +1,13 @@ ++#ifndef __A_OUT_GNU_H__ ++# error "Never use directly; include instead." ++#endif ++ ++#include ++ ++#if __WORDSIZE == 64 ++ ++/* Signal to users of this header that this architecture really doesn't ++ support a.out binary format. */ ++#define __NO_A_OUT_SUPPORT 1 ++ ++#endif -- 2.30.2