1*1debfc3dSmrg //===-- asan_stack.cc -----------------------------------------------------===// 2*1debfc3dSmrg // 3*1debfc3dSmrg // This file is distributed under the University of Illinois Open Source 4*1debfc3dSmrg // License. See LICENSE.TXT for details. 5*1debfc3dSmrg // 6*1debfc3dSmrg //===----------------------------------------------------------------------===// 7*1debfc3dSmrg // 8*1debfc3dSmrg // This file is a part of AddressSanitizer, an address sanity checker. 9*1debfc3dSmrg // 10*1debfc3dSmrg // Code for ASan stack trace. 11*1debfc3dSmrg //===----------------------------------------------------------------------===// 12*1debfc3dSmrg #include "asan_internal.h" 13*1debfc3dSmrg #include "asan_stack.h" 14*1debfc3dSmrg #include "sanitizer_common/sanitizer_atomic.h" 15*1debfc3dSmrg 16*1debfc3dSmrg namespace __asan { 17*1debfc3dSmrg 18*1debfc3dSmrg static atomic_uint32_t malloc_context_size; 19*1debfc3dSmrg SetMallocContextSize(u32 size)20*1debfc3dSmrgvoid SetMallocContextSize(u32 size) { 21*1debfc3dSmrg atomic_store(&malloc_context_size, size, memory_order_release); 22*1debfc3dSmrg } 23*1debfc3dSmrg GetMallocContextSize()24*1debfc3dSmrgu32 GetMallocContextSize() { 25*1debfc3dSmrg return atomic_load(&malloc_context_size, memory_order_acquire); 26*1debfc3dSmrg } 27*1debfc3dSmrg 28*1debfc3dSmrg } // namespace __asan 29*1debfc3dSmrg 30*1debfc3dSmrg // ------------------ Interface -------------- {{{1 31*1debfc3dSmrg 32*1debfc3dSmrg extern "C" { 33*1debfc3dSmrg SANITIZER_INTERFACE_ATTRIBUTE __sanitizer_print_stack_trace()34*1debfc3dSmrgvoid __sanitizer_print_stack_trace() { 35*1debfc3dSmrg using namespace __asan; 36*1debfc3dSmrg PRINT_CURRENT_STACK(); 37*1debfc3dSmrg } 38*1debfc3dSmrg } // extern "C" 39