xref: /openbsd-src/gnu/llvm/compiler-rt/lib/memprof/memprof_interface_internal.h (revision d89ec533011f513df1010f142a111086a0785f09)
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