xref: /netbsd-src/external/gpl3/gcc.old/dist/libsanitizer/asan/asan_stack.cc (revision 1debfc3d3fad8af6f31804271c18e67f77b4d718)
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*1debfc3dSmrg void SetMallocContextSize(u32 size) {
21*1debfc3dSmrg   atomic_store(&malloc_context_size, size, memory_order_release);
22*1debfc3dSmrg }
23*1debfc3dSmrg 
GetMallocContextSize()24*1debfc3dSmrg u32 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*1debfc3dSmrg void __sanitizer_print_stack_trace() {
35*1debfc3dSmrg   using namespace __asan;
36*1debfc3dSmrg   PRINT_CURRENT_STACK();
37*1debfc3dSmrg }
38*1debfc3dSmrg }  // extern "C"
39