1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- // Copyright 2017 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef TESTING_LIBFUZZER_LIBFUZZER_EXPORTS_H_
- #define TESTING_LIBFUZZER_LIBFUZZER_EXPORTS_H_
- #include "build/build_config.h"
- // On macOS, the linker may strip symbols for functions that are not reachable
- // by the program entrypoint. Several libFuzzer functions are resolved via
- // dlsym at runtime and therefore may be dead-stripped as a result. Including
- // this header in the fuzzer's implementation file will ensure that all the
- // symbols are kept and exported.
- #if defined(OS_MAC)
- #define EXPORT_FUZZER_FUNCTION \
- __attribute__((used)) __attribute__((visibility("default")))
- #else
- #define EXPORT_FUZZER_FUNCTION
- #endif
- extern "C" {
- EXPORT_FUZZER_FUNCTION int LLVMFuzzerInitialize(int* argc, char*** argv);
- EXPORT_FUZZER_FUNCTION int LLVMFuzzerTestOneInput(const uint8_t* data,
- size_t size);
- EXPORT_FUZZER_FUNCTION size_t LLVMFuzzerCustomMutator(uint8_t* data,
- size_t size,
- size_t max_size,
- unsigned int seed);
- EXPORT_FUZZER_FUNCTION size_t LLVMFuzzerCustomCrossOver(const uint8_t* data1,
- size_t size1,
- const uint8_t* data2,
- size_t size2,
- uint8_t* out,
- size_t max_out_size,
- unsigned int seed);
- EXPORT_FUZZER_FUNCTION size_t LLVMFuzzerMutate(uint8_t* data,
- size_t size,
- size_t max_size);
- } // extern "C"
- #undef EXPORT_FUZZER_FUNCTION
- #endif // TESTING_LIBFUZZER_LIBFUZZER_EXPORTS_H_
|