I've attached my buildroot patch. When I get round to it I'll submit it to
the buildroot project.
I'm using a fairly hacked up version of buildroot (which is one reason I've
yet to submit it upstream) so the patch may not apply cleanly the first time
but it may point you in the right direction.
On Thu, Oct 16, 2008 at 9:52 PM, Peter Korsgaard <[EMAIL PROTECTED]> wrote:
> >>>>> "Chris" == Chris Packham <[EMAIL PROTECTED]> writes:
>
> Hi,
>
> Chris> Also have a look at the buildroot projects makefile for valgrind
> Chris>
> http://buildroot.uclibc.org/cgi-bin/viewcvs.cgi/trunk/buildroot/package/
> Chris> valgrind/
>
> Chris> They're currently building version 3.2.3 but with a little
> Chris> tweaking I've used buildroot to cross compile valgrind 3.3.1
> Chris> for ppc.
>
> Did you send a patch for that? I didn't notice it.
>
> --
> Bye, Peter Korsgaard
>
diff -Naur /home/chrisp/code/vendors/buildroot/package/valgrind/Config.in package/valgrind/Config.in
--- /home/chrisp/code/vendors/buildroot/package/valgrind/Config.in 2008-09-12 14:23:03.000000000 +1200
+++ package/valgrind/Config.in 2008-10-17 11:20:44.000000000 +1300
@@ -1,8 +1,39 @@
config BR2_PACKAGE_VALGRIND
bool "valgrind"
default n
- depends on BR2_i386 || BR2_powerpc || BR2_x86_64
+ depends BR2_i386 || BR2_powerpc || BR2_x86_64
help
Tool for debugging and profiling Linux programs.
http://valgrind.kde.org/
+choice
+ prompt "Valgrind Version"
+ default BR2_VALGRIND_VERSION_3_3_1
+ depends on BR2_PACKAGE_VALGRIND
+ help
+ Select the version of valgrind you wish to use.
+
+ config BR2_VALGRIND_VERSION_3_2_0
+ bool "valgrind 3.2.0"
+
+ config BR2_VALGRIND_VERSION_3_2_1
+ bool "valgrind 3.2.1"
+
+ config BR2_VALGRIND_VERSION_3_2_3
+ bool "valgrind 3.2.3"
+
+ config BR2_VALGRIND_VERSION_3_3_1
+ bool "valgrind 3.3.1"
+
+endchoice
+
+config BR2_VALGRIND_VERSION
+ string
+ default "3.2.0" if BR2_VALGRIND_VERSION_3_2_0
+ default "3.2.1" if BR2_VALGRIND_VERSION_3_2_1
+ default "3.2.3" if BR2_VALGRIND_VERSION_3_2_3
+ default "3.3.1" if BR2_VALGRIND_VERSION_3_3_1
+
+
+
diff -Naur /home/chrisp/code/vendors/buildroot/package/valgrind/valgrind.mk package/valgrind/valgrind.mk
--- /home/chrisp/code/vendors/buildroot/package/valgrind/valgrind.mk 2008-09-12 14:23:03.000000000 +1200
+++ package/valgrind/valgrind.mk 2008-10-17 11:20:44.000000000 +1300
@@ -3,12 +3,17 @@
# valgrind
#
#############################################################
+VALGRIND_VERSION:=$(strip $(subst ",, $(BR2_VALGRIND_VERSION)))
+#"
-VALGRIND_VERSION=3.2.3
VALGRIND_SITE:=http://valgrind.org/downloads/
VALGRIND_DIR:=$(BUILD_DIR)/valgrind-$(VALGRIND_VERSION)
VALGRIND_SOURCE:=valgrind-$(VALGRIND_VERSION).tar.bz2
VALGRIND_CAT:=$(BZCAT)
+ifeq ($(VALGRIND_TARGET_DIR),)
+VALGRIND_TARGET_DIR:=$(TARGET_DIR)
+endif
+
$(DL_DIR)/$(VALGRIND_SOURCE):
$(WGET) -P $(DL_DIR) $(VALGRIND_SITE)/$(VALGRIND_SOURCE)
@@ -19,65 +24,91 @@
$(VALGRIND_DIR)/.patched: $(VALGRIND_DIR)/.unpacked
toolchain/patch-kernel.sh $(VALGRIND_DIR) package/valgrind/ valgrind\*.patch
+ifndef BR2_LARGEFILE
+ sed -i "s/#define _FILE_OFFSET_BITS.*//" $(VALGRIND_DIR)/coregrind/m_ume.c
+endif
touch $(VALGRIND_DIR)/.patched
$(VALGRIND_DIR)/.configured: $(VALGRIND_DIR)/.patched
- (cd $(VALGRIND_DIR); rm -rf config.cache; \
+ $(call config_update,$(BUILD_DIR)/common-ice.cache)
+ (cd $(VALGRIND_DIR); \
$(TARGET_CONFIGURE_OPTS) \
- $(TARGET_CONFIGURE_ARGS) \
- ./configure \
+ ./configure --cache-file=$(BUILD_DIR)/common-ice.cache \
--target=$(GNU_TARGET_NAME) \
--host=$(GNU_TARGET_NAME) \
--build=$(GNU_HOST_NAME) \
--prefix=/usr \
+ --exec-prefix=/usr \
+ --bindir=/usr/bin \
+ --sbindir=/usr/sbin \
+ --libexecdir=/usr/lib \
+ --sysconfdir=/etc \
+ --datadir=/usr/share \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
$(DISABLE_NLS) \
--without-uiout --disable-valgrindmi \
--disable-tui --disable-valgrindtk \
--without-x --without-included-gettext \
--disable-tls \
- )
+ );
touch $(VALGRIND_DIR)/.configured
-$(VALGRIND_DIR)/none/vgskin_none.so: $(VALGRIND_DIR)/.configured
- $(MAKE) -C $(VALGRIND_DIR)
- -$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(VALGRIND_DIR)/*.so*
- touch -c $(VALGRIND_DIR)/none/vgskin_none.so
+$(VALGRIND_DIR)/coregrind/valgrind: $(VALGRIND_DIR)/.configured
+ $(MAKE) -C $(VALGRIND_DIR) $(TARGET_CONFIGURE_OPTS)
+ -$(STRIP) --strip-unneeded $(VALGRIND_DIR)/*.so*
-$(TARGET_DIR)/usr/bin/valgrind: $(VALGRIND_DIR)/none/vgskin_none.so
+$(VALGRIND_TARGET_DIR)/bin/valgrind: $(VALGRIND_DIR)/coregrind/valgrind
$(MAKE) \
- prefix=$(TARGET_DIR)/usr \
- exec_prefix=$(TARGET_DIR)/usr \
- bindir=$(TARGET_DIR)/usr/bin \
- sbindir=$(TARGET_DIR)/usr/sbin \
- libexecdir=$(TARGET_DIR)/usr/lib \
- datadir=$(TARGET_DIR)/usr/share \
- sysconfdir=$(TARGET_DIR)/etc \
- sharedstatedir=$(TARGET_DIR)/usr/com \
- localstatedir=$(TARGET_DIR)/var \
- libdir=$(TARGET_DIR)/usr/lib \
- infodir=$(TARGET_DIR)/usr/info \
- mandir=$(TARGET_DIR)/usr/man \
- includedir=$(TARGET_DIR)/usr/include \
- -C $(VALGRIND_DIR) install
- mv $(TARGET_DIR)/usr/bin/valgrind $(TARGET_DIR)/usr/bin/valgrind.bin
- cp package/valgrind/uclibc.supp $(TARGET_DIR)/usr/lib/valgrind/
- cp package/valgrind/valgrind.sh $(TARGET_DIR)/usr/bin/valgrind
- chmod a+x $(TARGET_DIR)/usr/bin/valgrind
- rm -rf $(TARGET_DIR)/usr/share/doc/valgrind
- #mkdir -p $(TARGET_DIR)/etc/default
- #cp $(VALGRIND_DIR)/valgrind.default $(TARGET_DIR)/etc/default/valgrind
- #mkdir -p $(TARGET_DIR)/usr/lib/valgrind
- #cp $(VALGRIND_DIR)/woody.supp $(TARGET_DIR)/usr/lib/valgrind/
- touch -c $(TARGET_DIR)/usr/bin/valgrind
+ prefix=$(VALGRIND_TARGET_DIR) \
+ exec_prefix=$(VALGRIND_TARGET_DIR) \
+ bindir=$(VALGRIND_TARGET_DIR)/bin \
+ sbindir=$(VALGRIND_TARGET_DIR)/sbin \
+ libexecdir=$(VALGRIND_TARGET_DIR)/lib \
+ datadir=$(VALGRIND_TARGET_DIR)/share \
+ sysconfdir=$(VALGRIND_TARGET_DIR)/skel/etc \
+ sharedstatedir=$(VALGRIND_TARGET_DIR)/skel/var \
+ localstatedir=$(VALGRIND_TARGET_DIR)/skel/var \
+ libdir=$(VALGRIND_TARGET_DIR)/lib \
+ infodir=$(VALGRIND_TARGET_DIR)/info \
+ mandir=$(VALGRIND_TARGET_DIR)/man \
+ includedir=$(STAGING_DIR)/usr/include \
+ -C $(VALGRIND_DIR) install;
+ mv $(VALGRIND_TARGET_DIR)/bin/valgrind $(VALGRIND_TARGET_DIR)/bin/valgrind.bin
+ cp package/valgrind/uclibc.supp $(VALGRIND_TARGET_DIR)/lib/valgrind/
+ cp package/valgrind/valgrind.sh $(VALGRIND_TARGET_DIR)/bin/valgrind
+ chmod a+x $(VALGRIND_TARGET_DIR)/bin/valgrind
+ rm -rf $(VALGRIND_TARGET_DIR)/share/doc/valgrind
+ rm -rf $(VALGRIND_TARGET_DIR)/man
+ rm -rf $(VALGRIND_TARGET_DIR)/info
+
+
+$(VALGRIND_TARGET_DIR)/bin:
+ mkdir -p $(VALGRIND_TARGET_DIR)/bin
+ mkdir -p $(VALGRIND_TARGET_DIR)/lib
+ mkdir -p $(VALGRIND_TARGET_DIR)/skel/etc
+ mkdir -p $(VALGRIND_TARGET_DIR)/skel/var
+
+ifeq ($(ARCH),i686)
+valgrind: $(VALGRIND_TARGET_DIR)/bin $(VALGRIND_TARGET_DIR)/bin/valgrind
+else
+ ifeq ($(ARCH),powerpc)
+valgrind: $(VALGRIND_TARGET_DIR)/bin $(VALGRIND_TARGET_DIR)/bin/valgrind
+ endif
+valgrind:
+endif
-valgrind: $(TARGET_DIR)/usr/bin/valgrind
+valgrind-help:
+ @echo dir is $(VALGRIND_TARGET_DIR)
valgrind-source: $(DL_DIR)/$(VALGRIND_SOURCE)
-valgrind-clean:
- -$(MAKE) -C $(VALGRIND_DIR) clean
+valgrind-clean:
+ $(MAKE) -C $(VALGRIND_DIR) clean
-valgrind-dirclean:
+valgrind-dirclean:
rm -rf $(VALGRIND_DIR)
#############################################################
@@ -85,6 +116,6 @@
# Toplevel Makefile options
#
#############################################################
-ifeq ($(BR2_PACKAGE_VALGRIND),y)
+ifeq ($(strip $(BR2_PACKAGE_VALGRIND)),y)
TARGETS+=valgrind
endif
diff -Naur /home/chrisp/code/vendors/buildroot/package/valgrind/valgrind.patch package/valgrind/valgrind.patch
--- /home/chrisp/code/vendors/buildroot/package/valgrind/valgrind.patch 2008-09-12 14:23:03.000000000 +1200
+++ package/valgrind/valgrind.patch 1970-01-01 12:00:00.000000000 +1200
@@ -1,205 +0,0 @@
---- valgrind/coregrind/m_syswrap/syswrap-amd64-linux.c.orig 2006-08-02 16:51:51.000000000 -0600
-+++ valgrind/coregrind/m_syswrap/syswrap-amd64-linux.c 2006-08-02 16:53:19.000000000 -0600
-@@ -1124,7 +1124,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
---- valgrind/include/vki-linux.h.orig 2006-08-02 18:22:21.000000000 -0600
-+++ valgrind/include/vki-linux.h 2006-08-02 18:38:02.000000000 -0600
-@@ -1556,7 +1556,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 */
-@@ -1631,6 +1633,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
- //----------------------------------------------------------------------
-@@ -1640,6 +1690,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)
---- valgrind/coregrind/m_syswrap/syswrap-generic.c.orig 2006-08-02 18:22:13.000000000 -0600
-+++ valgrind/coregrind/m_syswrap/syswrap-generic.c 2006-08-02 18:43:49.000000000 -0600
-@@ -3227,6 +3227,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,
-@@ -3550,6 +3578,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;
-@@ -3558,6 +3588,8 @@
- case VKI_BLKRAGET:
- PRE_MEM_WRITE( "ioctl(BLKRAGET)", ARG3, sizeof(long));
- break;
-+ case VKI_BLKFLSBUF:
-+ break;
- case VKI_BLKFRASET:
- break;
- case VKI_BLKFRAGET:
-@@ -3624,6 +3656,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));
-@@ -4042,6 +4076,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) );
-@@ -4260,6 +4317,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;
-@@ -4268,6 +4327,8 @@
- case VKI_BLKRAGET:
- POST_MEM_WRITE(ARG3, sizeof(long));
- break;
-+ case VKI_BLKFLSBUF:
-+ break;
- case VKI_BLKFRASET:
- break;
- case VKI_BLKFRAGET:
-@@ -4309,6 +4370,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 -Naur /home/chrisp/code/vendors/buildroot/package/valgrind/valgrind.sh package/valgrind/valgrind.sh
--- /home/chrisp/code/vendors/buildroot/package/valgrind/valgrind.sh 2008-09-12 14:23:03.000000000 +1200
+++ package/valgrind/valgrind.sh 2008-10-17 11:20:44.000000000 +1300
@@ -3,7 +3,8 @@
# Valgrind wrapper
# Use special suppression file for uClibc
-export VALGRIND_OPTS="$VALGRIND_OPTS --suppressions=/usr/lib/valgrind/uclibc.supp"
+export VALGRIND_LIB=/var/packages/debug/lib/valgrind
+export VALGRIND_OPTS="$VALGRIND_OPTS --suppressions=$VALGRIND_LIB/uclibc.supp"
# Use 'exec' to avoid having another shell process hanging around.
exec $0.bin "$@"
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Valgrind-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/valgrind-users