Update to latest valgrind

This commit is contained in:
Eric Andersen 2004-04-21 19:54:31 +00:00
parent 63914bb2ac
commit a61b9c45df
2 changed files with 106 additions and 148 deletions

View File

@ -4,9 +4,9 @@
# #
############################################################# #############################################################
VALGRIND_SITE:=http://developer.kde.org/~sewardj VALGRIND_SITE:=http://developer.kde.org/~sewardj/
VALGRIND_DIR:=$(BUILD_DIR)/valgrind-20031012 VALGRIND_DIR:=$(BUILD_DIR)/valgrind-2.1.1
VALGRIND_SOURCE:=valgrind-20031012.tar.bz2 VALGRIND_SOURCE:=valgrind-2.1.1.tar.bz2
VALGRIND_PATCH:=$(SOURCE_DIR)/valgrind.patch VALGRIND_PATCH:=$(SOURCE_DIR)/valgrind.patch
$(DL_DIR)/$(VALGRIND_SOURCE): $(DL_DIR)/$(VALGRIND_SOURCE):

View File

@ -1,42 +1,7 @@
diff -urN valgrind-20030725.orig/coregrind/vg_intercept.c valgrind-20030725/coregrind/vg_intercept.c --- valgrind-2.1.1.orig/coregrind/vg_syscalls.c 2004-02-24 17:07:10.000000000 -0700
--- valgrind-20030725.orig/coregrind/vg_intercept.c 2003-07-13 13:20:57.000000000 -0600 +++ valgrind-2.1.1/coregrind/vg_syscalls.c 2004-04-16 18:13:11.000000000 -0600
+++ valgrind-20030725/coregrind/vg_intercept.c 2003-10-13 15:06:33.000000000 -0600 @@ -3231,6 +3245,93 @@
@@ -827,8 +827,10 @@ case CDROM_CLEAR_OPTIONS: /* 0x5321 */
void VG_(__libc_freeres_wrapper)( void )
{
int res;
+#ifndef __UCLIBC__
extern void __libc_freeres(void);
__libc_freeres();
+#endif
VALGRIND_MAGIC_SEQUENCE(res, 0 /* default */,
VG_USERREQ__LIBC_FREERES_DONE, 0, 0, 0, 0);
/*NOTREACHED*/
diff -urN valgrind-20030725.orig/coregrind/vg_libpthread.c valgrind-20030725/coregrind/vg_libpthread.c
--- valgrind-20030725.orig/coregrind/vg_libpthread.c 2003-07-10 18:02:07.000000000 -0600
+++ valgrind-20030725/coregrind/vg_libpthread.c 2003-10-13 15:06:33.000000000 -0600
@@ -3124,6 +3124,8 @@
/* I've no idea what these are, but they get called quite a lot.
Anybody know? */
+#ifndef __UCLIBC__
+
#undef _IO_flockfile
void _IO_flockfile ( _IO_FILE * file )
{
@@ -3139,6 +3141,7 @@
}
weak_alias(_IO_funlockfile, funlockfile);
+#endif
/* This doesn't seem to be needed to simulate libpthread.so's external
interface, but many people complain about its absence. */
diff -urN valgrind-20030725.orig/coregrind/vg_syscalls.c valgrind-20030725/coregrind/vg_syscalls.c
--- valgrind-20030725.orig/coregrind/vg_syscalls.c 2003-07-24 15:00:03.000000000 -0600
+++ valgrind-20030725/coregrind/vg_syscalls.c 2003-10-13 16:35:33.000000000 -0600
@@ -2427,6 +2427,119 @@
KERNEL_DO_SYSCALL(tid,res);
break; break;
+ /* Stuff added by Erik Andersen for general device probing/handling */ + /* Stuff added by Erik Andersen for general device probing/handling */
@ -44,17 +9,13 @@ diff -urN valgrind-20030725.orig/coregrind/vg_syscalls.c valgrind-20030725/coreg
+ case BLKSSZGET: + case BLKSSZGET:
+ SYSCALL_TRACK( pre_mem_write, tid, "ioctl(BLKSSZGET)", arg3, + SYSCALL_TRACK( pre_mem_write, tid, "ioctl(BLKSSZGET)", arg3,
+ sizeof(int)); + sizeof(int));
+ KERNEL_DO_SYSCALL(tid,res);
+ if (!VG_(is_kerror)(res) && res == 0)
+ VG_TRACK( post_mem_write,arg3, sizeof(int));
+ break; + break;
+#define BLKGETSIZE64 _IOR(0x12,114,sizeof(unsigned long long*)) +#undef _IOR
+#define _IOR(type,nr,size) _IOC(_IOC_READ,(type),(nr),sizeof(size))
+#define BLKGETSIZE64 _IOR(0x12,114,sizeof(uint64_t))
+ case BLKGETSIZE64: + case BLKGETSIZE64:
+ SYSCALL_TRACK( pre_mem_write, tid, "ioctl(BLKGETSIZE64)", arg3, + SYSCALL_TRACK( pre_mem_write, tid, "ioctl(BLKGETSIZE64)", arg3,
+ sizeof(unsigned long long)); + sizeof(uint64_t));
+ KERNEL_DO_SYSCALL(tid,res);
+ if (!VG_(is_kerror)(res) && res == 0)
+ VG_TRACK( post_mem_write,arg3, sizeof(unsigned long long));
+ break; + break;
+#define HDIO_GETGEO 0x0301 /* get device geometry */ +#define HDIO_GETGEO 0x0301 /* get device geometry */
+ case HDIO_GETGEO: + case HDIO_GETGEO:
@ -68,9 +29,6 @@ diff -urN valgrind-20030725.orig/coregrind/vg_syscalls.c valgrind-20030725/coreg
+ +
+ SYSCALL_TRACK( pre_mem_write, tid, "ioctl(HDIO_GETGEO)", arg3, + SYSCALL_TRACK( pre_mem_write, tid, "ioctl(HDIO_GETGEO)", arg3,
+ sizeof(struct hd_geometry)); + sizeof(struct hd_geometry));
+ KERNEL_DO_SYSCALL(tid,res);
+ if (!VG_(is_kerror)(res) && res == 0)
+ VG_TRACK( post_mem_write,arg3, sizeof(struct hd_geometry));
+ } + }
+ break; + break;
+#define HDIO_GET_IDENTITY 0x030d /* get IDE identification info */ +#define HDIO_GET_IDENTITY 0x030d /* get IDE identification info */
@ -78,9 +36,6 @@ diff -urN valgrind-20030725.orig/coregrind/vg_syscalls.c valgrind-20030725/coreg
+ case HDIO_GET_IDENTITY: + case HDIO_GET_IDENTITY:
+ SYSCALL_TRACK( pre_mem_write, tid, "ioctl(HDIO_GET_IDENTITY)", arg3, + SYSCALL_TRACK( pre_mem_write, tid, "ioctl(HDIO_GET_IDENTITY)", arg3,
+ struct_hd_driveid_size); + struct_hd_driveid_size);
+ KERNEL_DO_SYSCALL(tid,res);
+ if (!VG_(is_kerror)(res) && res == 0)
+ VG_TRACK( post_mem_write,arg3, struct_hd_driveid_size);
+ break; + break;
+#define SCSI_IOCTL_GET_IDLUN 0x5382 +#define SCSI_IOCTL_GET_IDLUN 0x5382
+ case SCSI_IOCTL_GET_IDLUN: + case SCSI_IOCTL_GET_IDLUN:
@ -94,26 +49,17 @@ diff -urN valgrind-20030725.orig/coregrind/vg_syscalls.c valgrind-20030725/coreg
+ +
+ SYSCALL_TRACK( pre_mem_write, tid, "ioctl(SCSI_IOCTL_GET_IDLUN)", arg3, + SYSCALL_TRACK( pre_mem_write, tid, "ioctl(SCSI_IOCTL_GET_IDLUN)", arg3,
+ sizeof(struct scsi_idlun)); + sizeof(struct scsi_idlun));
+ KERNEL_DO_SYSCALL(tid,res);
+ if (!VG_(is_kerror)(res) && res == 0)
+ VG_TRACK( post_mem_write,arg3, sizeof(struct scsi_idlun));
+ } + }
+ break; + break;
+#define SCSI_IOCTL_SEND_COMMAND 1 +#define SCSI_IOCTL_SEND_COMMAND 1
+ case SCSI_IOCTL_SEND_COMMAND: + case SCSI_IOCTL_SEND_COMMAND:
+ SYSCALL_TRACK( pre_mem_write, tid, "ioctl(SCSI_IOCTL_SEND_COMMAND)", arg3, + SYSCALL_TRACK( pre_mem_write, tid, "ioctl(SCSI_IOCTL_SEND_COMMAND)", arg3,
+ ((2 * sizeof(unsigned int)) + 6 + 512)); + ((2 * sizeof(unsigned int)) + 6 + 512));
+ KERNEL_DO_SYSCALL(tid,res);
+ if (!VG_(is_kerror)(res) && res == 0)
+ VG_TRACK( post_mem_write,arg3, ((2 * sizeof(unsigned int)) + 6 + 512));
+ break; + break;
+#define SCSI_IOCTL_GET_BUS_NUMBER 0x5386 +#define SCSI_IOCTL_GET_BUS_NUMBER 0x5386
+ case SCSI_IOCTL_GET_BUS_NUMBER: + case SCSI_IOCTL_GET_BUS_NUMBER:
+ SYSCALL_TRACK( pre_mem_write, tid, "ioctl(SCSI_IOCTL_GET_BUS_NUMBER)", arg3, + SYSCALL_TRACK( pre_mem_write, tid, "ioctl(SCSI_IOCTL_GET_BUS_NUMBER)", arg3,
+ sizeof(int)); + sizeof(int));
+ KERNEL_DO_SYSCALL(tid,res);
+ if (!VG_(is_kerror)(res) && res == 0)
+ VG_TRACK( post_mem_write,arg3, sizeof(int));
+ break; + break;
+#define SCSI_IOCTL_PROBE_HOST 0x5385 +#define SCSI_IOCTL_PROBE_HOST 0x5385
+ case SCSI_IOCTL_PROBE_HOST: + case SCSI_IOCTL_PROBE_HOST:
@ -123,18 +69,13 @@ diff -urN valgrind-20030725.orig/coregrind/vg_syscalls.c valgrind-20030725/coreg
+ xxxx = array[0] + (array[1]<<8) + (array[2]<<16) + (array[3]<<24); + xxxx = array[0] + (array[1]<<8) + (array[2]<<16) + (array[3]<<24);
+ SYSCALL_TRACK( pre_mem_write, tid, "ioctl(SCSI_IOCTL_PROBE_HOST)", arg3, + SYSCALL_TRACK( pre_mem_write, tid, "ioctl(SCSI_IOCTL_PROBE_HOST)", arg3,
+ sizeof(int)); + sizeof(int));
+ KERNEL_DO_SYSCALL(tid,res);
+ if (!VG_(is_kerror)(res) && res == 0)
+ VG_TRACK( post_mem_write,arg3, sizeof(int));
+ } + }
+ break; + break;
+#define BLKFLSBUF _IO(0x12,97) +#define BLKFLSBUF _IO(0x12,97)
+ case BLKFLSBUF: + case BLKFLSBUF:
+ KERNEL_DO_SYSCALL(tid,res);
+ break; + break;
+#define BLKRRPART _IO(0x12,95) +#define BLKRRPART _IO(0x12,95)
+ case BLKRRPART: + case BLKRRPART:
+ KERNEL_DO_SYSCALL(tid,res);
+ break; + break;
+#define MTIOCTOP _IO(0x6d,0x1) +#define MTIOCTOP _IO(0x6d,0x1)
+ case MTIOCTOP: + case MTIOCTOP:
@ -146,12 +87,29 @@ diff -urN valgrind-20030725.orig/coregrind/vg_syscalls.c valgrind-20030725/coreg
+ }; + };
+ SYSCALL_TRACK( pre_mem_write, tid, "ioctl(MTIOCTOP)", arg3, + SYSCALL_TRACK( pre_mem_write, tid, "ioctl(MTIOCTOP)", arg3,
+ sizeof(struct mtop)); + sizeof(struct mtop));
+ KERNEL_DO_SYSCALL(tid,res);
+ if (!VG_(is_kerror)(res) && res == 0)
+ VG_TRACK( post_mem_write,arg3, sizeof(struct mtop));
+ } + }
+ break; + break;
+
+ +
/* We don't have any specific information on it, so /* We don't have any specific information on it, so
try to do something reasonable based on direction and try to do something reasonable based on direction and
size bits. The encoding scheme is described in size bits. The encoding scheme is described in
--- valgrind-2.1.1.orig/coregrind/vg_libpthread.c 2004-03-08 08:57:17.000000000 -0700
+++ valgrind-2.1.1/coregrind/vg_libpthread.c 2004-04-16 17:58:31.000000000 -0600
@@ -3175,6 +3175,8 @@
pthread_mutex). So basically, this is completely broken on recent
glibcs. */
+#ifndef __UCLIBC__
+
#undef _IO_flockfile
void _IO_flockfile ( _IO_FILE * file )
{
@@ -3192,6 +3194,7 @@
weak_alias(_IO_funlockfile, funlockfile);
#endif
+#endif
/* This doesn't seem to be needed to simulate libpthread.so's external
interface, but many people complain about its absence. */