Home | History | Annotate | Line # | Download | only in ubsan
      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