1 //===-- ubsan_diag_standalone.cc ------------------------------------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // Diagnostic reporting for the standalone UBSan runtime. 11 // 12 //===----------------------------------------------------------------------===// 13 14 #include "ubsan_platform.h" 15 #if CAN_SANITIZE_UB 16 #include "ubsan_diag.h" 17 18 using namespace __ubsan; 19 20 extern "C" { 21 SANITIZER_INTERFACE_ATTRIBUTE 22 void __sanitizer_print_stack_trace() { 23 uptr top = 0; 24 uptr bottom = 0; 25 bool request_fast_unwind = common_flags()->fast_unwind_on_fatal; 26 if (request_fast_unwind) 27 __sanitizer::GetThreadStackTopAndBottom(false, &top, &bottom); 28 29 GET_CURRENT_PC_BP_SP; 30 (void)sp; 31 BufferedStackTrace stack; 32 stack.Unwind(kStackTraceMax, pc, bp, nullptr, top, bottom, 33 request_fast_unwind); 34 stack.Print(); 35 } 36 } // extern "C" 37 38 #endif // CAN_SANITIZE_UB 39