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