1 //===- FuzzerDefs.h - Internal header for the Fuzzer ------------*- C++ -* ===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 //===----------------------------------------------------------------------===//
11 #ifndef LLVM_FUZZER_DEFS_H
12 #define LLVM_FUZZER_DEFS_H
26 template <class T
> T
Min(T a
, T b
) { return a
< b
? a
: b
; }
27 template <class T
> T
Max(T a
, T b
) { return a
> b
? a
: b
; }
31 class DictionaryEntry
;
32 class MutationDispatcher
;
33 struct FuzzingOptions
;
36 struct ExternalFunctions
;
38 // Global interface to functions that may or may not be available.
39 extern ExternalFunctions
*EF
;
41 typedef std::vector
<uint8_t> Unit
;
42 typedef std::vector
<Unit
> UnitVector
;
43 typedef int (*UserCallback
)(const uint8_t *Data
, size_t Size
);
45 int FuzzerDriver(int *argc
, char ***argv
, UserCallback Callback
);
47 uint8_t *ExtraCountersBegin();
48 uint8_t *ExtraCountersEnd();
49 void ClearExtraCounters();
51 extern bool RunningUserCallback
;
55 #endif // LLVM_FUZZER_DEFS_H