8064c708cfc9b73432bd0ad802e8e4cd94e9dbf3
[pcsx_rearmed.git] / deps / libchdr / deps / zstd-1.5.5 / tests / fuzz / fuzz.h
1 /*
2  * Copyright (c) Meta Platforms, Inc. and affiliates.
3  * All rights reserved.
4  *
5  * This source code is licensed under both the BSD-style license (found in the
6  * LICENSE file in the root directory of this source tree) and the GPLv2 (found
7  * in the COPYING file in the root directory of this source tree).
8  * You may select, at your option, one of the above-listed licenses.
9  */
10
11 /**
12  * Fuzz target interface.
13  * Fuzz targets have some common parameters passed as macros during compilation.
14  * Check the documentation for each individual fuzzer for more parameters.
15  *
16  * @param STATEFUL_FUZZING:
17  *        Define this to reuse state between fuzzer runs. This can be useful to
18  *        test code paths which are only executed when contexts are reused.
19  *        WARNING: Makes reproducing crashes much harder.
20  *        Default: Not defined.
21  * @param DEBUGLEVEL:
22  *        This is a parameter for the zstd library. Defining `DEBUGLEVEL=1`
23  *        enables assert() statements in the zstd library. Higher levels enable
24  *        logging, so aren't recommended. Defining `DEBUGLEVEL=1` is
25  *        recommended.
26  * @param MEM_FORCE_MEMORY_ACCESS:
27  *        This flag controls how the zstd library accesses unaligned memory.
28  *        It can be undefined, or 0 through 2. If it is undefined, it selects
29  *        the method to use based on the compiler.
30  * @param FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
31  *        This is the canonical flag to enable deterministic builds for fuzzing.
32  *        Changes to zstd for fuzzing are gated behind this define.
33  *        It is recommended to define this when building zstd for fuzzing.
34  * @param FUZZ_THIRD_PARTY_SEQ_PROD
35  *        This flag allows sequence producer plugin authors to replace the built-in
36  *        default sequence producer with their own code. If you are not a plugin
37  *        author, you should not define this flag. See the docs at
38  *        fuzz_third_party_seq_prod.h for more information.
39  */
40
41 #ifndef FUZZ_H
42 #define FUZZ_H
43
44 #include <stddef.h>
45 #include <stdint.h>
46
47 #ifdef __cplusplus
48 extern "C" {
49 #endif
50
51 int LLVMFuzzerTestOneInput(const uint8_t *src, size_t size);
52
53 #ifdef __cplusplus
54 }
55 #endif
56
57 #endif