Revert "[NFC][Sanitizer] Cleanup ASan's GetStackTrace implementation"

I've missed that UnwindSlow was removed from ScopedUnwinding.

This reverts commit 4ce918e394.

llvm-svn: 355369
This commit is contained in:
Vitaly Buka
2019-03-05 02:35:49 +00:00
parent 06f64d53ae
commit 0d973a5311
2 changed files with 19 additions and 19 deletions

View File

@@ -31,23 +31,28 @@ u32 GetMallocContextSize() {
void __sanitizer::BufferedStackTrace::UnwindImpl(
uptr pc, uptr bp, void *context, bool request_fast, u32 max_depth) {
using namespace __asan;
#if SANITIZER_WINDOWS
Unwind(max_depth, pc, 0, context, 0, 0, false);
#else
AsanThread *t;
size = 0;
if (UNLIKELY(!asan_inited)) return;
AsanThread *t = GetCurrentThread();
if (t && !t->isUnwinding() && WillUseFastUnwind(request_fast)) {
uptr top = t->stack_top();
uptr bottom = t->stack_bottom();
ScopedUnwinding unwind_scope(t);
if (!SANITIZER_MIPS || IsValidFrame(bp, top, bottom)) {
UnwindFast(pc, bp, top, bottom, max_depth);
return;
if (LIKELY(asan_inited)) {
if ((t = GetCurrentThread()) && !t->isUnwinding()) {
uptr stack_top = t->stack_top();
uptr stack_bottom = t->stack_bottom();
ScopedUnwinding unwind_scope(t);
if (!SANITIZER_MIPS || IsValidFrame(bp, stack_top, stack_bottom)) {
if (StackTrace::WillUseFastUnwind(request_fast))
Unwind(max_depth, pc, bp, nullptr, stack_top, stack_bottom, true);
else
Unwind(max_depth, pc, 0, context, 0, 0, false);
}
} else if (!t && !request_fast) {
/* If GetCurrentThread() has failed, try to do slow unwind anyways. */
Unwind(max_depth, pc, bp, context, 0, 0, false);
}
}
#if SANITIZER_CAN_SLOW_UNWIND
UnwindSlowWithOptionalContext(pc, context, max_depth);
#endif
#endif // SANITIZER_WINDOWS
}
// ------------------ Interface -------------- {{{1

View File

@@ -134,11 +134,6 @@ struct BufferedStackTrace : public StackTrace {
void UnwindSlow(uptr pc, u32 max_depth);
void UnwindSlow(uptr pc, void *context, u32 max_depth);
void UnwindSlowWithOptionalContext(uptr pc, void *context, u32 max_depth) {
if (context) UnwindSlow(pc, context, max_depth);
else UnwindSlow(pc, max_depth);
}
void PopStackFrames(uptr count);
uptr LocatePcInTrace(uptr pc);