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

48 llvm::yaml::Hex64 addr;

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.