LLVM: include/llvm/ObjectYAML/MachOYAML.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#ifndef LLVM_OBJECTYAML_MACHOYAML_H
16#define LLVM_OBJECTYAML_MACHOYAML_H
17
23#include
24#include
25#include
26#include
27
28namespace llvm {
30
44
58 std::optionalllvm::yaml::BinaryRef content;
60};
61
72
75
78 std::vectorMachO::build\_tool\_version Tools;
82};
83
91
97
105
114 std::vectorMachOYAML::ExportEntry Children;
115};
116
122
138
148
153
162
168
169}
170}
171
183
184namespace llvm {
185
186class raw_ostream;
187
188namespace yaml {
189
193
197
201
205
209
213
217
221
225
229
233
238
242
246
250
251#define HANDLE_LOAD_COMMAND(LCName, LCValue, LCStruct) \
252 io.enumCase(value, #LCName, MachO::LCName);
253
256#include "llvm/BinaryFormat/MachO.def"
258 }
259};
260
261#define ENUM_CASE(Enum) io.enumCase(value, #Enum, MachO::Enum);
262
266 ENUM_CASE(REBASE_OPCODE_SET_TYPE_IMM)
267 ENUM_CASE(REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB)
268 ENUM_CASE(REBASE_OPCODE_ADD_ADDR_ULEB)
269 ENUM_CASE(REBASE_OPCODE_ADD_ADDR_IMM_SCALED)
270 ENUM_CASE(REBASE_OPCODE_DO_REBASE_IMM_TIMES)
271 ENUM_CASE(REBASE_OPCODE_DO_REBASE_ULEB_TIMES)
272 ENUM_CASE(REBASE_OPCODE_DO_REBASE_ADD_ADDR_ULEB)
273 ENUM_CASE(REBASE_OPCODE_DO_REBASE_ULEB_TIMES_SKIPPING_ULEB)
275 }
276};
277
281 ENUM_CASE(BIND_OPCODE_SET_DYLIB_ORDINAL_IMM)
282 ENUM_CASE(BIND_OPCODE_SET_DYLIB_ORDINAL_ULEB)
283 ENUM_CASE(BIND_OPCODE_SET_DYLIB_SPECIAL_IMM)
284 ENUM_CASE(BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM)
285 ENUM_CASE(BIND_OPCODE_SET_TYPE_IMM)
286 ENUM_CASE(BIND_OPCODE_SET_ADDEND_SLEB)
287 ENUM_CASE(BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB)
288 ENUM_CASE(BIND_OPCODE_ADD_ADDR_ULEB)
290 ENUM_CASE(BIND_OPCODE_DO_BIND_ADD_ADDR_ULEB)
291 ENUM_CASE(BIND_OPCODE_DO_BIND_ADD_ADDR_IMM_SCALED)
292 ENUM_CASE(BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB)
294 }
295};
296
297
299
305
306
307
309
315
316
317
318#define LOAD_COMMAND_STRUCT(LCStruct) \
319 template <> struct MappingTraitsMachO::LCStruct { \
320 static void mapping(IO &IO, MachO::LCStruct &LoadCommand); \
321 };
322
323#include "llvm/BinaryFormat/MachO.def"
324
325
329
333
337
341
342}
343
344}
345
346#endif
This file declares classes for handling the YAML representation of DWARF Debug Info.
#define ENUM_CASE(Enum)
Definition MachOYAML.h:261
#define LLVM_YAML_IS_SEQUENCE_VECTOR(type)
Utility for declaring that a std::vector of a particular type should be considered a YAML sequence.
StringRef - Represent a constant reference to a string, i.e.
This class implements an extremely fast bulk output stream that can only output to a stream.
uint8_t[16] uuid_t
Output a formatted UUID with dash separators.
void enumFallback(T &Val)
Definition MachOYAML.h:29
char[16] char_16
Definition MachOYAML.h:298
raw_ostream::uuid_t uuid_t
Definition MachOYAML.h:308
QuotingType
Describe which type of quotes should be used when quoting is necessary.
This is an optimization pass for GlobalISel generic memory operations.
Definition MachOYAML.h:98
StringRef Symbol
Definition MachOYAML.h:103
MachO::BindOpcode Opcode
Definition MachOYAML.h:99
uint8_t Imm
Definition MachOYAML.h:100
std::vector< int64_t > SLEBExtraData
Definition MachOYAML.h:102
std::vector< yaml::Hex64 > ULEBExtraData
Definition MachOYAML.h:101
Definition MachOYAML.h:117
llvm::yaml::Hex32 Offset
Definition MachOYAML.h:118
uint16_t Length
Definition MachOYAML.h:119
llvm::yaml::Hex16 Kind
Definition MachOYAML.h:120
Definition MachOYAML.h:106
std::vector< MachOYAML::ExportEntry > Children
Definition MachOYAML.h:114
llvm::yaml::Hex64 Address
Definition MachOYAML.h:111
std::string Name
Definition MachOYAML.h:109
uint64_t NodeOffset
Definition MachOYAML.h:108
llvm::yaml::Hex64 Other
Definition MachOYAML.h:112
uint64_t TerminalSize
Definition MachOYAML.h:107
std::string ImportName
Definition MachOYAML.h:113
llvm::yaml::Hex64 Flags
Definition MachOYAML.h:110
Definition MachOYAML.h:154
llvm::yaml::Hex64 offset
Definition MachOYAML.h:157
llvm::yaml::Hex32 cputype
Definition MachOYAML.h:155
uint64_t size
Definition MachOYAML.h:158
uint32_t align
Definition MachOYAML.h:159
llvm::yaml::Hex32 cpusubtype
Definition MachOYAML.h:156
llvm::yaml::Hex32 reserved
Definition MachOYAML.h:160
Definition MachOYAML.h:123
std::vector< MachOYAML::BindOpcode > WeakBindOpcodes
Definition MachOYAML.h:126
std::vector< DataInCodeEntry > DataInCode
Definition MachOYAML.h:133
std::vector< yaml::Hex8 > ChainedFixups
Definition MachOYAML.h:134
std::vector< MachOYAML::BindOpcode > LazyBindOpcodes
Definition MachOYAML.h:127
std::vector< MachOYAML::BindOpcode > BindOpcodes
Definition MachOYAML.h:125
std::vector< MachOYAML::RebaseOpcode > RebaseOpcodes
Definition MachOYAML.h:124
std::vector< StringRef > StringTable
Definition MachOYAML.h:130
std::vector< yaml::Hex32 > IndirectSymbols
Definition MachOYAML.h:131
std::vector< yaml::Hex64 > FunctionStarts
Definition MachOYAML.h:132
MachOYAML::ExportEntry ExportTrie
Definition MachOYAML.h:128
std::vector< NListEntry > NameList
Definition MachOYAML.h:129
Definition MachOYAML.h:73
std::string Content
Definition MachOYAML.h:80
llvm::MachO::macho_load_command Data
Definition MachOYAML.h:76
std::vector< Section > Sections
Definition MachOYAML.h:77
uint64_t ZeroPadBytes
Definition MachOYAML.h:81
std::vector< MachO::build_tool_version > Tools
Definition MachOYAML.h:78
std::vector< llvm::yaml::Hex8 > PayloadBytes
Definition MachOYAML.h:79
Definition MachOYAML.h:84
uint8_t n_sect
Definition MachOYAML.h:87
llvm::yaml::Hex8 n_type
Definition MachOYAML.h:86
uint64_t n_value
Definition MachOYAML.h:89
uint16_t n_desc
Definition MachOYAML.h:88
uint32_t n_strx
Definition MachOYAML.h:85
Definition MachOYAML.h:139
std::vector< LoadCommand > LoadCommands
Definition MachOYAML.h:142
DWARFYAML::Data DWARF
Definition MachOYAML.h:146
std::optional< llvm::yaml::BinaryRef > RawLinkEditSegment
Definition MachOYAML.h:145
LinkEditData LinkEdit
Definition MachOYAML.h:144
FileHeader Header
Definition MachOYAML.h:141
std::vector< Section > Sections
Definition MachOYAML.h:143
bool IsLittleEndian
Definition MachOYAML.h:140
Definition MachOYAML.h:92
std::vector< yaml::Hex64 > ExtraData
Definition MachOYAML.h:95
MachO::RebaseOpcode Opcode
Definition MachOYAML.h:93
uint8_t Imm
Definition MachOYAML.h:94
Definition MachOYAML.h:31
uint8_t length
Definition MachOYAML.h:38
uint32_t symbolnum
Definition MachOYAML.h:35
bool is_scattered
Definition MachOYAML.h:41
int32_t value
Definition MachOYAML.h:42
uint8_t type
Definition MachOYAML.h:40
bool is_extern
Definition MachOYAML.h:39
llvm::yaml::Hex32 address
Definition MachOYAML.h:33
bool is_pcrel
Definition MachOYAML.h:36
Definition MachOYAML.h:45
std::vector< Relocation > relocations
Definition MachOYAML.h:59
std::optional< llvm::yaml::BinaryRef > content
Definition MachOYAML.h:58
uint32_t align
Definition MachOYAML.h:51
char segname[16]
Definition MachOYAML.h:47
llvm::yaml::Hex32 reserved2
Definition MachOYAML.h:56
llvm::yaml::Hex64 addr
Definition MachOYAML.h:48
char sectname[16]
Definition MachOYAML.h:46
llvm::yaml::Hex32 reserved1
Definition MachOYAML.h:55
llvm::yaml::Hex32 reloff
Definition MachOYAML.h:52
llvm::yaml::Hex32 offset
Definition MachOYAML.h:50
llvm::yaml::Hex32 reserved3
Definition MachOYAML.h:57
uint32_t nreloc
Definition MachOYAML.h:53
llvm::yaml::Hex32 flags
Definition MachOYAML.h:54
uint64_t size
Definition MachOYAML.h:49
Definition MachOYAML.h:163
std::vector< Object > Slices
Definition MachOYAML.h:166
FatHeader Header
Definition MachOYAML.h:164
std::vector< FatArch > FatArchs
Definition MachOYAML.h:165
static void mapping(IO &IO, MachOYAML::BindOpcode &BindOpcode)
static void mapping(IO &IO, MachOYAML::DataInCodeEntry &DataInCodeEntry)
static void mapping(IO &IO, MachOYAML::ExportEntry &ExportEntry)
static void mapping(IO &IO, MachOYAML::FatArch &FatArch)
static void mapping(IO &IO, MachOYAML::LinkEditData &LinkEditData)
static void mapping(IO &IO, MachOYAML::LoadCommand &LoadCommand)
static void mapping(IO &IO, MachOYAML::NListEntry &NListEntry)
static void mapping(IO &IO, MachOYAML::Object &Object)
static void mapping(IO &IO, MachOYAML::RebaseOpcode &RebaseOpcode)
static void mapping(IO &IO, MachOYAML::Relocation &R)
static void mapping(IO &IO, MachOYAML::Section &Section)
static std::string validate(IO &io, MachOYAML::Section &Section)
static void mapping(IO &IO, MachOYAML::UniversalBinary &UniversalBinary)
static void mapping(IO &IO, MachO::dylib &LoadCommand)
static void mapping(IO &IO, MachO::fvmlib &LoadCommand)
static void mapping(IO &IO, MachO::section &LoadCommand)
static void mapping(IO &IO, MachO::section_64 &LoadCommand)
This class should be specialized by any type that needs to be converted to/from a YAML mapping.
static void enumeration(IO &io, MachO::BindOpcode &value)
Definition MachOYAML.h:279
static void enumeration(IO &io, MachO::LoadCommandType &value)
Definition MachOYAML.h:255
static void enumeration(IO &io, MachO::RebaseOpcode &value)
Definition MachOYAML.h:264
This class should be specialized by any integral type that converts to/from a YAML scalar where there...
static void output(const char_16 &Val, void *, raw_ostream &Out)
static QuotingType mustQuote(StringRef S)
static StringRef input(StringRef Scalar, void *, char_16 &Val)
static QuotingType mustQuote(StringRef S)
static void output(const uuid_t &Val, void *, raw_ostream &Out)
static StringRef input(StringRef Scalar, void *, uuid_t &Val)
This class should be specialized by type that requires custom conversion to/from a yaml scalar.