summaryrefslogtreecommitdiff
path: root/lib/msan/msan.cc
diff options
context:
space:
mode:
authorSergey Matveev <earthdok@google.com>2014-05-26 13:08:08 +0000
committerSergey Matveev <earthdok@google.com>2014-05-26 13:08:08 +0000
commit51d28680772cb0b03b0d9ceb0f6aef60a0e9aece (patch)
treea8fd95801c0d3bd841edaab39ac947102a78d434 /lib/msan/msan.cc
parent493c46543f37356c41b56b4249a4f3e9f3738e30 (diff)
[MSan] Implement __sanitizer_print_stack_trace().
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@209625 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/msan/msan.cc')
-rw-r--r--lib/msan/msan.cc16
1 files changed, 10 insertions, 6 deletions
diff --git a/lib/msan/msan.cc b/lib/msan/msan.cc
index 058ef7e48..5ee92bff1 100644
--- a/lib/msan/msan.cc
+++ b/lib/msan/msan.cc
@@ -211,9 +211,7 @@ void PrintWarningWithOrigin(uptr pc, uptr bp, u32 origin) {
++msan_report_count;
- StackTrace stack;
- GetStackTrace(&stack, kStackTraceMax, pc, bp,
- common_flags()->fast_unwind_on_fatal);
+ GET_FATAL_STACK_TRACE_PC_BP(pc, bp);
u32 report_origin =
(__msan_get_track_origins() && OriginIsValid(origin)) ? origin : 0;
@@ -422,9 +420,7 @@ void __msan_set_expect_umr(int expect_umr) {
} else if (!msan_expected_umr_found) {
GET_CALLER_PC_BP_SP;
(void)sp;
- StackTrace stack;
- GetStackTrace(&stack, kStackTraceMax, pc, bp,
- common_flags()->fast_unwind_on_fatal);
+ GET_FATAL_STACK_TRACE_PC_BP(pc, bp);
ReportExpectedUMRNotFound(&stack);
Die();
}
@@ -662,3 +658,11 @@ SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE
const char* __msan_default_options() { return ""; }
} // extern "C"
#endif
+
+extern "C" {
+SANITIZER_INTERFACE_ATTRIBUTE
+void __sanitizer_print_stack_trace() {
+ GET_FATAL_STACK_TRACE_PC_BP(StackTrace::GetCurrentPc(), GET_CURRENT_FRAME());
+ stack.Print();
+}
+} // extern "C"