1 | //===-- memprof_internal.h -------------------------------------*- C++ -*-===// |
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 MemProfiler, a memory profiler. |
10 | // |
11 | // MemProf-private header which defines various general utilities. |
12 | //===----------------------------------------------------------------------===// |
13 | #ifndef MEMPROF_INTERNAL_H |
14 | #define MEMPROF_INTERNAL_H |
15 | |
16 | #include "memprof_flags.h" |
17 | #include "memprof_interface_internal.h" |
18 | #include "sanitizer_common/sanitizer_common.h" |
19 | #include "sanitizer_common/sanitizer_internal_defs.h" |
20 | #include "sanitizer_common/sanitizer_libc.h" |
21 | #include "sanitizer_common/sanitizer_stacktrace.h" |
22 | |
23 | // Build-time configuration options. |
24 | |
25 | // If set, memprof will intercept C++ exception api call(s). |
26 | #ifndef MEMPROF_HAS_EXCEPTIONS |
27 | #define MEMPROF_HAS_EXCEPTIONS 1 |
28 | #endif |
29 | |
30 | #ifndef MEMPROF_DYNAMIC |
31 | #ifdef PIC |
32 | #define MEMPROF_DYNAMIC 1 |
33 | #else |
34 | #define MEMPROF_DYNAMIC 0 |
35 | #endif |
36 | #endif |
37 | |
38 | // All internal functions in memprof reside inside the __memprof namespace |
39 | // to avoid namespace collisions with the user programs. |
40 | // Separate namespace also makes it simpler to distinguish the memprof |
41 | // run-time functions from the instrumented user code in a profile. |
42 | namespace __memprof { |
43 | |
44 | class MemprofThread; |
45 | using __sanitizer::StackTrace; |
46 | |
47 | void MemprofInitFromRtl(); |
48 | |
49 | // memprof_rtl.cpp |
50 | void PrintAddressSpaceLayout(); |
51 | |
52 | // memprof_shadow_setup.cpp |
53 | void InitializeShadowMemory(); |
54 | |
55 | // memprof_malloc_linux.cpp |
56 | void ReplaceSystemMalloc(); |
57 | |
58 | // memprof_linux.cpp |
59 | uptr FindDynamicShadowStart(); |
60 | |
61 | // memprof_thread.cpp |
62 | MemprofThread *CreateMainThread(); |
63 | |
64 | // Wrapper for TLS/TSD. |
65 | void TSDInit(void (*destructor)(void *tsd)); |
66 | void *TSDGet(); |
67 | void TSDSet(void *tsd); |
68 | void PlatformTSDDtor(void *tsd); |
69 | |
70 | void *MemprofDlSymNext(const char *sym); |
71 | |
72 | extern int memprof_inited; |
73 | extern int memprof_timestamp_inited; |
74 | // Used to avoid infinite recursion in __memprof_init(). |
75 | extern bool memprof_init_is_running; |
76 | extern void (*death_callback)(void); |
77 | extern long memprof_init_timestamp_s; |
78 | |
79 | } // namespace __memprof |
80 | |
81 | #endif // MEMPROF_INTERNAL_H |
82 | |