[msan] Remove an extra top frame from track-origins=2 reports.

llvm-svn: 205192
This commit is contained in:
Evgeniy Stepanov 2014-03-31 14:18:55 +00:00
parent 2378d4c0ce
commit 3c95744de8
4 changed files with 20 additions and 16 deletions

View File

@ -484,7 +484,9 @@ void __msan_set_alloca_origin4(void *a, uptr size, const char *descr, uptr pc) {
} }
u32 __msan_chain_origin(u32 id) { 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); return ChainOrigin(id, &stack);
} }

View File

@ -104,14 +104,16 @@ u32 ChainOrigin(u32 id, StackTrace *stack);
StackTrace::GetCurrentPc(), GET_CURRENT_FRAME(), \ StackTrace::GetCurrentPc(), GET_CURRENT_FRAME(), \
common_flags()->fast_unwind_on_malloc) common_flags()->fast_unwind_on_malloc)
#define GET_STORE_STACK_TRACE \ #define GET_STORE_STACK_TRACE_PC_BP(pc, bp) \
StackTrace stack; \ StackTrace stack; \
stack.size = 0; \ stack.size = 0; \
if (__msan_get_track_origins() > 1 && msan_inited) \ if (__msan_get_track_origins() > 1 && msan_inited) \
GetStackTrace(&stack, common_flags()->malloc_context_size, \ GetStackTrace(&stack, common_flags()->malloc_context_size, pc, bp, \
StackTrace::GetCurrentPc(), GET_CURRENT_FRAME(), \
common_flags()->fast_unwind_on_malloc) common_flags()->fast_unwind_on_malloc)
#define GET_STORE_STACK_TRACE \
GET_STORE_STACK_TRACE_PC_BP(StackTrace::GetCurrentPc(), GET_CURRENT_FRAME())
class ScopedThreadLocalStateBackup { class ScopedThreadLocalStateBackup {
public: public:
ScopedThreadLocalStateBackup() { Backup(); } ScopedThreadLocalStateBackup() { Backup(); }

View File

@ -41,13 +41,13 @@ int main(int argc, char *argv[]) {
// CHECK: {{#0 .* in main.*chained_origin.cc:37}} // CHECK: {{#0 .* in main.*chained_origin.cc:37}}
// CHECK: Uninitialized value was stored to memory at // CHECK: Uninitialized value was stored to memory at
// CHECK: {{#.* in fn_h.*chained_origin.cc:25}} // CHECK: {{#0 .* in fn_h.*chained_origin.cc:25}}
// CHECK: {{#.* in main.*chained_origin.cc:36}} // CHECK: {{#1 .* in main.*chained_origin.cc:36}}
// CHECK: Uninitialized value was stored to memory at // CHECK: Uninitialized value was stored to memory at
// CHECK: {{#.* in fn_g.*chained_origin.cc:15}} // CHECK: {{#0 .* in fn_g.*chained_origin.cc:15}}
// CHECK: {{#.* in fn_f.*chained_origin.cc:20}} // CHECK: {{#1 .* in fn_f.*chained_origin.cc:20}}
// CHECK: {{#.* in main.*chained_origin.cc:35}} // 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: 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}} // CHECK-STACK: {{#0 .* in main.*chained_origin.cc:28}}

View File

@ -40,11 +40,11 @@ int main(int argc, char *argv[]) {
// CHECK: {{#0 .* in main .*chained_origin_memcpy.cc:36}} // CHECK: {{#0 .* in main .*chained_origin_memcpy.cc:36}}
// CHECK: Uninitialized value was stored to memory at // 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: Uninitialized value was stored to memory at
// CHECK: {{#.* in fn_g.*chained_origin_memcpy.cc:18}} // CHECK: {{#0 .* in fn_g.*chained_origin_memcpy.cc:18}}
// CHECK: {{#.* in fn_f.*chained_origin_memcpy.cc:23}} // 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-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' // CHECK-Z2: Uninitialized value was created by an allocation of 'z2' in the stack frame of function 'main'