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 Pilgrimextern "C" int LLVMFuzzerInitialize(int *argc, char ***argv) { return 0; } 20*440b445fSSimon Pilgrim LLVMFuzzerTestOneInput(uint8_t * data,size_t size)21e5ecba4fSDavid Goldmanextern "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