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