1//=-- lsan.h --------------------------------------------------------------===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8// 9// This file is a part of LeakSanitizer. 10// Private header for standalone LSan RTL. 11// 12//===----------------------------------------------------------------------===// 13 14#include "lsan_thread.h" 15#include "sanitizer_common/sanitizer_flags.h" 16#include "sanitizer_common/sanitizer_stacktrace.h" 17 18#define GET_STACK_TRACE(max_size, fast) \ 19 __sanitizer::BufferedStackTrace stack; \ 20 stack.Unwind(StackTrace::GetCurrentPc(), \ 21 GET_CURRENT_FRAME(), nullptr, fast, max_size); 22 23#define GET_STACK_TRACE_FATAL \ 24 GET_STACK_TRACE(kStackTraceMax, common_flags()->fast_unwind_on_fatal) 25 26#define GET_STACK_TRACE_MALLOC \ 27 GET_STACK_TRACE(__sanitizer::common_flags()->malloc_context_size, \ 28 common_flags()->fast_unwind_on_malloc) 29 30#define GET_STACK_TRACE_THREAD GET_STACK_TRACE(kStackTraceMax, true) 31 32namespace __lsan { 33 34void InitializeInterceptors(); 35void ReplaceSystemMalloc(); 36 37#define ENSURE_LSAN_INITED do { \ 38 CHECK(!lsan_init_is_running); \ 39 if (!lsan_inited) \ 40 __lsan_init(); \ 41} while (0) 42 43} // namespace __lsan 44 45extern bool lsan_inited; 46extern bool lsan_init_is_running; 47 48extern "C" SANITIZER_INTERFACE_ATTRIBUTE void __lsan_init(); 49