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_OBJECTYAML_YAML2OBJ_H 12 #define LLVM_OBJECTYAML_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 OffloadYAML { 40 struct Binary; 41 } 42 43 namespace WasmYAML { 44 struct Object; 45 } 46 47 namespace XCOFFYAML { 48 struct Object; 49 } 50 51 namespace ArchYAML { 52 struct Archive; 53 } 54 55 namespace DXContainerYAML { 56 struct Object; 57 } // namespace DXContainerYAML 58 59 namespace yaml { 60 class Input; 61 struct YamlObjectFile; 62 63 using ErrorHandler = llvm::function_ref<void(const Twine &Msg)>; 64 65 bool yaml2archive(ArchYAML::Archive &Doc, raw_ostream &Out, ErrorHandler EH); 66 bool yaml2coff(COFFYAML::Object &Doc, raw_ostream &Out, ErrorHandler EH); 67 bool yaml2elf(ELFYAML::Object &Doc, raw_ostream &Out, ErrorHandler EH, 68 uint64_t MaxSize); 69 bool yaml2macho(YamlObjectFile &Doc, raw_ostream &Out, ErrorHandler EH); 70 bool yaml2minidump(MinidumpYAML::Object &Doc, raw_ostream &Out, 71 ErrorHandler EH); 72 bool yaml2offload(OffloadYAML::Binary &Doc, raw_ostream &Out, ErrorHandler EH); 73 bool yaml2wasm(WasmYAML::Object &Doc, raw_ostream &Out, ErrorHandler EH); 74 bool yaml2xcoff(XCOFFYAML::Object &Doc, raw_ostream &Out, ErrorHandler EH); 75 bool yaml2dxcontainer(DXContainerYAML::Object &Doc, raw_ostream &Out, 76 ErrorHandler EH); 77 78 bool convertYAML(Input &YIn, raw_ostream &Out, ErrorHandler ErrHandler, 79 unsigned DocNum = 1, uint64_t MaxSize = UINT64_MAX); 80 81 /// Convenience function for tests. 82 std::unique_ptr<object::ObjectFile> 83 yaml2ObjectFile(SmallVectorImpl<char> &Storage, StringRef Yaml, 84 ErrorHandler ErrHandler); 85 86 } // namespace yaml 87 } // namespace llvm 88 89 #endif 90