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