1 //===--- yaml2obj.h - -------------------------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 /// \file 9 /// Common declarations for yaml2obj 10 //===----------------------------------------------------------------------===// 11 #ifndef LLVM_TOOLS_YAML2OBJ_YAML2OBJ_H 12 #define LLVM_TOOLS_YAML2OBJ_YAML2OBJ_H 13 14 #include "llvm/ADT/STLExtras.h" 15 #include <memory> 16 17 namespace llvm { 18 class raw_ostream; 19 template <typename T> class SmallVectorImpl; 20 class StringRef; 21 class Twine; 22 23 namespace object { 24 class ObjectFile; 25 } 26 27 namespace COFFYAML { 28 struct Object; 29 } 30 31 namespace ELFYAML { 32 struct Object; 33 } 34 35 namespace MinidumpYAML { 36 struct Object; 37 } 38 39 namespace WasmYAML { 40 struct Object; 41 } 42 43 namespace yaml { 44 class Input; 45 struct YamlObjectFile; 46 47 using ErrorHandler = llvm::function_ref<void(const Twine &Msg)>; 48 49 bool yaml2coff(COFFYAML::Object &Doc, raw_ostream &Out, ErrorHandler EH); 50 bool yaml2elf(ELFYAML::Object &Doc, raw_ostream &Out, ErrorHandler EH, 51 uint64_t MaxSize); 52 bool yaml2macho(YamlObjectFile &Doc, raw_ostream &Out, ErrorHandler EH); 53 bool yaml2minidump(MinidumpYAML::Object &Doc, raw_ostream &Out, 54 ErrorHandler EH); 55 bool yaml2wasm(WasmYAML::Object &Doc, raw_ostream &Out, ErrorHandler EH); 56 57 bool convertYAML(Input &YIn, raw_ostream &Out, ErrorHandler ErrHandler, 58 unsigned DocNum = 1, uint64_t MaxSize = UINT64_MAX); 59 60 /// Convenience function for tests. 61 std::unique_ptr<object::ObjectFile> 62 yaml2ObjectFile(SmallVectorImpl<char> &Storage, StringRef Yaml, 63 ErrorHandler ErrHandler); 64 65 } // namespace yaml 66 } // namespace llvm 67 68 #endif 69