xref: /llvm-project/clang/tools/clang-fuzzer/proto-to-llvm/loop_proto_to_llvm_main.cpp (revision 2946cd701067404b99c39fb29dc9c74bd7193eb3)
1e5f4a9ffSEmmett Neyman //==-- loop_proto_to_llvm_main.cpp - Driver for protobuf-LLVM conversion----==//
2e5f4a9ffSEmmett Neyman //
3*2946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*2946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
5*2946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6e5f4a9ffSEmmett Neyman //
7e5f4a9ffSEmmett Neyman //===----------------------------------------------------------------------===//
8e5f4a9ffSEmmett Neyman //
9e5f4a9ffSEmmett Neyman // Implements a simple driver to print a LLVM program from a protobuf with loops
10e5f4a9ffSEmmett Neyman //
11e5f4a9ffSEmmett Neyman //===----------------------------------------------------------------------===//
12e5f4a9ffSEmmett Neyman 
13e5f4a9ffSEmmett Neyman 
14e5f4a9ffSEmmett Neyman #include <fstream>
15e5f4a9ffSEmmett Neyman #include <iostream>
16e5f4a9ffSEmmett Neyman #include <streambuf>
17e5f4a9ffSEmmett Neyman #include <string>
18e5f4a9ffSEmmett Neyman 
19e5f4a9ffSEmmett Neyman #include "loop_proto_to_llvm.h"
20e5f4a9ffSEmmett Neyman 
main(int argc,char ** argv)21e5f4a9ffSEmmett Neyman int main(int argc, char **argv) {
22e5f4a9ffSEmmett Neyman   for (int i = 1; i < argc; i++) {
23e5f4a9ffSEmmett Neyman     std::fstream in(argv[i]);
24e5f4a9ffSEmmett Neyman     std::string str((std::istreambuf_iterator<char>(in)),
25e5f4a9ffSEmmett Neyman                     std::istreambuf_iterator<char>());
26e5f4a9ffSEmmett Neyman     std::cout << ";; " << argv[i] << std::endl;
27e5f4a9ffSEmmett Neyman     std::cout << clang_fuzzer::LoopProtoToLLVM(
28e5f4a9ffSEmmett Neyman         reinterpret_cast<const uint8_t *>(str.data()), str.size());
29e5f4a9ffSEmmett Neyman   }
30e5f4a9ffSEmmett Neyman }
31