1*d89ec533Spatrick //===-- memprof_interface_internal.h ---------------------------*- C++ -*-===// 2*d89ec533Spatrick // 3*d89ec533Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*d89ec533Spatrick // See https://llvm.org/LICENSE.txt for license information. 5*d89ec533Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*d89ec533Spatrick // 7*d89ec533Spatrick //===----------------------------------------------------------------------===// 8*d89ec533Spatrick // 9*d89ec533Spatrick // This file is a part of MemProfiler, a memory profiler. 10*d89ec533Spatrick // 11*d89ec533Spatrick // This header declares the MemProfiler runtime interface functions. 12*d89ec533Spatrick // The runtime library has to define these functions so the instrumented program 13*d89ec533Spatrick // could call them. 14*d89ec533Spatrick // 15*d89ec533Spatrick // See also include/sanitizer/memprof_interface.h 16*d89ec533Spatrick //===----------------------------------------------------------------------===// 17*d89ec533Spatrick #ifndef MEMPROF_INTERFACE_INTERNAL_H 18*d89ec533Spatrick #define MEMPROF_INTERFACE_INTERNAL_H 19*d89ec533Spatrick 20*d89ec533Spatrick #include "sanitizer_common/sanitizer_internal_defs.h" 21*d89ec533Spatrick 22*d89ec533Spatrick #include "memprof_init_version.h" 23*d89ec533Spatrick 24*d89ec533Spatrick using __sanitizer::u32; 25*d89ec533Spatrick using __sanitizer::u64; 26*d89ec533Spatrick using __sanitizer::uptr; 27*d89ec533Spatrick 28*d89ec533Spatrick extern "C" { 29*d89ec533Spatrick // This function should be called at the very beginning of the process, 30*d89ec533Spatrick // before any instrumented code is executed and before any call to malloc. 31*d89ec533Spatrick SANITIZER_INTERFACE_ATTRIBUTE void __memprof_init(); 32*d89ec533Spatrick SANITIZER_INTERFACE_ATTRIBUTE void __memprof_preinit(); 33*d89ec533Spatrick SANITIZER_INTERFACE_ATTRIBUTE void __memprof_version_mismatch_check_v1(); 34*d89ec533Spatrick 35*d89ec533Spatrick SANITIZER_INTERFACE_ATTRIBUTE 36*d89ec533Spatrick void __memprof_record_access(void const volatile *addr); 37*d89ec533Spatrick 38*d89ec533Spatrick SANITIZER_INTERFACE_ATTRIBUTE 39*d89ec533Spatrick void __memprof_record_access_range(void const volatile *addr, uptr size); 40*d89ec533Spatrick 41*d89ec533Spatrick SANITIZER_INTERFACE_ATTRIBUTE void __memprof_print_accumulated_stats(); 42*d89ec533Spatrick 43*d89ec533Spatrick SANITIZER_INTERFACE_ATTRIBUTE 44*d89ec533Spatrick const char *__memprof_default_options(); 45*d89ec533Spatrick 46*d89ec533Spatrick SANITIZER_INTERFACE_ATTRIBUTE 47*d89ec533Spatrick extern uptr __memprof_shadow_memory_dynamic_address; 48*d89ec533Spatrick 49*d89ec533Spatrick SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE extern char 50*d89ec533Spatrick __memprof_profile_filename[1]; 51*d89ec533Spatrick SANITIZER_INTERFACE_ATTRIBUTE int __memprof_profile_dump(); 52*d89ec533Spatrick 53*d89ec533Spatrick SANITIZER_INTERFACE_ATTRIBUTE void __memprof_load(uptr p); 54*d89ec533Spatrick SANITIZER_INTERFACE_ATTRIBUTE void __memprof_store(uptr p); 55*d89ec533Spatrick 56*d89ec533Spatrick SANITIZER_INTERFACE_ATTRIBUTE 57*d89ec533Spatrick void *__memprof_memcpy(void *dst, const void *src, uptr size); 58*d89ec533Spatrick SANITIZER_INTERFACE_ATTRIBUTE 59*d89ec533Spatrick void *__memprof_memset(void *s, int c, uptr n); 60*d89ec533Spatrick SANITIZER_INTERFACE_ATTRIBUTE 61*d89ec533Spatrick void *__memprof_memmove(void *dest, const void *src, uptr n); 62*d89ec533Spatrick } // extern "C" 63*d89ec533Spatrick 64*d89ec533Spatrick #endif // MEMPROF_INTERFACE_INTERNAL_H 65