|
From: <sv...@va...> - 2008-05-02 18:53:31
|
Author: bart
Date: 2008-05-02 19:53:33 +0100 (Fri, 02 May 2008)
New Revision: 7991
Log:
Postponed call of vg_set_main_thread_state() from /lib/ld-*.so:_start() to the call of main(), the program entry point.
Modified:
trunk/exp-drd/drd_pthread_intercepts.c
Modified: trunk/exp-drd/drd_pthread_intercepts.c
===================================================================
--- trunk/exp-drd/drd_pthread_intercepts.c 2008-05-02 17:27:08 UTC (rev 7990)
+++ trunk/exp-drd/drd_pthread_intercepts.c 2008-05-02 18:53:33 UTC (rev 7991)
@@ -97,7 +97,6 @@
static void init(void)
{
check_threading_library();
- vg_set_main_thread_state();
/* glibc up to and including version 2.7 triggers conflicting accesses */
/* on stdout and stderr when sending output to one of these streams from */
/* more than one thread. Suppress data race reports on these objects. */
@@ -105,6 +104,17 @@
DRD_IGNORE_VAR(*stderr);
}
+int VG_WRAP_FUNCTION_ZZ(Za,main)(int argc, char** argv, char** envp);
+int VG_WRAP_FUNCTION_ZZ(Za,main)(int argc, char** argv, char** envp)
+{
+ int ret;
+ OrigFn fn;
+ VALGRIND_GET_ORIG_FN(fn);
+ vg_set_main_thread_state();
+ CALL_FN_W_WWW(ret, fn, argc, argv, envp);
+ return ret;
+}
+
static MutexT pthread_to_drd_mutex_type(const int kind)
{
switch (kind)
|