summaryrefslogtreecommitdiffstats
path: root/compiler-rt
diff options
context:
space:
mode:
Diffstat (limited to 'compiler-rt')
-rw-r--r--compiler-rt/lib/msan/msan.cc4
-rw-r--r--compiler-rt/lib/msan/msan.h16
-rw-r--r--compiler-rt/test/msan/chained_origin.cc10
-rw-r--r--compiler-rt/test/msan/chained_origin_memcpy.cc6
4 files changed, 20 insertions, 16 deletions
diff --git a/compiler-rt/lib/msan/msan.cc b/compiler-rt/lib/msan/msan.cc
index d5df834c53a..7a93b663185 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 8cc4cef338d..919415e4f04 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 d0e8f06224a..4dd357bbcc0 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 67fab3cdcc4..e53416403c9 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'
OpenPOWER on IntegriCloud