LLVM  17.0.0git
XCOFFYAML.h
Go to the documentation of this file.
1 //===----- XCOFFYAML.h - XCOFF YAMLIO implementation ------------*- 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 //
9 // This file declares classes for handling the YAML representation of XCOFF.
10 //
11 //===----------------------------------------------------------------------===//
12 #ifndef LLVM_OBJECTYAML_XCOFFYAML_H
13 #define LLVM_OBJECTYAML_XCOFFYAML_H
14 
16 #include "llvm/ObjectYAML/YAML.h"
17 #include <optional>
18 #include <vector>
19 
20 namespace llvm {
21 namespace XCOFFYAML {
22 
23 struct FileHeader {
24  llvm::yaml::Hex16 Magic;
26  int32_t TimeStamp;
27  llvm::yaml::Hex64 SymbolTableOffset;
30  llvm::yaml::Hex16 Flags;
31 };
32 
34  std::optional<llvm::yaml::Hex16> Magic;
35  std::optional<llvm::yaml::Hex16> Version;
36  std::optional<llvm::yaml::Hex64> TextStartAddr;
37  std::optional<llvm::yaml::Hex64> DataStartAddr;
38  std::optional<llvm::yaml::Hex64> TOCAnchorAddr;
39  std::optional<uint16_t> SecNumOfEntryPoint;
40  std::optional<uint16_t> SecNumOfText;
41  std::optional<uint16_t> SecNumOfData;
42  std::optional<uint16_t> SecNumOfTOC;
43  std::optional<uint16_t> SecNumOfLoader;
44  std::optional<uint16_t> SecNumOfBSS;
45  std::optional<llvm::yaml::Hex16> MaxAlignOfText;
46  std::optional<llvm::yaml::Hex16> MaxAlignOfData;
47  std::optional<llvm::yaml::Hex16> ModuleType;
48  std::optional<llvm::yaml::Hex8> CpuFlag;
49  std::optional<llvm::yaml::Hex8> CpuType;
50  std::optional<llvm::yaml::Hex8> TextPageSize;
51  std::optional<llvm::yaml::Hex8> DataPageSize;
52  std::optional<llvm::yaml::Hex8> StackPageSize;
53  std::optional<llvm::yaml::Hex8> FlagAndTDataAlignment;
54  std::optional<llvm::yaml::Hex64> TextSize;
55  std::optional<llvm::yaml::Hex64> InitDataSize;
56  std::optional<llvm::yaml::Hex64> BssDataSize;
57  std::optional<llvm::yaml::Hex64> EntryPointAddr;
58  std::optional<llvm::yaml::Hex64> MaxStackSize;
59  std::optional<llvm::yaml::Hex64> MaxDataSize;
60  std::optional<uint16_t> SecNumOfTData;
61  std::optional<uint16_t> SecNumOfTBSS;
62  std::optional<llvm::yaml::Hex16> Flag;
63 };
64 
65 struct Relocation {
66  llvm::yaml::Hex64 VirtualAddress;
67  llvm::yaml::Hex64 SymbolIndex;
68  llvm::yaml::Hex8 Info;
69  llvm::yaml::Hex8 Type;
70 };
71 
72 struct Section {
74  llvm::yaml::Hex64 Address;
75  llvm::yaml::Hex64 Size;
76  llvm::yaml::Hex64 FileOffsetToData;
77  llvm::yaml::Hex64 FileOffsetToRelocations;
78  llvm::yaml::Hex64 FileOffsetToLineNumbers; // Line number pointer. Not supported yet.
79  llvm::yaml::Hex16 NumberOfRelocations;
80  llvm::yaml::Hex16 NumberOfLineNumbers; // Line number counts. Not supported yet.
83  std::vector<Relocation> Relocations;
84 };
85 
86 enum AuxSymbolType : uint8_t {
87  AUX_EXCEPT = 255,
88  AUX_FCN = 254,
89  AUX_SYM = 253,
90  AUX_FILE = 252,
91  AUX_CSECT = 251,
92  AUX_SECT = 250,
93  AUX_STAT = 249
94 };
95 
96 struct AuxSymbolEnt {
98 
99  explicit AuxSymbolEnt(AuxSymbolType T) : Type(T) {}
100  virtual ~AuxSymbolEnt();
101 };
102 
104  std::optional<StringRef> FileNameOrString;
105  std::optional<XCOFF::CFileStringType> FileStringType;
106 
108  static bool classof(const AuxSymbolEnt *S) {
109  return S->Type == AuxSymbolType::AUX_FILE;
110  }
111 };
112 
114  // Only for XCOFF32.
115  std::optional<uint32_t> SectionOrLength;
116  std::optional<uint32_t> StabInfoIndex;
117  std::optional<uint16_t> StabSectNum;
118  // Only for XCOFF64.
119  std::optional<uint32_t> SectionOrLengthLo;
120  std::optional<uint32_t> SectionOrLengthHi;
121  // Common fields for both XCOFF32 and XCOFF64.
122  std::optional<uint32_t> ParameterHashIndex;
123  std::optional<uint16_t> TypeChkSectNum;
124  std::optional<uint8_t> SymbolAlignmentAndType;
125  std::optional<XCOFF::StorageMappingClass> StorageMappingClass;
126 
128  static bool classof(const AuxSymbolEnt *S) {
129  return S->Type == AuxSymbolType::AUX_CSECT;
130  }
131 };
132 
134  std::optional<uint32_t> OffsetToExceptionTbl; // Only for XCOFF32.
135  std::optional<uint64_t> PtrToLineNum;
136  std::optional<uint32_t> SizeOfFunction;
137  std::optional<int32_t> SymIdxOfNextBeyond;
138 
140  static bool classof(const AuxSymbolEnt *S) {
141  return S->Type == AuxSymbolType::AUX_FCN;
142  }
143 };
144 
146  std::optional<uint64_t> OffsetToExceptionTbl;
147  std::optional<uint32_t> SizeOfFunction;
148  std::optional<int32_t> SymIdxOfNextBeyond;
149 
151  static bool classof(const AuxSymbolEnt *S) {
152  return S->Type == AuxSymbolType::AUX_EXCEPT;
153  }
154 }; // Only for XCOFF64.
155 
157  // Only for XCOFF32.
158  std::optional<uint16_t> LineNumHi;
159  std::optional<uint16_t> LineNumLo;
160  // Only for XCOFF64.
161  std::optional<uint32_t> LineNum;
162 
164  static bool classof(const AuxSymbolEnt *S) {
165  return S->Type == AuxSymbolType::AUX_SYM;
166  }
167 };
168 
170  std::optional<uint32_t> LengthOfSectionPortion;
171  std::optional<uint32_t> NumberOfRelocEnt;
172 
174  static bool classof(const AuxSymbolEnt *S) {
175  return S->Type == AuxSymbolType::AUX_SECT;
176  }
177 };
178 
180  std::optional<uint32_t> SectionLength;
181  std::optional<uint16_t> NumberOfRelocEnt;
182  std::optional<uint16_t> NumberOfLineNum;
183 
185  static bool classof(const AuxSymbolEnt *S) {
186  return S->Type == AuxSymbolType::AUX_STAT;
187  }
188 }; // Only for XCOFF32.
189 
190 struct Symbol {
192  llvm::yaml::Hex64 Value; // Symbol value; storage class-dependent.
193  std::optional<StringRef> SectionName;
194  std::optional<uint16_t> SectionIndex;
195  llvm::yaml::Hex16 Type;
197  std::optional<uint8_t> NumberOfAuxEntries;
198  std::vector<std::unique_ptr<AuxSymbolEnt>> AuxEntries;
199 };
200 
201 struct StringTable {
202  std::optional<uint32_t> ContentSize; // The total size of the string table.
203  std::optional<uint32_t> Length; // The value of the length field for the first
204  // 4 bytes of the table.
205  std::optional<std::vector<StringRef>> Strings;
206  std::optional<yaml::BinaryRef> RawContent;
207 };
208 
209 struct Object {
211  std::optional<AuxiliaryHeader> AuxHeader;
212  std::vector<Section> Sections;
213  std::vector<Symbol> Symbols;
215  Object();
216 };
217 } // namespace XCOFFYAML
218 } // namespace llvm
219 
221 LLVM_YAML_IS_SEQUENCE_VECTOR(XCOFFYAML::Relocation)
223 LLVM_YAML_IS_SEQUENCE_VECTOR(std::unique_ptr<llvm::XCOFFYAML::AuxSymbolEnt>)
224 
225 namespace llvm {
226 namespace yaml {
227 
228 template <> struct ScalarBitSetTraits<XCOFF::SectionTypeFlags> {
229  static void bitset(IO &IO, XCOFF::SectionTypeFlags &Value);
230 };
231 
232 template <> struct ScalarEnumerationTraits<XCOFF::StorageClass> {
233  static void enumeration(IO &IO, XCOFF::StorageClass &Value);
234 };
235 
236 template <> struct ScalarEnumerationTraits<XCOFF::StorageMappingClass> {
237  static void enumeration(IO &IO, XCOFF::StorageMappingClass &Value);
238 };
239 
240 template <> struct ScalarEnumerationTraits<XCOFF::CFileStringType> {
241  static void enumeration(IO &IO, XCOFF::CFileStringType &Type);
242 };
243 
244 template <> struct ScalarEnumerationTraits<XCOFFYAML::AuxSymbolType> {
245  static void enumeration(IO &IO, XCOFFYAML::AuxSymbolType &Type);
246 };
247 
248 template <> struct MappingTraits<XCOFFYAML::FileHeader> {
249  static void mapping(IO &IO, XCOFFYAML::FileHeader &H);
250 };
251 
252 template <> struct MappingTraits<XCOFFYAML::AuxiliaryHeader> {
253  static void mapping(IO &IO, XCOFFYAML::AuxiliaryHeader &AuxHdr);
254 };
255 
256 template <> struct MappingTraits<std::unique_ptr<XCOFFYAML::AuxSymbolEnt>> {
257  static void mapping(IO &IO, std::unique_ptr<XCOFFYAML::AuxSymbolEnt> &AuxSym);
258 };
259 
260 template <> struct MappingTraits<XCOFFYAML::Symbol> {
261  static void mapping(IO &IO, XCOFFYAML::Symbol &S);
262 };
263 
264 template <> struct MappingTraits<XCOFFYAML::Relocation> {
265  static void mapping(IO &IO, XCOFFYAML::Relocation &R);
266 };
267 
268 template <> struct MappingTraits<XCOFFYAML::Section> {
269  static void mapping(IO &IO, XCOFFYAML::Section &Sec);
270 };
271 
272 template <> struct MappingTraits<XCOFFYAML::StringTable> {
273  static void mapping(IO &IO, XCOFFYAML::StringTable &Str);
274 };
275 
276 template <> struct MappingTraits<XCOFFYAML::Object> {
277  static void mapping(IO &IO, XCOFFYAML::Object &Obj);
278 };
279 
280 } // namespace yaml
281 } // namespace llvm
282 
283 #endif // LLVM_OBJECTYAML_XCOFFYAML_H
llvm::XCOFFYAML::AuxiliaryHeader::DataPageSize
std::optional< llvm::yaml::Hex8 > DataPageSize
Definition: XCOFFYAML.h:51
llvm::XCOFFYAML::CsectAuxEnt::ParameterHashIndex
std::optional< uint32_t > ParameterHashIndex
Definition: XCOFFYAML.h:122
llvm::XCOFFYAML::CsectAuxEnt::StabSectNum
std::optional< uint16_t > StabSectNum
Definition: XCOFFYAML.h:117
llvm::XCOFFYAML::FileAuxEnt::classof
static bool classof(const AuxSymbolEnt *S)
Definition: XCOFFYAML.h:108
llvm::XCOFFYAML::AUX_STAT
@ AUX_STAT
Definition: XCOFFYAML.h:93
llvm::XCOFFYAML::BlockAuxEnt::LineNumHi
std::optional< uint16_t > LineNumHi
Definition: XCOFFYAML.h:158
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
llvm::XCOFFYAML::FileHeader
Definition: XCOFFYAML.h:23
llvm::XCOFFYAML::Section::FileOffsetToRelocations
llvm::yaml::Hex64 FileOffsetToRelocations
Definition: XCOFFYAML.h:77
llvm::XCOFFYAML::FunctionAuxEnt::PtrToLineNum
std::optional< uint64_t > PtrToLineNum
Definition: XCOFFYAML.h:135
llvm::XCOFFYAML::AuxiliaryHeader::SecNumOfTBSS
std::optional< uint16_t > SecNumOfTBSS
Definition: XCOFFYAML.h:61
llvm::XCOFFYAML::StringTable::Strings
std::optional< std::vector< StringRef > > Strings
Definition: XCOFFYAML.h:205
llvm::XCOFFYAML::AuxSymbolEnt::~AuxSymbolEnt
virtual ~AuxSymbolEnt()
llvm::XCOFFYAML::AuxiliaryHeader::SecNumOfLoader
std::optional< uint16_t > SecNumOfLoader
Definition: XCOFFYAML.h:43
llvm::XCOFFYAML::AuxiliaryHeader
Definition: XCOFFYAML.h:33
llvm::XCOFFYAML::AuxiliaryHeader::Flag
std::optional< llvm::yaml::Hex16 > Flag
Definition: XCOFFYAML.h:62
llvm::XCOFFYAML::Object::Sections
std::vector< Section > Sections
Definition: XCOFFYAML.h:212
llvm::XCOFFYAML::SectAuxEntForStat::classof
static bool classof(const AuxSymbolEnt *S)
Definition: XCOFFYAML.h:185
llvm::XCOFFYAML::BlockAuxEnt::classof
static bool classof(const AuxSymbolEnt *S)
Definition: XCOFFYAML.h:164
LLVM_YAML_IS_SEQUENCE_VECTOR
#define LLVM_YAML_IS_SEQUENCE_VECTOR(type)
llvm::XCOFFYAML::BlockAuxEnt::LineNum
std::optional< uint32_t > LineNum
Definition: XCOFFYAML.h:161
llvm::XCOFFYAML::FileHeader::Magic
llvm::yaml::Hex16 Magic
Definition: XCOFFYAML.h:24
llvm::XCOFFYAML::AUX_FILE
@ AUX_FILE
Definition: XCOFFYAML.h:90
llvm::Type
The instances of the Type class are immutable: once they are created, they are never changed.
Definition: Type.h:45
llvm::XCOFFYAML::Section::FileOffsetToData
llvm::yaml::Hex64 FileOffsetToData
Definition: XCOFFYAML.h:76
llvm::XCOFFYAML::ExcpetionAuxEnt
Definition: XCOFFYAML.h:145
llvm::XCOFFYAML::StringTable::Length
std::optional< uint32_t > Length
Definition: XCOFFYAML.h:203
T
#define T
Definition: Mips16ISelLowering.cpp:341
llvm::XCOFFYAML::AuxiliaryHeader::CpuFlag
std::optional< llvm::yaml::Hex8 > CpuFlag
Definition: XCOFFYAML.h:48
llvm::XCOFFYAML::AuxSymbolType
AuxSymbolType
Definition: XCOFFYAML.h:86
llvm::XCOFFYAML::Object::StrTbl
StringTable StrTbl
Definition: XCOFFYAML.h:214
llvm::yaml::MappingTraits
Definition: ModuleSummaryIndex.h:53
llvm::XCOFFYAML::StringTable::RawContent
std::optional< yaml::BinaryRef > RawContent
Definition: XCOFFYAML.h:206
llvm::XCOFFYAML::Relocation
Definition: XCOFFYAML.h:65
llvm::XCOFFYAML::StringTable
Definition: XCOFFYAML.h:201
llvm::XCOFFYAML::FileHeader::TimeStamp
int32_t TimeStamp
Definition: XCOFFYAML.h:26
llvm::XCOFFYAML::BlockAuxEnt::LineNumLo
std::optional< uint16_t > LineNumLo
Definition: XCOFFYAML.h:159
llvm::XCOFFYAML::SectAuxEntForDWARF::classof
static bool classof(const AuxSymbolEnt *S)
Definition: XCOFFYAML.h:174
llvm::ARMBuildAttrs::Section
@ Section
Legacy Tags.
Definition: ARMBuildAttributes.h:82
llvm::XCOFFYAML::AuxiliaryHeader::EntryPointAddr
std::optional< llvm::yaml::Hex64 > EntryPointAddr
Definition: XCOFFYAML.h:57
XCOFF.h
llvm::XCOFFYAML::AuxiliaryHeader::Version
std::optional< llvm::yaml::Hex16 > Version
Definition: XCOFFYAML.h:35
llvm::XCOFFYAML::FunctionAuxEnt::classof
static bool classof(const AuxSymbolEnt *S)
Definition: XCOFFYAML.h:140
llvm::XCOFFYAML::ExcpetionAuxEnt::SizeOfFunction
std::optional< uint32_t > SizeOfFunction
Definition: XCOFFYAML.h:147
llvm::XCOFFYAML::CsectAuxEnt::SectionOrLengthHi
std::optional< uint32_t > SectionOrLengthHi
Definition: XCOFFYAML.h:120
llvm::XCOFFYAML::AuxSymbolEnt::Type
AuxSymbolType Type
Definition: XCOFFYAML.h:97
llvm::XCOFFYAML::AuxiliaryHeader::TextStartAddr
std::optional< llvm::yaml::Hex64 > TextStartAddr
Definition: XCOFFYAML.h:36
llvm::XCOFFYAML::AuxiliaryHeader::MaxAlignOfData
std::optional< llvm::yaml::Hex16 > MaxAlignOfData
Definition: XCOFFYAML.h:46
llvm::XCOFFYAML::ExcpetionAuxEnt::SymIdxOfNextBeyond
std::optional< int32_t > SymIdxOfNextBeyond
Definition: XCOFFYAML.h:148
llvm::XCOFFYAML::AuxiliaryHeader::TOCAnchorAddr
std::optional< llvm::yaml::Hex64 > TOCAnchorAddr
Definition: XCOFFYAML.h:38
llvm::XCOFFYAML::Symbol::SectionName
std::optional< StringRef > SectionName
Definition: XCOFFYAML.h:193
llvm::XCOFFYAML::AuxiliaryHeader::SecNumOfTData
std::optional< uint16_t > SecNumOfTData
Definition: XCOFFYAML.h:60
llvm::XCOFFYAML::AuxiliaryHeader::SecNumOfTOC
std::optional< uint16_t > SecNumOfTOC
Definition: XCOFFYAML.h:42
llvm::XCOFFYAML::AuxSymbolEnt::AuxSymbolEnt
AuxSymbolEnt(AuxSymbolType T)
Definition: XCOFFYAML.h:99
llvm::XCOFFYAML::FileHeader::Flags
llvm::yaml::Hex16 Flags
Definition: XCOFFYAML.h:30
llvm::XCOFFYAML::AuxiliaryHeader::Magic
std::optional< llvm::yaml::Hex16 > Magic
Definition: XCOFFYAML.h:34
YAML.h
llvm::XCOFFYAML::CsectAuxEnt
Definition: XCOFFYAML.h:113
llvm::XCOFFYAML::SectAuxEntForStat::NumberOfLineNum
std::optional< uint16_t > NumberOfLineNum
Definition: XCOFFYAML.h:182
llvm::XCOFFYAML::BlockAuxEnt::BlockAuxEnt
BlockAuxEnt()
Definition: XCOFFYAML.h:163
llvm::XCOFFYAML::AuxiliaryHeader::BssDataSize
std::optional< llvm::yaml::Hex64 > BssDataSize
Definition: XCOFFYAML.h:56
llvm::XCOFFYAML::CsectAuxEnt::SectionOrLengthLo
std::optional< uint32_t > SectionOrLengthLo
Definition: XCOFFYAML.h:119
llvm::XCOFFYAML::FileHeader::SymbolTableOffset
llvm::yaml::Hex64 SymbolTableOffset
Definition: XCOFFYAML.h:27
llvm::XCOFFYAML::FunctionAuxEnt::FunctionAuxEnt
FunctionAuxEnt()
Definition: XCOFFYAML.h:139
llvm::XCOFFYAML::FileAuxEnt
Definition: XCOFFYAML.h:103
llvm::XCOFFYAML::Symbol::SymbolName
StringRef SymbolName
Definition: XCOFFYAML.h:191
llvm::XCOFFYAML::Section::Flags
uint32_t Flags
Definition: XCOFFYAML.h:81
llvm::XCOFFYAML::AuxiliaryHeader::SecNumOfEntryPoint
std::optional< uint16_t > SecNumOfEntryPoint
Definition: XCOFFYAML.h:39
llvm::XCOFFYAML::AuxiliaryHeader::StackPageSize
std::optional< llvm::yaml::Hex8 > StackPageSize
Definition: XCOFFYAML.h:52
llvm::XCOFFYAML::SectAuxEntForStat::SectionLength
std::optional< uint32_t > SectionLength
Definition: XCOFFYAML.h:180
llvm::XCOFFYAML::Relocation::VirtualAddress
llvm::yaml::Hex64 VirtualAddress
Definition: XCOFFYAML.h:66
llvm::XCOFF::StorageMappingClass
StorageMappingClass
Storage Mapping Class definitions.
Definition: XCOFF.h:102
llvm::XCOFFYAML::Symbol::NumberOfAuxEntries
std::optional< uint8_t > NumberOfAuxEntries
Definition: XCOFFYAML.h:197
llvm::XCOFFYAML::CsectAuxEnt::CsectAuxEnt
CsectAuxEnt()
Definition: XCOFFYAML.h:127
llvm::OutputFileType::Object
@ Object
llvm::XCOFFYAML::FileHeader::NumberOfSymTableEntries
int32_t NumberOfSymTableEntries
Definition: XCOFFYAML.h:28
llvm::XCOFFYAML::Symbol::Type
llvm::yaml::Hex16 Type
Definition: XCOFFYAML.h:195
llvm::XCOFFYAML::FunctionAuxEnt::SymIdxOfNextBeyond
std::optional< int32_t > SymIdxOfNextBeyond
Definition: XCOFFYAML.h:137
llvm::XCOFFYAML::FileAuxEnt::FileStringType
std::optional< XCOFF::CFileStringType > FileStringType
Definition: XCOFFYAML.h:105
llvm::XCOFF::StorageClass
StorageClass
Definition: XCOFF.h:169
llvm::XCOFFYAML::AuxiliaryHeader::TextSize
std::optional< llvm::yaml::Hex64 > TextSize
Definition: XCOFFYAML.h:54
llvm::XCOFFYAML::CsectAuxEnt::StorageMappingClass
std::optional< XCOFF::StorageMappingClass > StorageMappingClass
Definition: XCOFFYAML.h:125
llvm::XCOFFYAML::AuxSymbolEnt
Definition: XCOFFYAML.h:96
llvm::XCOFFYAML::AuxiliaryHeader::FlagAndTDataAlignment
std::optional< llvm::yaml::Hex8 > FlagAndTDataAlignment
Definition: XCOFFYAML.h:53
llvm::XCOFFYAML::AuxiliaryHeader::ModuleType
std::optional< llvm::yaml::Hex16 > ModuleType
Definition: XCOFFYAML.h:47
llvm::XCOFFYAML::FunctionAuxEnt::OffsetToExceptionTbl
std::optional< uint32_t > OffsetToExceptionTbl
Definition: XCOFFYAML.h:134
llvm::XCOFFYAML::FileHeader::NumberOfSections
uint16_t NumberOfSections
Definition: XCOFFYAML.h:25
llvm::XCOFFYAML::Section::NumberOfRelocations
llvm::yaml::Hex16 NumberOfRelocations
Definition: XCOFFYAML.h:79
llvm::XCOFFYAML::AuxiliaryHeader::CpuType
std::optional< llvm::yaml::Hex8 > CpuType
Definition: XCOFFYAML.h:49
llvm::XCOFFYAML::Symbol::AuxEntries
std::vector< std::unique_ptr< AuxSymbolEnt > > AuxEntries
Definition: XCOFFYAML.h:198
llvm::XCOFFYAML::ExcpetionAuxEnt::OffsetToExceptionTbl
std::optional< uint64_t > OffsetToExceptionTbl
Definition: XCOFFYAML.h:146
llvm::XCOFFYAML::SectAuxEntForDWARF::SectAuxEntForDWARF
SectAuxEntForDWARF()
Definition: XCOFFYAML.h:173
llvm::XCOFFYAML::StringTable::ContentSize
std::optional< uint32_t > ContentSize
Definition: XCOFFYAML.h:202
llvm::XCOFFYAML::AuxiliaryHeader::InitDataSize
std::optional< llvm::yaml::Hex64 > InitDataSize
Definition: XCOFFYAML.h:55
llvm::XCOFFYAML::Object::Symbols
std::vector< Symbol > Symbols
Definition: XCOFFYAML.h:213
llvm::XCOFFYAML::SectAuxEntForDWARF::NumberOfRelocEnt
std::optional< uint32_t > NumberOfRelocEnt
Definition: XCOFFYAML.h:171
llvm::XCOFFYAML::CsectAuxEnt::TypeChkSectNum
std::optional< uint16_t > TypeChkSectNum
Definition: XCOFFYAML.h:123
llvm::XCOFFYAML::Object
Definition: XCOFFYAML.h:209
llvm::XCOFFYAML::Symbol::Value
llvm::yaml::Hex64 Value
Definition: XCOFFYAML.h:192
llvm::XCOFFYAML::Relocation::Type
llvm::yaml::Hex8 Type
Definition: XCOFFYAML.h:69
llvm::XCOFFYAML::ExcpetionAuxEnt::classof
static bool classof(const AuxSymbolEnt *S)
Definition: XCOFFYAML.h:151
llvm::XCOFFYAML::BlockAuxEnt
Definition: XCOFFYAML.h:156
llvm::XCOFFYAML::AuxiliaryHeader::SecNumOfText
std::optional< uint16_t > SecNumOfText
Definition: XCOFFYAML.h:40
llvm::XCOFFYAML::Section
Definition: XCOFFYAML.h:72
llvm::XCOFFYAML::AuxiliaryHeader::SecNumOfBSS
std::optional< uint16_t > SecNumOfBSS
Definition: XCOFFYAML.h:44
llvm::XCOFFYAML::FunctionAuxEnt
Definition: XCOFFYAML.h:133
llvm::XCOFFYAML::Relocation::Info
llvm::yaml::Hex8 Info
Definition: XCOFFYAML.h:68
llvm::XCOFFYAML::Object::Object
Object()
Definition: XCOFFYAML.cpp:20
llvm::XCOFFYAML::SectAuxEntForDWARF::LengthOfSectionPortion
std::optional< uint32_t > LengthOfSectionPortion
Definition: XCOFFYAML.h:170
llvm::StringRef
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:50
llvm::yaml::BinaryRef
Specialized YAMLIO scalar type for representing a binary blob.
Definition: YAML.h:63
llvm::XCOFFYAML::SectAuxEntForStat::SectAuxEntForStat
SectAuxEntForStat()
Definition: XCOFFYAML.h:184
uint32_t
llvm::XCOFF::SectionTypeFlags
SectionTypeFlags
Definition: XCOFF.h:133
llvm::XCOFFYAML::SectAuxEntForStat::NumberOfRelocEnt
std::optional< uint16_t > NumberOfRelocEnt
Definition: XCOFFYAML.h:181
S
add sub stmia L5 ldr r0 bl L_printf $stub Instead of a and a wouldn t it be better to do three moves *Return an aggregate type is even return S
Definition: README.txt:210
llvm::XCOFFYAML::AUX_SECT
@ AUX_SECT
Definition: XCOFFYAML.h:92
llvm::XCOFFYAML::CsectAuxEnt::classof
static bool classof(const AuxSymbolEnt *S)
Definition: XCOFFYAML.h:128
llvm::XCOFFYAML::Object::Header
FileHeader Header
Definition: XCOFFYAML.h:210
llvm::XCOFFYAML::AUX_FCN
@ AUX_FCN
Definition: XCOFFYAML.h:88
llvm::XCOFFYAML::AuxiliaryHeader::MaxAlignOfText
std::optional< llvm::yaml::Hex16 > MaxAlignOfText
Definition: XCOFFYAML.h:45
llvm::XCOFFYAML::AUX_EXCEPT
@ AUX_EXCEPT
Definition: XCOFFYAML.h:87
std
Definition: BitVector.h:851
llvm::XCOFFYAML::Section::Size
llvm::yaml::Hex64 Size
Definition: XCOFFYAML.h:75
H
#define H(x, y, z)
Definition: MD5.cpp:57
uint16_t
llvm::XCOFFYAML::Section::FileOffsetToLineNumbers
llvm::yaml::Hex64 FileOffsetToLineNumbers
Definition: XCOFFYAML.h:78
llvm::XCOFFYAML::CsectAuxEnt::SymbolAlignmentAndType
std::optional< uint8_t > SymbolAlignmentAndType
Definition: XCOFFYAML.h:124
llvm::XCOFFYAML::AuxiliaryHeader::MaxDataSize
std::optional< llvm::yaml::Hex64 > MaxDataSize
Definition: XCOFFYAML.h:59
llvm::XCOFFYAML::AuxiliaryHeader::DataStartAddr
std::optional< llvm::yaml::Hex64 > DataStartAddr
Definition: XCOFFYAML.h:37
llvm::XCOFFYAML::Symbol::SectionIndex
std::optional< uint16_t > SectionIndex
Definition: XCOFFYAML.h:194
llvm::XCOFFYAML::SectAuxEntForDWARF
Definition: XCOFFYAML.h:169
llvm::ARMBuildAttrs::Symbol
@ Symbol
Definition: ARMBuildAttributes.h:83
llvm::XCOFFYAML::Section::NumberOfLineNumbers
llvm::yaml::Hex16 NumberOfLineNumbers
Definition: XCOFFYAML.h:80
llvm::XCOFFYAML::FileHeader::AuxHeaderSize
uint16_t AuxHeaderSize
Definition: XCOFFYAML.h:29
llvm::XCOFFYAML::FunctionAuxEnt::SizeOfFunction
std::optional< uint32_t > SizeOfFunction
Definition: XCOFFYAML.h:136
llvm::XCOFFYAML::FileAuxEnt::FileNameOrString
std::optional< StringRef > FileNameOrString
Definition: XCOFFYAML.h:104
llvm::XCOFFYAML::Section::Address
llvm::yaml::Hex64 Address
Definition: XCOFFYAML.h:74
llvm::XCOFFYAML::Section::SectionData
yaml::BinaryRef SectionData
Definition: XCOFFYAML.h:82
llvm::XCOFFYAML::Relocation::SymbolIndex
llvm::yaml::Hex64 SymbolIndex
Definition: XCOFFYAML.h:67
llvm::XCOFFYAML::Section::Relocations
std::vector< Relocation > Relocations
Definition: XCOFFYAML.h:83
llvm::XCOFFYAML::AUX_CSECT
@ AUX_CSECT
Definition: XCOFFYAML.h:91
llvm::XCOFFYAML::Object::AuxHeader
std::optional< AuxiliaryHeader > AuxHeader
Definition: XCOFFYAML.h:211
llvm::XCOFF::CFileStringType
CFileStringType
Definition: XCOFF.h:322
llvm::XCOFFYAML::AuxiliaryHeader::SecNumOfData
std::optional< uint16_t > SecNumOfData
Definition: XCOFFYAML.h:41
llvm::XCOFFYAML::AuxiliaryHeader::TextPageSize
std::optional< llvm::yaml::Hex8 > TextPageSize
Definition: XCOFFYAML.h:50
llvm::XCOFFYAML::Symbol::StorageClass
XCOFF::StorageClass StorageClass
Definition: XCOFFYAML.h:196
llvm::XCOFFYAML::CsectAuxEnt::StabInfoIndex
std::optional< uint32_t > StabInfoIndex
Definition: XCOFFYAML.h:116
llvm::XCOFFYAML::SectAuxEntForStat
Definition: XCOFFYAML.h:179
llvm::XCOFFYAML::ExcpetionAuxEnt::ExcpetionAuxEnt
ExcpetionAuxEnt()
Definition: XCOFFYAML.h:150
llvm::Value
LLVM Value Representation.
Definition: Value.h:74
llvm::XCOFFYAML::Symbol
Definition: XCOFFYAML.h:190
llvm::XCOFFYAML::Section::SectionName
StringRef SectionName
Definition: XCOFFYAML.h:73
llvm::XCOFFYAML::AUX_SYM
@ AUX_SYM
Definition: XCOFFYAML.h:89
llvm::XCOFFYAML::CsectAuxEnt::SectionOrLength
std::optional< uint32_t > SectionOrLength
Definition: XCOFFYAML.h:115
llvm::XCOFFYAML::FileAuxEnt::FileAuxEnt
FileAuxEnt()
Definition: XCOFFYAML.h:107
llvm::XCOFFYAML::AuxiliaryHeader::MaxStackSize
std::optional< llvm::yaml::Hex64 > MaxStackSize
Definition: XCOFFYAML.h:58