xref: /openbsd-src/gnu/llvm/clang/tools/clang-fuzzer/ClangObjectiveCFuzzer.cpp (revision ec727ea710c91afd8ce4f788c5aaa8482b7b69b2)
1e5dd7070Spatrick //===-- ClangObjectiveCFuzzer.cpp - Fuzz Clang ----------------------------===//
2e5dd7070Spatrick //
3e5dd7070Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4e5dd7070Spatrick // See https://llvm.org/LICENSE.txt for license information.
5e5dd7070Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6e5dd7070Spatrick //
7e5dd7070Spatrick //===----------------------------------------------------------------------===//
8e5dd7070Spatrick ///
9e5dd7070Spatrick /// \file
10e5dd7070Spatrick /// This file implements a function that runs Clang on a single Objective-C
11e5dd7070Spatrick ///   input. This function is then linked into the Fuzzer library.
12e5dd7070Spatrick ///
13e5dd7070Spatrick //===----------------------------------------------------------------------===//
14e5dd7070Spatrick 
15e5dd7070Spatrick #include "handle-cxx/handle_cxx.h"
16e5dd7070Spatrick 
17e5dd7070Spatrick using namespace clang_fuzzer;
18e5dd7070Spatrick 
LLVMFuzzerInitialize(int * argc,char *** argv)19*ec727ea7Spatrick extern "C" int LLVMFuzzerInitialize(int *argc, char ***argv) { return 0; }
20*ec727ea7Spatrick 
LLVMFuzzerTestOneInput(uint8_t * data,size_t size)21e5dd7070Spatrick extern "C" int LLVMFuzzerTestOneInput(uint8_t *data, size_t size) {
22e5dd7070Spatrick   std::string s(reinterpret_cast<const char *>(data), size);
23e5dd7070Spatrick   HandleCXX(s, "./test.m", {"-O2"});
24e5dd7070Spatrick   return 0;
25e5dd7070Spatrick }
26e5dd7070Spatrick 
27