You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
1
(25) |
2
(25) |
3
(5) |
4
(13) |
|
5
(4) |
6
(8) |
7
(6) |
8
|
9
(10) |
10
(15) |
11
(9) |
|
12
(14) |
13
(10) |
14
(24) |
15
(41) |
16
(13) |
17
(9) |
18
(3) |
|
19
(10) |
20
(11) |
21
(28) |
22
(36) |
23
(52) |
24
(36) |
25
(12) |
|
26
(31) |
27
(27) |
28
(20) |
29
(15) |
30
(22) |
31
(17) |
|
|
From: <sv...@va...> - 2009-07-31 19:00:20
|
Author: bart Date: 2009-07-31 20:00:05 +0100 (Fri, 31 Jul 2009) New Revision: 10683 Log: Reverted to r10509. Modified: trunk/drd/tests/thread_name.stderr.exp Modified: trunk/drd/tests/thread_name.stderr.exp =================================================================== --- trunk/drd/tests/thread_name.stderr.exp 2009-07-31 18:49:29 UTC (rev 10682) +++ trunk/drd/tests/thread_name.stderr.exp 2009-07-31 19:00:05 UTC (rev 10683) @@ -11,28 +11,82 @@ thread_func instance 2 +Thread 3 (thread_func instance 2): +The object at address 0x........ is not a mutex. + at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?) + by 0x........: thread_func (thread_name.c:?) + by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) + thread_func instance 3 +Thread 4 (thread_func instance 3): +The object at address 0x........ is not a mutex. + at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?) + by 0x........: thread_func (thread_name.c:?) + by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) + thread_func instance 4 +Thread 5 (thread_func instance 4): +The object at address 0x........ is not a mutex. + at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?) + by 0x........: thread_func (thread_name.c:?) + by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) + thread_func instance 5 +Thread 6 (thread_func instance 5): +The object at address 0x........ is not a mutex. + at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?) + by 0x........: thread_func (thread_name.c:?) + by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) + thread_func instance 6 +Thread 7 (thread_func instance 6): +The object at address 0x........ is not a mutex. + at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?) + by 0x........: thread_func (thread_name.c:?) + by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) + thread_func instance 7 +Thread 8 (thread_func instance 7): +The object at address 0x........ is not a mutex. + at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?) + by 0x........: thread_func (thread_name.c:?) + by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) + thread_func instance 8 +Thread 9 (thread_func instance 8): +The object at address 0x........ is not a mutex. + at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?) + by 0x........: thread_func (thread_name.c:?) + by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) + thread_func instance 9 +Thread 10 (thread_func instance 9): +The object at address 0x........ is not a mutex. + at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?) + by 0x........: thread_func (thread_name.c:?) + by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) + thread_func instance 10 -ERROR SUMMARY: 10 errors from 1 contexts (suppressed: 0 from 0) +Thread 11 (thread_func instance 10): +The object at address 0x........ is not a mutex. + at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?) + by 0x........: thread_func (thread_name.c:?) + by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) + +ERROR SUMMARY: 10 errors from 10 contexts (suppressed: 0 from 0) |
|
From: <sv...@va...> - 2009-07-31 18:49:42
|
Author: bart Date: 2009-07-31 19:49:29 +0100 (Fri, 31 Jul 2009) New Revision: 10682 Log: Added an output variant for the pth_cancel_locked regression test. Apparently when canceling a thread waiting inside pthread_cond_wait() on Linux the specified mutex is left unlocked while on Darwin the mutex specified in the pthread_cond_wait() call is reacquired before the thread is terminated. Added: trunk/drd/tests/pth_cancel_locked.stderr.exp-darwin Modified: trunk/drd/tests/Makefile.am Modified: trunk/drd/tests/Makefile.am =================================================================== --- trunk/drd/tests/Makefile.am 2009-07-31 18:45:49 UTC (rev 10681) +++ trunk/drd/tests/Makefile.am 2009-07-31 18:49:29 UTC (rev 10682) @@ -97,6 +97,7 @@ pth_broadcast.stderr.exp \ pth_broadcast.vgtest \ pth_cancel_locked.stderr.exp \ + pth_cancel_locked.stderr.exp-darwin \ pth_cancel_locked.vgtest \ pth_cleanup_handler.stderr.exp \ pth_cleanup_handler.vgtest \ Added: trunk/drd/tests/pth_cancel_locked.stderr.exp-darwin =================================================================== --- trunk/drd/tests/pth_cancel_locked.stderr.exp-darwin (rev 0) +++ trunk/drd/tests/pth_cancel_locked.stderr.exp-darwin 2009-07-31 18:49:29 UTC (rev 10682) @@ -0,0 +1,17 @@ + +Mutex still locked at thread exit: mutex 0x........, recursion count 1, owner 2. + at 0x........: pthread_join (drd_pthread_intercepts.c:?) + by 0x........: main (pth_cancel_locked.c:?) +mutex 0x........ was first observed at: + at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) + by 0x........: main (pth_cancel_locked.c:?) + +Mutex still locked at thread exit: mutex 0x........, recursion count 1, owner 2. + at 0x........: pthread_join (drd_pthread_intercepts.c:?) + by 0x........: main (pth_cancel_locked.c:?) +mutex 0x........ was first observed at: + at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) + by 0x........: main (pth_cancel_locked.c:?) +Test finished. + +ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0) |
|
From: <sv...@va...> - 2009-07-31 18:46:10
|
Author: bart
Date: 2009-07-31 19:45:49 +0100 (Fri, 31 Jul 2009)
New Revision: 10681
Log:
Report mutex errors for each different mutex even if the call stacks are identical.
Modified:
trunk/drd/drd_error.c
Modified: trunk/drd/drd_error.c
===================================================================
--- trunk/drd/drd_error.c 2009-07-31 17:59:28 UTC (rev 10680)
+++ trunk/drd/drd_error.c 2009-07-31 18:45:49 UTC (rev 10681)
@@ -207,6 +207,12 @@
return dri1->access_type == dri2->access_type
&& dri1->size == dri2->size;
}
+ case MutexErr:
+ {
+ const MutexErrInfo* const mei1 = VG_(get_error_extra)(e1);
+ const MutexErrInfo* const mei2 = VG_(get_error_extra)(e2);
+ return mei1->mutex == mei2->mutex;
+ }
default:
return True;
}
|
|
From: <sv...@va...> - 2009-07-31 17:59:37
|
Author: bart Date: 2009-07-31 18:59:28 +0100 (Fri, 31 Jul 2009) New Revision: 10680 Log: Builds again on Darwin. Modified: trunk/drd/drd_pthread_intercepts.c Modified: trunk/drd/drd_pthread_intercepts.c =================================================================== --- trunk/drd/drd_pthread_intercepts.c 2009-07-31 17:31:44 UTC (rev 10679) +++ trunk/drd/drd_pthread_intercepts.c 2009-07-31 17:59:28 UTC (rev 10680) @@ -110,7 +110,7 @@ * happen, even when compiling with optimization disabled. */ #undef __always_inline /* since already defined in <cdefs.h> */ -#if __GNUC_PREREQ (3,2) +#if __GNUC__ > 3 || __GNUC__ == 3 && __GNUC_MINOR__ >= 2 #define __always_inline __inline__ __attribute__((always_inline)) #else #define __always_inline __inline__ |
|
From: <sv...@va...> - 2009-07-31 17:31:59
|
Author: bart
Date: 2009-07-31 18:31:44 +0100 (Fri, 31 Jul 2009)
New Revision: 10679
Log:
Implemented a more systematic approach for intercepting POSIX threads
functions: for each function name to intercept, intercept the function
name itself, the function name with @* appended (versioned symbols on
Linux) and the function name with $* appended (versioned symbols on
Darwin). Updated filter_stderr such that symbol versions are removed.
Updated the expected output files that contain names of intercepted
functions.
Modified:
trunk/drd/drd_pthread_intercepts.c
trunk/drd/tests/filter_stderr
trunk/drd/tests/hold_lock_1.stderr.exp
trunk/drd/tests/hold_lock_2.stderr.exp
trunk/drd/tests/pth_cancel_locked.stderr.exp
trunk/drd/tests/pth_cond_race.stderr.exp
trunk/drd/tests/pth_inconsistent_cond_wait.stderr.exp1
trunk/drd/tests/pth_inconsistent_cond_wait.stderr.exp2
trunk/drd/tests/rwlock_type_checking.stderr.exp
trunk/drd/tests/tc12_rwl_trivial.stderr.exp
trunk/drd/tests/tc18_semabuse.stderr.exp
trunk/drd/tests/tc20_verifywrap.stderr.exp-glibc2.3
trunk/drd/tests/tc20_verifywrap.stderr.exp-glibc2.5
trunk/drd/tests/tc20_verifywrap.stderr.exp-glibc2.5-ppc
trunk/drd/tests/tc20_verifywrap.stderr.exp-glibc2.8
trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3
trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b
trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5
trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc
trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8
trunk/drd/tests/tc22_exit_w_lock.stderr.exp-32bit
trunk/drd/tests/tc22_exit_w_lock.stderr.exp-64bit
trunk/drd/tests/tc23_bogus_condwait.stderr.exp-darwin
trunk/drd/tests/tc23_bogus_condwait.stderr.exp-linux-x86
trunk/drd/tests/trylock.stderr.exp
Modified: trunk/drd/drd_pthread_intercepts.c
===================================================================
--- trunk/drd/drd_pthread_intercepts.c 2009-07-31 09:41:29 UTC (rev 10678)
+++ trunk/drd/drd_pthread_intercepts.c 2009-07-31 17:31:44 UTC (rev 10679)
@@ -78,11 +78,44 @@
#define WAIT_UNTIL_CREATED_THREAD_STARTED
#define ALLOCATE_THREAD_ARGS_ON_THE_STACK
-#define PTH_FUNC(ret_ty, f, args...) \
- ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args); \
- ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args)
+/**
+ * Macro for generating a Valgrind interception function.
+ * @param[in] ret_ty Return type of the function to be generated.
+ * @param[in] zf Z-encoded name of the interception function.
+ * @param[in] implf Name of the function that implements the intercept.
+ * @param[in] arg_decl Argument declaration list enclosed in parentheses.
+ * @param[in] argl Argument list enclosed in parentheses.
+ */
+#define PTH_FUNC(ret_ty, zf, implf, argl_decl, argl) \
+ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl; \
+ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl \
+ { return implf argl; }
+/**
+ * Macro for generating three Valgrind interception functions: one with the
+ * Z-encoded name zf, one with ZAZa ("@*") appended to the name zf and one
+ * with ZDZa ("$*") appended to the name zf. The second generated interception
+ * function will intercept versioned symbols on Linux, and the third will
+ * intercept versioned symbols on Darwin.
+ */
+#define PTH_FUNCS(ret_ty, zf, implf, argl_decl, argl) \
+ PTH_FUNC(ret_ty, zf, implf, argl_decl, argl); \
+ PTH_FUNC(ret_ty, zf ## ZAZa, implf, argl_decl, argl); \
+ PTH_FUNC(ret_ty, zf ## ZDZa, implf, argl_decl, argl);
+/*
+ * Not inlining one of the intercept functions will cause the regression
+ * tests to fail because this would cause an additional stackfram to appear
+ * in the output. The __always_inline macro guarantees that inlining will
+ * happen, even when compiling with optimization disabled.
+ */
+#undef __always_inline /* since already defined in <cdefs.h> */
+#if __GNUC_PREREQ (3,2)
+#define __always_inline __inline__ __attribute__((always_inline))
+#else
+#define __always_inline __inline__
+#endif
+
/* Local data structures. */
typedef struct
@@ -161,7 +194,7 @@
* higher bits for flags like PTHREAD_MUTEXATTR_FLAG_ROBUST and
* PTHREAD_MUTEXATTR_FLAG_PSHARED.
*/
-static __inline__ MutexT DRD_(mutex_type)(pthread_mutex_t* mutex)
+static __always_inline MutexT DRD_(mutex_type)(pthread_mutex_t* mutex)
{
#if defined(HAVE_PTHREAD_MUTEX_T__M_KIND)
/* glibc + LinuxThreads. */
@@ -192,7 +225,7 @@
}
/** Tell DRD that the calling thread is about to enter pthread_create(). */
-static __inline__ void DRD_(entering_pthread_create)(void)
+static __always_inline void DRD_(entering_pthread_create)(void)
{
int res;
VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__ENTERING_PTHREAD_CREATE,
@@ -200,7 +233,7 @@
}
/** Tell DRD that the calling thread has left pthread_create(). */
-static __inline__ void DRD_(left_pthread_create)(void)
+static __always_inline void DRD_(left_pthread_create)(void)
{
int res;
VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__LEFT_PTHREAD_CREATE,
@@ -328,10 +361,9 @@
* glibc-2.9/nptl/pthread_create.c.
*/
-// pthread_create
-PTH_FUNC(int, pthreadZucreateZa, // pthread_create*
- pthread_t *thread, const pthread_attr_t *attr,
- void *(*start) (void *), void *arg)
+static __always_inline
+int pthread_create_intercept(pthread_t* thread, const pthread_attr_t* attr,
+ void* (*start)(void*), void* arg)
{
int res;
int ret;
@@ -404,9 +436,13 @@
return ret;
}
-// pthread_join
-PTH_FUNC(int, pthreadZujoinZa, // pthread_join*
- pthread_t pt_joinee, void **thread_return)
+PTH_FUNCS(int, pthreadZucreate, pthread_create_intercept,
+ (pthread_t *thread, const pthread_attr_t *attr,
+ void *(*start) (void *), void *arg),
+ (thread, attr, start, arg));
+
+static __always_inline
+int pthread_join_intercept(pthread_t pt_joinee, void **thread_return)
{
int ret;
int res;
@@ -422,8 +458,12 @@
return ret;
}
-// pthread_detach
-PTH_FUNC(int, pthreadZudetach, pthread_t pt_thread)
+PTH_FUNCS(int, pthreadZujoin, pthread_join_intercept,
+ (pthread_t pt_joinee, void **thread_return),
+ (pt_joinee, thread_return));
+
+static __always_inline
+int pthread_detach_intercept(pthread_t pt_thread)
{
int ret;
OrigFn fn;
@@ -438,9 +478,14 @@
return ret;
}
-// pthread_cancel
-// Note: make sure not to intercept pthread_cancel_init() on Linux !
-PTH_FUNC(int, pthreadZucancel, pthread_t pt_thread)
+PTH_FUNCS(int, pthreadZudetach, pthread_detach_intercept,
+ (pthread_t thread), (thread));
+
+// NOTE: be careful to intercept only pthread_cancel() and not
+// pthread_cancel_init() on Linux.
+
+static __always_inline
+int pthread_cancel_intercept(pthread_t pt_thread)
{
int res;
int ret;
@@ -454,9 +499,12 @@
return ret;
}
-// pthread_once
-PTH_FUNC(int, pthreadZuonceZa, // pthread_once*
- pthread_once_t *once_control, void (*init_routine)(void))
+PTH_FUNCS(int, pthreadZucancel, pthread_cancel_intercept,
+ (pthread_t thread), (thread))
+
+static __always_inline
+int pthread_once_intercept(pthread_once_t *once_control,
+ void (*init_routine)(void))
{
int ret;
OrigFn fn;
@@ -472,10 +520,13 @@
return ret;
}
-// pthread_mutex_init
-PTH_FUNC(int, pthreadZumutexZuinit,
- pthread_mutex_t *mutex,
- const pthread_mutexattr_t* attr)
+PTH_FUNCS(int, pthreadZuonce, pthread_once_intercept,
+ (pthread_once_t *once_control, void (*init_routine)(void)),
+ (once_control, init_routine));
+
+static __always_inline
+int pthread_mutex_init_intercept(pthread_mutex_t *mutex,
+ const pthread_mutexattr_t* attr)
{
int ret;
int res;
@@ -494,9 +545,12 @@
return ret;
}
-// pthread_mutex_destroy
-PTH_FUNC(int, pthreadZumutexZudestroy,
- pthread_mutex_t *mutex)
+PTH_FUNCS(int, pthreadZumutexZuinit, pthread_mutex_init_intercept,
+ (pthread_mutex_t *mutex, const pthread_mutexattr_t* attr),
+ (mutex, attr));
+
+static __always_inline
+int pthread_mutex_destroy_intercept(pthread_mutex_t* mutex)
{
int ret;
int res;
@@ -510,9 +564,11 @@
return ret;
}
-// pthread_mutex_lock
-PTH_FUNC(int, pthreadZumutexZulock, // pthread_mutex_lock
- pthread_mutex_t *mutex)
+PTH_FUNCS(int, pthreadZumutexZudestroy, pthread_mutex_destroy_intercept,
+ (pthread_mutex_t *mutex), (mutex));
+
+static __always_inline
+int pthread_mutex_lock_intercept(pthread_mutex_t* mutex)
{
int ret;
int res;
@@ -526,9 +582,11 @@
return ret;
}
-// pthread_mutex_trylock
-PTH_FUNC(int, pthreadZumutexZutrylock, // pthread_mutex_trylock
- pthread_mutex_t *mutex)
+PTH_FUNCS(int, pthreadZumutexZulock, pthread_mutex_lock_intercept,
+ (pthread_mutex_t *mutex), (mutex));
+
+static __always_inline
+int pthread_mutex_trylock_intercept(pthread_mutex_t* mutex)
{
int ret;
int res;
@@ -542,10 +600,12 @@
return ret;
}
-// pthread_mutex_timedlock
-PTH_FUNC(int, pthreadZumutexZutimedlock, // pthread_mutex_timedlock
- pthread_mutex_t *mutex,
- const struct timespec *abs_timeout)
+PTH_FUNCS(int, pthreadZumutexZutrylock, pthread_mutex_trylock_intercept,
+ (pthread_mutex_t *mutex), (mutex));
+
+static __always_inline
+int pthread_mutex_timedlock_intercept(pthread_mutex_t *mutex,
+ const struct timespec *abs_timeout)
{
int ret;
int res;
@@ -559,9 +619,12 @@
return ret;
}
-// pthread_mutex_unlock
-PTH_FUNC(int, pthreadZumutexZuunlock, // pthread_mutex_unlock
- pthread_mutex_t *mutex)
+PTH_FUNCS(int, pthreadZumutexZutimedlock, pthread_mutex_timedlock_intercept,
+ (pthread_mutex_t *mutex, const struct timespec *abs_timeout),
+ (mutex, abs_timeout));
+
+static __always_inline
+int pthread_mutex_unlock_intercept(pthread_mutex_t *mutex)
{
int ret;
int res;
@@ -577,10 +640,12 @@
return ret;
}
-// pthread_cond_init
-PTH_FUNC(int, pthreadZucondZuinitZa, // pthread_cond_init*
- pthread_cond_t* cond,
- const pthread_condattr_t* attr)
+PTH_FUNCS(int, pthreadZumutexZuunlock, pthread_mutex_unlock_intercept,
+ (pthread_mutex_t *mutex), (mutex));
+
+static __always_inline
+int pthread_cond_init_intercept(pthread_cond_t* cond,
+ const pthread_condattr_t* attr)
{
int ret;
int res;
@@ -594,9 +659,12 @@
return ret;
}
-// pthread_cond_destroy
-PTH_FUNC(int, pthreadZucondZudestroyZa, // pthread_cond_destroy*
- pthread_cond_t* cond)
+PTH_FUNCS(int, pthreadZucondZuinit, pthread_cond_init_intercept,
+ (pthread_cond_t* cond, const pthread_condattr_t* attr),
+ (cond, attr));
+
+static __always_inline
+int pthread_cond_destroy_intercept(pthread_cond_t* cond)
{
int ret;
int res;
@@ -610,10 +678,11 @@
return ret;
}
-// pthread_cond_wait
-PTH_FUNC(int, pthreadZucondZuwaitZa, // pthread_cond_wait*
- pthread_cond_t *cond,
- pthread_mutex_t *mutex)
+PTH_FUNCS(int, pthreadZucondZudestroy, pthread_cond_destroy_intercept,
+ (pthread_cond_t* cond), (cond));
+
+static __always_inline
+int pthread_cond_wait_intercept(pthread_cond_t *cond, pthread_mutex_t *mutex)
{
int ret;
int res;
@@ -627,11 +696,14 @@
return ret;
}
-// pthread_cond_timedwait
-PTH_FUNC(int, pthreadZucondZutimedwaitZa, // pthread_cond_timedwait*
- pthread_cond_t *cond,
- pthread_mutex_t *mutex,
- const struct timespec* abstime)
+PTH_FUNCS(int, pthreadZucondZuwait, pthread_cond_wait_intercept,
+ (pthread_cond_t *cond, pthread_mutex_t *mutex),
+ (cond, mutex));
+
+static __always_inline
+int pthread_cond_timedwait_intercept(pthread_cond_t *cond,
+ pthread_mutex_t *mutex,
+ const struct timespec* abstime)
{
int ret;
int res;
@@ -645,15 +717,19 @@
return ret;
}
+PTH_FUNCS(int, pthreadZucondZutimedwait, pthread_cond_timedwait_intercept,
+ (pthread_cond_t *cond, pthread_mutex_t *mutex,
+ const struct timespec* abstime),
+ (cond, mutex, abstime));
+
// NOTE: be careful to intercept only pthread_cond_signal() and not Darwin's
// pthread_cond_signal_thread_np(). The former accepts one argument; the latter
// two. Intercepting all pthread_cond_signal* functions will cause only one
// argument to be passed to pthread_cond_signal_np() and hence will cause this
// last function to crash.
-// pthread_cond_signal
-PTH_FUNC(int, pthreadZucondZusignal, // pthread_cond_signal
- pthread_cond_t* cond)
+static __always_inline
+int pthread_cond_signal_intercept(pthread_cond_t* cond)
{
int ret;
int res;
@@ -667,24 +743,11 @@
return ret;
}
-PTH_FUNC(int, pthreadZucondZusignalZAZa, // pthread_cond_signal@*
- pthread_cond_t* cond)
-{
- int ret;
- int res;
- OrigFn fn;
- VALGRIND_GET_ORIG_FN(fn);
- VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_COND_SIGNAL,
- cond, 0, 0, 0, 0);
- CALL_FN_W_W(ret, fn, cond);
- VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_COND_SIGNAL,
- cond, 0, 0, 0, 0);
- return ret;
-}
+PTH_FUNCS(int, pthreadZucondZusignal, pthread_cond_signal_intercept,
+ (pthread_cond_t* cond), (cond));
-// pthread_cond_broadcast
-PTH_FUNC(int, pthreadZucondZubroadcastZa, // pthread_cond_broadcast*
- pthread_cond_t* cond)
+static __always_inline
+int pthread_cond_broadcast_intercept(pthread_cond_t* cond)
{
int ret;
int res;
@@ -698,12 +761,12 @@
return ret;
}
+PTH_FUNCS(int, pthreadZucondZubroadcast, pthread_cond_broadcast_intercept,
+ (pthread_cond_t* cond), (cond));
#if defined(HAVE_PTHREAD_SPIN_LOCK)
-// pthread_spin_init
-PTH_FUNC(int, pthreadZuspinZuinit, // pthread_spin_init
- pthread_spinlock_t *spinlock,
- int pshared)
+static __always_inline
+int pthread_spin_init_intercept(pthread_spinlock_t *spinlock, int pshared)
{
int ret;
int res;
@@ -717,9 +780,11 @@
return ret;
}
-// pthread_spin_destroy
-PTH_FUNC(int, pthreadZuspinZudestroy, // pthread_spin_destroy
- pthread_spinlock_t *spinlock)
+PTH_FUNCS(int, pthreadZuspinZuinit, pthread_spin_init_intercept,
+ (pthread_spinlock_t *spinlock, int pshared), (spinlock, pshared));
+
+static __always_inline
+int pthread_spin_destroy_intercept(pthread_spinlock_t *spinlock)
{
int ret;
int res;
@@ -733,9 +798,11 @@
return ret;
}
-// pthread_spin_lock
-PTH_FUNC(int, pthreadZuspinZulock, // pthread_spin_lock
- pthread_spinlock_t *spinlock)
+PTH_FUNCS(int, pthreadZuspinZudestroy, pthread_spin_destroy_intercept,
+ (pthread_spinlock_t *spinlock), (spinlock));
+
+static __always_inline
+int pthread_spin_lock_intercept(pthread_spinlock_t *spinlock)
{
int ret;
int res;
@@ -749,9 +816,11 @@
return ret;
}
-// pthread_spin_trylock
-PTH_FUNC(int, pthreadZuspinZutrylock, // pthread_spin_trylock
- pthread_spinlock_t *spinlock)
+PTH_FUNCS(int, pthreadZuspinZulock, pthread_spin_lock_intercept,
+ (pthread_spinlock_t *spinlock), (spinlock));
+
+static __always_inline
+int pthread_spin_trylock_intercept(pthread_spinlock_t *spinlock)
{
int ret;
int res;
@@ -765,9 +834,11 @@
return ret;
}
-// pthread_spin_unlock
-PTH_FUNC(int, pthreadZuspinZuunlock, // pthread_spin_unlock
- pthread_spinlock_t *spinlock)
+PTH_FUNCS(int, pthreadZuspinZutrylock, pthread_spin_trylock_intercept,
+ (pthread_spinlock_t *spinlock), (spinlock));
+
+static __always_inline
+int pthread_spin_unlock_intercept(pthread_spinlock_t *spinlock)
{
int ret;
int res;
@@ -780,15 +851,17 @@
spinlock, 0, 0, 0, 0);
return ret;
}
+
+PTH_FUNCS(int, pthreadZuspinZuunlock, pthread_spin_unlock_intercept,
+ (pthread_spinlock_t *spinlock), (spinlock));
#endif // HAVE_PTHREAD_SPIN_LOCK
#if defined(HAVE_PTHREAD_BARRIER_INIT)
-// pthread_barrier_init
-PTH_FUNC(int, pthreadZubarrierZuinit, // pthread_barrier_init
- pthread_barrier_t* barrier,
- const pthread_barrierattr_t* attr,
- unsigned count)
+static __always_inline
+int pthread_barrier_init_intercept(pthread_barrier_t* barrier,
+ const pthread_barrierattr_t* attr,
+ unsigned count)
{
int ret;
int res;
@@ -802,9 +875,12 @@
return ret;
}
-// pthread_barrier_destroy
-PTH_FUNC(int, pthreadZubarrierZudestroy, // pthread_barrier_destroy
- pthread_barrier_t* barrier)
+PTH_FUNCS(int, pthreadZubarrierZuinit, pthread_barrier_init_intercept,
+ (pthread_barrier_t* barrier, const pthread_barrierattr_t* attr,
+ unsigned count), (barrier, attr, count));
+
+static __always_inline
+int pthread_barrier_destroy_intercept(pthread_barrier_t* barrier)
{
int ret;
int res;
@@ -818,9 +894,11 @@
return ret;
}
-// pthread_barrier_wait
-PTH_FUNC(int, pthreadZubarrierZuwait, // pthread_barrier_wait
- pthread_barrier_t* barrier)
+PTH_FUNCS(int, pthreadZubarrierZudestroy, pthread_barrier_destroy_intercept,
+ (pthread_barrier_t* barrier), (barrier));
+
+static __always_inline
+int pthread_barrier_wait_intercept(pthread_barrier_t* barrier)
{
int ret;
int res;
@@ -835,14 +913,14 @@
ret == PTHREAD_BARRIER_SERIAL_THREAD, 0);
return ret;
}
+
+PTH_FUNCS(int, pthreadZubarrierZuwait, pthread_barrier_wait_intercept,
+ (pthread_barrier_t* barrier), (barrier));
#endif // HAVE_PTHREAD_BARRIER_INIT
-// sem_init
-PTH_FUNC(int, semZuinitZa, // sem_init*
- sem_t *sem,
- int pshared,
- unsigned int value)
+static __always_inline
+int sem_init_intercept(sem_t *sem, int pshared, unsigned int value)
{
int ret;
int res;
@@ -856,9 +934,11 @@
return ret;
}
-// sem_destroy
-PTH_FUNC(int, semZudestroyZa, // sem_destroy*
- sem_t *sem)
+PTH_FUNCS(int, semZuinit, sem_init_intercept,
+ (sem_t *sem, int pshared, unsigned int value), (sem, pshared, value));
+
+static __always_inline
+int sem_destroy_intercept(sem_t *sem)
{
int ret;
int res;
@@ -872,9 +952,11 @@
return ret;
}
-// sem_open
-PTH_FUNC(sem_t *, semZuopen, // sem_open
- const char *name, int oflag, mode_t mode, unsigned int value)
+PTH_FUNCS(int, semZudestroy, sem_destroy_intercept, (sem_t *sem), (sem));
+
+static __always_inline
+sem_t* sem_open_intercept(const char *name, int oflag, mode_t mode,
+ unsigned int value)
{
sem_t *ret;
int res;
@@ -889,9 +971,11 @@
return ret;
}
-// sem_close
-PTH_FUNC(int, semZuclose, // sem_close
- sem_t *sem)
+PTH_FUNCS(sem_t *, semZuopen, sem_open_intercept,
+ (const char *name, int oflag, mode_t mode, unsigned int value),
+ (name, oflag, mode, value));
+
+static __always_inline int sem_close_intercept(sem_t *sem)
{
int ret;
int res;
@@ -905,9 +989,9 @@
return ret;
}
-// sem_wait
-PTH_FUNC(int, semZuwaitZa, // sem_wait*
- sem_t *sem)
+PTH_FUNCS(int, semZuclose, sem_close_intercept, (sem_t *sem), (sem));
+
+static __always_inline int sem_wait_intercept(sem_t *sem)
{
int ret;
int res;
@@ -921,9 +1005,9 @@
return ret;
}
-// sem_trywait
-PTH_FUNC(int, semZutrywaitZa, // sem_trywait*
- sem_t *sem)
+PTH_FUNCS(int, semZuwait, sem_wait_intercept, (sem_t *sem), (sem));
+
+static __always_inline int sem_trywait_intercept(sem_t *sem)
{
int ret;
int res;
@@ -937,9 +1021,10 @@
return ret;
}
-// sem_timedwait
-PTH_FUNC(int, semZutimedwait, // sem_timedwait
- sem_t *sem, const struct timespec *abs_timeout)
+PTH_FUNCS(int, semZutrywait, sem_trywait_intercept, (sem_t *sem), (sem));
+
+static __always_inline
+int sem_timedwait_intercept(sem_t *sem, const struct timespec *abs_timeout)
{
int ret;
int res;
@@ -953,9 +1038,11 @@
return ret;
}
-// sem_post
-PTH_FUNC(int, semZupostZa, // sem_post*
- sem_t *sem)
+PTH_FUNCS(int, semZutimedwait, sem_timedwait_intercept,
+ (sem_t *sem, const struct timespec *abs_timeout),
+ (sem, abs_timeout));
+
+static __always_inline int sem_post_intercept(sem_t *sem)
{
int ret;
int res;
@@ -969,11 +1056,11 @@
return ret;
}
-// pthread_rwlock_init
-PTH_FUNC(int,
- pthreadZurwlockZuinitZa, // pthread_rwlock_init*
- pthread_rwlock_t* rwlock,
- const pthread_rwlockattr_t* attr)
+PTH_FUNCS(int, semZupost, sem_post_intercept, (sem_t *sem), (sem));
+
+static __always_inline
+int pthread_rwlock_init_intercept(pthread_rwlock_t* rwlock,
+ const pthread_rwlockattr_t* attr)
{
int ret;
int res;
@@ -985,10 +1072,13 @@
return ret;
}
-// pthread_rwlock_destroy
-PTH_FUNC(int,
- pthreadZurwlockZudestroyZa, // pthread_rwlock_destroy*
- pthread_rwlock_t* rwlock)
+PTH_FUNCS(int,
+ pthreadZurwlockZuinit, pthread_rwlock_init_intercept,
+ (pthread_rwlock_t* rwlock, const pthread_rwlockattr_t* attr),
+ (rwlock, attr));
+
+static __always_inline
+int pthread_rwlock_destroy_intercept(pthread_rwlock_t* rwlock)
{
int ret;
int res;
@@ -1000,10 +1090,12 @@
return ret;
}
-// pthread_rwlock_rdlock
-PTH_FUNC(int,
- pthreadZurwlockZurdlockZa, // pthread_rwlock_rdlock*
- pthread_rwlock_t* rwlock)
+PTH_FUNCS(int,
+ pthreadZurwlockZudestroy, pthread_rwlock_destroy_intercept,
+ (pthread_rwlock_t* rwlock), (rwlock));
+
+static __always_inline
+int pthread_rwlock_rdlock_intercept(pthread_rwlock_t* rwlock)
{
int ret;
int res;
@@ -1017,10 +1109,12 @@
return ret;
}
-// pthread_rwlock_wrlock
-PTH_FUNC(int,
- pthreadZurwlockZuwrlockZa, // pthread_rwlock_wrlock*
- pthread_rwlock_t* rwlock)
+PTH_FUNCS(int,
+ pthreadZurwlockZurdlock, pthread_rwlock_rdlock_intercept,
+ (pthread_rwlock_t* rwlock), (rwlock));
+
+static __always_inline
+int pthread_rwlock_wrlock_intercept(pthread_rwlock_t* rwlock)
{
int ret;
int res;
@@ -1034,10 +1128,12 @@
return ret;
}
-// pthread_rwlock_timedrdlock
-PTH_FUNC(int,
- pthreadZurwlockZutimedrdlockZa, // pthread_rwlock_timedrdlock*
- pthread_rwlock_t* rwlock)
+PTH_FUNCS(int,
+ pthreadZurwlockZuwrlock, pthread_rwlock_wrlock_intercept,
+ (pthread_rwlock_t* rwlock), (rwlock));
+
+static __always_inline
+int pthread_rwlock_timedrdlock_intercept(pthread_rwlock_t* rwlock)
{
int ret;
int res;
@@ -1051,10 +1147,12 @@
return ret;
}
-// pthread_rwlock_timedwrlock
-PTH_FUNC(int,
- pthreadZurwlockZutimedwrlockZa, // pthread_rwlock_timedwrlock*
- pthread_rwlock_t* rwlock)
+PTH_FUNCS(int,
+ pthreadZurwlockZutimedrdlock, pthread_rwlock_timedrdlock_intercept,
+ (pthread_rwlock_t* rwlock), (rwlock));
+
+static __always_inline
+int pthread_rwlock_timedwrlock_intercept(pthread_rwlock_t* rwlock)
{
int ret;
int res;
@@ -1068,10 +1166,12 @@
return ret;
}
-// pthread_rwlock_tryrdlock
-PTH_FUNC(int,
- pthreadZurwlockZutryrdlockZa, // pthread_rwlock_tryrdlock*
- pthread_rwlock_t* rwlock)
+PTH_FUNCS(int,
+ pthreadZurwlockZutimedwrlock, pthread_rwlock_timedwrlock_intercept,
+ (pthread_rwlock_t* rwlock), (rwlock));
+
+static __always_inline
+int pthread_rwlock_tryrdlock_intercept(pthread_rwlock_t* rwlock)
{
int ret;
int res;
@@ -1085,10 +1185,12 @@
return ret;
}
-// pthread_rwlock_trywrlock
-PTH_FUNC(int,
- pthreadZurwlockZutrywrlockZa, // pthread_rwlock_trywrlock*
- pthread_rwlock_t* rwlock)
+PTH_FUNCS(int,
+ pthreadZurwlockZutryrdlock, pthread_rwlock_tryrdlock_intercept,
+ (pthread_rwlock_t* rwlock), (rwlock));
+
+static __always_inline
+int pthread_rwlock_trywrlock_intercept(pthread_rwlock_t* rwlock)
{
int ret;
int res;
@@ -1102,10 +1204,12 @@
return ret;
}
-// pthread_rwlock_unlock
-PTH_FUNC(int,
- pthreadZurwlockZuunlockZa, // pthread_rwlock_unlock*
- pthread_rwlock_t* rwlock)
+PTH_FUNCS(int,
+ pthreadZurwlockZutrywrlock, pthread_rwlock_trywrlock_intercept,
+ (pthread_rwlock_t* rwlock), (rwlock));
+
+static __always_inline
+int pthread_rwlock_unlock_intercept(pthread_rwlock_t* rwlock)
{
int ret;
int res;
@@ -1118,3 +1222,7 @@
rwlock, ret == 0, 0, 0, 0);
return ret;
}
+
+PTH_FUNCS(int,
+ pthreadZurwlockZuunlock, pthread_rwlock_unlock_intercept,
+ (pthread_rwlock_t* rwlock), (rwlock));
Modified: trunk/drd/tests/filter_stderr
===================================================================
--- trunk/drd/tests/filter_stderr 2009-07-31 09:41:29 UTC (rev 10678)
+++ trunk/drd/tests/filter_stderr 2009-07-31 17:31:44 UTC (rev 10679)
@@ -25,8 +25,7 @@
-e "s/was held during [0-9][0-9]*/was held during .../" \
-e "s: BSS section of .*/: BSS section of :g" \
-e "s: vc \[[ ,:0-9]*\]: vc ...:g" \
--e "s/: pthread_cond_wait\* /: pthread_cond_wait /" \
--e "s/: pthread_cond_signal@\* /: pthread_cond_signal /" \
+-e "s/[@\$*]* (drd_pthread_intercepts.c:/ (drd_pthread_intercepts.c:/" \
-e "s/ (\([a-zA-Z_]*\.c\):[0-9]*)/ (\1:?)/" \
-e "s/ (\([a-zA-Z_]*\.h\):[0-9]*)/ (\1:?)/" \
-e "s/ (\([a-zA-Z_]*\.cpp\):[0-9]*)/ (\1:?)/" |
Modified: trunk/drd/tests/hold_lock_1.stderr.exp
===================================================================
--- trunk/drd/tests/hold_lock_1.stderr.exp 2009-07-31 09:41:29 UTC (rev 10678)
+++ trunk/drd/tests/hold_lock_1.stderr.exp 2009-07-31 17:31:44 UTC (rev 10679)
@@ -12,13 +12,13 @@
Locking rwlock exclusively ...
Acquired at:
- at 0x........: pthread_rwlock_wrlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_wrlock (drd_pthread_intercepts.c:?)
by 0x........: main (hold_lock.c:?)
Lock on rwlock 0x........ was held during ... ms (threshold: 500 ms).
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (hold_lock.c:?)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (hold_lock.c:?)
Locking rwlock shared ...
Done.
Modified: trunk/drd/tests/hold_lock_2.stderr.exp
===================================================================
--- trunk/drd/tests/hold_lock_2.stderr.exp 2009-07-31 09:41:29 UTC (rev 10678)
+++ trunk/drd/tests/hold_lock_2.stderr.exp 2009-07-31 17:31:44 UTC (rev 10679)
@@ -3,13 +3,13 @@
Locking rwlock exclusively ...
Locking rwlock shared ...
Acquired at:
- at 0x........: pthread_rwlock_rdlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_rdlock (drd_pthread_intercepts.c:?)
by 0x........: main (hold_lock.c:?)
Lock on rwlock 0x........ was held during ... ms (threshold: 500 ms).
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (hold_lock.c:?)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (hold_lock.c:?)
Done.
Modified: trunk/drd/tests/pth_cancel_locked.stderr.exp
===================================================================
--- trunk/drd/tests/pth_cancel_locked.stderr.exp 2009-07-31 09:41:29 UTC (rev 10678)
+++ trunk/drd/tests/pth_cancel_locked.stderr.exp 2009-07-31 17:31:44 UTC (rev 10679)
@@ -1,6 +1,6 @@
Mutex still locked at thread exit: mutex 0x........, recursion count 1, owner 2.
- at 0x........: pthread_join* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_join (drd_pthread_intercepts.c:?)
by 0x........: main (pth_cancel_locked.c:?)
mutex 0x........ was first observed at:
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
Modified: trunk/drd/tests/pth_cond_race.stderr.exp
===================================================================
--- trunk/drd/tests/pth_cond_race.stderr.exp 2009-07-31 09:41:29 UTC (rev 10678)
+++ trunk/drd/tests/pth_cond_race.stderr.exp 2009-07-31 17:31:44 UTC (rev 10679)
@@ -5,7 +5,7 @@
by 0x........: thread_func (pth_cond_race.c:?)
by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
cond 0x........ was first observed at:
- at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
by 0x........: main (pth_cond_race.c:?)
mutex 0x........ was first observed at:
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
Modified: trunk/drd/tests/pth_inconsistent_cond_wait.stderr.exp1
===================================================================
--- trunk/drd/tests/pth_inconsistent_cond_wait.stderr.exp1 2009-07-31 09:41:29 UTC (rev 10678)
+++ trunk/drd/tests/pth_inconsistent_cond_wait.stderr.exp1 2009-07-31 17:31:44 UTC (rev 10679)
@@ -1,11 +1,11 @@
Thread 3:
Inconsistent association of condition variable and mutex: condition variable 0x........, mutexes 0x........ and 0x........
- at 0x........: pthread_cond_timedwait* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_cond_timedwait (drd_pthread_intercepts.c:?)
by 0x........: thread_func (pth_inconsistent_cond_wait.c:?)
by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
cond 0x........ was first observed at:
- at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
by 0x........: main (pth_inconsistent_cond_wait.c:?)
mutex 0x........ was first observed at:
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
@@ -19,7 +19,7 @@
at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
by 0x........: main (pth_inconsistent_cond_wait.c:?)
cond 0x........ was first observed at:
- at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
by 0x........: main (pth_inconsistent_cond_wait.c:?)
mutex 0x........ was first observed at:
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
@@ -29,7 +29,7 @@
at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
by 0x........: main (pth_inconsistent_cond_wait.c:?)
cond 0x........ was first observed at:
- at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
by 0x........: main (pth_inconsistent_cond_wait.c:?)
mutex 0x........ was first observed at:
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
Modified: trunk/drd/tests/pth_inconsistent_cond_wait.stderr.exp2
===================================================================
--- trunk/drd/tests/pth_inconsistent_cond_wait.stderr.exp2 2009-07-31 09:41:29 UTC (rev 10678)
+++ trunk/drd/tests/pth_inconsistent_cond_wait.stderr.exp2 2009-07-31 17:31:44 UTC (rev 10679)
@@ -1,11 +1,11 @@
Thread 2:
Inconsistent association of condition variable and mutex: condition variable 0x........, mutexes 0x........ and 0x........
- at 0x........: pthread_cond_timedwait* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_cond_timedwait (drd_pthread_intercepts.c:?)
by 0x........: thread_func (pth_inconsistent_cond_wait.c:?)
by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
cond 0x........ was first observed at:
- at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
by 0x........: main (pth_inconsistent_cond_wait.c:?)
mutex 0x........ was first observed at:
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
@@ -19,7 +19,7 @@
at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
by 0x........: main (pth_inconsistent_cond_wait.c:?)
cond 0x........ was first observed at:
- at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
by 0x........: main (pth_inconsistent_cond_wait.c:?)
mutex 0x........ was first observed at:
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
@@ -29,7 +29,7 @@
at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
by 0x........: main (pth_inconsistent_cond_wait.c:?)
cond 0x........ was first observed at:
- at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
by 0x........: main (pth_inconsistent_cond_wait.c:?)
mutex 0x........ was first observed at:
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
Modified: trunk/drd/tests/rwlock_type_checking.stderr.exp
===================================================================
--- trunk/drd/tests/rwlock_type_checking.stderr.exp 2009-07-31 09:41:29 UTC (rev 10678)
+++ trunk/drd/tests/rwlock_type_checking.stderr.exp 2009-07-31 17:31:44 UTC (rev 10679)
@@ -1,6 +1,6 @@
Attempt to use a user-defined rwlock as a POSIX rwlock: rwlock 0x.........
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (rwlock_type_checking.c:?)
rwlock 0x........ was first observed at:
at 0x........: vgDrdCl_annotate_rwlock (drd.h:?)
@@ -10,7 +10,7 @@
at 0x........: vgDrdCl_annotate_rwlock (drd.h:?)
by 0x........: main (rwlock_type_checking.c:?)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (rwlock_type_checking.c:?)
Finished.
Modified: trunk/drd/tests/tc12_rwl_trivial.stderr.exp
===================================================================
--- trunk/drd/tests/tc12_rwl_trivial.stderr.exp 2009-07-31 09:41:29 UTC (rev 10678)
+++ trunk/drd/tests/tc12_rwl_trivial.stderr.exp 2009-07-31 17:31:44 UTC (rev 10679)
@@ -1,9 +1,9 @@
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc12_rwl_trivial.c:35)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc12_rwl_trivial.c:24)
ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Modified: trunk/drd/tests/tc18_semabuse.stderr.exp
===================================================================
--- trunk/drd/tests/tc18_semabuse.stderr.exp 2009-07-31 09:41:29 UTC (rev 10678)
+++ trunk/drd/tests/tc18_semabuse.stderr.exp 2009-07-31 17:31:44 UTC (rev 10679)
@@ -1,16 +1,16 @@
Semaphore reinitialization: semaphore 0x........
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc18_semabuse.c:26)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc18_semabuse.c:23)
Invalid semaphore: semaphore 0x........
- at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc18_semabuse.c:34)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc18_semabuse.c:23)
ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
Modified: trunk/drd/tests/tc20_verifywrap.stderr.exp-glibc2.3
===================================================================
--- trunk/drd/tests/tc20_verifywrap.stderr.exp-glibc2.3 2009-07-31 09:41:29 UTC (rev 10678)
+++ trunk/drd/tests/tc20_verifywrap.stderr.exp-glibc2.3 2009-07-31 17:31:44 UTC (rev 10679)
@@ -58,27 +58,27 @@
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:179)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:178)
(1) no error on next line
(2) no error on next line
(3) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:196)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
Reader-writer lock reinitialization: rwlock 0x.........
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:199)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
(4) no error on next line
(5) no error on next line
@@ -87,30 +87,30 @@
(8) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:212)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
---------------- sem_* ----------------
Semaphore reinitialization: semaphore 0x........
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:231)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
FIXME: can't figure out how to verify wrap of sem_destroy
Invalid semaphore: semaphore 0x........
- at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:242)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
FIXME: can't figure out how to verify wrap of sem_post
@@ -122,7 +122,7 @@
Destroying locked rwlock: rwlock 0x.........
at 0x........: main (tc20_verifywrap.c:262)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:216)
Destroying locked mutex: mutex 0x........, recursion count 1, owner 1.
Modified: trunk/drd/tests/tc20_verifywrap.stderr.exp-glibc2.5
===================================================================
--- trunk/drd/tests/tc20_verifywrap.stderr.exp-glibc2.5 2009-07-31 09:41:29 UTC (rev 10678)
+++ trunk/drd/tests/tc20_verifywrap.stderr.exp-glibc2.5 2009-07-31 17:31:44 UTC (rev 10679)
@@ -55,27 +55,27 @@
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:179)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:178)
(1) no error on next line
(2) no error on next line
(3) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:196)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
Reader-writer lock reinitialization: rwlock 0x.........
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:199)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
(4) no error on next line
(5) no error on next line
@@ -84,30 +84,30 @@
(8) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:212)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
---------------- sem_* ----------------
Semaphore reinitialization: semaphore 0x........
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:231)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
FIXME: can't figure out how to verify wrap of sem_destroy
Invalid semaphore: semaphore 0x........
- at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:242)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
FIXME: can't figure out how to verify wrap of sem_post
@@ -119,7 +119,7 @@
Destroying locked rwlock: rwlock 0x.........
at 0x........: main (tc20_verifywrap.c:262)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:216)
Destroying locked mutex: mutex 0x........, recursion count 1, owner 1.
Modified: trunk/drd/tests/tc20_verifywrap.stderr.exp-glibc2.5-ppc
===================================================================
--- trunk/drd/tests/tc20_verifywrap.stderr.exp-glibc2.5-ppc 2009-07-31 09:41:29 UTC (rev 10678)
+++ trunk/drd/tests/tc20_verifywrap.stderr.exp-glibc2.5-ppc 2009-07-31 17:31:44 UTC (rev 10679)
@@ -55,27 +55,27 @@
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:179)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:178)
(1) no error on next line
(2) no error on next line
(3) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:196)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
Reader-writer lock reinitialization: rwlock 0x.........
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:199)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
(4) no error on next line
(5) no error on next line
@@ -84,30 +84,30 @@
(8) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:212)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
---------------- sem_* ----------------
Semaphore reinitialization: semaphore 0x........
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:231)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
FIXME: can't figure out how to verify wrap of sem_destroy
Invalid semaphore: semaphore 0x........
- at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:242)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
FIXME: can't figure out how to verify wrap of sem_post
@@ -125,7 +125,7 @@
Destroying locked rwlock: rwlock 0x.........
at 0x........: main (tc20_verifywrap.c:262)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:216)
ERROR SUMMARY: 13 errors from 13 contexts (suppressed: 0 from 0)
Modified: trunk/drd/tests/tc20_verifywrap.stderr.exp-glibc2.8
===================================================================
--- trunk/drd/tests/tc20_verifywrap.stderr.exp-glibc2.8 2009-07-31 09:41:29 UTC (rev 10678)
+++ trunk/drd/tests/tc20_verifywrap.stderr.exp-glibc2.8 2009-07-31 17:31:44 UTC (rev 10679)
@@ -55,27 +55,27 @@
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:179)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:178)
(1) no error on next line
(2) no error on next line
(3) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:196)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
Reader-writer lock reinitialization: rwlock 0x.........
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:199)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
(4) no error on next line
(5) no error on next line
@@ -84,30 +84,30 @@
(8) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:212)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
---------------- sem_* ----------------
Semaphore reinitialization: semaphore 0x........
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:231)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
FIXME: can't figure out how to verify wrap of sem_destroy
Invalid semaphore: semaphore 0x........
- at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:242)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
FIXME: can't figure out how to verify wrap of sem_post
Modified: trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3
===================================================================
--- trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 2009-07-31 09:41:29 UTC (rev 10678)
+++ trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 2009-07-31 17:31:44 UTC (rev 10679)
@@ -80,27 +80,27 @@
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:179)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:178)
(1) no error on next line
(2) no error on next line
(3) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:196)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
Reader-writer lock reinitialization: rwlock 0x.........
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:199)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
(4) no error on next line
(5) no error on next line
@@ -109,10 +109,10 @@
(8) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:212)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
---------------- sem_* ----------------
@@ -121,10 +121,10 @@
[1] sem_init 0x........ value 0
Semaphore reinitialization: semaphore 0x........
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:231)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
FIXME: can't figure out how to verify wrap of sem_destroy
@@ -132,10 +132,10 @@
[1] sem_wait 0x........ value 0 -> 4294967295
Invalid semaphore: semaphore 0x........
- at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:242)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
[1] sem_post 0x........ value 4294967295 -> 0
@@ -149,7 +149,7 @@
Destroying locked rwlock: rwlock 0x.........
at 0x........: main (tc20_verifywrap.c:262)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:216)
[1] mutex_destroy error checking mutex 0x........ rc 1 owner 1
Modified: trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b
===================================================================
--- trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b 2009-07-31 09:41:29 UTC (rev 10678)
+++ trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b 2009-07-31 17:31:44 UTC (rev 10679)
@@ -91,27 +91,27 @@
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:179)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:178)
(1) no error on next line
(2) no error on next line
(3) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:196)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
Reader-writer lock reinitialization: rwlock 0x.........
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:199)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
(4) no error on next line
(5) no error on next line
@@ -120,10 +120,10 @@
(8) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:212)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:186)
---------------- sem_* ----------------
@@ -132,10 +132,10 @@
[1] sem_init 0x........ value 0
Semaphore reinitialization: semaphore 0x........
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:231)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
FIXME: can't figure out how to verify wrap of sem_destroy
@@ -143,10 +143,10 @@
[1] sem_wait 0x........ value 0 -> 4294967295
Invalid semaphore: semaphore 0x........
- at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:242)
semaphore 0x........ was first observed at:
- at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ at 0x........: sem_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
[1] sem_post 0x........ value 4294967295 -> 0
@@ -160,7 +160,7 @@
Destroying locked rwlock: rwlock 0x.........
at 0x........: main (tc20_verifywrap.c:262)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:216)
[1] mutex_destroy error checking mutex 0x........ rc 1 owner 1
Modified: trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5
===================================================================
--- trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 2009-07-31 09:41:29 UTC (rev 10678)
+++ trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 2009-07-31 17:31:44 UTC (rev 10679)
@@ -79,27 +79,27 @@
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:179)
rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:178)
(1) no error on next line
(2) no error on next line
(3) ERROR on next line
Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
+ at 0x........: pthread_rw...
[truncated message content] |
|
From: <sv...@va...> - 2009-07-31 09:41:58
|
Author: sewardj
Date: 2009-07-31 10:41:29 +0100 (Fri, 31 Jul 2009)
New Revision: 10678
Log:
(almost completely just function renaming):
* VG_(find_seginfo): incrementally rearrange the DebugInfo list, like
most of the other list-searching functions do.
* rename all VG_(*seginfo*) functions exported from m_debuginfo to
VG_(*DebugInfo*). "seginfo" was a historical name which was mostly
but not completely, done away with some time back.
Modified:
trunk/callgrind/bb.c
trunk/callgrind/debug.c
trunk/callgrind/fn.c
trunk/coregrind/m_debuginfo/debuginfo.c
trunk/coregrind/m_redir.c
trunk/drd/drd_error.c
trunk/drd/drd_load_store.c
trunk/drd/drd_main.c
trunk/helgrind/hg_errors.c
trunk/helgrind/hg_main.c
trunk/include/pub_tool_debuginfo.h
trunk/memcheck/mc_errors.c
Modified: trunk/callgrind/bb.c
===================================================================
--- trunk/callgrind/bb.c 2009-07-31 08:52:39 UTC (rev 10677)
+++ trunk/callgrind/bb.c 2009-07-31 09:41:29 UTC (rev 10678)
@@ -143,7 +143,7 @@
bb->jmp = (CJmpInfo*) &(bb->instr[instr_count]);
bb->instr_len = 0;
bb->cost_count = 0;
- bb->sect_kind = VG_(seginfo_sect_kind)(NULL, 0, offset + obj->offset);
+ bb->sect_kind = VG_(DebugInfo_sect_kind)(NULL, 0, offset + obj->offset);
bb->fn = 0;
bb->line = 0;
bb->is_entry = 0;
@@ -201,21 +201,21 @@
DebugInfo* di;
PtrdiffT offset;
- di = VG_(find_seginfo)(addr);
+ di = VG_(find_DebugInfo)(addr);
obj = CLG_(get_obj_node)( di );
/* Update symbol offset in object if remapped */
/* FIXME (or at least check this) 2008 Feb 19: 'offset' is
only correct for text symbols, not for data symbols */
- offset = di ? VG_(seginfo_get_text_bias)(di):0;
+ offset = di ? VG_(DebugInfo_get_text_bias)(di):0;
if (obj->offset != offset) {
- Addr start = di ? VG_(seginfo_get_text_avma)(di) : 0;
+ Addr start = di ? VG_(DebugInfo_get_text_avma)(di) : 0;
CLG_DEBUG(0, "Mapping changed for '%s': %#lx -> %#lx\n",
obj->name, obj->start, start);
/* Size should be the same, and offset diff == start diff */
- CLG_ASSERT( obj->size == (di ? VG_(seginfo_get_text_size)(di) : 0) );
+ CLG_ASSERT( obj->size == (di ? VG_(DebugInfo_get_text_size)(di) : 0) );
CLG_ASSERT( obj->start - start == obj->offset - offset );
obj->offset = offset;
obj->start = start;
Modified: trunk/callgrind/debug.c
===================================================================
--- trunk/callgrind/debug.c 2009-07-31 08:52:39 UTC (rev 10677)
+++ trunk/callgrind/debug.c 2009-07-31 09:41:29 UTC (rev 10678)
@@ -379,7 +379,7 @@
VG_(printf)("%#lx %s", addr, fn_buf);
if (di) {
- obj_name = VG_(seginfo_filename)(di);
+ obj_name = VG_(DebugInfo_get_filename)(di);
if (obj_name) {
while(obj_name[i]) {
if (obj_name[i]=='/') opos = i+1;
Modified: trunk/callgrind/fn.c
===================================================================
--- trunk/callgrind/fn.c 2009-07-31 08:52:39 UTC (rev 10677)
+++ trunk/callgrind/fn.c 2009-07-31 09:41:29 UTC (rev 10678)
@@ -232,8 +232,9 @@
obj_node* obj;
obj = (obj_node*) CLG_MALLOC("cl.fn.non.1", sizeof(obj_node));
- obj->name = di ? VG_(strdup)( "cl.fn.non.2",VG_(seginfo_filename)(di) )
- : anonymous_obj;
+ obj->name = di ? VG_(strdup)( "cl.fn.non.2",
+ VG_(DebugInfo_get_filename)(di) )
+ : anonymous_obj;
for (i = 0; i < N_FILE_ENTRIES; i++) {
obj->files[i] = NULL;
}
@@ -242,9 +243,9 @@
/* JRS 2008 Feb 19: maybe rename .start/.size/.offset to
.text_avma/.text_size/.test_bias to make it clearer what these
fields really mean */
- obj->start = di ? VG_(seginfo_get_text_avma)(di) : 0;
- obj->size = di ? VG_(seginfo_get_text_size)(di) : 0;
- obj->offset = di ? VG_(seginfo_get_text_bias)(di) : 0;
+ obj->start = di ? VG_(DebugInfo_get_text_avma)(di) : 0;
+ obj->size = di ? VG_(DebugInfo_get_text_size)(di) : 0;
+ obj->offset = di ? VG_(DebugInfo_get_text_bias)(di) : 0;
obj->next = next;
// not only used for debug output (see static.c)
@@ -266,7 +267,7 @@
UInt objname_hash;
const UChar* obj_name;
- obj_name = di ? (Char*) VG_(seginfo_filename)(di) : anonymous_obj;
+ obj_name = di ? (Char*) VG_(DebugInfo_get_filename)(di) : anonymous_obj;
/* lookup in obj hash */
objname_hash = str_hash(obj_name, N_OBJ_ENTRIES);
@@ -425,7 +426,7 @@
CLG_DEBUG(6, " + get_debug_info(%#lx)\n", instr_addr);
if (pDebugInfo) {
- *pDebugInfo = VG_(find_seginfo)(instr_addr);
+ *pDebugInfo = VG_(find_DebugInfo)(instr_addr);
// for generated code in anonymous space, pSegInfo is 0
}
@@ -471,7 +472,7 @@
CLG_DEBUG(6, " - get_debug_info(%#lx): seg '%s', fn %s\n",
instr_addr,
!pDebugInfo ? (const UChar*)"-" :
- (*pDebugInfo) ? VG_(seginfo_filename)(*pDebugInfo) :
+ (*pDebugInfo) ? VG_(DebugInfo_get_filename)(*pDebugInfo) :
(const UChar*)"(None)",
fn_name);
Modified: trunk/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- trunk/coregrind/m_debuginfo/debuginfo.c 2009-07-31 08:52:39 UTC (rev 10677)
+++ trunk/coregrind/m_debuginfo/debuginfo.c 2009-07-31 09:41:29 UTC (rev 10678)
@@ -1498,14 +1498,18 @@
/* Map a code address to its DebugInfo. Returns NULL if not found. Doesn't
require debug info. */
-DebugInfo* VG_(find_seginfo) ( Addr a )
+DebugInfo* VG_(find_DebugInfo) ( Addr a )
{
+ static UWord n_search = 0;
DebugInfo* di;
+ n_search++;
for (di = debugInfo_list; di != NULL; di = di->next) {
if (di->text_present
&& di->text_size > 0
&& di->text_avma <= a
&& a < di->text_avma + di->text_size) {
+ if (0 == (n_search & 0xF))
+ move_DebugInfo_one_step_forward( di );
return di;
}
}
@@ -3375,70 +3379,70 @@
/*--- DebugInfo accessor functions ---*/
/*------------------------------------------------------------*/
-const DebugInfo* VG_(next_seginfo)(const DebugInfo* di)
+const DebugInfo* VG_(next_DebugInfo)(const DebugInfo* di)
{
if (di == NULL)
return debugInfo_list;
return di->next;
}
-Addr VG_(seginfo_get_text_avma)(const DebugInfo* di)
+Addr VG_(DebugInfo_get_text_avma)(const DebugInfo* di)
{
return di->text_present ? di->text_avma : 0;
}
-SizeT VG_(seginfo_get_text_size)(const DebugInfo* di)
+SizeT VG_(DebugInfo_get_text_size)(const DebugInfo* di)
{
return di->text_present ? di->text_size : 0;
}
-Addr VG_(seginfo_get_plt_avma)(const DebugInfo* di)
+Addr VG_(DebugInfo_get_plt_avma)(const DebugInfo* di)
{
return di->plt_present ? di->plt_avma : 0;
}
-SizeT VG_(seginfo_get_plt_size)(const DebugInfo* di)
+SizeT VG_(DebugInfo_get_plt_size)(const DebugInfo* di)
{
return di->plt_present ? di->plt_size : 0;
}
-Addr VG_(seginfo_get_gotplt_avma)(const DebugInfo* di)
+Addr VG_(DebugInfo_get_gotplt_avma)(const DebugInfo* di)
{
return di->gotplt_present ? di->gotplt_avma : 0;
}
-SizeT VG_(seginfo_get_gotplt_size)(const DebugInfo* di)
+SizeT VG_(DebugInfo_get_gotplt_size)(const DebugInfo* di)
{
return di->gotplt_present ? di->gotplt_size : 0;
}
-const UChar* VG_(seginfo_soname)(const DebugInfo* di)
+const UChar* VG_(DebugInfo_get_soname)(const DebugInfo* di)
{
return di->soname;
}
-const UChar* VG_(seginfo_filename)(const DebugInfo* di)
+const UChar* VG_(DebugInfo_get_filename)(const DebugInfo* di)
{
return di->filename;
}
-PtrdiffT VG_(seginfo_get_text_bias)(const DebugInfo* di)
+PtrdiffT VG_(DebugInfo_get_text_bias)(const DebugInfo* di)
{
return di->text_present ? di->text_bias : 0;
}
-Int VG_(seginfo_syms_howmany) ( const DebugInfo *si )
+Int VG_(DebugInfo_syms_howmany) ( const DebugInfo *si )
{
return si->symtab_used;
}
-void VG_(seginfo_syms_getidx) ( const DebugInfo *si,
- Int idx,
- /*OUT*/Addr* avma,
- /*OUT*/Addr* tocptr,
- /*OUT*/UInt* size,
- /*OUT*/HChar** name,
- /*OUT*/Bool* isText )
+void VG_(DebugInfo_syms_getidx) ( const DebugInfo *si,
+ Int idx,
+ /*OUT*/Addr* avma,
+ /*OUT*/Addr* tocptr,
+ /*OUT*/UInt* size,
+ /*OUT*/HChar** name,
+ /*OUT*/Bool* isText )
{
vg_assert(idx >= 0 && idx < si->symtab_used);
if (avma) *avma = si->symtab[idx].addr;
@@ -3475,8 +3479,8 @@
characters of the object's name is put in name[0 .. n_name-2], and
name[n_name-1] is set to zero (guaranteed zero terminated). */
-VgSectKind VG_(seginfo_sect_kind)( /*OUT*/UChar* name, SizeT n_name,
- Addr a)
+VgSectKind VG_(DebugInfo_sect_kind)( /*OUT*/UChar* name, SizeT n_name,
+ Addr a)
{
DebugInfo* di;
VgSectKind res = Vg_SectUnknown;
@@ -3485,7 +3489,8 @@
if (0)
VG_(printf)(
- "addr=%#lx di=%p %s got=%#lx,%ld plt=%#lx,%ld data=%#lx,%ld bss=%#lx,%ld\n",
+ "addr=%#lx di=%p %s got=%#lx,%ld plt=%#lx,%ld "
+ "data=%#lx,%ld bss=%#lx,%ld\n",
a, di, di->filename,
di->got_avma, di->got_size,
di->plt_avma, di->plt_size,
Modified: trunk/coregrind/m_redir.c
===================================================================
--- trunk/coregrind/m_redir.c 2009-07-31 08:52:39 UTC (rev 10677)
+++ trunk/coregrind/m_redir.c 2009-07-31 09:41:29 UTC (rev 10678)
@@ -336,7 +336,7 @@
# endif
vg_assert(newsi);
- newsi_soname = VG_(seginfo_soname)(newsi);
+ newsi_soname = VG_(DebugInfo_get_soname)(newsi);
vg_assert(newsi_soname != NULL);
/* stay sane: we don't already have this. */
@@ -348,10 +348,10 @@
specList = NULL; /* the spec list we're building up */
- nsyms = VG_(seginfo_syms_howmany)( newsi );
+ nsyms = VG_(DebugInfo_syms_howmany)( newsi );
for (i = 0; i < nsyms; i++) {
- VG_(seginfo_syms_getidx)( newsi, i, &sym_addr, &sym_toc,
- NULL, &sym_name, &isText );
+ VG_(DebugInfo_syms_getidx)( newsi, i, &sym_addr, &sym_toc,
+ NULL, &sym_name, &isText );
ok = VG_(maybe_Z_demangle)( sym_name, demangled_sopatt, N_DEMANGLED,
demangled_fnpatt, N_DEMANGLED, &isWrap );
/* ignore data symbols */
@@ -388,8 +388,8 @@
if (check_ppcTOCs) {
for (i = 0; i < nsyms; i++) {
- VG_(seginfo_syms_getidx)( newsi, i, &sym_addr, &sym_toc,
- NULL, &sym_name, &isText );
+ VG_(DebugInfo_syms_getidx)( newsi, i, &sym_addr, &sym_toc,
+ NULL, &sym_name, &isText );
ok = isText
&& VG_(maybe_Z_demangle)(
sym_name, demangled_sopatt, N_DEMANGLED,
@@ -500,7 +500,7 @@
for (sp = specs; sp; sp = sp->next) {
sp->done = False;
sp->mark = VG_(string_match)( sp->from_sopatt,
- VG_(seginfo_soname)(di) );
+ VG_(DebugInfo_get_soname)(di) );
anyMark = anyMark || sp->mark;
}
@@ -510,10 +510,10 @@
/* Iterate outermost over the symbols in the seginfo, in the hope
of trashing the caches less. */
- nsyms = VG_(seginfo_syms_howmany)( di );
+ nsyms = VG_(DebugInfo_syms_howmany)( di );
for (i = 0; i < nsyms; i++) {
- VG_(seginfo_syms_getidx)( di, i,
- &sym_addr, NULL, NULL, &sym_name, &isText );
+ VG_(DebugInfo_syms_getidx)( di, i, &sym_addr, NULL, NULL,
+ &sym_name, &isText );
/* ignore data symbols */
if (!isText)
@@ -577,7 +577,8 @@
VG_(printf)(
"%swas not found whilst processing\n", v);
VG_(printf)(
- "%ssymbols from the object with soname: %s\n", v, VG_(seginfo_soname)(di));
+ "%ssymbols from the object with soname: %s\n",
+ v, VG_(DebugInfo_get_soname)(di));
VG_(printf)(
"%s\n", v);
VG_(printf)(
@@ -846,7 +847,7 @@
void VG_(redir_initialise) ( void )
{
// Assert that there are no DebugInfos so far
- vg_assert( VG_(next_seginfo)(NULL) == NULL );
+ vg_assert( VG_(next_DebugInfo)(NULL) == NULL );
// Initialise active mapping.
activeSet = VG_(OSetGen_Create)(offsetof(Active, from_addr),
@@ -1117,8 +1118,9 @@
for (ts = topSpecs; ts; ts = ts->next) {
VG_(message)(Vg_DebugMsg,
" TOPSPECS of soname %s\n",
- ts->seginfo ? (HChar*)VG_(seginfo_soname)(ts->seginfo)
- : "(hardwired)" );
+ ts->seginfo
+ ? (HChar*)VG_(DebugInfo_get_soname)(ts->seginfo)
+ : "(hardwired)" );
for (sp = ts->specs; sp; sp = sp->next)
show_spec(" ", sp);
}
Modified: trunk/drd/drd_error.c
===================================================================
--- trunk/drd/drd_error.c 2009-07-31 08:52:39 UTC (rev 10677)
+++ trunk/drd/drd_error.c 2009-07-31 09:41:29 UTC (rev 10678)
@@ -160,8 +160,8 @@
char sect_name[64];
VgSectKind sect_kind;
- sect_kind = VG_(seginfo_sect_kind)(sect_name, sizeof(sect_name),
- dri->addr);
+ sect_kind = VG_(DebugInfo_sect_kind)(sect_name, sizeof(sect_name),
+ dri->addr);
if (sect_kind != Vg_SectUnknown)
{
VG_(message)(Vg_UserMsg,
Modified: trunk/drd/drd_load_store.c
===================================================================
--- trunk/drd/drd_load_store.c 2009-07-31 08:52:39 UTC (rev 10677)
+++ trunk/drd/drd_load_store.c 2009-07-31 09:41:29 UTC (rev 10678)
@@ -472,7 +472,7 @@
/* relocated in another way than by later binutils versions. The */
/* linker e.g. does not generate .got.plt sections on CentOS 3.0. */
case Ist_IMark:
- instrument = VG_(seginfo_sect_kind)(NULL, 0, st->Ist.IMark.addr)
+ instrument = VG_(DebugInfo_sect_kind)(NULL, 0, st->Ist.IMark.addr)
!= Vg_SectPLT;
addStmtToIRSB(bb, st);
break;
Modified: trunk/drd/drd_main.c
===================================================================
--- trunk/drd/drd_main.c 2009-07-31 08:52:39 UTC (rev 10677)
+++ trunk/drd/drd_main.c 2009-07-31 09:41:29 UTC (rev 10678)
@@ -367,32 +367,32 @@
VG_(printf)("Evaluating range @ 0x%lx size %ld\n", a, len);
#endif
- for (di = VG_(next_seginfo)(0); di; di = VG_(next_seginfo)(di))
+ for (di = VG_(next_DebugInfo)(0); di; di = VG_(next_DebugInfo)(di))
{
Addr avma;
SizeT size;
- avma = VG_(seginfo_get_plt_avma)(di);
- size = VG_(seginfo_get_plt_size)(di);
+ avma = VG_(DebugInfo_get_plt_avma)(di);
+ size = VG_(DebugInfo_get_plt_size)(di);
tl_assert((avma && size) || (avma == 0 && size == 0));
if (size > 0)
{
#if 0
VG_(printf)("Suppressing .plt @ 0x%lx size %ld\n", avma, size);
#endif
- tl_assert(VG_(seginfo_sect_kind)(NULL, 0, avma) == Vg_SectPLT);
+ tl_assert(VG_(DebugInfo_sect_kind)(NULL, 0, avma) == Vg_SectPLT);
DRD_(start_suppression)(avma, avma + size, ".plt");
}
- avma = VG_(seginfo_get_gotplt_avma)(di);
- size = VG_(seginfo_get_gotplt_size)(di);
+ avma = VG_(DebugInfo_get_gotplt_avma)(di);
+ size = VG_(DebugInfo_get_gotplt_size)(di);
tl_assert((avma && size) || (avma == 0 && size == 0));
if (size > 0)
{
#if 0
VG_(printf)("Suppressing .got.plt @ 0x%lx size %ld\n", avma, size);
#endif
- tl_assert(VG_(seginfo_sect_kind)(NULL, 0, avma) == Vg_SectGOTPLT);
+ tl_assert(VG_(DebugInfo_sect_kind)(NULL, 0, avma) == Vg_SectGOTPLT);
DRD_(start_suppression)(avma, avma + size, ".gotplt");
}
}
Modified: trunk/helgrind/hg_errors.c
===================================================================
--- trunk/helgrind/hg_errors.c 2009-07-31 08:52:39 UTC (rev 10677)
+++ trunk/helgrind/hg_errors.c 2009-07-31 09:41:29 UTC (rev 10678)
@@ -344,7 +344,7 @@
linked routine, into the table (or whatever) when it is called
for the first time. */
{
- VgSectKind sect = VG_(seginfo_sect_kind)( NULL, 0, data_addr );
+ VgSectKind sect = VG_(DebugInfo_sect_kind)( NULL, 0, data_addr );
if (0) VG_(printf)("XXXXXXXXX RACE on %#lx %s\n",
data_addr, VG_(pp_SectKind)(sect));
/* SectPLT is required on ???-linux */
Modified: trunk/helgrind/hg_main.c
===================================================================
--- trunk/helgrind/hg_main.c 2009-07-31 08:52:39 UTC (rev 10677)
+++ trunk/helgrind/hg_main.c 2009-07-31 09:41:29 UTC (rev 10678)
@@ -3703,10 +3703,10 @@
const UChar* soname;
if (0) return False;
- dinfo = VG_(find_seginfo)( (Addr)ga );
+ dinfo = VG_(find_DebugInfo)( (Addr)ga );
if (!dinfo) return False;
- soname = VG_(seginfo_soname)(dinfo);
+ soname = VG_(DebugInfo_get_soname)(dinfo);
tl_assert(soname);
if (0) VG_(printf)("%s\n", soname);
Modified: trunk/include/pub_tool_debuginfo.h
===================================================================
--- trunk/include/pub_tool_debuginfo.h 2009-07-31 08:52:39 UTC (rev 10677)
+++ trunk/include/pub_tool_debuginfo.h 2009-07-31 09:41:29 UTC (rev 10678)
@@ -170,44 +170,49 @@
/*====================================================================*/
-/*=== Obtaining segment information ===*/
+/*=== Obtaining debug information ===*/
/*====================================================================*/
-/* A way to get information about what segments are mapped */
-typedef struct _DebugInfo DebugInfo;
+/* A way to make limited debuginfo queries on a per-mapped-object
+ basis. */
+typedef struct _DebugInfo DebugInfo;
/* Returns NULL if the DebugInfo isn't found. It doesn't matter if
debug info is present or not. */
-extern DebugInfo* VG_(find_seginfo) ( Addr a );
+DebugInfo* VG_(find_DebugInfo) ( Addr a );
/* Fish bits out of DebugInfos. */
-extern Addr VG_(seginfo_get_text_avma)( const DebugInfo *di );
-extern SizeT VG_(seginfo_get_text_size)( const DebugInfo *di );
-extern Addr VG_(seginfo_get_plt_avma) ( const DebugInfo *di );
-extern SizeT VG_(seginfo_get_plt_size) ( const DebugInfo *di );
-extern Addr VG_(seginfo_get_gotplt_avma)( const DebugInfo *di );
-extern SizeT VG_(seginfo_get_gotplt_size)( const DebugInfo *di );
-extern const UChar* VG_(seginfo_soname) ( const DebugInfo *di );
-extern const UChar* VG_(seginfo_filename) ( const DebugInfo *di );
-extern PtrdiffT VG_(seginfo_get_text_bias)( const DebugInfo *di );
+Addr VG_(DebugInfo_get_text_avma) ( const DebugInfo *di );
+SizeT VG_(DebugInfo_get_text_size) ( const DebugInfo *di );
+Addr VG_(DebugInfo_get_plt_avma) ( const DebugInfo *di );
+SizeT VG_(DebugInfo_get_plt_size) ( const DebugInfo *di );
+Addr VG_(DebugInfo_get_gotplt_avma) ( const DebugInfo *di );
+SizeT VG_(DebugInfo_get_gotplt_size) ( const DebugInfo *di );
+const UChar* VG_(DebugInfo_get_soname) ( const DebugInfo *di );
+const UChar* VG_(DebugInfo_get_filename) ( const DebugInfo *di );
+PtrdiffT VG_(DebugInfo_get_text_bias) ( const DebugInfo *di );
-/* Function for traversing the seginfo list. When called with NULL it
- returns the first element; otherwise it returns the given element's
- successor. */
-extern const DebugInfo* VG_(next_seginfo) ( const DebugInfo *di );
+/* Function for traversing the DebugInfo list. When called with NULL
+ it returns the first element; otherwise it returns the given
+ element's successor. Note that the order of elements in the list
+ changes in response to most of the queries listed in this header,
+ that explicitly or implicitly have to search the list for a
+ particular code address. So it isn't safe to assume that the order
+ of the list stays constant. */
+const DebugInfo* VG_(next_DebugInfo) ( const DebugInfo *di );
/* Functions for traversing all the symbols in a DebugInfo. _howmany
tells how many there are. _getidx retrieves the n'th, for n in 0
.. _howmany-1. You may not modify the function name thereby
acquired; if you want to do so, first strdup it. */
-extern Int VG_(seginfo_syms_howmany) ( const DebugInfo *di );
-extern void VG_(seginfo_syms_getidx) ( const DebugInfo *di,
- Int idx,
- /*OUT*/Addr* avma,
- /*OUT*/Addr* tocptr,
- /*OUT*/UInt* size,
- /*OUT*/HChar** name,
- /*OUT*/Bool* isText );
+Int VG_(DebugInfo_syms_howmany) ( const DebugInfo *di );
+void VG_(DebugInfo_syms_getidx) ( const DebugInfo *di,
+ Int idx,
+ /*OUT*/Addr* avma,
+ /*OUT*/Addr* tocptr,
+ /*OUT*/UInt* size,
+ /*OUT*/HChar** name,
+ /*OUT*/Bool* isText );
/* A simple enumeration to describe the 'kind' of various kinds of
segments that arise from the mapping of object files. */
@@ -226,16 +231,14 @@
/* Convert a VgSectKind to a string, which must be copied if you want
to change it. */
-extern
const HChar* VG_(pp_SectKind)( VgSectKind kind );
/* Given an address 'a', make a guess of which section of which object
it comes from. If name is non-NULL, then the last n_name-1
characters of the object's name is put in name[0 .. n_name-2], and
name[n_name-1] is set to zero (guaranteed zero terminated). */
-extern
-VgSectKind VG_(seginfo_sect_kind)( /*OUT*/UChar* name, SizeT n_name,
- Addr a);
+VgSectKind VG_(DebugInfo_sect_kind)( /*OUT*/UChar* name, SizeT n_name,
+ Addr a);
#endif // __PUB_TOOL_DEBUGINFO_H
Modified: trunk/memcheck/mc_errors.c
===================================================================
--- trunk/memcheck/mc_errors.c 2009-07-31 08:52:39 UTC (rev 10677)
+++ trunk/memcheck/mc_errors.c 2009-07-31 09:41:29 UTC (rev 10678)
@@ -1161,8 +1161,8 @@
VG_(memset)( &ai->Addr.SectKind.objname,
0, sizeof(ai->Addr.SectKind.objname));
VG_(strcpy)( ai->Addr.SectKind.objname, "???" );
- sect = VG_(seginfo_sect_kind)( &ai->Addr.SectKind.objname[0],
- sizeof(ai->Addr.SectKind.objname)-1, a);
+ sect = VG_(DebugInfo_sect_kind)( &ai->Addr.SectKind.objname[0],
+ sizeof(ai->Addr.SectKind.objname)-1, a);
if (sect != Vg_SectUnknown) {
ai->tag = Addr_SectKind;
ai->Addr.SectKind.kind = sect;
|
|
From: <sv...@va...> - 2009-07-31 08:52:52
|
Author: sewardj
Date: 2009-07-31 09:52:39 +0100 (Fri, 31 Jul 2009)
New Revision: 10677
Log:
Darwin-specific followup to r10676 (helgrind: Don't instrument any code in ld.so).
Modified:
trunk/darwin9.supp
Modified: trunk/darwin9.supp
===================================================================
--- trunk/darwin9.supp 2009-07-31 08:46:35 UTC (rev 10676)
+++ trunk/darwin9.supp 2009-07-31 08:52:39 UTC (rev 10677)
@@ -217,11 +217,11 @@
# These ones were necessary to give no errors on a tiny threaded program.
# I don't know if they're real problems or false positives (njn).
-{
- helgrind-darwinlibc-nuke-everything-in-dyld
- Helgrind:Race
- obj:/usr/lib/dyld
-}
+#{
+# helgrind-darwinlibc-nuke-everything-in-dyld
+# Helgrind:Race
+# obj:/usr/lib/dyld
+#}
{
helgrind-darwinlibc-nuke-everything-in-libSystem.B.dylib
|
|
From: <sv...@va...> - 2009-07-31 08:47:09
|
Author: sewardj
Date: 2009-07-31 09:46:35 +0100 (Fri, 31 Jul 2009)
New Revision: 10676
Log:
Don't instrument any code in ld.so. Doing so merely generates a large
number of races which have to be expensively suppressed, so it's
better not to do so.
Modified:
trunk/glibc-2.34567-NPTL-helgrind.supp
trunk/helgrind/hg_main.c
trunk/include/pub_tool_redir.h
Modified: trunk/glibc-2.34567-NPTL-helgrind.supp
===================================================================
--- trunk/glibc-2.34567-NPTL-helgrind.supp 2009-07-31 08:45:02 UTC (rev 10675)
+++ trunk/glibc-2.34567-NPTL-helgrind.supp 2009-07-31 08:46:35 UTC (rev 10676)
@@ -24,11 +24,11 @@
# H fails to see glibc's internal locking/unlocking of FILE*s
# as required by POSIX. A better solution is needed.
-{
- helgrind-glibc2X-001
- Helgrind:Race
- obj:/lib*/ld-2.*so*
-}
+#{
+# helgrind-glibc2X-001
+# Helgrind:Race
+# obj:/lib*/ld-2.*so*
+#}
# helgrind-glibc2X-002 was merged into helgrind-glibc2X-001
Modified: trunk/helgrind/hg_main.c
===================================================================
--- trunk/helgrind/hg_main.c 2009-07-31 08:45:02 UTC (rev 10675)
+++ trunk/helgrind/hg_main.c 2009-07-31 08:46:35 UTC (rev 10676)
@@ -49,6 +49,9 @@
#include "pub_tool_xarray.h"
#include "pub_tool_stacktrace.h"
#include "pub_tool_wordfm.h"
+#include "pub_tool_debuginfo.h" // VG_(find_seginfo), VG_(seginfo_soname)
+#include "pub_tool_redir.h" // sonames for the dynamic linkers
+#include "pub_tool_vki.h" // VKI_PAGE_SIZE
#include "hg_basics.h"
#include "hg_wordset.h"
@@ -3691,6 +3694,35 @@
}
+/* Figure out if GA is a guest code address in the dynamic linker, and
+ if so return True. Otherwise (and in case of any doubt) return
+ False. (sidedly safe w/ False as the safe value) */
+static Bool is_in_dynamic_linker_shared_object( Addr64 ga )
+{
+ DebugInfo* dinfo;
+ const UChar* soname;
+ if (0) return False;
+
+ dinfo = VG_(find_seginfo)( (Addr)ga );
+ if (!dinfo) return False;
+
+ soname = VG_(seginfo_soname)(dinfo);
+ tl_assert(soname);
+ if (0) VG_(printf)("%s\n", soname);
+
+# if defined(VGO_linux)
+ if (VG_STREQ(soname, VG_U_LD_LINUX_SO_2)) return True;
+ if (VG_STREQ(soname, VG_U_LD_LINUX_X86_64_SO_2)) return True;
+ if (VG_STREQ(soname, VG_U_LD64_SO_1)) return True;
+ if (VG_STREQ(soname, VG_U_LD_SO_1)) return True;
+# elif defined(VGO_darwin)
+ if (VG_STREQ(soname, VG_U_DYLD)) return True;
+# else
+# error "Unsupported OS"
+# endif
+ return False;
+}
+
static
IRSB* hg_instrument ( VgCallbackClosure* closure,
IRSB* bbIn,
@@ -3702,12 +3734,18 @@
IRSB* bbOut;
Addr64 cia; /* address of current insn */
IRStmt* st;
+ Bool inLDSO = False;
+ Addr64 inLDSOmask4K = 1; /* mismatches on first check */
if (gWordTy != hWordTy) {
/* We don't currently support this case. */
VG_(tool_panic)("host/guest word size mismatch");
}
+ if (VKI_PAGE_SIZE < 4096 || VG_(log2)(VKI_PAGE_SIZE) == -1) {
+ VG_(tool_panic)("implausible or too-small VKI_PAGE_SIZE");
+ }
+
/* Set up BB */
bbOut = emptyIRSB();
bbOut->tyenv = deepCopyIRTypeEnv(bbIn->tyenv);
@@ -3745,6 +3783,20 @@
case Ist_IMark:
/* no mem refs, but note the insn address. */
cia = st->Ist.IMark.addr;
+ /* Don't instrument the dynamic linker. It generates a
+ lot of races which we just expensively suppress, so
+ it's pointless.
+
+ Avoid flooding is_in_dynamic_linker_shared_object with
+ requests by only checking at transitions between 4K
+ pages. */
+ if ((cia & ~(Addr64)0xFFF) != inLDSOmask4K) {
+ if (0) VG_(printf)("NEW %#lx\n", (Addr)cia);
+ inLDSOmask4K = cia & ~(Addr64)0xFFF;
+ inLDSO = is_in_dynamic_linker_shared_object(cia);
+ } else {
+ if (0) VG_(printf)("old %#lx\n", (Addr)cia);
+ }
break;
case Ist_MBE:
@@ -3769,14 +3821,16 @@
tl_assert(!cas->dataHi);
}
/* Just be boring about it. */
- instrument_mem_access(
- bbOut,
- cas->addr,
- (isDCAS ? 2 : 1)
- * sizeofIRType(typeOfIRExpr(bbIn->tyenv, cas->dataLo)),
- False/*!isStore*/,
- sizeofIRType(hWordTy)
- );
+ if (!inLDSO) {
+ instrument_mem_access(
+ bbOut,
+ cas->addr,
+ (isDCAS ? 2 : 1)
+ * sizeofIRType(typeOfIRExpr(bbIn->tyenv, cas->dataLo)),
+ False/*!isStore*/,
+ sizeofIRType(hWordTy)
+ );
+ }
break;
}
@@ -3784,13 +3838,15 @@
/* It seems we pretend that store-conditionals don't
exist, viz, just ignore them ... */
if (st->Ist.Store.resSC == IRTemp_INVALID) {
- instrument_mem_access(
- bbOut,
- st->Ist.Store.addr,
- sizeofIRType(typeOfIRExpr(bbIn->tyenv, st->Ist.Store.data)),
- True/*isStore*/,
- sizeofIRType(hWordTy)
- );
+ if (!inLDSO) {
+ instrument_mem_access(
+ bbOut,
+ st->Ist.Store.addr,
+ sizeofIRType(typeOfIRExpr(bbIn->tyenv, st->Ist.Store.data)),
+ True/*isStore*/,
+ sizeofIRType(hWordTy)
+ );
+ }
}
break;
@@ -3799,13 +3855,15 @@
vanilla one or a load-linked. */
IRExpr* data = st->Ist.WrTmp.data;
if (data->tag == Iex_Load) {
- instrument_mem_access(
- bbOut,
- data->Iex.Load.addr,
- sizeofIRType(data->Iex.Load.ty),
- False/*!isStore*/,
- sizeofIRType(hWordTy)
- );
+ if (!inLDSO) {
+ instrument_mem_access(
+ bbOut,
+ data->Iex.Load.addr,
+ sizeofIRType(data->Iex.Load.ty),
+ False/*!isStore*/,
+ sizeofIRType(hWordTy)
+ );
+ }
}
break;
}
@@ -3820,16 +3878,20 @@
tl_assert(d->mSize != 0);
dataSize = d->mSize;
if (d->mFx == Ifx_Read || d->mFx == Ifx_Modify) {
- instrument_mem_access(
- bbOut, d->mAddr, dataSize, False/*!isStore*/,
- sizeofIRType(hWordTy)
- );
+ if (!inLDSO) {
+ instrument_mem_access(
+ bbOut, d->mAddr, dataSize, False/*!isStore*/,
+ sizeofIRType(hWordTy)
+ );
+ }
}
if (d->mFx == Ifx_Write || d->mFx == Ifx_Modify) {
- instrument_mem_access(
- bbOut, d->mAddr, dataSize, True/*isStore*/,
- sizeofIRType(hWordTy)
- );
+ if (!inLDSO) {
+ instrument_mem_access(
+ bbOut, d->mAddr, dataSize, True/*isStore*/,
+ sizeofIRType(hWordTy)
+ );
+ }
}
} else {
tl_assert(d->mAddr == NULL);
Modified: trunk/include/pub_tool_redir.h
===================================================================
--- trunk/include/pub_tool_redir.h 2009-07-31 08:45:02 UTC (rev 10675)
+++ trunk/include/pub_tool_redir.h 2009-07-31 08:46:35 UTC (rev 10676)
@@ -211,19 +211,31 @@
# error "Unknown platform"
#endif
-/* --- Sonames for Linux ELF linkers. --- */
+/* --- Sonames for Linux ELF linkers, plus unencoded versions. --- */
#if defined(VGO_linux)
+
#define VG_Z_LD_LINUX_SO_2 ldZhlinuxZdsoZd2 // ld-linux.so.2
+#define VG_U_LD_LINUX_SO_2 "ld-linux.so.2"
+
#define VG_Z_LD_LINUX_X86_64_SO_2 ldZhlinuxZhx86Zh64ZdsoZd2 // ld-linux-x86-64.so.2
+#define VG_U_LD_LINUX_X86_64_SO_2 "ld-linux-x86-64.so.2"
+
#define VG_Z_LD64_SO_1 ld64ZdsoZd1 // ld64.so.1
+#define VG_U_LD64_SO_1 "ld64.so.1"
+
#define VG_Z_LD_SO_1 ldZdsoZd1 // ld.so.1
+#define VG_U_LD_SO_1 "ld.so.1"
+
#endif
/* --- Executable name for Darwin Mach-O linker. --- */
#if defined(VGO_darwin)
+
#define VG_Z_DYLD dyld // dyld
+#define VG_U_DYLD "dyld"
+
#endif
|
|
From: <sv...@va...> - 2009-07-31 08:45:18
|
Author: bart
Date: 2009-07-31 09:45:02 +0100 (Fri, 31 Jul 2009)
New Revision: 10675
Log:
Only consider two error contexts as equivalent if the contexts have another
type than "data race error" or if both data race error contexts refer to the
same access type and the same access size.
Modified:
trunk/drd/drd_error.c
Modified: trunk/drd/drd_error.c
===================================================================
--- trunk/drd/drd_error.c 2009-07-31 08:26:17 UTC (rev 10674)
+++ trunk/drd/drd_error.c 2009-07-31 08:45:02 UTC (rev 10675)
@@ -196,11 +196,20 @@
*/
static Bool drd_compare_error_contexts(VgRes res, Error* e1, Error* e2)
{
- /*
- * Since e1 and e2 have the same error kind and the same error contexts,
- * no further comparisons have to be performed. Just return true.
- */
- return True;
+ tl_assert(VG_(get_error_kind)(e1) == VG_(get_error_kind)(e2));
+
+ switch (VG_(get_error_kind)(e1))
+ {
+ case DataRaceErr:
+ {
+ const DataRaceErrInfo* const dri1 = VG_(get_error_extra)(e1);
+ const DataRaceErrInfo* const dri2 = VG_(get_error_extra)(e2);
+ return dri1->access_type == dri2->access_type
+ && dri1->size == dri2->size;
+ }
+ default:
+ return True;
+ }
}
/**
|
|
From: <sv...@va...> - 2009-07-31 08:35:15
|
Author: bart
Date: 2009-07-31 09:26:17 +0100 (Fri, 31 Jul 2009)
New Revision: 10674
Log:
Report an error message instead of triggering an assertion failure when a non-existing thread ID is passed to pthread_join() or pthread_cancel().
Modified:
trunk/drd/drd_clientreq.c
trunk/drd/drd_error.c
trunk/drd/drd_error.h
trunk/drd/drd_pthread_intercepts.c
trunk/drd/drd_thread.c
Modified: trunk/drd/drd_clientreq.c
===================================================================
--- trunk/drd/drd_clientreq.c 2009-07-31 07:50:17 UTC (rev 10673)
+++ trunk/drd/drd_clientreq.c 2009-07-31 08:26:17 UTC (rev 10674)
@@ -83,11 +83,11 @@
if (arg[1] && ! DRD_(freelike_block)(vg_tid, arg[1]/*addr*/))
{
GenericErrInfo GEI = { DRD_(thread_get_running_tid)() };
- VG_(maybe_record_error)(vg_tid,
- GenericErr,
- VG_(get_IP)(vg_tid),
- "Invalid VG_USERREQ__FREELIKE_BLOCK request",
- &GEI);
+ VG_(maybe_record_error)(vg_tid,
+ GenericErr,
+ VG_(get_IP)(vg_tid),
+ "Invalid VG_USERREQ__FREELIKE_BLOCK request",
+ &GEI);
}
break;
@@ -212,17 +212,44 @@
break;
case VG_USERREQ__POST_THREAD_JOIN:
- tl_assert(arg[1]);
- DRD_(thread_post_join)(drd_tid, DRD_(PtThreadIdToDrdThreadId)(arg[1]));
+ {
+ const DrdThreadId thread_to_join = DRD_(PtThreadIdToDrdThreadId)(arg[1]);
+ if (thread_to_join == DRD_INVALID_THREADID)
+ {
+ InvalidThreadIdInfo ITI = { DRD_(thread_get_running_tid)(), arg[1] };
+ VG_(maybe_record_error)(vg_tid,
+ InvalidThreadId,
+ VG_(get_IP)(vg_tid),
+ "pthread_join(): invalid thread ID",
+ &ITI);
+ }
+ else
+ {
+ DRD_(thread_post_join)(drd_tid, thread_to_join);
+ }
break;
+ }
case VG_USERREQ__PRE_THREAD_CANCEL:
- tl_assert(arg[1]);
- DRD_(thread_pre_cancel)(drd_tid);
+ {
+ const DrdThreadId thread_to_cancel =DRD_(PtThreadIdToDrdThreadId)(arg[1]);
+ if (thread_to_cancel == DRD_INVALID_THREADID)
+ {
+ InvalidThreadIdInfo ITI = { DRD_(thread_get_running_tid)(), arg[1] };
+ VG_(maybe_record_error)(vg_tid,
+ InvalidThreadId,
+ VG_(get_IP)(vg_tid),
+ "pthread_cancel(): invalid thread ID",
+ &ITI);
+ }
+ else
+ {
+ DRD_(thread_pre_cancel)(thread_to_cancel);
+ }
break;
+ }
case VG_USERREQ__POST_THREAD_CANCEL:
- tl_assert(arg[1]);
break;
case VG_USERREQ__PRE_MUTEX_INIT:
Modified: trunk/drd/drd_error.c
===================================================================
--- trunk/drd/drd_error.c 2009-07-31 07:50:17 UTC (rev 10673)
+++ trunk/drd/drd_error.c 2009-07-31 08:26:17 UTC (rev 10674)
@@ -361,6 +361,13 @@
VG_(pp_ExeContext)(VG_(get_error_where)(e));
break;
}
+ case InvalidThreadId: {
+ InvalidThreadIdInfo* iti =(InvalidThreadIdInfo*)(VG_(get_error_extra)(e));
+ VG_(message)(Vg_UserMsg,
+ "%s 0x%llx\n", VG_(get_error_string)(e), iti->ptid);
+ VG_(pp_ExeContext)(VG_(get_error_where)(e));
+ break;
+ }
default:
VG_(message)(Vg_UserMsg,
"%s\n",
@@ -396,6 +403,8 @@
return sizeof(HoldtimeErrInfo);
case GenericErr:
return sizeof(GenericErrInfo);
+ case InvalidThreadId:
+ return sizeof(InvalidThreadIdInfo);
default:
tl_assert(False);
break;
@@ -435,6 +444,8 @@
skind = HoldtimeErr;
else if (VG_(strcmp)(name, STR_GenericErr) == 0)
skind = GenericErr;
+ else if (VG_(strcmp)(name, STR_InvalidThreadId) == 0)
+ skind = InvalidThreadId;
else
return False;
@@ -480,6 +491,7 @@
case RwlockErr: return VGAPPEND(STR_, RwlockErr);
case HoldtimeErr: return VGAPPEND(STR_, HoldtimeErr);
case GenericErr: return VGAPPEND(STR_, GenericErr);
+ case InvalidThreadId: return VGAPPEND(STR_, InvalidThreadId);
default:
tl_assert(0);
}
Modified: trunk/drd/drd_error.h
===================================================================
--- trunk/drd/drd_error.h 2009-07-31 07:50:17 UTC (rev 10673)
+++ trunk/drd/drd_error.h 2009-07-31 08:26:17 UTC (rev 10674)
@@ -59,6 +59,8 @@
HoldtimeErr = 10,
#define STR_GenericErr "GenericErr"
GenericErr = 11,
+#define STR_InvalidThreadId "InvalidThreadId"
+ InvalidThreadId = 12,
} DrdErrorKind;
/* The classification of a faulting address. */
@@ -161,6 +163,10 @@
DrdThreadId tid;
} GenericErrInfo;
+typedef struct {
+ DrdThreadId tid;
+ ULong ptid;
+} InvalidThreadIdInfo;
void DRD_(set_show_conflicting_segments)(const Bool scs);
void DRD_(register_error_handlers)(void);
Modified: trunk/drd/drd_pthread_intercepts.c
===================================================================
--- trunk/drd/drd_pthread_intercepts.c 2009-07-31 07:50:17 UTC (rev 10673)
+++ trunk/drd/drd_pthread_intercepts.c 2009-07-31 08:26:17 UTC (rev 10674)
@@ -438,8 +438,9 @@
return ret;
}
-// pthread_cancel*
-PTH_FUNC(int, pthreadZucancelZa, pthread_t pt_thread)
+// pthread_cancel
+// Note: make sure not to intercept pthread_cancel_init() on Linux !
+PTH_FUNC(int, pthreadZucancel, pthread_t pt_thread)
{
int res;
int ret;
Modified: trunk/drd/drd_thread.c
===================================================================
--- trunk/drd/drd_thread.c 2009-07-31 07:50:17 UTC (rev 10673)
+++ trunk/drd/drd_thread.c 2009-07-31 08:26:17 UTC (rev 10674)
@@ -209,14 +209,15 @@
{
int i;
- tl_assert(tid != INVALID_POSIX_THREADID);
-
- for (i = 1; i < DRD_N_THREADS; i++)
+ if (tid != INVALID_POSIX_THREADID)
{
- if (DRD_(g_threadinfo)[i].posix_thread_exists
- && DRD_(g_threadinfo)[i].pt_threadid == tid)
+ for (i = 1; i < DRD_N_THREADS; i++)
{
- return i;
+ if (DRD_(g_threadinfo)[i].posix_thread_exists
+ && DRD_(g_threadinfo)[i].pt_threadid == tid)
+ {
+ return i;
+ }
}
}
return DRD_INVALID_THREADID;
|
|
From: Bart V. A. <bar...@gm...> - 2009-07-31 08:01:04
|
Nightly build on georgia-tech-cellbuzz-native ( cellbuzz, ppc64, Fedora 7, native ) Started at 2009-07-31 02:17:46 EDT Ended at 2009-07-31 04:00:42 EDT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 437 tests, 44 stderr failures, 9 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cases-full (stderr) memcheck/tests/leak-cases-summary (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stderr) none/tests/empty-exe (stderr) none/tests/linux/mremap (stderr) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc32/round (stdout) none/tests/ppc32/test_gx (stdout) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/round (stdout) none/tests/shell (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) none/tests/shell_zerolength (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) exp-ptrcheck/tests/bad_percentify (stderr) exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/fp (stderr) exp-ptrcheck/tests/globalerr (stderr) exp-ptrcheck/tests/hackedbz2 (stderr) exp-ptrcheck/tests/hp_bounds (stderr) exp-ptrcheck/tests/hp_dangle (stderr) exp-ptrcheck/tests/hsg (stderr) exp-ptrcheck/tests/justify (stderr) exp-ptrcheck/tests/partial_bad (stderr) exp-ptrcheck/tests/partial_good (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) exp-ptrcheck/tests/realloc (stderr) exp-ptrcheck/tests/stackerr (stderr) exp-ptrcheck/tests/strcpy (stderr) exp-ptrcheck/tests/supp (stderr) exp-ptrcheck/tests/tricky (stderr) exp-ptrcheck/tests/unaligned (stderr) exp-ptrcheck/tests/zero (stderr) |
|
From: <sv...@va...> - 2009-07-31 07:50:27
|
Author: bart Date: 2009-07-31 08:50:17 +0100 (Fri, 31 Jul 2009) New Revision: 10673 Log: Updated Subversion ignore list. Modified: trunk/memcheck/tests/linux/ Property changes on: trunk/memcheck/tests/linux ___________________________________________________________________ Name: svn:ignore - *.stderr.diff *.stderr.diff *.stderr.out *.stdout.out .deps brk capget lsframe1 lsframe2 Makefile Makefile.in stack_changes stack_switch timerfd-syscall + *.stderr.diff *.stderr.out *.stdout.diff *.stdout.out .deps brk capget lsframe1 lsframe2 Makefile Makefile.in stack_changes stack_switch timerfd-syscall |
|
From: <sv...@va...> - 2009-07-31 05:19:43
|
Author: njn
Date: 2009-07-31 06:19:29 +0100 (Fri, 31 Jul 2009)
New Revision: 10672
Log:
Fix compile error.
Modified:
trunk/coregrind/m_aspacemgr/aspacemgr-linux.c
Modified: trunk/coregrind/m_aspacemgr/aspacemgr-linux.c
===================================================================
--- trunk/coregrind/m_aspacemgr/aspacemgr-linux.c 2009-07-31 05:06:29 UTC (rev 10671)
+++ trunk/coregrind/m_aspacemgr/aspacemgr-linux.c 2009-07-31 05:19:29 UTC (rev 10672)
@@ -1036,7 +1036,6 @@
VG_(debugLog)(0,"aspacem",
" : .... %010llx-%010llx %s",
(ULong)start, (ULong)end, len_buf);
- }
return;
}
}
|
|
From: <sv...@va...> - 2009-07-31 05:06:48
|
Author: njn
Date: 2009-07-31 06:06:29 +0100 (Fri, 31 Jul 2009)
New Revision: 10671
Log:
Prettify the messages printed when segment mismatches happen. Also get rid
of two unnecessary gotos.
Modified:
trunk/coregrind/m_aspacemgr/aspacemgr-linux.c
Modified: trunk/coregrind/m_aspacemgr/aspacemgr-linux.c
===================================================================
--- trunk/coregrind/m_aspacemgr/aspacemgr-linux.c 2009-07-31 00:07:55 UTC (rev 10670)
+++ trunk/coregrind/m_aspacemgr/aspacemgr-linux.c 2009-07-31 05:06:29 UTC (rev 10671)
@@ -426,57 +426,61 @@
}
}
-static void show_Addr_concisely ( /*OUT*/HChar* buf, Addr aA )
+static void show_len_concisely ( /*OUT*/HChar* buf, Addr start, Addr end )
{
HChar* fmt;
- ULong a = (ULong)aA;
+ ULong len = ((ULong)end) - ((ULong)start) + 1;
- if (a < 10*1000*1000ULL) {
+ if (len < 10*1000*1000ULL) {
fmt = "%7llu";
}
- else if (a < 999999ULL * (1ULL<<20)) {
+ else if (len < 999999ULL * (1ULL<<20)) {
fmt = "%6llum";
- a >>= 20;
+ len >>= 20;
}
- else if (a < 999999ULL * (1ULL<<30)) {
+ else if (len < 999999ULL * (1ULL<<30)) {
fmt = "%6llug";
- a >>= 30;
+ len >>= 30;
}
- else if (a < 999999ULL * (1ULL<<40)) {
+ else if (len < 999999ULL * (1ULL<<40)) {
fmt = "%6llut";
- a >>= 40;
+ len >>= 40;
}
else {
fmt = "%6llue";
- a >>= 50;
+ len >>= 50;
}
- ML_(am_sprintf)(buf, fmt, a);
+ ML_(am_sprintf)(buf, fmt, len);
}
/* Show full details of an NSegment */
static void __attribute__ ((unused))
- show_nsegment_full ( Int logLevel, NSegment* seg )
+ show_nsegment_full ( Int logLevel, Int segNo, NSegment* seg )
{
+ HChar len_buf[20];
HChar* name = "(none)";
+
if (seg->fnIdx >= 0 && seg->fnIdx < segnames_used
&& segnames[seg->fnIdx].inUse
&& segnames[seg->fnIdx].fname[0] != 0)
name = segnames[seg->fnIdx].fname;
- VG_(debugLog)(logLevel, "aspacem",
- "NSegment{%s, start=0x%llx, end=0x%llx, smode=%s, dev=%llu, "
- "ino=%llu, offset=%lld, fnIdx=%d, hasR=%d, hasW=%d, hasX=%d, "
- "hasT=%d, mark=%d, name=\"%s\"}\n",
- show_SegKind(seg->kind),
- (ULong)seg->start,
- (ULong)seg->end,
+ show_len_concisely(len_buf, seg->start, seg->end);
+
+ VG_(debugLog)(
+ logLevel, "aspacem",
+ "%3d: %s %010llx-%010llx %s %c%c%c%c%c %s "
+ "d=0x%03llx i=%-7lld o=%-7lld (%d) m=%d %s\n",
+ segNo, show_SegKind(seg->kind),
+ (ULong)seg->start, (ULong)seg->end, len_buf,
+ seg->hasR ? 'r' : '-', seg->hasW ? 'w' : '-',
+ seg->hasX ? 'x' : '-', seg->hasT ? 'T' : '-',
+ seg->isCH ? 'H' : '-',
show_ShrinkMode(seg->smode),
seg->dev, seg->ino, seg->offset, seg->fnIdx,
- (Int)seg->hasR, (Int)seg->hasW, (Int)seg->hasX, (Int)seg->hasT,
- (Int)seg->mark,
- name
+ (Int)seg->mark, name
);
}
@@ -486,8 +490,7 @@
static void show_nsegment ( Int logLevel, Int segNo, NSegment* seg )
{
HChar len_buf[20];
- ULong len = ((ULong)seg->end) - ((ULong)seg->start) + 1;
- show_Addr_concisely(len_buf, len);
+ show_len_concisely(len_buf, seg->start, seg->end);
switch (seg->kind) {
@@ -952,29 +955,32 @@
? nsegments[i].start-nsegments[i].offset == addr-offset
: True);
if (!same) {
+ Addr start = addr;
+ Addr end = start + len - 1;
+ HChar len_buf[20];
+ show_len_concisely(len_buf, start, end);
+
sync_check_ok = False;
+
VG_(debugLog)(
0,"aspacem",
- "sync_check_mapping_callback: segment mismatch: V's seg:\n");
- show_nsegment_full( 0, &nsegments[i] );
- goto show_kern_seg;
+ "segment mismatch: V's seg 1st, kernel's 2nd:\n");
+ show_nsegment_full( 0, i, &nsegments[i] );
+ VG_(debugLog)(0,"aspacem",
+ "...: .... %010llx-%010llx %s %c%c%c.. ....... "
+ "d=0x%03llx i=%-7lld o=%-7lld (.) m=. %s\n",
+ (ULong)start, (ULong)end, len_buf,
+ prot & VKI_PROT_READ ? 'r' : '-',
+ prot & VKI_PROT_WRITE ? 'w' : '-',
+ prot & VKI_PROT_EXEC ? 'x' : '-',
+ dev, ino, offset, filename ? (HChar*)filename : "(none)" );
+
+ return;
}
}
/* Looks harmless. Keep going. */
return;
-
- show_kern_seg:
- VG_(debugLog)(0,"aspacem",
- "sync_check_mapping_callback: "
- "segment mismatch: kernel's seg:\n");
- VG_(debugLog)(0,"aspacem",
- "start=0x%llx end=0x%llx prot=%u "
- "dev=%llu ino=%llu offset=%lld name=\"%s\"\n",
- (ULong)addr, ((ULong)addr) + ((ULong)len) - 1,
- prot, dev, ino, offset,
- filename ? (HChar*)filename : "(none)" );
- return;
}
static void sync_check_gap_callback ( Addr addr, SizeT len )
@@ -1016,25 +1022,27 @@
|| nsegments[i].kind == SkResvn;
if (!same) {
+ Addr start = addr;
+ Addr end = start + len - 1;
+ HChar len_buf[20];
+ show_len_concisely(len_buf, start, end);
+
sync_check_ok = False;
+
VG_(debugLog)(
0,"aspacem",
- "sync_check_mapping_callback: segment mismatch: V's gap:\n");
- show_nsegment_full( 0, &nsegments[i] );
- goto show_kern_gap;
+ "segment mismatch: V's gap 1st, kernel's 2nd:\n");
+ show_nsegment_full( 0, i, &nsegments[i] );
+ VG_(debugLog)(0,"aspacem",
+ " : .... %010llx-%010llx %s",
+ (ULong)start, (ULong)end, len_buf);
+ }
+ return;
}
}
/* Looks harmless. Keep going. */
return;
-
- show_kern_gap:
- VG_(debugLog)(0,"aspacem",
- "sync_check_gap_callback: segment mismatch: kernel's gap:\n");
- VG_(debugLog)(0,"aspacem",
- "start=0x%llx end=0x%llx\n",
- (ULong)addr, ((ULong)addr) + ((ULong)len) - 1 );
- return;
}
@@ -1449,7 +1457,7 @@
aspacem_assert(VG_IS_PAGE_ALIGNED(sEnd+1));
segment_is_sane = sane_NSegment(seg);
- if (!segment_is_sane) show_nsegment_full(0,seg);
+ if (!segment_is_sane) show_nsegment_full(0,-1,seg);
aspacem_assert(segment_is_sane);
split_nsegments_lo_and_hi( sStart, sEnd, &iLo, &iHi );
|
|
From: Tom H. <th...@cy...> - 2009-07-31 02:49:24
|
Nightly build on lloyd ( x86_64, Fedora 7 ) Started at 2009-07-31 03:05:05 BST Ended at 2009-07-31 03:49:06 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 520 tests, 1 stderr failure, 0 stdout failures, 0 post failures == helgrind/tests/tc06_two_races_xml (stderr) |
|
From: Tom H. <th...@cy...> - 2009-07-31 02:31:14
|
Nightly build on mg ( x86_64, Fedora 9 ) Started at 2009-07-31 03:10:04 BST Ended at 2009-07-31 03:30:46 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 527 tests, 1 stderr failure, 0 stdout failures, 0 post failures == helgrind/tests/tc06_two_races_xml (stderr) |
|
From: <sv...@va...> - 2009-07-31 00:08:11
|
Author: njn Date: 2009-07-31 01:07:55 +0100 (Fri, 31 Jul 2009) New Revision: 10670 Log: wibble Modified: trunk/NEWS Modified: trunk/NEWS =================================================================== --- trunk/NEWS 2009-07-30 23:36:43 UTC (rev 10669) +++ trunk/NEWS 2009-07-31 00:07:55 UTC (rev 10670) @@ -82,7 +82,7 @@ Stack traces produced when --xml=yes is specified are different and unchanged. -* XXX: XML output has changed... +* XXX: XML output has changed... along with how --xml=yes works. * The graphs drawn by Massif's ms_print program have changed slightly: - The half-height chars '.' and ',' are no longer drawn, because they are |