xref: /netbsd-src/sys/external/bsd/compiler_rt/dist/lib/fuzzer/FuzzerExtFunctions.h (revision a7c257b03e4462df2b1020128fb82716512d7856)
1*a7c257b0Skamil //===- FuzzerExtFunctions.h - Interface to external functions ---*- C++ -* ===//
2*a7c257b0Skamil //
3*a7c257b0Skamil //                     The LLVM Compiler Infrastructure
4*a7c257b0Skamil //
5*a7c257b0Skamil // This file is distributed under the University of Illinois Open Source
6*a7c257b0Skamil // License. See LICENSE.TXT for details.
7*a7c257b0Skamil //
8*a7c257b0Skamil //===----------------------------------------------------------------------===//
9*a7c257b0Skamil // Defines an interface to (possibly optional) functions.
10*a7c257b0Skamil //===----------------------------------------------------------------------===//
11*a7c257b0Skamil 
12*a7c257b0Skamil #ifndef LLVM_FUZZER_EXT_FUNCTIONS_H
13*a7c257b0Skamil #define LLVM_FUZZER_EXT_FUNCTIONS_H
14*a7c257b0Skamil 
15*a7c257b0Skamil #include <stddef.h>
16*a7c257b0Skamil #include <stdint.h>
17*a7c257b0Skamil 
18*a7c257b0Skamil namespace fuzzer {
19*a7c257b0Skamil 
20*a7c257b0Skamil struct ExternalFunctions {
21*a7c257b0Skamil   // Initialize function pointers. Functions that are not available will be set
22*a7c257b0Skamil   // to nullptr.  Do not call this constructor  before ``main()`` has been
23*a7c257b0Skamil   // entered.
24*a7c257b0Skamil   ExternalFunctions();
25*a7c257b0Skamil 
26*a7c257b0Skamil #define EXT_FUNC(NAME, RETURN_TYPE, FUNC_SIG, WARN)                            \
27*a7c257b0Skamil   RETURN_TYPE(*NAME) FUNC_SIG = nullptr
28*a7c257b0Skamil 
29*a7c257b0Skamil #include "FuzzerExtFunctions.def"
30*a7c257b0Skamil 
31*a7c257b0Skamil #undef EXT_FUNC
32*a7c257b0Skamil };
33*a7c257b0Skamil } // namespace fuzzer
34*a7c257b0Skamil 
35*a7c257b0Skamil #endif
36