OBS User unknown 2007-01-15 23:40:26 +00:00 committed by Git OBS Bridge
commit cb6fa16909
11 changed files with 6041 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

274
3_2_BRANCH.diff Normal file
View File

@ -0,0 +1,274 @@
Index: glibc-2.5.supp
===================================================================
--- glibc-2.5.supp (.../tags/VALGRIND_3_2_1) (revision 0)
+++ glibc-2.5.supp (.../branches/VALGRIND_3_2_BRANCH) (revision 6240)
@@ -0,0 +1,200 @@
+
+##----------------------------------------------------------------------##
+
+# Errors to suppress by default with glibc 2.4.x
+
+# Format of this file is:
+# {
+# name_of_suppression
+# tool_name:supp_kind
+# (optional extra info for some suppression types)
+# caller0 name, or /name/of/so/file.so
+# caller1 name, or ditto
+# (optionally: caller2 name)
+# (optionally: caller3 name)
+# }
+#
+# For Memcheck, the supp_kinds are:
+#
+# Param Value1 Value2 Value4 Value8 Value16
+# Free Addr1 Addr2 Addr4 Addr8 Addr16
+# Cond (previously known as Value0)
+#
+# and the optional extra info is:
+# if Param: name of system call param
+# if Free: name of free-ing fn)
+
+{
+ dl-hack1
+ Memcheck:Cond
+ fun:_dl_start
+ fun:_start
+}
+
+{
+ dl-hack2
+ Memcheck:Cond
+ obj:/lib*/ld-2.5*.so
+ obj:/lib*/ld-2.5*.so
+ obj:/lib*/ld-2.5*.so
+ obj:/lib*/ld-2.5*.so
+}
+
+{
+ dl-hack3
+ Memcheck:Cond
+ obj:/lib*/ld-2.5*so*
+ obj:/lib*/ld-2.5*so*
+ obj:/lib*/ld-2.5*so*
+}
+
+##----------------------------------------------------------------------##
+{
+ glibc-2.5.x-on-SUSE-10.2-(PPC)-1
+ Memcheck:Cond
+ fun:_dl_start_final
+ fun:_dl_start
+ fun:_start
+}
+{
+ glibc-2.5.x-on-SUSE-10.2-(PPC)-2a
+ Memcheck:Cond
+ fun:index
+ obj:*ld-2.5.*.so
+}
+{
+ glibc-2.5.x-on-SuSE-10.2-(PPC)-2b
+ Memcheck:Addr4
+ fun:index
+ fun:expand_dynamic_string_token
+}
+{
+ glibc-2.5.5-on-SuSE-10.2-(PPC)-2c
+ Memcheck:Addr4
+ fun:index
+ obj:*ld-2.5.*.so
+}
+{
+ glibc-2.3.5-on-SuSE-10.1-(PPC)-3
+ Memcheck:Addr4
+ fun:*wordcopy_fwd_dest_aligned*
+ fun:mem*cpy
+ obj:*lib*2.5.*.so
+}
+
+##----------------------------------------------------------------------##
+## Various structure padding things on SUSE 10.2
+##
+{
+ X11-64bit-padding-1a
+ Memcheck:Param
+ write(buf)
+ fun:__write_nocancel
+ obj:/usr/lib*/libX11.so*
+ obj:/usr/lib*/libX11.so*
+ fun:X*
+}
+{
+ X11-64bit-padding-1b
+ Memcheck:Param
+ write(buf)
+ fun:__write_nocancel
+ obj:/usr/lib*/libX11.so*
+ obj:/usr/lib*/libX11.so*
+ fun:_X*
+}
+{
+ X11-64bit-padding-1c
+ Memcheck:Param
+ write(buf)
+ fun:__write_nocancel
+ obj:/usr/lib*/libX11.so*
+ obj:/usr/lib*/libX11.so*
+ obj:/usr/lib*/libX11.so*
+}
+{
+ X11-64bit-padding-1d
+ Memcheck:Param
+ write(buf)
+ fun:__write_nocancel
+ obj:/usr/lib*/libICE.so*
+ obj:/usr/lib*/libICE.so*
+ obj:/usr/lib*/libICE.so*
+}
+{
+ X11-64bit-padding-2a
+ Memcheck:Param
+ writev(vector[...])
+ fun:do_writev
+ obj:/usr/lib*/libX11.so*
+ obj:/usr/lib*/libX11.so*
+ obj:/usr/lib*/libX11.so*
+}
+{
+ X11-64bit-padding-2b
+ Memcheck:Param
+ writev(vector[...])
+ fun:do_writev
+ fun:writev
+ obj:/usr/lib*/libX11.so*
+ obj:/usr/lib*/libX11.so*
+}
+
+{
+ glibc24-64bit-padding-1a
+ Memcheck:Param
+ socketcall.sendto(msg)
+ fun:send
+ fun:get_mapping
+ fun:__nscd_get_map_ref
+ fun:nscd*
+}
+{
+ glibc24-64bit-padding-1b
+ Memcheck:Param
+ socketcall.sendto(msg)
+ fun:__sendto_nocancel
+ obj:/*libc-2.5.so
+ obj:/*libc-2.5.so
+ obj:/*libc-2.5.so
+}
+{
+ glibc24-64bit-padding-1c
+ Memcheck:Param
+ socketcall.send(msg)
+ fun:send
+ fun:__nscd_get_map_ref
+ fun:nscd_get*_r
+ fun:*nscd*
+ obj:/*libc-2.5.so
+}
+
+
+{
+ X11-64bit-padding-3a
+ Memcheck:Param
+ write(buf)
+ obj:/*libpthread-2.4.so*
+ obj:/usr/lib*/libX11.so*
+ obj:/usr/lib*/libX11.so*
+ obj:/usr/lib*/libX11.so*
+}
+
+{
+ X11-64bit-padding-4a
+ Memcheck:Param
+ socketcall.sendto(msg)
+ fun:send
+ obj:/*libc-2.5.so
+ obj:/*libc-2.5.so
+ obj:/*libc-2.5.so
+}
+{
+ X11-64bit-padding-4b
+ Memcheck:Param
+ socketcall.send(msg)
+ fun:send
+ obj:/*libc-2.5.so
+ obj:/*libc-2.5.so
+ obj:/*libc-2.5.so
+}
Index: configure.in
===================================================================
--- configure.in (.../tags/VALGRIND_3_2_1) (revision 6240)
+++ configure.in (.../branches/VALGRIND_3_2_BRANCH) (revision 6240)
@@ -8,7 +8,7 @@
##------------------------------------------------------------##
# Process this file with autoconf to produce a configure script.
-AC_INIT(Valgrind, 3.2.1, valgrind-users@lists.sourceforge.net)
+AC_INIT(Valgrind, 3.2.2.SVN, valgrind-users@lists.sourceforge.net)
AC_CONFIG_SRCDIR(coregrind/m_main.c)
AM_CONFIG_HEADER(config.h)
AM_INIT_AUTOMAKE
@@ -349,6 +349,16 @@ AC_EGREP_CPP([GLIBC_24], [
],
glibc="2.4")
+AC_EGREP_CPP([GLIBC_25], [
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 5)
+ GLIBC_25
+ #endif
+#endif
+],
+glibc="2.5")
+
AC_MSG_CHECKING([the glibc version])
case "${glibc}" in
@@ -370,9 +380,15 @@ case "${glibc}" in
DEFAULT_SUPP="glibc-2.4.supp ${DEFAULT_SUPP}"
;;
+ 2.5)
+ AC_MSG_RESULT(2.5 family)
+ AC_DEFINE([GLIBC_2_5], 1, [Define to 1 if you're using glibc 2.5.x])
+ DEFAULT_SUPP="glibc-2.5.supp ${DEFAULT_SUPP}"
+ ;;
+
*)
AC_MSG_RESULT(unsupported version)
- AC_MSG_ERROR([Valgrind requires glibc version 2.2, 2.3 or 2.4])
+ AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.5])
;;
esac
Index: Makefile.am
===================================================================
--- Makefile.am (.../tags/VALGRIND_3_2_1) (revision 6240)
+++ Makefile.am (.../branches/VALGRIND_3_2_BRANCH) (revision 6240)
@@ -17,7 +17,7 @@ SUBDIRS = include coregrind . tests perf
DIST_SUBDIRS = $(SUBDIRS)
SUPP_FILES = \
- glibc-2.2.supp glibc-2.3.supp glibc-2.4.supp \
+ glibc-2.2.supp glibc-2.3.supp glibc-2.4.supp glibc-2.5.supp \
xfree-3.supp xfree-4.supp
dist_val_DATA = $(SUPP_FILES) default.supp
Property changes on: .
___________________________________________________________________
Name: svn:externals
- VEX svn://svn.valgrind.org/vex/tags/VEX_3_2_1
+ VEX svn://svn.valgrind.org/vex/branches/VEX_3_2_BRANCH

20
drd-fixes.diff Normal file
View File

@ -0,0 +1,20 @@
--- drd/drd_main.c
+++ drd/drd_main.c
@@ -110,7 +110,7 @@
addr, size, VG_(get_running_tid)());
}
#endif
- sg = thread_get_segment(VG_(running_tid));
+ sg = thread_get_segment(VG_(get_running_tid)());
bm_access_range(sg->bm, addr, size, eLoad);
}
@@ -124,7 +124,7 @@
addr, size, VG_(get_running_tid)());
}
#endif
- sg = thread_get_segment(VG_(running_tid));
+ sg = thread_get_segment(VG_(get_running_tid)());
bm_access_range(sg->bm, addr, size, eStore);
}

4515
omega_RC_01.patch Normal file

File diff suppressed because it is too large Load Diff

0
ready Normal file
View File

3
valgrind-3.2.1.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7f9a15d7be16ca03a0912191e8d55a486bf69690e11bb76ccece3eaff3730a33
size 4052885

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c0bded47390734e31b082ddb570349db46ea205e9a89bca6cccfe437319a6084
size 19454

867
valgrind-6012.patch Normal file
View File

@ -0,0 +1,867 @@
Index: helgrind/hg_main.c
===================================================================
--- helgrind/hg_main.c (revision 6012)
+++ helgrind/hg_main.c (working copy)
@@ -2857,17 +2857,17 @@
/* Do nothing */
}
-static void hg_pre_mutex_lock(ThreadId tid, void* void_mutex)
+static void hg_pre_mutex_lock(ThreadId tid, Addr client_mutex)
{
- Mutex *mutex = get_mutex((Addr)void_mutex);
+ Mutex *mutex = get_mutex(client_mutex);
test_mutex_state(mutex, MxLocked, tid);
}
-static void hg_post_mutex_lock(ThreadId tid, void* void_mutex)
+static void hg_post_mutex_lock(ThreadId tid, Addr client_mutex)
{
static const Bool debug = False;
- Mutex *mutex = get_mutex((Addr)void_mutex);
+ Mutex *mutex = get_mutex(client_mutex);
const LockSet* ls;
set_mutex_state(mutex, MxLocked, tid);
@@ -2898,11 +2898,11 @@
}
-static void hg_post_mutex_unlock(ThreadId tid, void* void_mutex)
+static void hg_post_mutex_unlock(ThreadId tid, Addr client_mutex)
{
static const Bool debug = False;
Int i = 0;
- Mutex *mutex = get_mutex((Addr)void_mutex);
+ Mutex *mutex = get_mutex(client_mutex);
const LockSet *ls;
test_mutex_state(mutex, MxUnlocked, tid);
@@ -3259,14 +3259,14 @@
static void bus_lock(void)
{
ThreadId tid = VG_(get_running_tid)();
- hg_pre_mutex_lock(tid, &__BUS_HARDWARE_LOCK__);
- hg_post_mutex_lock(tid, &__BUS_HARDWARE_LOCK__);
+ hg_pre_mutex_lock(tid, (Addr)&__BUS_HARDWARE_LOCK__);
+ hg_post_mutex_lock(tid, (Addr)&__BUS_HARDWARE_LOCK__);
}
static void bus_unlock(void)
{
ThreadId tid = VG_(get_running_tid)();
- hg_post_mutex_unlock(tid, &__BUS_HARDWARE_LOCK__);
+ hg_post_mutex_unlock(tid, (Addr)&__BUS_HARDWARE_LOCK__);
}
/*--------------------------------------------------------------------*/
Index: include/pub_tool_tooliface.h
===================================================================
--- include/pub_tool_tooliface.h (revision 6012)
+++ include/pub_tool_tooliface.h (working copy)
@@ -411,20 +411,32 @@
void VG_(track_post_thread_join) (void(*f)(ThreadId joiner, ThreadId joinee));
/* Mutex events (not exhaustive)
- "void *mutex" is really a pthread_mutex *
+ "Addr mutex" is really a pthread_mutex_t *
+*/
- Called before a thread can block while waiting for a mutex (called
+void VG_(track_post_mutex_init)(void(*f)(ThreadId tid, Addr mutex, SizeT size));
+void VG_(track_pre_mutex_destroy)(void(*f)(ThreadId tid, Addr mutex, SizeT size));
+
+/* Called before a thread can block while waiting for a mutex (called
regardless of whether the thread will block or not). */
-void VG_(track_pre_mutex_lock)(void(*f)(ThreadId tid, void* mutex));
+void VG_(track_pre_mutex_lock)(void(*f)(ThreadId tid, Addr mutex));
/* Called once the thread actually holds the mutex (always paired with
pre_mutex_lock). */
-void VG_(track_post_mutex_lock)(void(*f)(ThreadId tid, void* mutex));
+void VG_(track_post_mutex_lock)(void(*f)(ThreadId tid, Addr mutex));
-/* Called after a thread has released a mutex (no need for a corresponding
- pre_mutex_unlock, because unlocking can't block). */
-void VG_(track_post_mutex_unlock)(void(*f)(ThreadId tid, void* mutex));
+/* Called before a thread releases a mutex. */
+void VG_(track_pre_mutex_unlock)(void(*f)(ThreadId tid, Addr mutex));
+/* Called after a thread has released a mutex. */
+void VG_(track_post_mutex_unlock)(void(*f)(ThreadId tid, Addr mutex));
+
+void VG_(track_post_cond_init)(void(*f)(ThreadId tid, Addr cond, SizeT size));
+void VG_(track_pre_cond_destroy)(void(*f)(ThreadId tid, Addr cond, SizeT size));
+void VG_(track_pre_cond_wait)(void(*f)(ThreadId tid, Addr cond, Addr mutex));
+void VG_(track_post_cond_wait)(void(*f)(ThreadId tid, Addr cond, Addr mutex));
+
+
/* Signal events (not exhaustive)
... pre_send_signal, post_send_signal ...
@@ -437,6 +449,7 @@
handler longjmps, this won't be called. */
void VG_(track_post_deliver_signal)(void(*f)(ThreadId tid, Int sigNo));
+
/* Others... condition variables...
...
*/
Index: include/pub_tool_threadstate.h
===================================================================
--- include/pub_tool_threadstate.h (revision 6012)
+++ include/pub_tool_threadstate.h (working copy)
@@ -46,6 +46,10 @@
/* Get the TID of the thread which currently has the CPU. */
extern ThreadId VG_(get_running_tid) ( void );
+Int VG_(get_tid_lwp)(ThreadId const tid);
+ThreadId VG_(get_thread_id)(PosixThreadId const posixthreadid);
+PosixThreadId VG_(get_pthread_id)(ThreadId const tid);
+
#endif // __PUB_TOOL_THREADSTATE_H
/*--------------------------------------------------------------------*/
Index: include/pub_tool_libcprint.h
===================================================================
--- include/pub_tool_libcprint.h (revision 6012)
+++ include/pub_tool_libcprint.h (working copy)
@@ -39,15 +39,27 @@
* --log-fd/--log-file/--log-socket argument, which defaults to 2 (stderr).
* Hence no need for VG_(fprintf)().
*/
-extern UInt VG_(printf) ( const HChar *format, ... );
+extern UInt VG_(printf) ( const HChar *format, ... )
+#if defined(__GNUC__) && defined(CHECK_FORMAT_STRINGS)
+ __attribute__((format(printf, 1, 2)))
+#endif
+ ;
extern UInt VG_(vprintf) ( const HChar *format, va_list vargs );
/* too noisy ... __attribute__ ((format (printf, 1, 2))) ; */
-extern UInt VG_(sprintf) ( Char* buf, const HChar* format, ... );
+extern UInt VG_(sprintf) ( Char* buf, const HChar* format, ... )
+#if defined(__GNUC__) && defined(CHECK_FORMAT_STRINGS)
+ __attribute__((format(printf, 2, 3)))
+#endif
+ ;
extern UInt VG_(vsprintf) ( Char* buf, const HChar* format, va_list vargs );
extern UInt VG_(snprintf) ( Char* buf, Int size,
- const HChar *format, ... );
+ const HChar *format, ... )
+#if defined(__GNUC__) && defined(CHECK_FORMAT_STRINGS)
+ __attribute__((format(printf, 3, 4)))
+#endif
+ ;
extern UInt VG_(vsnprintf)( Char* buf, Int size,
const HChar *format, va_list vargs );
@@ -74,7 +86,11 @@
VgMsgKind;
/* Send a single-part message. Appends a newline. */
-extern UInt VG_(message) ( VgMsgKind kind, const HChar* format, ... );
+extern UInt VG_(message) ( VgMsgKind kind, const HChar* format, ... )
+#if defined(__GNUC__) && defined(CHECK_FORMAT_STRINGS)
+ __attribute__((format(printf, 2, 3)))
+#endif
+ ;
extern UInt VG_(vmessage) ( VgMsgKind kind, const HChar* format, va_list vargs );
#endif // __PUB_TOOL_LIBCPRINT_H
Index: include/pub_tool_debuginfo.h
===================================================================
--- include/pub_tool_debuginfo.h (revision 6012)
+++ include/pub_tool_debuginfo.h (working copy)
@@ -135,6 +135,9 @@
extern VgSectKind VG_(seginfo_sect_kind)(Addr);
+extern Char* VG_(seginfo_sect_kind_name)(Addr a, Char* buf, UInt n_buf);
+
+
#endif // __PUB_TOOL_DEBUGINFO_H
/*--------------------------------------------------------------------*/
Index: include/valgrind.h
===================================================================
--- include/valgrind.h (revision 6012)
+++ include/valgrind.h (working copy)
@@ -2298,6 +2298,48 @@
VG_USERREQ__STACK_REGISTER = 0x1501,
VG_USERREQ__STACK_DEREGISTER = 0x1502,
VG_USERREQ__STACK_CHANGE = 0x1503,
+
+
+ /* To tell the core the POSIX thread ID */
+ VG_USERREQ__SET_PTHREAD_SELF = 0x3000,
+ /* args: pthread_t (thread ID of running thread) */
+
+ /* To notify the core of pthread_thread_join calls */
+ VG_USERREQ__POST_PTHREAD_JOIN = 0x3010,
+ /* args: pthread_t (joinee) */
+
+ /* To notify the core of a pthread_mutex_init call */
+ VG_USERREQ__POST_MUTEX_INIT = 0x3020,
+ /* args: Addr, SizeT */
+ /* To notify the core of a pthread_mutex_destroy call */
+ VG_USERREQ__PRE_MUTEX_DESTROY = 0x3021,
+ /* args: Addr, SizeT */
+ /* To notify the core of pthread_mutex_lock calls */
+ VG_USERREQ__PRE_PTHREAD_MUTEX_LOCK = 0x3022,
+ /* args: pthread_mutex_t* */
+ VG_USERREQ__POST_PTHREAD_MUTEX_LOCK = 0x3023,
+ /* args: pthread_mutex_t* */
+ /* To notify the core of pthread_mutex_unlock calls */
+ VG_USERREQ__PRE_PTHREAD_MUTEX_UNLOCK = 0x3024,
+ /* args: pthread_mutex_t* */
+ /* To notify the core of pthread_mutex_unlock calls */
+ VG_USERREQ__POST_PTHREAD_MUTEX_UNLOCK = 0x3025,
+ /* args: pthread_mutex_t* */
+
+
+ /* To notify the core of a pthread_cond_init call */
+ VG_USERREQ__POST_PTHREAD_COND_INIT = 0x3028,
+ /* args: Addr, SizeT */
+ /* To notify the core of a pthread_cond_destroy call */
+ VG_USERREQ__PRE_PTHREAD_COND_DESTROY = 0x3029,
+ /* args: Addr, SizeT */
+ /* To notify the core of a pthread_cond_wait call */
+ VG_USERREQ__PRE_PTHREAD_COND_WAIT = 0x302a,
+ /* args: Addr cond, Addr mutex */
+ /* To notify the core of a pthread_cond_wait call */
+ VG_USERREQ__POST_PTHREAD_COND_WAIT = 0x302b,
+ /* args: Addr cond, Addr mutex */
+
} Vg_ClientRequest;
#if !defined(__GNUC__)
Index: include/pub_tool_basics.h
===================================================================
--- include/pub_tool_basics.h (revision 6012)
+++ include/pub_tool_basics.h (working copy)
@@ -97,6 +97,16 @@
/* ThreadIds are simply indices into the VG_(threads)[] array. */
typedef UInt ThreadId;
+/* A PosixThreadId uniquely identifies a POSIX thread in the client. This
+ datatype must be able to represent any client pthread_t value. The only
+ operations performed on this datatype are copying and comparison (==).
+ Note: the POSIX standard specifies that POSIX thread IDs may be implemented
+ as a struct, and that these must be compared by calling pthread_equal().
+ Representing POSIX thread IDs by an integer, and comparing these IDs via
+ "==" is a shortcut that works (at least) on Linux.
+ */
+typedef UWord PosixThreadId;
+
/* An abstraction of syscall return values.
When .isError == False, val holds the return value.
When .isError == True, val holds the error code.
Index: configure.in
===================================================================
--- configure.in (revision 6012)
+++ configure.in (working copy)
@@ -738,6 +738,9 @@
none/tests/ppc64/Makefile
none/tests/x86/Makefile
none/docs/Makefile
+ drd/Makefile
+ drd/docs/Makefile
+ drd/tests/Makefile
)
cat<<EOF
Index: Makefile.am
===================================================================
--- Makefile.am (revision 6012)
+++ Makefile.am (working copy)
@@ -8,6 +8,7 @@
callgrind \
massif \
lackey \
+ drd \
none
# Temporary: we want to compile Helgrind, but not regtest it.
Index: coregrind/vg_preloaded.c
===================================================================
--- coregrind/vg_preloaded.c (revision 6012)
+++ coregrind/vg_preloaded.c (working copy)
@@ -71,8 +71,6 @@
/*--- end ---*/
/*--------------------------------------------------------------------*/
-#if 0
-
#define PTH_FUNC(ret_ty, f, args...) \
ret_ty VG_WRAP_FUNCTION_ZZ(libpthreadZdsoZd0,f)(args); \
ret_ty VG_WRAP_FUNCTION_ZZ(libpthreadZdsoZd0,f)(args)
@@ -80,34 +78,157 @@
#include <stdio.h>
#include <pthread.h>
+typedef struct
+{
+ void* (*start)(void*);
+ void* arg;
+#if 0
+ pthread_mutex_t mutex;
+ pthread_cond_t cond;
+#else
+ int wrapper_started;
+#endif
+} VgPosixThreadArgs;
+
+static void* vg_thread_wrapper(void* arg)
+{
+ VgPosixThreadArgs* const arg_ptr = (VgPosixThreadArgs*)arg;
+ VgPosixThreadArgs const arg_copy = *arg_ptr;
+ int res;
+
+#if 0
+ pthread_mutex_lock(arg_ptr->mutex);
+ pthread_cond_signal(arg_ptr->cond);
+ pthread_mutex_unlock(arg_ptr->mutex);
+#else
+ arg_ptr->wrapper_started = 1;
+#endif
+
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__SET_PTHREAD_SELF,
+ pthread_self(), 0, 0, 0, 0);
+ return (arg_copy.start)(arg_copy.arg);
+}
+
// pthread_create
PTH_FUNC(int, pthreadZucreateZAZa, // pthread_create@*
pthread_t *thread, const pthread_attr_t *attr,
void *(*start) (void *), void *arg)
{
- int ret;
- void* fn;
- VALGRIND_GET_NRADDR(fn);
- fprintf(stderr, "<< pthread_create wrapper"); fflush(stderr);
+ int res;
+ int ret;
+ OrigFn fn;
+ VgPosixThreadArgs vgargs;
+ VALGRIND_GET_ORIG_FN(fn);
+ // Make sure that Valgrind knows about the main thread's POSIX thread ID.
+ // To do: move this statement to another place such that it is only called
+ // once during startup, instead of during every pthread_create() call.
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__SET_PTHREAD_SELF,
+ pthread_self(), 0, 0, 0, 0);
+ vgargs.start = start;
+ vgargs.arg = arg;
+ vgargs.wrapper_started = 0;
+#if 0
+ pthread_mutex_init(&vgargs.mutex, 0);
+ pthread_cond_init(&vgargs.cond, 0);
+ pthread_mutex_lock(&vgargs.mutex);
+#endif
+ CALL_FN_W_WWWW(ret, fn, thread, attr, vg_thread_wrapper, &vgargs);
+#if 0
+ pthread_cond_wait(&vgargs.cond, &vgargs.mutex);
+ pthread_mutex_unlock(&vgargs.mutex);
+ pthread_cond_destroy(&vgargs.cond);
+ pthread_mutex_destroy(&vgargs.mutex);
+#else
+ // Yes, you see it correctly, busy waiting ... The problem is that
+ // POSIX threads functions cannot be called here -- the functions defined
+ // in this file (vg_preloaded.c) would be called instead of those in
+ // libpthread.so.
+ while (! vgargs.wrapper_started)
+ ;
+#endif
+ return ret;
+}
- CALL_FN_W_WWWW(ret, fn, thread,attr,start,arg);
+// pthread_join
+PTH_FUNC(int, pthreadZujoin, // pthread_join
+ pthread_t thread, void **thread_return)
+{
+ int ret;
+ int res;
+ OrigFn fn;
- fprintf(stderr, " -> %d >>\n", ret);
+ VALGRIND_GET_ORIG_FN(fn);
+ CALL_FN_W_WW(ret, fn, thread, thread_return);
+ if (ret == 0)
+ {
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_PTHREAD_JOIN,
+ thread, 0, 0, 0, 0);
+ }
return ret;
}
+// pthread_mutex_init
+PTH_FUNC(int, pthreadZumutexZuinit,
+ pthread_mutex_t *mutex,
+ pthread_mutexattr_t const* attr)
+{
+ int ret;
+ int res;
+ OrigFn fn;
+ VALGRIND_GET_ORIG_FN(fn);
+ CALL_FN_W_WW(ret, fn, mutex, attr);
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_MUTEX_INIT,
+ mutex, sizeof(*mutex), 0, 0, 0);
+ return ret;
+}
+
+// pthread_mutex_destroy
+PTH_FUNC(int, pthreadZumutexZudestroy,
+ pthread_mutex_t *mutex)
+{
+ int ret;
+ int res;
+ OrigFn fn;
+ VALGRIND_GET_ORIG_FN(fn);
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_MUTEX_DESTROY,
+ mutex, sizeof(*mutex), 0, 0, 0);
+ CALL_FN_W_W(ret, fn, mutex);
+ return ret;
+}
+
// pthread_mutex_lock
PTH_FUNC(int, pthreadZumutexZulock, // pthread_mutex_lock
pthread_mutex_t *mutex)
{
int ret;
- void* fn;
+ int res;
+ OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
- fprintf(stderr, "<< pthread_mxlock %p", mutex); fflush(stderr);
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_PTHREAD_MUTEX_LOCK,
+ mutex, 0, 0, 0, 0);
+ CALL_FN_W_W(ret, fn, mutex);
+ if (ret == 0)
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_PTHREAD_MUTEX_LOCK,
+ mutex, 0, 0, 0, 0);
+ return ret;
+}
+// pthread_mutex_trylock
+PTH_FUNC(int, pthreadZumutexZutrylock, // pthread_mutex_trylock
+ pthread_mutex_t *mutex)
+{
+ int ret;
+ int res;
+ OrigFn fn;
+ VALGRIND_GET_ORIG_FN(fn);
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_PTHREAD_MUTEX_LOCK,
+ mutex, 0, 0, 0, 0);
CALL_FN_W_W(ret, fn, mutex);
-
- fprintf(stderr, " -> %d >>\n", ret);
+ if (ret == 0)
+ {
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_PTHREAD_MUTEX_LOCK,
+ mutex, 0, 0, 0, 0);
+ }
return ret;
}
@@ -116,15 +237,44 @@
pthread_mutex_t *mutex)
{
int ret;
- void* fn;
+ int res;
+ OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
-
- fprintf(stderr, "<< pthread_mxunlk %p", mutex); fflush(stderr);
-
+ VALGRIND_DO_CLIENT_REQUEST(res, -1,
+ VG_USERREQ__PRE_PTHREAD_MUTEX_UNLOCK,
+ mutex, 0, 0, 0, 0);
CALL_FN_W_W(ret, fn, mutex);
+ if (ret == 0)
+ {
+ VALGRIND_DO_CLIENT_REQUEST(res, -1,
+ VG_USERREQ__POST_PTHREAD_MUTEX_UNLOCK,
+ mutex, 0, 0, 0, 0);
+ }
+ return ret;
+}
- fprintf(stderr, " -> %d >>\n", ret);
+// pthread_cond_wait
+PTH_FUNC(int, pthreadZucontZuwait, // pthread_cond_wait
+ pthread_cond_t *cond,
+ pthread_mutex_t *mutex)
+{
+ int ret;
+ int res;
+ OrigFn fn;
+ VALGRIND_GET_ORIG_FN(fn);
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_PTHREAD_COND_WAIT,
+ cond, mutex, 0, 0, 0);
+ CALL_FN_W_WW(ret, fn, cond, mutex);
+ if (ret == 0)
+ {
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_PTHREAD_COND_WAIT,
+ cond, mutex, 0, 0, 0);
+ }
return ret;
}
-#endif
+/*
+ * Local variables:
+ * c-basic-offset: 3
+ * End:
+ */
Index: coregrind/m_syswrap/syswrap-linux.c
===================================================================
--- coregrind/m_syswrap/syswrap-linux.c (revision 6012)
+++ coregrind/m_syswrap/syswrap-linux.c (working copy)
@@ -164,7 +164,7 @@
assembler. */
#if defined(VGP_x86_linux)
asm volatile (
- "movl %1, %0\n" /* set tst->status = VgTs_Empty */
+ // "movl %1, %0\n" /* set tst->status = VgTs_Empty */
"movl %2, %%eax\n" /* set %eax = __NR_exit */
"movl %3, %%ebx\n" /* set %ebx = tst->os_state.exitcode */
"int $0x80\n" /* exit(tst->os_state.exitcode) */
@@ -172,7 +172,7 @@
: "n" (VgTs_Empty), "n" (__NR_exit), "m" (tst->os_state.exitcode));
#elif defined(VGP_amd64_linux)
asm volatile (
- "movl %1, %0\n" /* set tst->status = VgTs_Empty */
+ // "movl %1, %0\n" /* set tst->status = VgTs_Empty */
"movq %2, %%rax\n" /* set %rax = __NR_exit */
"movq %3, %%rdi\n" /* set %rdi = tst->os_state.exitcode */
"syscall\n" /* exit(tst->os_state.exitcode) */
@@ -181,7 +181,7 @@
#elif defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux)
{ UInt vgts_empty = (UInt)VgTs_Empty;
asm volatile (
- "stw %1,%0\n\t" /* set tst->status = VgTs_Empty */
+ // "stw %1,%0\n\t" /* set tst->status = VgTs_Empty */
"li 0,%2\n\t" /* set r0 = __NR_exit */
"lwz 3,%3\n\t" /* set r3 = tst->os_state.exitcode */
"sc\n\t" /* exit(tst->os_state.exitcode) */
Index: coregrind/m_tooliface.c
===================================================================
--- coregrind/m_tooliface.c (revision 6012)
+++ coregrind/m_tooliface.c (working copy)
@@ -326,13 +326,21 @@
DEF(track_post_thread_create, ThreadId, ThreadId)
DEF(track_post_thread_join, ThreadId, ThreadId)
-DEF(track_pre_mutex_lock, ThreadId, void*)
-DEF(track_post_mutex_lock, ThreadId, void*)
-DEF(track_post_mutex_unlock, ThreadId, void*)
+DEF(track_post_mutex_init, ThreadId, Addr, SizeT)
+DEF(track_pre_mutex_destroy, ThreadId, Addr, SizeT)
+DEF(track_pre_mutex_lock, ThreadId, Addr)
+DEF(track_post_mutex_lock, ThreadId, Addr)
+DEF(track_pre_mutex_unlock, ThreadId, Addr)
+DEF(track_post_mutex_unlock, ThreadId, Addr)
DEF(track_pre_deliver_signal, ThreadId, Int sigNo, Bool)
DEF(track_post_deliver_signal, ThreadId, Int sigNo)
+DEF(track_post_cond_init, ThreadId, Addr, SizeT);
+DEF(track_pre_cond_destroy, ThreadId, Addr, SizeT);
+DEF(track_pre_cond_wait, ThreadId, Addr, Addr);
+DEF(track_post_cond_wait, ThreadId, Addr, Addr);
+
/*--------------------------------------------------------------------*/
/*--- end ---*/
/*--------------------------------------------------------------------*/
Index: coregrind/pub_core_tooliface.h
===================================================================
--- coregrind/pub_core_tooliface.h (revision 6012)
+++ coregrind/pub_core_tooliface.h (working copy)
@@ -205,10 +205,18 @@
void (*track_post_thread_create)(ThreadId, ThreadId);
void (*track_post_thread_join) (ThreadId, ThreadId);
- void (*track_pre_mutex_lock) (ThreadId, void*);
- void (*track_post_mutex_lock) (ThreadId, void*);
- void (*track_post_mutex_unlock)(ThreadId, void*);
+ void (*track_post_mutex_init) (ThreadId, Addr, SizeT);
+ void (*track_pre_mutex_destroy)(ThreadId, Addr, SizeT);
+ void (*track_pre_mutex_lock) (ThreadId, Addr);
+ void (*track_post_mutex_lock) (ThreadId, Addr);
+ void (*track_pre_mutex_unlock) (ThreadId, Addr);
+ void (*track_post_mutex_unlock)(ThreadId, Addr);
+ void (*track_post_cond_init) (ThreadId, Addr, SizeT);
+ void (*track_pre_cond_destroy) (ThreadId, Addr, SizeT);
+ void (*track_pre_cond_wait) (ThreadId, Addr, Addr);
+ void (*track_post_cond_wait) (ThreadId, Addr, Addr);
+
void (*track_pre_deliver_signal) (ThreadId, Int sigNo, Bool);
void (*track_post_deliver_signal)(ThreadId, Int sigNo);
Index: coregrind/m_debuginfo/debuginfo.c
===================================================================
--- coregrind/m_debuginfo/debuginfo.c (revision 6012)
+++ coregrind/m_debuginfo/debuginfo.c (working copy)
@@ -912,6 +912,35 @@
return ret;
}
+Char* VG_(seginfo_sect_kind_name)(Addr a, Char* buf, UInt n_buf)
+{
+ switch (VG_(seginfo_sect_kind)(a))
+ {
+ case Vg_SectUnknown:
+ VG_(snprintf)(buf, n_buf, "Unknown");
+ break;
+ case Vg_SectText:
+ VG_(snprintf)(buf, n_buf, "Text");
+ break;
+ case Vg_SectData:
+ VG_(snprintf)(buf, n_buf, "Data");
+ break;
+ case Vg_SectBSS:
+ VG_(snprintf)(buf, n_buf, "BSS");
+ break;
+ case Vg_SectGOT:
+ VG_(snprintf)(buf, n_buf, "GOT");
+ break;
+ case Vg_SectPLT:
+ VG_(snprintf)(buf, n_buf, "PLT");
+ break;
+ default:
+ VG_(snprintf)(buf, n_buf, "???");
+ vg_assert(0);
+ }
+ return buf;
+}
+
Int VG_(seginfo_syms_howmany) ( const SegInfo *si )
{
return si->symtab_used;
Index: coregrind/m_threadmodel.c
===================================================================
--- coregrind/m_threadmodel.c (revision 6012)
+++ coregrind/m_threadmodel.c (working copy)
@@ -807,7 +807,7 @@
if (mx->state == MX_Locked && mx->owner == tid) /* deadlock */
mutex_report(tid, mutexp, MXE_Deadlock, "trylocking");
- VG_TRACK( pre_mutex_lock, tid, (void *)mutexp );
+ VG_TRACK( pre_mutex_lock, tid, mutexp );
}
/* Give up waiting for a mutex. Fails if:
@@ -834,7 +834,7 @@
switch(mx->state) {
case MX_Unlocking: /* ownership transfer or relock */
- VG_TRACK( post_mutex_unlock, mx->owner, (void *)mutexp );
+ VG_TRACK( post_mutex_unlock, mx->owner, mutexp );
if (mx->owner != tid)
thread_unblock_mutex(tid, mx, "acquiring mutex");
break;
@@ -846,7 +846,7 @@
case MX_Locked:
if (debug_mutex)
VG_(printf)("mutex=%p mx->state=%s\n", mutexp, pp_mutexstate(mx));
- VG_TRACK( post_mutex_unlock, mx->owner, (void *)mutexp );
+ VG_TRACK( post_mutex_unlock, mx->owner, mutexp );
mutex_report(tid, mutexp, MXE_Locked, "acquiring");
thread_unblock_mutex(tid, mx, "acquiring mutex");
break;
@@ -859,7 +859,7 @@
mx->owner = tid;
mutex_setstate(tid, mx, MX_Locked);
- VG_TRACK( post_mutex_lock, tid, (void *)mutexp );
+ VG_TRACK( post_mutex_lock, tid, mutexp );
}
/* Try unlocking a lock. This will move it into a state where it can
@@ -968,7 +968,7 @@
case MX_Unlocking:
/* OK - we need to complete the unlock */
- VG_TRACK( post_mutex_unlock, tid, (void *)mutexp );
+ VG_TRACK( post_mutex_unlock, tid, mutexp );
mutex_setstate(tid, mx, MX_Free);
break;
Index: coregrind/m_scheduler/scheduler.c
===================================================================
--- coregrind/m_scheduler/scheduler.c (revision 6012)
+++ coregrind/m_scheduler/scheduler.c (working copy)
@@ -364,7 +364,10 @@
VG_(sigemptyset)(&VG_(threads)[tid].sig_mask);
VG_(sigemptyset)(&VG_(threads)[tid].tmp_sig_mask);
- os_state_clear(&VG_(threads)[tid]);
+ // Do NOT clear the OS state record here -- this data is still accessed
+ // after the thread exited from within vg_preloaded.c (pthread_join()
+ // wrapper).
+ // os_state_clear(&VG_(threads)[tid]);
/* start with no altstack */
VG_(threads)[tid].altstack.ss_sp = (void *)0xdeadbeef;
@@ -1215,6 +1218,72 @@
SET_CLREQ_RETVAL( tid, 0 ); /* return value is meaningless */
break; }
+ case VG_USERREQ__SET_PTHREAD_SELF: {
+ VG_(set_pthread_id)(VG_(get_running_tid)(), (PosixThreadId)(arg[1]));
+ break;
+ }
+
+ case VG_USERREQ__POST_PTHREAD_JOIN: {
+ ThreadId const joinee = VG_(get_thread_id)(arg[1]);
+ // VG_(printf)("joinee = %d -> %d\n", arg[1], joinee);
+ vg_assert(joinee);
+ VG_TRACK(post_thread_join,
+ VG_(get_running_tid)(),
+ joinee);
+ if (joinee)
+ {
+ ThreadState *tst;
+ tst = VG_(get_ThreadState)(joinee);
+ vg_assert(tst);
+ vg_assert(tst->status == VgTs_Zombie);
+ tst->status = VgTs_Empty;
+ }
+ break; }
+
+ case VG_USERREQ__POST_MUTEX_INIT:
+ VG_TRACK(post_mutex_init, VG_(get_running_tid)(), arg[1], arg[2]);
+ break;
+
+ case VG_USERREQ__PRE_MUTEX_DESTROY:
+ VG_TRACK(pre_mutex_destroy, VG_(get_running_tid)(), arg[1], arg[2]);
+ break;
+
+ case VG_USERREQ__PRE_PTHREAD_MUTEX_LOCK:
+ VG_TRACK(pre_mutex_lock, VG_(get_running_tid)(), arg[1]);
+ break;
+
+ case VG_USERREQ__POST_PTHREAD_MUTEX_LOCK:
+ VG_TRACK(post_mutex_lock, VG_(get_running_tid)(), arg[1]);
+ break;
+
+ case VG_USERREQ__PRE_PTHREAD_MUTEX_UNLOCK:
+ VG_TRACK(pre_mutex_unlock, VG_(get_running_tid)(), arg[1]);
+ break;
+
+ case VG_USERREQ__POST_PTHREAD_MUTEX_UNLOCK:
+ VG_TRACK(post_mutex_unlock, VG_(get_running_tid)(), arg[1]);
+ break;
+
+ case VG_USERREQ__POST_PTHREAD_COND_INIT:
+ VG_TRACK(post_cond_init,
+ VG_(get_running_tid)(), arg[1], arg[2]);
+ break;
+
+ case VG_USERREQ__PRE_PTHREAD_COND_DESTROY:
+ VG_TRACK(pre_cond_destroy,
+ VG_(get_running_tid)(), arg[1], arg[2]);
+ break;
+
+ case VG_USERREQ__PRE_PTHREAD_COND_WAIT:
+ VG_TRACK(pre_cond_wait,
+ VG_(get_running_tid)(), arg[1], arg[2]);
+ break;
+
+ case VG_USERREQ__POST_PTHREAD_COND_WAIT:
+ VG_TRACK(post_cond_wait,
+ VG_(get_running_tid)(), arg[1], arg[2]);
+ break;
+
case VG_USERREQ__GET_MALLOCFUNCS: {
struct vg_mallocfunc_info *info = (struct vg_mallocfunc_info *)arg[1];
@@ -1380,3 +1449,10 @@
/*--------------------------------------------------------------------*/
/*--- end ---*/
/*--------------------------------------------------------------------*/
+
+
+/*
+ * Local variables:
+ * c-basic-offset: 3
+ * End:
+ */
Index: coregrind/m_threadstate.c
===================================================================
--- coregrind/m_threadstate.c (revision 6012)
+++ coregrind/m_threadstate.c (working copy)
@@ -123,6 +123,41 @@
return VG_INVALID_THREADID;
}
+Int VG_(get_tid_lwp)(ThreadId const tid)
+{
+ vg_assert(1 <= tid && tid < VG_N_THREADS
+ && VG_(threads)[tid].status != VgTs_Empty);
+ return VG_(threads)[tid].os_state.lwpid;
+}
+
+ThreadId VG_(get_thread_id)(PosixThreadId const posixthreadid)
+{
+ ThreadId tid;
+ for(tid = 1; tid < VG_N_THREADS; tid++)
+ {
+ if (VG_(threads)[tid].status != VgTs_Empty
+ && VG_(threads)[tid].os_state.posixthreadid == posixthreadid)
+ {
+ return tid;
+ }
+ }
+ return VG_INVALID_THREADID;
+}
+
+PosixThreadId VG_(get_pthread_id)(ThreadId const tid)
+{
+ vg_assert(1 <= tid && tid < VG_N_THREADS
+ && VG_(threads)[tid].status != VgTs_Empty);
+ return VG_(threads)[tid].os_state.posixthreadid;
+}
+
+void VG_(set_pthread_id)(ThreadId const tid, PosixThreadId const posixthreadid)
+{
+ vg_assert(1 <= tid && tid < VG_N_THREADS
+ && VG_(threads)[tid].status != VgTs_Empty);
+ VG_(threads)[tid].os_state.posixthreadid = posixthreadid;
+}
+
/*--------------------------------------------------------------------*/
/*--- end ---*/
/*--------------------------------------------------------------------*/
Index: coregrind/pub_core_threadstate.h
===================================================================
--- coregrind/pub_core_threadstate.h (revision 6012)
+++ coregrind/pub_core_threadstate.h (working copy)
@@ -112,6 +112,7 @@
struct {
/* who we are */
Int lwpid; // PID of kernel task
+ PosixThreadId posixthreadid; // pthread_t, in case of a POSIX thread.
Int threadgroup; // thread group id
ThreadId parent; // parent tid (if any)
@@ -242,6 +243,14 @@
ThreadId */
extern ThreadId VG_(get_lwp_tid)(Int lwpid);
+ThreadId VG_(get_thread_id)(PosixThreadId const posixthreadid);
+
+PosixThreadId VG_(get_pthread_id)(ThreadId const tid);
+
+void VG_(set_pthread_id)(ThreadId const tid,
+ PosixThreadId const posixthreadid);
+
+
#endif // __PUB_CORE_THREADSTATE_H
/*--------------------------------------------------------------------*/

154
valgrind.changes Normal file
View File

@ -0,0 +1,154 @@
-------------------------------------------------------------------
Tue Oct 17 11:09:11 CEST 2006 - dmueller@suse.de
- disable omega plugin for ppc/ppc64
-------------------------------------------------------------------
Mon Oct 16 19:34:44 CEST 2006 - dmueller@suse.de
- update to 3.2 BRANCH:
* support glibc 2.5
* update suppressions
- add omega plugin
-------------------------------------------------------------------
Sat Sep 16 01:28:38 CEST 2006 - dmueller@suse.de
- update to 3.2.1:
* suppresion updates
-------------------------------------------------------------------
Fri Sep 15 14:09:05 CEST 2006 - dmueller@suse.de
- update to 3.2.1rc1:
* about 36 bugfixes
-------------------------------------------------------------------
Wed Sep 13 17:26:19 CEST 2006 - stbinner@suse.de
- fix build with < Factory
-------------------------------------------------------------------
Mon Aug 28 13:37:11 CEST 2006 - dmueller@suse.de
- fix suppressions
- update drd plugin
-------------------------------------------------------------------
Thu Aug 24 14:52:38 CEST 2006 - dmueller@suse.de
- add experimental drd plugin
- fix build on x86_64
-------------------------------------------------------------------
Wed Aug 2 14:47:08 CEST 2006 - dmueller@suse.de
- also fix multibyte NOP parsing for x86_64
-------------------------------------------------------------------
Tue Aug 1 03:18:28 CEST 2006 - dmueller@suse.de
- add patch to handle multibyte NOPs as generated by
recent binutils
-------------------------------------------------------------------
Wed Jun 7 11:26:29 CEST 2006 - dmueller@suse.de
- update to 3.2.0 final
* only marginal changes since rc1
-------------------------------------------------------------------
Tue May 30 16:23:03 CEST 2006 - dmueller@suse.de
- update to 3.2.0 rc1:
* ppc64 support
* callgrind now integrated part
* massive performance improvements
* lots of emulation fixlets
-------------------------------------------------------------------
Thu Mar 16 10:30:52 CET 2006 - dmueller@suse.de
- update to 3.1.1 (FATE #300493)
-------------------------------------------------------------------
Wed Mar 6 16:31:21 CET 2006 - dmueller@suse.de
- various updates from branch to fix PPC32 support
-------------------------------------------------------------------
Mon Feb 6 19:49:33 CET 2006 - dmueller@suse.de
- Fix GDB support
-------------------------------------------------------------------
Mon Feb 6 10:19:24 CET 2006 - dmueller@suse.de
- Reduce BuildRequires
-------------------------------------------------------------------
Wed Jan 25 21:42:29 CET 2006 - mls@suse.de
- converted neededforbuild to BuildRequires
-------------------------------------------------------------------
Wed Jan 4 15:43:14 CET 2006 - dmueller@suse.de
- update to 3.1 branch
-------------------------------------------------------------------
Fri Dec 9 19:08:38 CET 2005 - dmueller@suse.de
- fix strict-aliasing issue
-------------------------------------------------------------------
Mon Nov 28 11:13:31 CET 2005 - dmueller@suse.de
- 3.1.0 final update
-------------------------------------------------------------------
Mon Nov 21 10:53:55 CET 2005 - dmueller@suse.de
- 3.1.0 RC1 update
-------------------------------------------------------------------
Thu Nov 10 02:05:13 CET 2005 - dmueller@suse.de
- update to 3.1 SVN
-------------------------------------------------------------------
Tue Nov 8 18:29:27 CET 2005 - dmueller@suse.de
- add hack to make valgrind work with apps that require executable stack
-------------------------------------------------------------------
Thu Sep 15 12:26:01 CEST 2005 - dmueller@suse.de
- update 3.0.1 final
-------------------------------------------------------------------
Thu Aug 25 01:52:35 CEST 2005 - dmueller@suse.de
- make massif work again
-------------------------------------------------------------------
Sun Aug 21 03:36:37 CEST 2005 - dmueller@suse.de
- fix trace-children=yes failure
- add default suppressions for SL 10
-------------------------------------------------------------------
Mon Aug 15 02:42:20 CEST 2005 - dmueller@suse.de
- regenerate VEX offset headers, otherwise it just hangs
-------------------------------------------------------------------
Fri Aug 12 12:54:17 CEST 2005 - dmueller@suse.de
- update to 3.0 branch to make it work on non-SSE platforms (#104181)
-------------------------------------------------------------------
Fri Aug 5 15:14:00 CEST 2005 - dmueller@suse.de
- initial package of 3.0

181
valgrind.spec Normal file
View File

@ -0,0 +1,181 @@
#
# spec file for package valgrind (Version 3.2.1)
#
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# norootforbuild
Name: valgrind
BuildRequires: gcc-c++ glibc-devel-32bit xorg-x11-devel
%ifarch x86_64
%if %suse_version > 1010
BuildRequires: gcc41-32bit
%endif
%if %suse_version < 1010
BuildRequires: gcc-32bit glibc-32bit
%endif
%endif
URL: http://valgrind.org/
License: Other License(s), see package
Group: Development/Tools/Debuggers
Summary: Memory Management Debugger
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Version: 3.2.1
Release: 10
Source0: %{name}-%{version}.tar.bz2
# svn di svn://svn.valgrind.org/valgrind/tags/VALGRIND_3_2_1 svn://svn.valgrind.org/valgrind/branches/VALGRIND_3_2_BRANCH > 3_2_BRANCH.diff
# svn di svn://svn.valgrind.org/vex/tags/VEX_3_2_1 svn://svn.valgrind.org/vex/branches/VEX_3_2_BRANCH > VEX_3_2_BRANCH.diff
Patch0: 3_2_BRANCH.diff
#Patch1: VEX_3_1_BRANCH.diff
Source1: valgrind-6012-drd-2006-08-26.tar.bz2
Patch3: valgrind-6012.patch
Patch4: drd-fixes.diff
Patch5: omega_RC_01.patch
Provides: callgrind
Obsoletes: callgrind
ExclusiveArch: %ix86 x86_64 ppc ppc64
%description
Valgrind checks all memory operations in an application, like read,
write, malloc, new, free, and delete. Valgrind can find uses of
uninitialized memory, access to already freed memory, overflows,
illegal stack operations, memory leaks, and any illegal
new/malloc/free/delete commands. Another program in the package is
"cachegrind," a profiler based on the valgrind engine.
To use valgrind you should compile your application with "-g -O0"
compiler options. Afterwards you can use it with:
valgrind --tool=memcheck --sloppy-malloc=yes --leak-check=yes
--db-attach=yes my_application, for example.
More valgrind options can be listed via "valgrind --help". There is
also complete documentation in the /usr/share/doc/packages/valgrind/
directory. A debugged application runs slower and needs much more
memory, but is usually still usable. Valgrind is still in development,
but it has been successfully used to optimize several KDE applications.
Authors:
--------
Julian Seward <jseward@acm.org>
Cerion Armour-Brown
Jeremy Fitzhardinge
Tom Hughes
Nicholas Nethercote
Paul Mackerras
Dirk Mueller
Robert Walsh
%prep
%setup -q -n %{name}-%{version}
%patch
cd VEX
#%patch1
cd ..
tar xf %SOURCE1
#%patch3
%patch4
%ifarch %ix86 x86_64
%patch5
%endif
%build
export CFLAGS="$RPM_OPT_FLAGS"
export CXXFLAGS="$RPM_OPT_FLAGS"
autoreconf -fi
export GDB=/usr/bin/gdb
%configure
make %{?jobs:-j%jobs}
%install
make DESTDIR=$RPM_BUILD_ROOT install
mkdir -p $RPM_BUILD_ROOT/usr/share/doc/packages
mv $RPM_BUILD_ROOT/usr/share/doc/valgrind $RPM_BUILD_ROOT/usr/share/doc/packages
%files
%defattr(-,root,root)
%doc README* NEWS ACKNOWLEDGEMENTS AUTHORS COPYING
/usr/bin/*
/usr/include/valgrind
/usr/%_lib/pkgconfig/valgrind.pc
%_libdir/valgrind
%doc %_mandir/*/*
%changelog -n valgrind
* Tue Oct 17 2006 - dmueller@suse.de
- disable omega plugin for ppc/ppc64
* Mon Oct 16 2006 - dmueller@suse.de
- update to 3.2 BRANCH:
* support glibc 2.5
* update suppressions
- add omega plugin
* Sat Sep 16 2006 - dmueller@suse.de
- update to 3.2.1:
* suppresion updates
* Fri Sep 15 2006 - dmueller@suse.de
- update to 3.2.1rc1:
* about 36 bugfixes
* Wed Sep 13 2006 - stbinner@suse.de
- fix build with < Factory
* Mon Aug 28 2006 - dmueller@suse.de
- fix suppressions
- update drd plugin
* Thu Aug 24 2006 - dmueller@suse.de
- add experimental drd plugin
- fix build on x86_64
* Wed Aug 02 2006 - dmueller@suse.de
- also fix multibyte NOP parsing for x86_64
* Tue Aug 01 2006 - dmueller@suse.de
- add patch to handle multibyte NOPs as generated by
recent binutils
* Wed Jun 07 2006 - dmueller@suse.de
- update to 3.2.0 final
* only marginal changes since rc1
* Tue May 30 2006 - dmueller@suse.de
- update to 3.2.0 rc1:
* ppc64 support
* callgrind now integrated part
* massive performance improvements
* lots of emulation fixlets
* Thu Mar 16 2006 - dmueller@suse.de
- update to 3.1.1 (FATE #300493)
* Mon Mar 06 2006 - dmueller@suse.de
- various updates from branch to fix PPC32 support
* Mon Feb 06 2006 - dmueller@suse.de
- Fix GDB support
* Mon Feb 06 2006 - dmueller@suse.de
- Reduce BuildRequires
* Wed Jan 25 2006 - mls@suse.de
- converted neededforbuild to BuildRequires
* Wed Jan 04 2006 - dmueller@suse.de
- update to 3.1 branch
* Fri Dec 09 2005 - dmueller@suse.de
- fix strict-aliasing issue
* Mon Nov 28 2005 - dmueller@suse.de
- 3.1.0 final update
* Mon Nov 21 2005 - dmueller@suse.de
- 3.1.0 RC1 update
* Thu Nov 10 2005 - dmueller@suse.de
- update to 3.1 SVN
* Tue Nov 08 2005 - dmueller@suse.de
- add hack to make valgrind work with apps that require executable stack
* Thu Sep 15 2005 - dmueller@suse.de
- update 3.0.1 final
* Thu Aug 25 2005 - dmueller@suse.de
- make massif work again
* Sun Aug 21 2005 - dmueller@suse.de
- fix trace-children=yes failure
- add default suppressions for SL 10
* Mon Aug 15 2005 - dmueller@suse.de
- regenerate VEX offset headers, otherwise it just hangs
* Fri Aug 12 2005 - dmueller@suse.de
- update to 3.0 branch to make it work on non-SSE platforms (#104181)
* Fri Aug 05 2005 - dmueller@suse.de
- initial package of 3.0