drd, XML tracing: move newline generation into DRD_(trace_msg)() / change tracing output format slightly.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12146 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/drd/drd_barrier.c b/drd/drd_barrier.c
index b45977a..a6e9e6a 100644
--- a/drd/drd_barrier.c
+++ b/drd/drd_barrier.c
@@ -260,11 +260,11 @@
if (s_trace_barrier) {
if (reinitialization)
- DRD_(trace_msg)("[%d] barrier_reinit %s 0x%lx count %ld -> %ld\n",
+ DRD_(trace_msg)("[%d] barrier_reinit %s 0x%lx count %ld -> %ld",
DRD_(thread_get_running_tid)(),
barrier_get_typename(p), barrier, p->count, count);
else
- DRD_(trace_msg)("[%d] barrier_init %s 0x%lx\n",
+ DRD_(trace_msg)("[%d] barrier_init %s 0x%lx",
DRD_(thread_get_running_tid)(),
barrier_get_typename(p),
barrier);
@@ -294,7 +294,7 @@
p = DRD_(barrier_get)(barrier);
if (s_trace_barrier)
- DRD_(trace_msg)("[%d] barrier_destroy %s 0x%lx\n",
+ DRD_(trace_msg)("[%d] barrier_destroy %s 0x%lx",
DRD_(thread_get_running_tid)(),
barrier_get_typename(p), barrier);
@@ -353,7 +353,7 @@
tl_assert(p);
if (s_trace_barrier)
- DRD_(trace_msg)("[%d] barrier_pre_wait %s 0x%lx iteration %ld\n",
+ DRD_(trace_msg)("[%d] barrier_pre_wait %s 0x%lx iteration %ld",
DRD_(thread_get_running_tid)(),
barrier_get_typename(p), barrier, p->pre_iteration);
@@ -414,7 +414,7 @@
p = DRD_(barrier_get)(barrier);
if (s_trace_barrier)
- DRD_(trace_msg)("[%d] barrier_post_wait %s 0x%lx iteration %ld%s\n",
+ DRD_(trace_msg)("[%d] barrier_post_wait %s 0x%lx iteration %ld%s",
tid, p ? barrier_get_typename(p) : "(?)",
barrier, p ? p->post_iteration : -1,
serializing ? " (serializing)" : "");
diff --git a/drd/drd_clientobj.c b/drd/drd_clientobj.c
index 7e3a8c6..43198cb 100644
--- a/drd/drd_clientobj.c
+++ b/drd/drd_clientobj.c
@@ -134,7 +134,7 @@
tl_assert(VG_(OSetGen_Lookup)(s_clientobj_set, &a1) == 0);
if (s_trace_clientobj)
- DRD_(trace_msg)("Adding client object 0x%lx of type %d\n", a1, t);
+ DRD_(trace_msg)("Adding client object 0x%lx of type %d", a1, t);
p = VG_(OSetGen_AllocNode)(s_clientobj_set, sizeof(*p));
VG_(memset)(p, 0, sizeof(*p));
@@ -180,7 +180,7 @@
tl_assert(p);
if (s_trace_clientobj) {
- DRD_(trace_msg)("Removing client object 0x%lx of type %d\n", p->any.a1,
+ DRD_(trace_msg)("Removing client object 0x%lx of type %d", p->any.a1,
p->any.type);
#if 0
VG_(get_and_pp_StackTrace)(VG_(get_running_tid)(),
diff --git a/drd/drd_cond.c b/drd/drd_cond.c
index 2e59b9f..023d463 100644
--- a/drd/drd_cond.c
+++ b/drd/drd_cond.c
@@ -148,7 +148,7 @@
struct cond_info* p;
if (DRD_(s_trace_cond))
- DRD_(trace_msg)("[%d] cond_init cond 0x%lx\n",
+ DRD_(trace_msg)("[%d] cond_init cond 0x%lx",
DRD_(thread_get_running_tid)(), cond);
p = DRD_(cond_get)(cond);
@@ -172,7 +172,7 @@
struct cond_info* p;
if (DRD_(s_trace_cond))
- DRD_(trace_msg)("[%d] cond_destroy cond 0x%lx\n",
+ DRD_(trace_msg)("[%d] cond_destroy cond 0x%lx",
DRD_(thread_get_running_tid)(), cond);
p = DRD_(cond_get)(cond);
@@ -211,7 +211,7 @@
struct mutex_info* q;
if (DRD_(s_trace_cond))
- DRD_(trace_msg)("[%d] cond_pre_wait cond 0x%lx\n",
+ DRD_(trace_msg)("[%d] cond_pre_wait cond 0x%lx",
DRD_(thread_get_running_tid)(), cond);
p = cond_get_or_allocate(cond);
@@ -272,7 +272,7 @@
struct cond_info* p;
if (DRD_(s_trace_cond))
- DRD_(trace_msg)("[%d] cond_post_wait cond 0x%lx\n",
+ DRD_(trace_msg)("[%d] cond_post_wait cond 0x%lx",
DRD_(thread_get_running_tid)(), cond);
p = DRD_(cond_get)(cond);
@@ -353,7 +353,7 @@
p = DRD_(cond_get)(cond);
if (DRD_(s_trace_cond))
- DRD_(trace_msg)("[%d] cond_signal cond 0x%lx\n",
+ DRD_(trace_msg)("[%d] cond_signal cond 0x%lx",
DRD_(thread_get_running_tid)(), cond);
tl_assert(DRD_(pthread_cond_initializer));
@@ -376,7 +376,7 @@
struct cond_info* p;
if (DRD_(s_trace_cond))
- DRD_(trace_msg)("[%d] cond_broadcast cond 0x%lx\n",
+ DRD_(trace_msg)("[%d] cond_broadcast cond 0x%lx",
DRD_(thread_get_running_tid)(), cond);
p = DRD_(cond_get)(cond);
diff --git a/drd/drd_error.c b/drd/drd_error.c
index eeea484..1a8c9d3 100644
--- a/drd/drd_error.c
+++ b/drd/drd_error.c
@@ -62,15 +62,34 @@
va_list vargs;
va_start(vargs, format);
if (VG_(clo_xml)) {
- VG_(printf_xml)("<traceline>\n ");
+ VG_(printf_xml)(" <trace><text>");
VG_(vprintf_xml)(format, vargs);
- VG_(printf_xml)("</traceline>\n");
+ VG_(printf_xml)("</text></trace>\n");
} else {
VG_(vmessage)(Vg_UserMsg, format, vargs);
+ VG_(message)(Vg_UserMsg, "\n");
}
va_end(vargs);
}
+void DRD_(trace_msg_w_bt)(const char* format, ...)
+{
+ va_list vargs;
+ va_start(vargs, format);
+ if (VG_(clo_xml)) {
+ VG_(printf_xml)(" <trace><text>");
+ VG_(vprintf_xml)(format, vargs);
+ VG_(printf_xml)("</text>\n");
+ } else {
+ VG_(vmessage)(Vg_UserMsg, format, vargs);
+ VG_(message)(Vg_UserMsg, "\n");
+ }
+ VG_(get_and_pp_StackTrace)(VG_(get_running_tid)(), VG_(clo_backtrace_size));
+ va_end(vargs);
+ if (VG_(clo_xml))
+ VG_(printf_xml)(" </trace>\n");
+}
+
/**
* Emit error message detail in the format requested by the user.
*/
diff --git a/drd/drd_error.h b/drd/drd_error.h
index 1665e3e..d11b599 100644
--- a/drd/drd_error.h
+++ b/drd/drd_error.h
@@ -181,6 +181,7 @@
void DRD_(set_show_conflicting_segments)(const Bool scs);
void DRD_(register_error_handlers)(void);
void DRD_(trace_msg)(const char* format, ...) PRINTF_CHECK(1, 2);
+void DRD_(trace_msg_w_bt)(const char* format, ...) PRINTF_CHECK(1, 2);
#endif /* __DRD_ERROR_H */
diff --git a/drd/drd_hb.c b/drd/drd_hb.c
index 919d171..a05265a 100644
--- a/drd/drd_hb.c
+++ b/drd/drd_hb.c
@@ -165,7 +165,7 @@
p = DRD_(hb_get_or_allocate)(hb);
if (DRD_(s_trace_hb))
- DRD_(trace_msg)("[%d] happens_before 0x%lx\n",
+ DRD_(trace_msg)("[%d] happens_before 0x%lx",
DRD_(thread_get_running_tid)(), hb);
if (!p)
@@ -199,7 +199,7 @@
p = DRD_(hb_get_or_allocate)(hb);
if (DRD_(s_trace_hb))
- DRD_(trace_msg)("[%d] happens_after 0x%lx\n",
+ DRD_(trace_msg)("[%d] happens_after 0x%lx",
DRD_(thread_get_running_tid)(), hb);
if (!p)
@@ -231,7 +231,7 @@
struct hb_info* p;
if (DRD_(s_trace_hb))
- DRD_(trace_msg)("[%d] happens_done 0x%lx\n",
+ DRD_(trace_msg)("[%d] happens_done 0x%lx",
DRD_(thread_get_running_tid)(), hb);
p = DRD_(hb_get)(hb);
diff --git a/drd/drd_load_store.c b/drd/drd_load_store.c
index 5b7904d..09800c3 100644
--- a/drd/drd_load_store.c
+++ b/drd/drd_load_store.c
@@ -93,15 +93,13 @@
char* vc;
vc = DRD_(vc_aprint)(DRD_(thread_get_vc)(DRD_(thread_get_running_tid)()));
- DRD_(trace_msg)("%s 0x%lx size %ld (thread %d / vc %s)\n",
- access_type == eLoad ? "load "
- : access_type == eStore ? "store"
- : access_type == eStart ? "start"
- : access_type == eEnd ? "end " : "????",
- addr, size, DRD_(thread_get_running_tid)(), vc);
+ DRD_(trace_msg_w_bt)("%s 0x%lx size %ld (thread %d / vc %s)",
+ access_type == eLoad ? "load "
+ : access_type == eStore ? "store"
+ : access_type == eStart ? "start"
+ : access_type == eEnd ? "end " : "????",
+ addr, size, DRD_(thread_get_running_tid)(), vc);
VG_(free)(vc);
- VG_(get_and_pp_StackTrace)(VG_(get_running_tid)(),
- VG_(clo_backtrace_size));
tl_assert(DRD_(DrdThreadIdToVgThreadId)(DRD_(thread_get_running_tid)())
== VG_(get_running_tid)());
}
diff --git a/drd/drd_main.c b/drd/drd_main.c
index afd0eae..ac7b551 100644
--- a/drd/drd_main.c
+++ b/drd/drd_main.c
@@ -311,7 +311,7 @@
tl_assert(a1 <= a2);
if (!is_stack_mem && s_trace_alloc)
- DRD_(trace_msg)("Started using memory range 0x%lx + %ld%s\n",
+ DRD_(trace_msg)("Started using memory range 0x%lx + %ld%s",
a1, len, DRD_(running_thread_inside_pthread_create)()
? " (inside pthread_create())" : "");
@@ -355,7 +355,7 @@
DRD_(trace_mem_access)(a1, len, eEnd);
if (!is_stack_mem && s_trace_alloc)
- DRD_(trace_msg)("Stopped using memory range 0x%lx + %ld\n",
+ DRD_(trace_msg)("Stopped using memory range 0x%lx + %ld",
a1, len);
if (!is_stack_mem || DRD_(get_check_stack_accesses)())
@@ -573,7 +573,7 @@
}
if (DRD_(thread_get_trace_fork_join)())
{
- DRD_(trace_msg)("drd_pre_thread_create creator = %d, created = %d\n",
+ DRD_(trace_msg)("drd_pre_thread_create creator = %d, created = %d",
drd_creator, created);
}
}
@@ -591,7 +591,7 @@
drd_created = DRD_(thread_post_create)(vg_created);
if (DRD_(thread_get_trace_fork_join)())
{
- DRD_(trace_msg)("drd_post_thread_create created = %d\n", drd_created);
+ DRD_(trace_msg)("drd_post_thread_create created = %d", drd_created);
}
if (! DRD_(get_check_stack_accesses)())
{
@@ -612,7 +612,7 @@
drd_tid = DRD_(VgThreadIdToDrdThreadId)(vg_tid);
if (DRD_(thread_get_trace_fork_join)())
{
- DRD_(trace_msg)("drd_thread_finished tid = %d%s\n", drd_tid,
+ DRD_(trace_msg)("drd_thread_finished tid = %d%s", drd_tid,
DRD_(thread_get_joinable)(drd_tid)
? "" : " (which is a detached thread)");
}
diff --git a/drd/drd_mutex.c b/drd/drd_mutex.c
index 289ebe5..c9392ee 100644
--- a/drd/drd_mutex.c
+++ b/drd/drd_mutex.c
@@ -89,7 +89,7 @@
tl_assert(p);
if (s_trace_mutex)
- DRD_(trace_msg)("[%d] mutex_destroy %s 0x%lx rc %d owner %d\n",
+ DRD_(trace_msg)("[%d] mutex_destroy %s 0x%lx rc %d owner %d",
DRD_(thread_get_running_tid)(),
DRD_(mutex_get_typename)(p), p->a1,
p ? p->recursion_count : -1,
@@ -180,7 +180,7 @@
struct mutex_info* p;
if (s_trace_mutex)
- DRD_(trace_msg)("[%d] mutex_init %s 0x%lx\n",
+ DRD_(trace_msg)("[%d] mutex_init %s 0x%lx",
DRD_(thread_get_running_tid)(),
DRD_(mutex_type_name)(mutex_type),
mutex);
@@ -241,7 +241,7 @@
mutex_type = p->mutex_type;
if (s_trace_mutex)
- DRD_(trace_msg)("[%d] %s %s 0x%lx rc %d owner %d\n",
+ DRD_(trace_msg)("[%d] %s %s 0x%lx rc %d owner %d",
DRD_(thread_get_running_tid)(),
trylock ? "pre_mutex_lock " : "mutex_trylock ",
p ? DRD_(mutex_get_typename)(p) : "(?)",
@@ -291,7 +291,7 @@
p = DRD_(mutex_get)(mutex);
if (s_trace_mutex)
- DRD_(trace_msg)("[%d] %s %s 0x%lx rc %d owner %d%s\n",
+ DRD_(trace_msg)("[%d] %s %s 0x%lx rc %d owner %d%s",
drd_tid,
post_cond_wait ? "cond_post_wait " : "post_mutex_lock",
p ? DRD_(mutex_get_typename)(p) : "(?)",
@@ -356,7 +356,7 @@
mutex_type = p->mutex_type;
if (s_trace_mutex) {
- DRD_(trace_msg)("[%d] mutex_unlock %s 0x%lx rc %d\n",
+ DRD_(trace_msg)("[%d] mutex_unlock %s 0x%lx rc %d",
drd_tid, p ? DRD_(mutex_get_typename)(p) : "(?)",
mutex, p ? p->recursion_count : 0);
}
diff --git a/drd/drd_rwlock.c b/drd/drd_rwlock.c
index 448add2..8e13c66 100644
--- a/drd/drd_rwlock.c
+++ b/drd/drd_rwlock.c
@@ -251,7 +251,7 @@
tl_assert(p);
if (DRD_(s_trace_rwlock))
- DRD_(trace_msg)("[%d] rwlock_destroy 0x%lx\n",
+ DRD_(trace_msg)("[%d] rwlock_destroy 0x%lx",
DRD_(thread_get_running_tid)(), p->a1);
if (DRD_(rwlock_is_locked)(p))
@@ -320,7 +320,7 @@
struct rwlock_info* p;
if (DRD_(s_trace_rwlock))
- DRD_(trace_msg)("[%d] rwlock_init 0x%lx\n",
+ DRD_(trace_msg)("[%d] rwlock_init 0x%lx",
DRD_(thread_get_running_tid)(), rwlock);
p = DRD_(rwlock_get)(rwlock);
@@ -381,7 +381,7 @@
struct rwlock_info* p;
if (DRD_(s_trace_rwlock))
- DRD_(trace_msg)("[%d] pre_rwlock_rdlock 0x%lx\n",
+ DRD_(trace_msg)("[%d] pre_rwlock_rdlock 0x%lx",
DRD_(thread_get_running_tid)(), rwlock);
p = DRD_(rwlock_get_or_allocate)(rwlock, rwlock_type);
@@ -410,7 +410,7 @@
struct rwlock_thread_info* q;
if (DRD_(s_trace_rwlock))
- DRD_(trace_msg)("[%d] post_rwlock_rdlock 0x%lx\n", drd_tid, rwlock);
+ DRD_(trace_msg)("[%d] post_rwlock_rdlock 0x%lx", drd_tid, rwlock);
p = DRD_(rwlock_get)(rwlock);
@@ -444,7 +444,7 @@
p = DRD_(rwlock_get)(rwlock);
if (DRD_(s_trace_rwlock))
- DRD_(trace_msg)("[%d] pre_rwlock_wrlock 0x%lx\n",
+ DRD_(trace_msg)("[%d] pre_rwlock_wrlock 0x%lx",
DRD_(thread_get_running_tid)(), rwlock);
if (p == 0)
@@ -478,7 +478,7 @@
p = DRD_(rwlock_get)(rwlock);
if (DRD_(s_trace_rwlock))
- DRD_(trace_msg)("[%d] post_rwlock_wrlock 0x%lx\n", drd_tid, rwlock);
+ DRD_(trace_msg)("[%d] post_rwlock_wrlock 0x%lx", drd_tid, rwlock);
if (! p || ! took_lock)
return;
@@ -513,7 +513,7 @@
struct rwlock_thread_info* q;
if (DRD_(s_trace_rwlock))
- DRD_(trace_msg)("[%d] rwlock_unlock 0x%lx\n", drd_tid, rwlock);
+ DRD_(trace_msg)("[%d] rwlock_unlock 0x%lx", drd_tid, rwlock);
p = DRD_(rwlock_get)(rwlock);
if (p == 0)
diff --git a/drd/drd_semaphore.c b/drd/drd_semaphore.c
index 3d28089..0b7065f 100644
--- a/drd/drd_semaphore.c
+++ b/drd/drd_semaphore.c
@@ -175,7 +175,7 @@
Segment* sg;
if (s_trace_semaphore)
- DRD_(trace_msg)("[%d] sem_init 0x%lx value %u\n",
+ DRD_(trace_msg)("[%d] sem_init 0x%lx value %u",
DRD_(thread_get_running_tid)(), semaphore, value);
p = semaphore_get(semaphore);
@@ -223,7 +223,7 @@
p = semaphore_get(semaphore);
if (s_trace_semaphore)
- DRD_(trace_msg)("[%d] sem_destroy 0x%lx value %u\n",
+ DRD_(trace_msg)("[%d] sem_destroy 0x%lx value %u",
DRD_(thread_get_running_tid)(), semaphore,
p ? p->value : 0);
@@ -254,7 +254,7 @@
if (s_trace_semaphore)
DRD_(trace_msg)("[%d] sem_open 0x%lx name %s"
- " oflag %#lx mode %#lo value %u\n",
+ " oflag %#lx mode %#lo value %u",
DRD_(thread_get_running_tid)(),
semaphore, name, oflag, mode, value);
@@ -296,7 +296,7 @@
p = semaphore_get(semaphore);
if (s_trace_semaphore)
- DRD_(trace_msg)("[%d] sem_close 0x%lx value %u\n",
+ DRD_(trace_msg)("[%d] sem_close 0x%lx value %u",
DRD_(thread_get_running_tid)(), semaphore,
p ? p->value : 0);
@@ -351,7 +351,7 @@
p = semaphore_get(semaphore);
if (s_trace_semaphore)
- DRD_(trace_msg)("[%d] sem_wait 0x%lx value %u -> %u\n",
+ DRD_(trace_msg)("[%d] sem_wait 0x%lx value %u -> %u",
DRD_(thread_get_running_tid)(), semaphore,
p ? p->value : 0, p ? p->value - 1 : 0);
@@ -407,7 +407,7 @@
p->value++;
if (s_trace_semaphore)
- DRD_(trace_msg)("[%d] sem_post 0x%lx value %u -> %u\n",
+ DRD_(trace_msg)("[%d] sem_post 0x%lx value %u -> %u",
DRD_(thread_get_running_tid)(),
semaphore, p->value - 1, p->value);
diff --git a/drd/drd_thread.c b/drd/drd_thread.c
index c50dd4c..93fe6a2 100644
--- a/drd/drd_thread.c
+++ b/drd/drd_thread.c
@@ -390,7 +390,7 @@
", new vc: %s", vc);
VG_(free)(vc);
}
- DRD_(trace_msg)("%pS\n", msg);
+ DRD_(trace_msg)("%pS", msg);
VG_(free)(msg);
}
@@ -564,7 +564,7 @@
tl_assert(DRD_(g_threadinfo)[tid].pt_threadid != INVALID_POSIX_THREADID);
if (DRD_(thread_get_trace_fork_join)())
- DRD_(trace_msg)("[%d] drd_thread_pre_cancel %d\n",
+ DRD_(trace_msg)("[%d] drd_thread_pre_cancel %d",
DRD_(g_drd_running_tid), tid);
}
diff --git a/drd/tests/annotate_trace_memory_xml.stderr.exp b/drd/tests/annotate_trace_memory_xml.stderr.exp
index 6180194..3469a23 100644
--- a/drd/tests/annotate_trace_memory_xml.stderr.exp
+++ b/drd/tests/annotate_trace_memory_xml.stderr.exp
@@ -31,9 +31,7 @@
FLAGS [phb=1, fm=0]
test01: positive
-<traceline>
- store 0x........ size 4 (thread x / vc ...)
-</traceline>
+ <trace><text>store 0x........ size 4 (thread x / vc ...)</text>
<stack>
<frame>
<ip>0x........</ip>
@@ -52,9 +50,8 @@
<line>...</line>
</frame>
</stack>
-<traceline>
- store 0x........ size 4 (thread x / vc ...)
-</traceline>
+ </trace>
+ <trace><text>store 0x........ size 4 (thread x / vc ...)</text>
<stack>
<frame>
<ip>0x........</ip>
@@ -73,6 +70,7 @@
<line>...</line>
</frame>
</stack>
+ </trace>
<error>
<unique>0x........</unique>
<tid>...</tid>
@@ -99,9 +97,7 @@
<auxwhat>Allocation context: BSS section of tsan_unittest</auxwhat>
</error>
-<traceline>
- load 0x........ size 4 (thread x / vc ...)
-</traceline>
+ <trace><text>load 0x........ size 4 (thread x / vc ...)</text>
<stack>
<frame>
<ip>0x........</ip>
@@ -120,6 +116,7 @@
<line>...</line>
</frame>
</stack>
+ </trace>
GLOB=2
<status>
diff --git a/drd/tests/fp_race_xml.stderr.exp b/drd/tests/fp_race_xml.stderr.exp
index 485f02e..87f8e23 100644
--- a/drd/tests/fp_race_xml.stderr.exp
+++ b/drd/tests/fp_race_xml.stderr.exp
@@ -28,21 +28,11 @@
<time>...</time>
</status>
-<traceline>
- drd_pre_thread_create creator = 0, created = 1
-</traceline>
-<traceline>
- drd_post_thread_create created = 1
-</traceline>
-<traceline>
- drd_pre_thread_create creator = 1, created = 2
-</traceline>
-<traceline>
- drd_post_thread_create created = 2
-</traceline>
-<traceline>
- drd_thread_finished tid = 2
-</traceline>
+ <trace><text>drd_pre_thread_create creator = 0, created = 1</text></trace>
+ <trace><text>drd_post_thread_create created = 1</text></trace>
+ <trace><text>drd_pre_thread_create creator = 1, created = 2</text></trace>
+ <trace><text>drd_post_thread_create created = 2</text></trace>
+ <trace><text>drd_thread_finished tid = 2</text></trace>
<error>
<unique>0x........</unique>
<tid>...</tid>
@@ -89,12 +79,8 @@
</other_segment_end>
</error>
-<traceline>
- drd_post_thread_join joiner = 1, joinee = 2, new vc: [ 1: 4, 2: 1 ]
-</traceline>
-<traceline>
- drd_thread_finished tid = 1
-</traceline>
+ <trace><text>drd_post_thread_join joiner = 1, joinee = 2, new vc: [ 1: 4, 2: 1 ]</text></trace>
+ <trace><text>drd_thread_finished tid = 1</text></trace>
<status>
<state>FINISHED</state>