82 lines · c
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-exception6//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_H14#define MEMPROF_INTERNAL_H15 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_EXCEPTIONS27#define MEMPROF_HAS_EXCEPTIONS 128#endif29 30#ifndef MEMPROF_DYNAMIC31#ifdef PIC32#define MEMPROF_DYNAMIC 133#else34#define MEMPROF_DYNAMIC 035#endif36#endif37 38// All internal functions in memprof reside inside the __memprof namespace39// to avoid namespace collisions with the user programs.40// Separate namespace also makes it simpler to distinguish the memprof41// run-time functions from the instrumented user code in a profile.42namespace __memprof {43 44class MemprofThread;45using __sanitizer::StackTrace;46 47void MemprofInitFromRtl();48 49// memprof_rtl.cpp50void PrintAddressSpaceLayout();51 52// memprof_shadow_setup.cpp53void InitializeShadowMemory();54 55// memprof_malloc_linux.cpp56void ReplaceSystemMalloc();57 58// memprof_linux.cpp59uptr FindDynamicShadowStart();60 61// memprof_thread.cpp62MemprofThread *CreateMainThread();63 64// Wrapper for TLS/TSD.65void TSDInit(void (*destructor)(void *tsd));66void *TSDGet();67void TSDSet(void *tsd);68void PlatformTSDDtor(void *tsd);69 70void *MemprofDlSymNext(const char *sym);71 72extern int memprof_inited;73extern int memprof_timestamp_inited;74// Used to avoid infinite recursion in __memprof_init().75extern bool memprof_init_is_running;76extern void (*death_callback)(void);77extern long memprof_init_timestamp_s;78 79} // namespace __memprof80 81#endif // MEMPROF_INTERNAL_H82