From 3c95744de8c1917ec9d9fe952b6a28ea04e2e66d Mon Sep 17 00:00:00 2001 From: Evgeniy Stepanov Date: Mon, 31 Mar 2014 14:18:55 +0000 Subject: [PATCH] [msan] Remove an extra top frame from track-origins=2 reports. llvm-svn: 205192 --- compiler-rt/lib/msan/msan.cc | 4 +++- compiler-rt/lib/msan/msan.h | 16 +++++++++------- compiler-rt/test/msan/chained_origin.cc | 10 +++++----- compiler-rt/test/msan/chained_origin_memcpy.cc | 6 +++--- 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/compiler-rt/lib/msan/msan.cc b/compiler-rt/lib/msan/msan.cc index d5df834c53a1..7a93b663185c 100644 --- a/compiler-rt/lib/msan/msan.cc +++ b/compiler-rt/lib/msan/msan.cc @@ -484,7 +484,9 @@ void __msan_set_alloca_origin4(void *a, uptr size, const char *descr, uptr pc) { } u32 __msan_chain_origin(u32 id) { - GET_STORE_STACK_TRACE; + GET_CALLER_PC_BP_SP; + (void)sp; + GET_STORE_STACK_TRACE_PC_BP(pc, bp); return ChainOrigin(id, &stack); } diff --git a/compiler-rt/lib/msan/msan.h b/compiler-rt/lib/msan/msan.h index 8cc4cef338df..919415e4f046 100644 --- a/compiler-rt/lib/msan/msan.h +++ b/compiler-rt/lib/msan/msan.h @@ -104,13 +104,15 @@ u32 ChainOrigin(u32 id, StackTrace *stack); StackTrace::GetCurrentPc(), GET_CURRENT_FRAME(), \ common_flags()->fast_unwind_on_malloc) -#define GET_STORE_STACK_TRACE \ - StackTrace stack; \ - stack.size = 0; \ - if (__msan_get_track_origins() > 1 && msan_inited) \ - GetStackTrace(&stack, common_flags()->malloc_context_size, \ - StackTrace::GetCurrentPc(), GET_CURRENT_FRAME(), \ - common_flags()->fast_unwind_on_malloc) +#define GET_STORE_STACK_TRACE_PC_BP(pc, bp) \ + StackTrace stack; \ + stack.size = 0; \ + if (__msan_get_track_origins() > 1 && msan_inited) \ + GetStackTrace(&stack, common_flags()->malloc_context_size, pc, bp, \ + common_flags()->fast_unwind_on_malloc) + +#define GET_STORE_STACK_TRACE \ + GET_STORE_STACK_TRACE_PC_BP(StackTrace::GetCurrentPc(), GET_CURRENT_FRAME()) class ScopedThreadLocalStateBackup { public: diff --git a/compiler-rt/test/msan/chained_origin.cc b/compiler-rt/test/msan/chained_origin.cc index d0e8f06224aa..4dd357bbcc0d 100644 --- a/compiler-rt/test/msan/chained_origin.cc +++ b/compiler-rt/test/msan/chained_origin.cc @@ -41,13 +41,13 @@ int main(int argc, char *argv[]) { // CHECK: {{#0 .* in main.*chained_origin.cc:37}} // CHECK: Uninitialized value was stored to memory at -// CHECK: {{#.* in fn_h.*chained_origin.cc:25}} -// CHECK: {{#.* in main.*chained_origin.cc:36}} +// CHECK: {{#0 .* in fn_h.*chained_origin.cc:25}} +// CHECK: {{#1 .* in main.*chained_origin.cc:36}} // CHECK: Uninitialized value was stored to memory at -// CHECK: {{#.* in fn_g.*chained_origin.cc:15}} -// CHECK: {{#.* in fn_f.*chained_origin.cc:20}} -// CHECK: {{#.* in main.*chained_origin.cc:35}} +// CHECK: {{#0 .* in fn_g.*chained_origin.cc:15}} +// CHECK: {{#1 .* in fn_f.*chained_origin.cc:20}} +// CHECK: {{#2 .* in main.*chained_origin.cc:35}} // CHECK-STACK: Uninitialized value was created by an allocation of 'z' in the stack frame of function 'main' // CHECK-STACK: {{#0 .* in main.*chained_origin.cc:28}} diff --git a/compiler-rt/test/msan/chained_origin_memcpy.cc b/compiler-rt/test/msan/chained_origin_memcpy.cc index 67fab3cdcc4d..e53416403c9a 100644 --- a/compiler-rt/test/msan/chained_origin_memcpy.cc +++ b/compiler-rt/test/msan/chained_origin_memcpy.cc @@ -40,11 +40,11 @@ int main(int argc, char *argv[]) { // CHECK: {{#0 .* in main .*chained_origin_memcpy.cc:36}} // CHECK: Uninitialized value was stored to memory at -// CHECK: {{#.* in fn_h.*chained_origin_memcpy.cc:28}} +// CHECK: {{#1 .* in fn_h.*chained_origin_memcpy.cc:28}} // CHECK: Uninitialized value was stored to memory at -// CHECK: {{#.* in fn_g.*chained_origin_memcpy.cc:18}} -// CHECK: {{#.* in fn_f.*chained_origin_memcpy.cc:23}} +// CHECK: {{#0 .* in fn_g.*chained_origin_memcpy.cc:18}} +// CHECK: {{#1 .* in fn_f.*chained_origin_memcpy.cc:23}} // CHECK-Z1: Uninitialized value was created by an allocation of 'z1' in the stack frame of function 'main' // CHECK-Z2: Uninitialized value was created by an allocation of 'z2' in the stack frame of function 'main'