summaryrefslogtreecommitdiff
path: root/lib/msan
diff options
context:
space:
mode:
authorVitaly Buka <vitalybuka@google.com>2017-11-09 07:48:53 +0000
committerVitaly Buka <vitalybuka@google.com>2017-11-09 07:48:53 +0000
commitc43a93ec7c2af132af17b29a1b2ae23fb67f049c (patch)
tree3ece0b291ac07eaf18046119848d1652d2bf99e4 /lib/msan
parent1e2459adf26a8930e9b63baa3a8b4da2fcfb70b5 (diff)
[msan] Add context argument into GetStackTrace
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@317773 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/msan')
-rw-r--r--lib/msan/msan.cc6
-rw-r--r--lib/msan/msan.h38
2 files changed, 22 insertions, 22 deletions
diff --git a/lib/msan/msan.cc b/lib/msan/msan.cc
index d2981f0b0..3f85a9a66 100644
--- a/lib/msan/msan.cc
+++ b/lib/msan/msan.cc
@@ -218,14 +218,14 @@ static void InitializeFlags() {
}
void GetStackTrace(BufferedStackTrace *stack, uptr max_s, uptr pc, uptr bp,
- bool request_fast_unwind) {
+ void *context, bool request_fast_unwind) {
MsanThread *t = GetCurrentThread();
if (!t || !StackTrace::WillUseFastUnwind(request_fast_unwind)) {
// Block reports from our interceptors during _Unwind_Backtrace.
SymbolizerScope sym_scope;
- return stack->Unwind(max_s, pc, bp, nullptr, 0, 0, request_fast_unwind);
+ return stack->Unwind(max_s, pc, bp, context, 0, 0, request_fast_unwind);
}
- stack->Unwind(max_s, pc, bp, nullptr, t->stack_top(), t->stack_bottom(),
+ stack->Unwind(max_s, pc, bp, context, t->stack_top(), t->stack_bottom(),
request_fast_unwind);
}
diff --git a/lib/msan/msan.h b/lib/msan/msan.h
index fa9c15b88..b81b7ea80 100644
--- a/lib/msan/msan.h
+++ b/lib/msan/msan.h
@@ -310,7 +310,7 @@ void PrintWarning(uptr pc, uptr bp);
void PrintWarningWithOrigin(uptr pc, uptr bp, u32 origin);
void GetStackTrace(BufferedStackTrace *stack, uptr max_s, uptr pc, uptr bp,
- bool request_fast_unwind);
+ void *context, bool request_fast_unwind);
void ReportUMR(StackTrace *stack, u32 origin);
void ReportExpectedUMRNotFound(StackTrace *stack);
@@ -330,32 +330,32 @@ u32 ChainOrigin(u32 id, StackTrace *stack);
const int STACK_TRACE_TAG_POISON = StackTrace::TAG_CUSTOM + 1;
-#define GET_MALLOC_STACK_TRACE \
- BufferedStackTrace stack; \
- if (__msan_get_track_origins() && msan_inited) \
- GetStackTrace(&stack, common_flags()->malloc_context_size, \
- StackTrace::GetCurrentPc(), GET_CURRENT_FRAME(), \
+#define GET_MALLOC_STACK_TRACE \
+ BufferedStackTrace stack; \
+ if (__msan_get_track_origins() && msan_inited) \
+ GetStackTrace(&stack, common_flags()->malloc_context_size, \
+ StackTrace::GetCurrentPc(), GET_CURRENT_FRAME(), nullptr, \
common_flags()->fast_unwind_on_malloc)
// For platforms which support slow unwinder only, we restrict the store context
// size to 1, basically only storing the current pc. We do this because the slow
// unwinder which is based on libunwind is not async signal safe and causes
// random freezes in forking applications as well as in signal handlers.
-#define GET_STORE_STACK_TRACE_PC_BP(pc, bp) \
- BufferedStackTrace stack; \
- if (__msan_get_track_origins() > 1 && msan_inited) { \
- if (!SANITIZER_CAN_FAST_UNWIND) \
- GetStackTrace(&stack, Min(1, flags()->store_context_size), pc, bp, \
- false); \
- else \
- GetStackTrace(&stack, flags()->store_context_size, pc, bp, \
- common_flags()->fast_unwind_on_malloc); \
+#define GET_STORE_STACK_TRACE_PC_BP(pc, bp) \
+ BufferedStackTrace stack; \
+ if (__msan_get_track_origins() > 1 && msan_inited) { \
+ if (!SANITIZER_CAN_FAST_UNWIND) \
+ GetStackTrace(&stack, Min(1, flags()->store_context_size), pc, bp, \
+ nullptr, false); \
+ else \
+ GetStackTrace(&stack, flags()->store_context_size, pc, bp, nullptr, \
+ common_flags()->fast_unwind_on_malloc); \
}
-#define GET_FATAL_STACK_TRACE_PC_BP(pc, bp) \
- BufferedStackTrace stack; \
- if (msan_inited) \
- GetStackTrace(&stack, kStackTraceMax, pc, bp, \
+#define GET_FATAL_STACK_TRACE_PC_BP(pc, bp) \
+ BufferedStackTrace stack; \
+ if (msan_inited) \
+ GetStackTrace(&stack, kStackTraceMax, pc, bp, nullptr, \
common_flags()->fast_unwind_on_fatal)
#define GET_STORE_STACK_TRACE \