forked from OSchip/llvm-project
Add a simple stack trace printer for DFSan
Reviewed-by: morehouse Differential Revision: https://reviews.llvm.org/D91235
This commit is contained in:
parent
5e85d00ed6
commit
3597fba4e5
|
@ -31,6 +31,7 @@ foreach(arch ${DFSAN_SUPPORTED_ARCH})
|
|||
$<TARGET_OBJECTS:RTInterception.${arch}>
|
||||
$<TARGET_OBJECTS:RTSanitizerCommon.${arch}>
|
||||
$<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}>
|
||||
$<TARGET_OBJECTS:RTSanitizerCommonSymbolizer.${arch}>
|
||||
ADDITIONAL_HEADERS ${DFSAN_RTL_HEADERS}
|
||||
CFLAGS ${DFSAN_CFLAGS}
|
||||
PARENT_TARGET dfsan)
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include "sanitizer_common/sanitizer_flags.h"
|
||||
#include "sanitizer_common/sanitizer_internal_defs.h"
|
||||
#include "sanitizer_common/sanitizer_libc.h"
|
||||
#include "sanitizer_common/sanitizer_stacktrace.h"
|
||||
|
||||
using namespace __dfsan;
|
||||
|
||||
|
@ -407,6 +408,22 @@ dfsan_dump_labels(int fd) {
|
|||
}
|
||||
}
|
||||
|
||||
#define GET_FATAL_STACK_TRACE_PC_BP(pc, bp) \
|
||||
BufferedStackTrace stack; \
|
||||
stack.Unwind(pc, bp, nullptr, common_flags()->fast_unwind_on_fatal);
|
||||
|
||||
void __sanitizer::BufferedStackTrace::UnwindImpl(uptr pc, uptr bp,
|
||||
void *context,
|
||||
bool request_fast,
|
||||
u32 max_depth) {
|
||||
Unwind(max_depth, pc, bp, context, 0, 0, false);
|
||||
}
|
||||
|
||||
extern "C" SANITIZER_INTERFACE_ATTRIBUTE void __sanitizer_print_stack_trace() {
|
||||
GET_FATAL_STACK_TRACE_PC_BP(StackTrace::GetCurrentPc(), GET_CURRENT_FRAME());
|
||||
stack.Print();
|
||||
}
|
||||
|
||||
void Flags::SetDefaults() {
|
||||
#define DFSAN_FLAG(Type, Name, DefaultValue, Description) Name = DefaultValue;
|
||||
#include "dfsan_flags.inc"
|
||||
|
|
Loading…
Reference in New Issue