Go to the documentation of this file.
30 #define ECase(X) IO.bitSetCase(Value, #X, XCOFF::X)
49 #define ECase(X) IO.enumCase(Value, #X, XCOFF::X)
105 #define ECase(X) IO.enumCase(Value, #X, XCOFF::X)
132 #define ECase(X) IO.enumCase(Type, #X, XCOFFYAML::X)
145 #define ECase(X) IO.enumCase(Type, #X, XCOFF::X)
164 IO.mapOptional(
"MagicNumber", FileHdr.
Magic);
166 IO.mapOptional(
"CreationTime", FileHdr.
TimeStamp);
169 IO.mapOptional(
"AuxiliaryHeaderSize", FileHdr.
AuxHeaderSize);
170 IO.mapOptional(
"Flags", FileHdr.
Flags);
175 IO.mapOptional(
"Magic", AuxHdr.
Magic);
176 IO.mapOptional(
"Version", AuxHdr.
Version);
180 IO.mapOptional(
"TextSectionSize", AuxHdr.
TextSize);
182 IO.mapOptional(
"BssSectionSize", AuxHdr.
BssDataSize);
191 IO.mapOptional(
"ModuleType", AuxHdr.
CpuFlag);
201 IO.mapOptional(
"Flag", AuxHdr.
Flag);
206 IO.mapOptional(
"Address", R.VirtualAddress);
207 IO.mapOptional(
"Symbol", R.SymbolIndex);
208 IO.mapOptional(
"Info", R.Info);
209 IO.mapOptional(
"Type", R.Type);
214 MappingNormalization<NSectionFlags, uint32_t>
NC(IO, Sec.
Flags);
216 IO.mapOptional(
"Address", Sec.
Address);
217 IO.mapOptional(
"Size", Sec.
Size);
223 IO.mapOptional(
"Flags",
NC->Flags);
250 IO.mapOptional(
"LineNum", AuxSym.
LineNum);
252 IO.mapOptional(
"LineNumHi", AuxSym.
LineNumHi);
253 IO.mapOptional(
"LineNumLo", AuxSym.
LineNumLo);
284 IO &IO, std::unique_ptr<XCOFFYAML::AuxSymbolEnt> &AuxSym) {
285 assert(!IO.outputting() &&
"We don't dump aux symbols currently.");
290 IO.mapRequired(
"Type",
AuxType);
294 IO.setError(
"an auxiliary symbol of type AUX_EXCEPT cannot be defined in "
297 auxSymMapping(IO, *cast<XCOFFYAML::ExcpetionAuxEnt>(AuxSym.get()));
301 auxSymMapping(IO, *cast<XCOFFYAML::FunctionAuxEnt>(AuxSym.get()), Is64);
305 auxSymMapping(IO, *cast<XCOFFYAML::BlockAuxEnt>(AuxSym.get()), Is64);
309 auxSymMapping(IO, *cast<XCOFFYAML::FileAuxEnt>(AuxSym.get()));
313 auxSymMapping(IO, *cast<XCOFFYAML::CsectAuxEnt>(AuxSym.get()), Is64);
317 auxSymMapping(IO, *cast<XCOFFYAML::SectAuxEntForDWARF>(AuxSym.get()));
322 "an auxiliary symbol of type AUX_STAT cannot be defined in XCOFF64");
324 auxSymMapping(IO, *cast<XCOFFYAML::SectAuxEntForStat>(AuxSym.get()));
330 IO.mapOptional(
"Name",
S.SymbolName);
331 IO.mapOptional(
"Value",
S.Value);
332 IO.mapOptional(
"Section",
S.SectionName);
333 IO.mapOptional(
"SectionIndex",
S.SectionIndex);
334 IO.mapOptional(
"Type",
S.Type);
335 IO.mapOptional(
"StorageClass",
S.StorageClass);
336 IO.mapOptional(
"NumberOfAuxEntries",
S.NumberOfAuxEntries);
337 if (!IO.outputting())
338 IO.mapOptional(
"AuxEntries",
S.AuxEntries);
342 IO.mapOptional(
"ContentSize", Str.ContentSize);
343 IO.mapOptional(
"Length", Str.Length);
344 IO.mapOptional(
"Strings", Str.Strings);
345 IO.mapOptional(
"RawContent", Str.RawContent);
350 IO.mapTag(
"!XCOFF",
true);
351 IO.mapRequired(
"FileHeader", Obj.
Header);
352 IO.mapOptional(
"AuxiliaryHeader", Obj.
AuxHeader);
353 IO.mapOptional(
"Sections", Obj.
Sections);
354 IO.mapOptional(
"Symbols", Obj.
Symbols);
355 IO.mapOptional(
"StringTable", Obj.
StrTbl);
356 IO.setContext(
nullptr);
std::optional< uint32_t > ParameterHashIndex
std::optional< uint16_t > StabSectNum
std::optional< uint16_t > LineNumHi
This is an optimization pass for GlobalISel generic memory operations.
llvm::yaml::Hex64 FileOffsetToRelocations
std::optional< uint64_t > PtrToLineNum
@ XMC_GL
Global Linkage (Interfile Interface Code)
@ XMC_TD
Scalar data item in the TOC.
@ XMC_TE
Symbol mapped at the end of TOC.
static void enumeration(IO &IO, XCOFF::StorageClass &Value)
static void enumeration(IO &IO, XCOFF::StorageMappingClass &Value)
std::vector< Section > Sections
std::optional< uint32_t > LineNum
@ XMC_UA
Unclassified - Treated as Read Write.
The instances of the Type class are immutable: once they are created, they are never changed.
llvm::yaml::Hex64 FileOffsetToData
static void bitset(IO &IO, XCOFF::SectionTypeFlags &Value)
@ XMC_TC
General TOC item.
XCOFF::SectionTypeFlags Flags
@ XMC_DB
Debug Dictionary Table.
uint32_t denormalize(IO &)
std::optional< uint16_t > LineNumLo
std::optional< uint32_t > SizeOfFunction
std::optional< uint32_t > SectionOrLengthHi
@ XMC_RO
Read Only Constant.
(vector float) vec_cmpeq(*A, *B) C
std::optional< int32_t > SymIdxOfNextBeyond
@ AUX_SECT
Identifies a SECT auxiliary entry.
@ AUX_EXCEPT
Identifies an exception auxiliary entry.
std::optional< uint16_t > NumberOfLineNum
std::optional< uint32_t > SectionOrLengthLo
static void enumeration(IO &IO, XCOFF::CFileStringType &Type)
@ XMC_SV3264
Supervisor Call for both 32- and 64-bit processes.
@ AUX_FILE
Identifies a file auxiliary entry.
@ XFT_CT
Specifies the compiler time stamp.
std::optional< uint32_t > SectionLength
StorageMappingClass
Storage Mapping Class definitions.
std::optional< int32_t > SymIdxOfNextBeyond
std::optional< XCOFF::CFileStringType > FileStringType
@ XMC_TB
Traceback Table csect.
@ XMC_SV64
Supervisor Call for 64-bit process.
@ XFT_FN
Specifies the source-file name.
@ XFT_CV
Specifies the compiler version number.
std::optional< XCOFF::StorageMappingClass > StorageMappingClass
@ XMC_TI
Traceback Index csect.
@ XMC_TL
Initialized thread-local variable.
std::optional< uint32_t > OffsetToExceptionTbl
llvm::yaml::Hex16 NumberOfRelocations
std::optional< uint64_t > OffsetToExceptionTbl
std::vector< Symbol > Symbols
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
std::optional< uint32_t > NumberOfRelocEnt
std::optional< uint16_t > TypeChkSectNum
COFFYAML::AuxSymbolType AuxType
static void auxSymMapping(IO &IO, XCOFFYAML::CsectAuxEnt &AuxSym, bool Is64)
std::optional< uint32_t > LengthOfSectionPortion
@ XMC_UC
Un-named Fortran Common.
@ AUX_SYM
Identifies a symbol auxiliary entry.
NSectionFlags(IO &, uint32_t C)
std::optional< uint16_t > NumberOfRelocEnt
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
llvm::yaml::Hex64 FileOffsetToLineNumbers
std::optional< uint8_t > SymbolAlignmentAndType
@ AUX_CSECT
Identifies a csect auxiliary entry.
@ XMC_TC0
TOC Anchor for TOC Addressability.
@ XMC_XO
Extended Operation (Pseudo Machine Instruction)
@ XMC_DS
Descriptor csect.
@ AUX_FCN
Identifies a function auxiliary entry.
llvm::yaml::Hex16 NumberOfLineNumbers
std::optional< uint32_t > SizeOfFunction
std::optional< StringRef > FileNameOrString
llvm::yaml::Hex64 Address
yaml::BinaryRef SectionData
std::vector< Relocation > Relocations
std::optional< AuxiliaryHeader > AuxHeader
static void enumeration(IO &IO, XCOFFYAML::AuxSymbolType &Type)
@ XMC_UL
Uninitialized thread-local variable.
std::optional< uint32_t > StabInfoIndex
@ XMC_SV
Supervisor Call (32-bit process only)
LLVM Value Representation.
@ XFT_CD
Specifies compiler-defined information.
@ XMC_BS
BSS class (uninitialized static internal)
std::optional< uint32_t > SectionOrLength