1251034Sed//=-- lsan.h --------------------------------------------------------------===//
2251034Sed//
3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4353358Sdim// See https://llvm.org/LICENSE.txt for license information.
5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6251034Sed//
7251034Sed//===----------------------------------------------------------------------===//
8251034Sed//
9251034Sed// This file is a part of LeakSanitizer.
10251034Sed// Private header for standalone LSan RTL.
11251034Sed//
12251034Sed//===----------------------------------------------------------------------===//
13251034Sed
14327952Sdim#include "lsan_thread.h"
15251034Sed#include "sanitizer_common/sanitizer_flags.h"
16251034Sed#include "sanitizer_common/sanitizer_stacktrace.h"
17251034Sed
18327952Sdim#define GET_STACK_TRACE(max_size, fast)                       \
19327952Sdim  __sanitizer::BufferedStackTrace stack;                      \
20353358Sdim  stack.Unwind(StackTrace::GetCurrentPc(),                    \
21353358Sdim               GET_CURRENT_FRAME(), nullptr, fast, max_size);
22276789Sdim
23276789Sdim#define GET_STACK_TRACE_FATAL \
24276789Sdim  GET_STACK_TRACE(kStackTraceMax, common_flags()->fast_unwind_on_fatal)
25276789Sdim
26276789Sdim#define GET_STACK_TRACE_MALLOC                                      \
27276789Sdim  GET_STACK_TRACE(__sanitizer::common_flags()->malloc_context_size, \
28276789Sdim                  common_flags()->fast_unwind_on_malloc)
29276789Sdim
30321369Sdim#define GET_STACK_TRACE_THREAD GET_STACK_TRACE(kStackTraceMax, true)
31321369Sdim
32251034Sednamespace __lsan {
33251034Sed
34251034Sedvoid InitializeInterceptors();
35321369Sdimvoid ReplaceSystemMalloc();
36251034Sed
37321369Sdim#define ENSURE_LSAN_INITED do {   \
38321369Sdim  CHECK(!lsan_init_is_running);   \
39321369Sdim  if (!lsan_inited)               \
40321369Sdim    __lsan_init();                \
41321369Sdim} while (0)
42321369Sdim
43251034Sed}  // namespace __lsan
44274201Sdim
45274201Sdimextern bool lsan_inited;
46274201Sdimextern bool lsan_init_is_running;
47274201Sdim
48327952Sdimextern "C" SANITIZER_INTERFACE_ATTRIBUTE void __lsan_init();
49