1de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar//===- MachOYAML.cpp - MachO YAMLIO implementation ------------------------===// 2de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar// 3de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar// The LLVM Compiler Infrastructure 4de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar// 5de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar// This file is distributed under the University of Illinois Open Source 6de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar// License. See LICENSE.TXT for details. 7de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar// 8de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar//===----------------------------------------------------------------------===// 9de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar// 10de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar// This file defines classes for handling the YAML representation of MachO. 11de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar// 12de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar//===----------------------------------------------------------------------===// 13de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 14de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#include "llvm/ObjectYAML/MachOYAML.h" 15de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#include "llvm/Support/Casting.h" 16de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#include "llvm/Support/Format.h" 17de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#include "llvm/Support/MachO.h" 18de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 19de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#include <string.h> // For memcpy, memset and strnlen. 20de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 21de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarnamespace llvm { 22de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 23de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga NainarMachOYAML::LoadCommand::~LoadCommand() {} 24de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 25de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarnamespace yaml { 26de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 27de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid ScalarTraits<char_16>::output(const char_16 &Val, void *, 28de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar llvm::raw_ostream &Out) { 29de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar auto Len = strnlen(&Val[0], 16); 30de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Out << StringRef(&Val[0], Len); 31de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 32de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 33de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga NainarStringRef ScalarTraits<char_16>::input(StringRef Scalar, void *, char_16 &Val) { 34de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar size_t CopySize = 16 >= Scalar.size() ? 16 : Scalar.size(); 35de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar memcpy((void *)Val, Scalar.data(), CopySize); 36de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 37de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar if (Scalar.size() < 16) { 38de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar memset((void *)&Val[Scalar.size()], 0, 16 - Scalar.size()); 39de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar } 40de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 41de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar return StringRef(); 42de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 43de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 44de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarbool ScalarTraits<char_16>::mustQuote(StringRef S) { return needsQuotes(S); } 45de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 46de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid ScalarTraits<uuid_t>::output(const uuid_t &Val, void *, 47de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar llvm::raw_ostream &Out) { 48de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar for (int Idx = 0; Idx < 16; ++Idx) { 49de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Out << format("%02" PRIX32, Val[Idx]); 50de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar if (Idx == 3 || Idx == 5 || Idx == 7 || Idx == 9) 51de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Out << "-"; 52de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar } 53de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 54de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 55de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga NainarStringRef ScalarTraits<uuid_t>::input(StringRef Scalar, void *, uuid_t &Val) { 56de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar size_t OutIdx = 0; 57de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar for (size_t Idx = 0; Idx < Scalar.size(); ++Idx) { 58de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar if (Scalar[Idx] == '-' || OutIdx >= 16) 59de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar continue; 60de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar unsigned long long TempInt; 61de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar if (getAsUnsignedInteger(Scalar.slice(Idx, Idx + 2), 16, TempInt)) 62de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar return "invalid number"; 63de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar if (TempInt > 0xFF) 64de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar return "out of range number"; 65de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Val[OutIdx] = static_cast<uint8_t>(TempInt); 66de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ++Idx; // increment idx an extra time because we're consuming 2 chars 67de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ++OutIdx; 68de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar } 69de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar return StringRef(); 70de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 71de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 72de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarbool ScalarTraits<uuid_t>::mustQuote(StringRef S) { return needsQuotes(S); } 73de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 74de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachOYAML::FileHeader>::mapping( 75de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachOYAML::FileHeader &FileHdr) { 76de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("magic", FileHdr.magic); 77de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("cputype", FileHdr.cputype); 78de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("cpusubtype", FileHdr.cpusubtype); 79de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("filetype", FileHdr.filetype); 80de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("ncmds", FileHdr.ncmds); 81de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("sizeofcmds", FileHdr.sizeofcmds); 82de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("flags", FileHdr.flags); 83de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar if (FileHdr.magic == MachO::MH_MAGIC_64 || 84de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar FileHdr.magic == MachO::MH_CIGAM_64) 85de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("reserved", FileHdr.reserved); 86de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 87de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 88de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachOYAML::Object>::mapping(IO &IO, 89de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar MachOYAML::Object &Object) { 90de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar // If the context isn't already set, tag the document as !mach-o. 91de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar // For Fat files there will be a different tag so they can be differentiated. 92de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar if (!IO.getContext()) { 93de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.setContext(&Object); 94de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar } 95de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapTag("!mach-o", true); 96de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("FileHeader", Object.Header); 97de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("LoadCommands", Object.LoadCommands); 98de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("LinkEditData", Object.LinkEdit); 99de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 100de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar if (IO.getContext() == &Object) 101de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.setContext(nullptr); 102de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 103de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 104de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachOYAML::FatHeader>::mapping( 105de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachOYAML::FatHeader &FatHeader) { 106de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("magic", FatHeader.magic); 107de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("nfat_arch", FatHeader.nfat_arch); 108de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 109de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 110de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachOYAML::FatArch>::mapping(IO &IO, 111de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar MachOYAML::FatArch &FatArch) { 112de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("cputype", FatArch.cputype); 113de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("cpusubtype", FatArch.cpusubtype); 114de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("offset", FatArch.offset); 115de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("size", FatArch.size); 116de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("align", FatArch.align); 117de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("reserved", FatArch.reserved, 118de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar static_cast<llvm::yaml::Hex32>(0)); 119de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 120de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 121de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachOYAML::UniversalBinary>::mapping( 122de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachOYAML::UniversalBinary &UniversalBinary) { 123de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar if (!IO.getContext()) { 124de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.setContext(&UniversalBinary); 125de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapTag("!fat-mach-o", true); 126de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar } 127de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("FatHeader", UniversalBinary.Header); 128de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("FatArchs", UniversalBinary.FatArchs); 129de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("Slices", UniversalBinary.Slices); 130de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 131de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar if (IO.getContext() == &UniversalBinary) 132de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.setContext(nullptr); 133de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 134de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 135de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachOYAML::LinkEditData>::mapping( 136de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachOYAML::LinkEditData &LinkEditData) { 137de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("RebaseOpcodes", LinkEditData.RebaseOpcodes); 138de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("BindOpcodes", LinkEditData.BindOpcodes); 139de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("WeakBindOpcodes", LinkEditData.WeakBindOpcodes); 140de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("LazyBindOpcodes", LinkEditData.LazyBindOpcodes); 141de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("ExportTrie", LinkEditData.ExportTrie); 142de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("NameList", LinkEditData.NameList); 143de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("StringTable", LinkEditData.StringTable); 144de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 145de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 146de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachOYAML::RebaseOpcode>::mapping( 147de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachOYAML::RebaseOpcode &RebaseOpcode) { 148de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("Opcode", RebaseOpcode.Opcode); 149de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("Imm", RebaseOpcode.Imm); 150de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("ExtraData", RebaseOpcode.ExtraData); 151de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 152de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 153de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachOYAML::BindOpcode>::mapping( 154de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachOYAML::BindOpcode &BindOpcode) { 155de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("Opcode", BindOpcode.Opcode); 156de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("Imm", BindOpcode.Imm); 157de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("ULEBExtraData", BindOpcode.ULEBExtraData); 158de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("SLEBExtraData", BindOpcode.SLEBExtraData); 159de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("Symbol", BindOpcode.Symbol); 160de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 161de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 162de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachOYAML::ExportEntry>::mapping( 163de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachOYAML::ExportEntry &ExportEntry) { 164de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("TerminalSize", ExportEntry.TerminalSize); 165de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("NodeOffset", ExportEntry.NodeOffset); 166de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("Name", ExportEntry.Name); 167de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("Flags", ExportEntry.Flags); 168de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("Address", ExportEntry.Address); 169de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("Other", ExportEntry.Other); 170de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("ImportName", ExportEntry.ImportName); 171de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("Children", ExportEntry.Children); 172de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 173de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 174de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachOYAML::NListEntry>::mapping( 175de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachOYAML::NListEntry &NListEntry) { 176de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("n_strx", NListEntry.n_strx); 177de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("n_type", NListEntry.n_type); 178de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("n_sect", NListEntry.n_sect); 179de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("n_desc", NListEntry.n_desc); 180de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("n_value", NListEntry.n_value); 181de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 182de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 183de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainartemplate <typename StructType> 184de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid mapLoadCommandData(IO &IO, MachOYAML::LoadCommand &LoadCommand) {} 185de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 186de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainartemplate <> 187de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid mapLoadCommandData<MachO::segment_command>( 188de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachOYAML::LoadCommand &LoadCommand) { 189de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("Sections", LoadCommand.Sections); 190de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 191de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 192de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainartemplate <> 193de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid mapLoadCommandData<MachO::segment_command_64>( 194de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachOYAML::LoadCommand &LoadCommand) { 195de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("Sections", LoadCommand.Sections); 196de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 197de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 198de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainartemplate <> 199de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid mapLoadCommandData<MachO::dylib_command>( 200de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachOYAML::LoadCommand &LoadCommand) { 201de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("PayloadString", LoadCommand.PayloadString); 202de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 203de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 204de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainartemplate <> 205de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid mapLoadCommandData<MachO::rpath_command>( 206de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachOYAML::LoadCommand &LoadCommand) { 207de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("PayloadString", LoadCommand.PayloadString); 208de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 209de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 210de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainartemplate <> 211de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid mapLoadCommandData<MachO::dylinker_command>( 212de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachOYAML::LoadCommand &LoadCommand) { 213de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("PayloadString", LoadCommand.PayloadString); 214de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 215de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 216de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachOYAML::LoadCommand>::mapping( 217de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachOYAML::LoadCommand &LoadCommand) { 218de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar MachO::LoadCommandType TempCmd = static_cast<MachO::LoadCommandType>( 219de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar LoadCommand.Data.load_command_data.cmd); 220de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("cmd", TempCmd); 221de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar LoadCommand.Data.load_command_data.cmd = TempCmd; 222de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("cmdsize", LoadCommand.Data.load_command_data.cmdsize); 223de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 224de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#define HANDLE_LOAD_COMMAND(LCName, LCValue, LCStruct) \ 225de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar case MachO::LCName: \ 226de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar MappingTraits<MachO::LCStruct>::mapping(IO, \ 227de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar LoadCommand.Data.LCStruct##_data); \ 228de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar mapLoadCommandData<MachO::LCStruct>(IO, LoadCommand); \ 229de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar break; 230de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 231de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar switch (LoadCommand.Data.load_command_data.cmd) { 232de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#include "llvm/Support/MachO.def" 233de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar } 234de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("PayloadBytes", LoadCommand.PayloadBytes); 235de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("ZeroPadBytes", LoadCommand.ZeroPadBytes, (uint64_t)0ull); 236de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 237de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 238de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::dyld_info_command>::mapping( 239de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::dyld_info_command &LoadCommand) { 240de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("rebase_off", LoadCommand.rebase_off); 241de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("rebase_size", LoadCommand.rebase_size); 242de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("bind_off", LoadCommand.bind_off); 243de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("bind_size", LoadCommand.bind_size); 244de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("weak_bind_off", LoadCommand.weak_bind_off); 245de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("weak_bind_size", LoadCommand.weak_bind_size); 246de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("lazy_bind_off", LoadCommand.lazy_bind_off); 247de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("lazy_bind_size", LoadCommand.lazy_bind_size); 248de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("export_off", LoadCommand.export_off); 249de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("export_size", LoadCommand.export_size); 250de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 251de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 252de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachOYAML::Section>::mapping(IO &IO, 253de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar MachOYAML::Section &Section) { 254de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("sectname", Section.sectname); 255de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("segname", Section.segname); 256de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("addr", Section.addr); 257de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("size", Section.size); 258de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("offset", Section.offset); 259de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("align", Section.align); 260de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("reloff", Section.reloff); 261de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("nreloc", Section.nreloc); 262de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("flags", Section.flags); 263de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("reserved1", Section.reserved1); 264de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("reserved2", Section.reserved2); 265de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapOptional("reserved3", Section.reserved3); 266de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 267de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 268de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::dylib>::mapping(IO &IO, MachO::dylib &DylibStruct) { 269de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("name", DylibStruct.name); 270de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("timestamp", DylibStruct.timestamp); 271de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("current_version", DylibStruct.current_version); 272de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("compatibility_version", DylibStruct.compatibility_version); 273de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 274de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 275de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::dylib_command>::mapping( 276de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::dylib_command &LoadCommand) { 277de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("dylib", LoadCommand.dylib); 278de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 279de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 280de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::dylinker_command>::mapping( 281de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::dylinker_command &LoadCommand) { 282de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 283de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("name", LoadCommand.name); 284de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 285de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 286de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::dysymtab_command>::mapping( 287de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::dysymtab_command &LoadCommand) { 288de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 289de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("ilocalsym", LoadCommand.ilocalsym); 290de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("nlocalsym", LoadCommand.nlocalsym); 291de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("iextdefsym", LoadCommand.iextdefsym); 292de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("nextdefsym", LoadCommand.nextdefsym); 293de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("iundefsym", LoadCommand.iundefsym); 294de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("nundefsym", LoadCommand.nundefsym); 295de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("tocoff", LoadCommand.tocoff); 296de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("ntoc", LoadCommand.ntoc); 297de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("modtaboff", LoadCommand.modtaboff); 298de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("nmodtab", LoadCommand.nmodtab); 299de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("extrefsymoff", LoadCommand.extrefsymoff); 300de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("nextrefsyms", LoadCommand.nextrefsyms); 301de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("indirectsymoff", LoadCommand.indirectsymoff); 302de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("nindirectsyms", LoadCommand.nindirectsyms); 303de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("extreloff", LoadCommand.extreloff); 304de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("nextrel", LoadCommand.nextrel); 305de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("locreloff", LoadCommand.locreloff); 306de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("nlocrel", LoadCommand.nlocrel); 307de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 308de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 309de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::encryption_info_command>::mapping( 310de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::encryption_info_command &LoadCommand) { 311de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 312de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("cryptoff", LoadCommand.cryptoff); 313de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("cryptsize", LoadCommand.cryptsize); 314de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("cryptid", LoadCommand.cryptid); 315de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 316de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 317de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::encryption_info_command_64>::mapping( 318de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::encryption_info_command_64 &LoadCommand) { 319de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 320de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("cryptoff", LoadCommand.cryptoff); 321de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("cryptsize", LoadCommand.cryptsize); 322de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("cryptid", LoadCommand.cryptid); 323de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("pad", LoadCommand.pad); 324de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 325de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 326de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::entry_point_command>::mapping( 327de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::entry_point_command &LoadCommand) { 328de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 329de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("entryoff", LoadCommand.entryoff); 330de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("stacksize", LoadCommand.stacksize); 331de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 332de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 333de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::fvmfile_command>::mapping( 334de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::fvmfile_command &LoadCommand) { 335de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 336de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("name", LoadCommand.name); 337de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("header_addr", LoadCommand.header_addr); 338de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 339de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 340de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::fvmlib>::mapping(IO &IO, MachO::fvmlib &FVMLib) { 341de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("name", FVMLib.name); 342de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("minor_version", FVMLib.minor_version); 343de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("header_addr", FVMLib.header_addr); 344de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 345de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 346de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::fvmlib_command>::mapping( 347de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::fvmlib_command &LoadCommand) { 348de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 349de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("fvmlib", LoadCommand.fvmlib); 350de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 351de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 352de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::ident_command>::mapping( 353de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::ident_command &LoadCommand) {} 354de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 355de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::linkedit_data_command>::mapping( 356de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::linkedit_data_command &LoadCommand) { 357de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 358de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("dataoff", LoadCommand.dataoff); 359de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("datasize", LoadCommand.datasize); 360de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 361de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 362de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::linker_option_command>::mapping( 363de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::linker_option_command &LoadCommand) { 364de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 365de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("count", LoadCommand.count); 366de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 367de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 368de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::prebind_cksum_command>::mapping( 369de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::prebind_cksum_command &LoadCommand) { 370de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 371de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("cksum", LoadCommand.cksum); 372de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 373de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 374de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::load_command>::mapping( 375de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::load_command &LoadCommand) {} 376de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 377de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::prebound_dylib_command>::mapping( 378de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::prebound_dylib_command &LoadCommand) { 379de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 380de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("name", LoadCommand.name); 381de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("nmodules", LoadCommand.nmodules); 382de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("linked_modules", LoadCommand.linked_modules); 383de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 384de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 385de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::routines_command>::mapping( 386de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::routines_command &LoadCommand) { 387de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 388de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("init_address", LoadCommand.init_address); 389de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("init_module", LoadCommand.init_module); 390de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("reserved1", LoadCommand.reserved1); 391de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("reserved2", LoadCommand.reserved2); 392de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("reserved3", LoadCommand.reserved3); 393de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("reserved4", LoadCommand.reserved4); 394de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("reserved5", LoadCommand.reserved5); 395de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("reserved6", LoadCommand.reserved6); 396de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 397de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 398de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::routines_command_64>::mapping( 399de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::routines_command_64 &LoadCommand) { 400de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 401de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("init_address", LoadCommand.init_address); 402de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("init_module", LoadCommand.init_module); 403de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("reserved1", LoadCommand.reserved1); 404de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("reserved2", LoadCommand.reserved2); 405de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("reserved3", LoadCommand.reserved3); 406de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("reserved4", LoadCommand.reserved4); 407de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("reserved5", LoadCommand.reserved5); 408de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("reserved6", LoadCommand.reserved6); 409de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 410de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 411de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::rpath_command>::mapping( 412de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::rpath_command &LoadCommand) { 413de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 414de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("path", LoadCommand.path); 415de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 416de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 417de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::section>::mapping(IO &IO, MachO::section &Section) { 418de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("sectname", Section.sectname); 419de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("segname", Section.segname); 420de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("addr", Section.addr); 421de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("size", Section.size); 422de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("offset", Section.offset); 423de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("align", Section.align); 424de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("reloff", Section.reloff); 425de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("nreloc", Section.nreloc); 426de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("flags", Section.flags); 427de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("reserved1", Section.reserved1); 428de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("reserved2", Section.reserved2); 429de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 430de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 431de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::section_64>::mapping(IO &IO, 432de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar MachO::section_64 &Section) { 433de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("sectname", Section.sectname); 434de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("segname", Section.segname); 435de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("addr", Section.addr); 436de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("size", Section.size); 437de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("offset", Section.offset); 438de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("align", Section.align); 439de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("reloff", Section.reloff); 440de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("nreloc", Section.nreloc); 441de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("flags", Section.flags); 442de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("reserved1", Section.reserved1); 443de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("reserved2", Section.reserved2); 444de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("reserved3", Section.reserved3); 445de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 446de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 447de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::segment_command>::mapping( 448de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::segment_command &LoadCommand) { 449de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 450de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("segname", LoadCommand.segname); 451de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("vmaddr", LoadCommand.vmaddr); 452de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("vmsize", LoadCommand.vmsize); 453de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("fileoff", LoadCommand.fileoff); 454de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("filesize", LoadCommand.filesize); 455de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("maxprot", LoadCommand.maxprot); 456de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("initprot", LoadCommand.initprot); 457de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("nsects", LoadCommand.nsects); 458de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("flags", LoadCommand.flags); 459de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 460de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 461de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::segment_command_64>::mapping( 462de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::segment_command_64 &LoadCommand) { 463de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 464de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("segname", LoadCommand.segname); 465de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("vmaddr", LoadCommand.vmaddr); 466de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("vmsize", LoadCommand.vmsize); 467de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("fileoff", LoadCommand.fileoff); 468de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("filesize", LoadCommand.filesize); 469de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("maxprot", LoadCommand.maxprot); 470de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("initprot", LoadCommand.initprot); 471de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("nsects", LoadCommand.nsects); 472de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("flags", LoadCommand.flags); 473de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 474de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 475de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::source_version_command>::mapping( 476de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::source_version_command &LoadCommand) { 477de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 478de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("version", LoadCommand.version); 479de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 480de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 481de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::sub_client_command>::mapping( 482de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::sub_client_command &LoadCommand) { 483de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 484de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("client", LoadCommand.client); 485de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 486de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 487de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::sub_framework_command>::mapping( 488de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::sub_framework_command &LoadCommand) { 489de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 490de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("umbrella", LoadCommand.umbrella); 491de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 492de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 493de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::sub_library_command>::mapping( 494de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::sub_library_command &LoadCommand) { 495de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 496de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("sub_library", LoadCommand.sub_library); 497de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 498de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 499de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::sub_umbrella_command>::mapping( 500de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::sub_umbrella_command &LoadCommand) { 501de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 502de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("sub_umbrella", LoadCommand.sub_umbrella); 503de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 504de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 505de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::symseg_command>::mapping( 506de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::symseg_command &LoadCommand) { 507de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 508de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("offset", LoadCommand.offset); 509de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("size", LoadCommand.size); 510de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 511de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 512de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::symtab_command>::mapping( 513de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::symtab_command &LoadCommand) { 514de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 515de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("symoff", LoadCommand.symoff); 516de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("nsyms", LoadCommand.nsyms); 517de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("stroff", LoadCommand.stroff); 518de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("strsize", LoadCommand.strsize); 519de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 520de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 521de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::thread_command>::mapping( 522de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::thread_command &LoadCommand) {} 523de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 524de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::twolevel_hints_command>::mapping( 525de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::twolevel_hints_command &LoadCommand) { 526de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 527de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("offset", LoadCommand.offset); 528de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("nhints", LoadCommand.nhints); 529de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 530de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 531de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::uuid_command>::mapping( 532de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::uuid_command &LoadCommand) { 533de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 534de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("uuid", LoadCommand.uuid); 535de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 536de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 537de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarvoid MappingTraits<MachO::version_min_command>::mapping( 538de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO &IO, MachO::version_min_command &LoadCommand) { 539de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 540de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("version", LoadCommand.version); 541de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IO.mapRequired("sdk", LoadCommand.sdk); 542de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 543de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 544de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} // namespace llvm::yaml 545de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 546de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} // namespace llvm 547