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