xref: /aosp_15_r20/external/llvm/lib/Fuzzer/FuzzerExtFunctions.def (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker//===- FuzzerExtFunctions.def - External functions --------------*- C++ -* ===//
2*9880d681SAndroid Build Coastguard Worker//
3*9880d681SAndroid Build Coastguard Worker//                     The LLVM Compiler Infrastructure
4*9880d681SAndroid Build Coastguard Worker//
5*9880d681SAndroid Build Coastguard Worker// This file is distributed under the University of Illinois Open Source
6*9880d681SAndroid Build Coastguard Worker// License. See LICENSE.TXT for details.
7*9880d681SAndroid Build Coastguard Worker//
8*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
9*9880d681SAndroid Build Coastguard Worker// This defines the external function pointers that
10*9880d681SAndroid Build Coastguard Worker// ``fuzzer::ExternalFunctions`` should contain and try to initialize.  The
11*9880d681SAndroid Build Coastguard Worker// EXT_FUNC macro must be defined at the point of inclusion. The signature of
12*9880d681SAndroid Build Coastguard Worker// the macro is:
13*9880d681SAndroid Build Coastguard Worker//
14*9880d681SAndroid Build Coastguard Worker// EXT_FUNC(<name>, <return_type>, <function_signature>, <warn_if_missing>)
15*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Worker// Optional user functions
18*9880d681SAndroid Build Coastguard WorkerEXT_FUNC(LLVMFuzzerInitialize, int, (int *argc, char ***argv), false);
19*9880d681SAndroid Build Coastguard WorkerEXT_FUNC(LLVMFuzzerCustomMutator, size_t,
20*9880d681SAndroid Build Coastguard Worker         (uint8_t * Data, size_t Size, size_t MaxSize, unsigned int Seed),
21*9880d681SAndroid Build Coastguard Worker         false);
22*9880d681SAndroid Build Coastguard WorkerEXT_FUNC(LLVMFuzzerCustomCrossOver, size_t,
23*9880d681SAndroid Build Coastguard Worker         (const uint8_t * Data1, size_t Size1,
24*9880d681SAndroid Build Coastguard Worker          const uint8_t * Data2, size_t Size2,
25*9880d681SAndroid Build Coastguard Worker          uint8_t * Out, size_t MaxOutSize, unsigned int Seed),
26*9880d681SAndroid Build Coastguard Worker         false);
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Worker// Sanitizer functions
29*9880d681SAndroid Build Coastguard WorkerEXT_FUNC(__lsan_enable, void, (), false);
30*9880d681SAndroid Build Coastguard WorkerEXT_FUNC(__lsan_disable, void, (), false);
31*9880d681SAndroid Build Coastguard WorkerEXT_FUNC(__lsan_do_recoverable_leak_check, int, (), false);
32*9880d681SAndroid Build Coastguard WorkerEXT_FUNC(__sanitizer_get_coverage_pc_buffer, uintptr_t, (uintptr_t**), true);
33*9880d681SAndroid Build Coastguard WorkerEXT_FUNC(__sanitizer_get_number_of_counters, size_t, (), false);
34*9880d681SAndroid Build Coastguard WorkerEXT_FUNC(__sanitizer_install_malloc_and_free_hooks, int,
35*9880d681SAndroid Build Coastguard Worker         (void (*malloc_hook)(const volatile void *, size_t),
36*9880d681SAndroid Build Coastguard Worker          void (*free_hook)(const volatile void *)),
37*9880d681SAndroid Build Coastguard Worker         false);
38*9880d681SAndroid Build Coastguard WorkerEXT_FUNC(__sanitizer_get_total_unique_caller_callee_pairs, size_t, (), false);
39*9880d681SAndroid Build Coastguard WorkerEXT_FUNC(__sanitizer_get_total_unique_coverage, size_t, (), true);
40*9880d681SAndroid Build Coastguard WorkerEXT_FUNC(__sanitizer_print_memory_profile, int, (size_t), false);
41*9880d681SAndroid Build Coastguard WorkerEXT_FUNC(__sanitizer_print_stack_trace, void, (), true);
42*9880d681SAndroid Build Coastguard WorkerEXT_FUNC(__sanitizer_reset_coverage, void, (), true);
43*9880d681SAndroid Build Coastguard WorkerEXT_FUNC(__sanitizer_set_death_callback, void, (void (*)(void)), true);
44*9880d681SAndroid Build Coastguard WorkerEXT_FUNC(__sanitizer_set_report_fd, void, (void*), false);
45*9880d681SAndroid Build Coastguard WorkerEXT_FUNC(__sanitizer_update_counter_bitset_and_clear_counters, uintptr_t,
46*9880d681SAndroid Build Coastguard Worker  (uint8_t*), false);
47