summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-readobj/COFFDumper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/tools/llvm-readobj/COFFDumper.cpp')
-rw-r--r--llvm/tools/llvm-readobj/COFFDumper.cpp125
1 files changed, 63 insertions, 62 deletions
diff --git a/llvm/tools/llvm-readobj/COFFDumper.cpp b/llvm/tools/llvm-readobj/COFFDumper.cpp
index af3a79d3d1e..0add018f80d 100644
--- a/llvm/tools/llvm-readobj/COFFDumper.cpp
+++ b/llvm/tools/llvm-readobj/COFFDumper.cpp
@@ -425,19 +425,19 @@ WeakExternalCharacteristics[] = {
{ "Alias" , COFF::IMAGE_WEAK_EXTERN_SEARCH_ALIAS }
};
-static const EnumEntry<CompileSym3::Flags> CompileSym3Flags[] = {
- LLVM_READOBJ_ENUM_ENT(CompileSym3, EC),
- LLVM_READOBJ_ENUM_ENT(CompileSym3, NoDbgInfo),
- LLVM_READOBJ_ENUM_ENT(CompileSym3, LTCG),
- LLVM_READOBJ_ENUM_ENT(CompileSym3, NoDataAlign),
- LLVM_READOBJ_ENUM_ENT(CompileSym3, ManagedPresent),
- LLVM_READOBJ_ENUM_ENT(CompileSym3, SecurityChecks),
- LLVM_READOBJ_ENUM_ENT(CompileSym3, HotPatch),
- LLVM_READOBJ_ENUM_ENT(CompileSym3, CVTCIL),
- LLVM_READOBJ_ENUM_ENT(CompileSym3, MSILModule),
- LLVM_READOBJ_ENUM_ENT(CompileSym3, Sdl),
- LLVM_READOBJ_ENUM_ENT(CompileSym3, PGO),
- LLVM_READOBJ_ENUM_ENT(CompileSym3, Exp),
+static const EnumEntry<uint32_t> CompileSym3FlagNames[] = {
+ LLVM_READOBJ_ENUM_CLASS_ENT(CompileSym3Flags, EC),
+ LLVM_READOBJ_ENUM_CLASS_ENT(CompileSym3Flags, NoDbgInfo),
+ LLVM_READOBJ_ENUM_CLASS_ENT(CompileSym3Flags, LTCG),
+ LLVM_READOBJ_ENUM_CLASS_ENT(CompileSym3Flags, NoDataAlign),
+ LLVM_READOBJ_ENUM_CLASS_ENT(CompileSym3Flags, ManagedPresent),
+ LLVM_READOBJ_ENUM_CLASS_ENT(CompileSym3Flags, SecurityChecks),
+ LLVM_READOBJ_ENUM_CLASS_ENT(CompileSym3Flags, HotPatch),
+ LLVM_READOBJ_ENUM_CLASS_ENT(CompileSym3Flags, CVTCIL),
+ LLVM_READOBJ_ENUM_CLASS_ENT(CompileSym3Flags, MSILModule),
+ LLVM_READOBJ_ENUM_CLASS_ENT(CompileSym3Flags, Sdl),
+ LLVM_READOBJ_ENUM_CLASS_ENT(CompileSym3Flags, PGO),
+ LLVM_READOBJ_ENUM_CLASS_ENT(CompileSym3Flags, Exp),
};
static const EnumEntry<codeview::SourceLanguage> SourceLanguages[] = {
@@ -538,15 +538,15 @@ static const EnumEntry<unsigned> CPUTypeNames[] = {
LLVM_READOBJ_ENUM_CLASS_ENT(CPUType, D3D11_Shader),
};
-static const EnumEntry<uint8_t> ProcSymFlags[] = {
- LLVM_READOBJ_ENUM_ENT(ProcFlags, HasFP),
- LLVM_READOBJ_ENUM_ENT(ProcFlags, HasIRET),
- LLVM_READOBJ_ENUM_ENT(ProcFlags, HasFRET),
- LLVM_READOBJ_ENUM_ENT(ProcFlags, IsNoReturn),
- LLVM_READOBJ_ENUM_ENT(ProcFlags, IsUnreachable),
- LLVM_READOBJ_ENUM_ENT(ProcFlags, HasCustomCallingConv),
- LLVM_READOBJ_ENUM_ENT(ProcFlags, IsNoInline),
- LLVM_READOBJ_ENUM_ENT(ProcFlags, HasOptimizedDebugInfo),
+static const EnumEntry<uint8_t> ProcSymFlagNames[] = {
+ LLVM_READOBJ_ENUM_CLASS_ENT(ProcSymFlags, HasFP),
+ LLVM_READOBJ_ENUM_CLASS_ENT(ProcSymFlags, HasIRET),
+ LLVM_READOBJ_ENUM_CLASS_ENT(ProcSymFlags, HasFRET),
+ LLVM_READOBJ_ENUM_CLASS_ENT(ProcSymFlags, IsNoReturn),
+ LLVM_READOBJ_ENUM_CLASS_ENT(ProcSymFlags, IsUnreachable),
+ LLVM_READOBJ_ENUM_CLASS_ENT(ProcSymFlags, HasCustomCallingConv),
+ LLVM_READOBJ_ENUM_CLASS_ENT(ProcSymFlags, IsNoInline),
+ LLVM_READOBJ_ENUM_CLASS_ENT(ProcSymFlags, HasOptimizedDebugInfo),
};
static const EnumEntry<uint32_t> FrameProcSymFlags[] = {
@@ -582,24 +582,24 @@ static const EnumEntry<uint32_t> FrameDataFlags[] = {
};
static const EnumEntry<uint16_t> LocalFlags[] = {
- LLVM_READOBJ_ENUM_ENT(LocalSym, IsParameter),
- LLVM_READOBJ_ENUM_ENT(LocalSym, IsAddressTaken),
- LLVM_READOBJ_ENUM_ENT(LocalSym, IsCompilerGenerated),
- LLVM_READOBJ_ENUM_ENT(LocalSym, IsAggregate),
- LLVM_READOBJ_ENUM_ENT(LocalSym, IsAggregated),
- LLVM_READOBJ_ENUM_ENT(LocalSym, IsAliased),
- LLVM_READOBJ_ENUM_ENT(LocalSym, IsAlias),
- LLVM_READOBJ_ENUM_ENT(LocalSym, IsReturnValue),
- LLVM_READOBJ_ENUM_ENT(LocalSym, IsOptimizedOut),
- LLVM_READOBJ_ENUM_ENT(LocalSym, IsEnregisteredGlobal),
- LLVM_READOBJ_ENUM_ENT(LocalSym, IsEnregisteredStatic),
+ LLVM_READOBJ_ENUM_CLASS_ENT(LocalSymFlags, IsParameter),
+ LLVM_READOBJ_ENUM_CLASS_ENT(LocalSymFlags, IsAddressTaken),
+ LLVM_READOBJ_ENUM_CLASS_ENT(LocalSymFlags, IsCompilerGenerated),
+ LLVM_READOBJ_ENUM_CLASS_ENT(LocalSymFlags, IsAggregate),
+ LLVM_READOBJ_ENUM_CLASS_ENT(LocalSymFlags, IsAggregated),
+ LLVM_READOBJ_ENUM_CLASS_ENT(LocalSymFlags, IsAliased),
+ LLVM_READOBJ_ENUM_CLASS_ENT(LocalSymFlags, IsAlias),
+ LLVM_READOBJ_ENUM_CLASS_ENT(LocalSymFlags, IsReturnValue),
+ LLVM_READOBJ_ENUM_CLASS_ENT(LocalSymFlags, IsOptimizedOut),
+ LLVM_READOBJ_ENUM_CLASS_ENT(LocalSymFlags, IsEnregisteredGlobal),
+ LLVM_READOBJ_ENUM_CLASS_ENT(LocalSymFlags, IsEnregisteredStatic),
};
-static const EnumEntry<uint16_t> FrameCookieKinds[] = {
- LLVM_READOBJ_ENUM_ENT(FrameCookieSym, Copy),
- LLVM_READOBJ_ENUM_ENT(FrameCookieSym, XorStackPointer),
- LLVM_READOBJ_ENUM_ENT(FrameCookieSym, XorFramePointer),
- LLVM_READOBJ_ENUM_ENT(FrameCookieSym, XorR13),
+static const EnumEntry<uint32_t> FrameCookieKinds[] = {
+ LLVM_READOBJ_ENUM_CLASS_ENT(FrameCookieKind, Copy),
+ LLVM_READOBJ_ENUM_CLASS_ENT(FrameCookieKind, XorStackPointer),
+ LLVM_READOBJ_ENUM_CLASS_ENT(FrameCookieKind, XorFramePointer),
+ LLVM_READOBJ_ENUM_CLASS_ENT(FrameCookieKind, XorR13),
};
static const EnumEntry<uint8_t> FileChecksumKindNames[] = {
@@ -994,7 +994,7 @@ void COFFDumper::printCodeViewSymbolSection(StringRef SectionName,
void COFFDumper::printCodeViewSymbolsSubsection(StringRef Subsection,
const SectionRef &Section,
StringRef SectionContents) {
- if (Subsection.size() < sizeof(SymRecord))
+ if (Subsection.size() < sizeof(RecordPrefix))
return error(object_error::parse_failed);
const coff_section *Sec = Obj->getCOFFSection(Section);
@@ -1004,15 +1004,15 @@ void COFFDumper::printCodeViewSymbolsSubsection(StringRef Subsection,
bool InFunctionScope = false;
while (!Data.empty()) {
- const SymRecord *Rec;
+ const RecordPrefix *Rec;
error(consumeObject(Data, Rec));
- StringRef SymData = Data.substr(0, Rec->RecordLength - 2);
+ StringRef SymData = Data.substr(0, Rec->RecordLen - 2);
StringRef OrigSymData = SymData;
- Data = Data.drop_front(Rec->RecordLength - 2);
+ Data = Data.drop_front(Rec->RecordLen - 2);
- SymbolRecordKind Kind = Rec->getKind();
+ SymbolKind Kind = static_cast<SymbolKind>(uint16_t(Rec->RecordKind));
switch (Kind) {
case S_LPROC32:
case S_GPROC32:
@@ -1039,7 +1039,7 @@ void COFFDumper::printCodeViewSymbolsSubsection(StringRef Subsection,
printRelocatedField("CodeOffset", Sec, SectionContents, &Proc->CodeOffset,
&LinkageName);
W.printHex("Segment", Proc->Segment);
- W.printFlags("Flags", Proc->Flags, makeArrayRef(ProcSymFlags));
+ W.printFlags("Flags", Proc->Flags, makeArrayRef(ProcSymFlagNames));
W.printString("DisplayName", DisplayName);
W.printString("LinkageName", LinkageName);
break;
@@ -1086,7 +1086,7 @@ void COFFDumper::printCodeViewSymbolsSubsection(StringRef Subsection,
&Label->CodeOffset, &LinkageName);
W.printHex("Segment", Label->Segment);
W.printHex("Flags", Label->Flags);
- W.printFlags("Flags", Label->Flags, makeArrayRef(ProcSymFlags));
+ W.printFlags("Flags", Label->Flags, makeArrayRef(ProcSymFlagNames));
W.printString("DisplayName", DisplayName);
W.printString("LinkageName", LinkageName);
break;
@@ -1145,44 +1145,45 @@ void COFFDumper::printCodeViewSymbolsSubsection(StringRef Subsection,
ListScope BinaryAnnotations(W, "BinaryAnnotations");
while (!SymData.empty()) {
- uint32_t OpCode = GetCompressedAnnotation();
+ auto OpCode =
+ static_cast<BinaryAnnotationsOpCode>(GetCompressedAnnotation());
switch (OpCode) {
default:
- case Invalid:
+ case BinaryAnnotationsOpCode::Invalid:
return error(object_error::parse_failed);
- case CodeOffset:
+ case BinaryAnnotationsOpCode::CodeOffset:
W.printHex("CodeOffset", GetCompressedAnnotation());
break;
- case ChangeCodeOffsetBase:
+ case BinaryAnnotationsOpCode::ChangeCodeOffsetBase:
W.printNumber("ChangeCodeOffsetBase", GetCompressedAnnotation());
break;
- case ChangeCodeOffset:
+ case BinaryAnnotationsOpCode::ChangeCodeOffset:
W.printHex("ChangeCodeOffset", GetCompressedAnnotation());
break;
- case ChangeCodeLength:
+ case BinaryAnnotationsOpCode::ChangeCodeLength:
W.printHex("ChangeCodeLength", GetCompressedAnnotation());
break;
- case ChangeFile:
+ case BinaryAnnotationsOpCode::ChangeFile:
printFileNameForOffset("ChangeFile", GetCompressedAnnotation());
break;
- case ChangeLineOffset:
+ case BinaryAnnotationsOpCode::ChangeLineOffset:
W.printNumber("ChangeLineOffset",
DecodeSignedOperand(GetCompressedAnnotation()));
break;
- case ChangeLineEndDelta:
+ case BinaryAnnotationsOpCode::ChangeLineEndDelta:
W.printNumber("ChangeLineEndDelta", GetCompressedAnnotation());
break;
- case ChangeRangeKind:
+ case BinaryAnnotationsOpCode::ChangeRangeKind:
W.printNumber("ChangeRangeKind", GetCompressedAnnotation());
break;
- case ChangeColumnStart:
+ case BinaryAnnotationsOpCode::ChangeColumnStart:
W.printNumber("ChangeColumnStart", GetCompressedAnnotation());
break;
- case ChangeColumnEndDelta:
+ case BinaryAnnotationsOpCode::ChangeColumnEndDelta:
W.printNumber("ChangeColumnEndDelta",
DecodeSignedOperand(GetCompressedAnnotation()));
break;
- case ChangeCodeOffsetAndLineOffset: {
+ case BinaryAnnotationsOpCode::ChangeCodeOffsetAndLineOffset: {
uint32_t Annotation = GetCompressedAnnotation();
int32_t LineOffset = DecodeSignedOperand(Annotation >> 4);
uint32_t CodeOffset = Annotation & 0xf;
@@ -1191,7 +1192,7 @@ void COFFDumper::printCodeViewSymbolsSubsection(StringRef Subsection,
<< "}\n";
break;
}
- case ChangeCodeLengthAndCodeOffset: {
+ case BinaryAnnotationsOpCode::ChangeCodeLengthAndCodeOffset: {
uint32_t Length = GetCompressedAnnotation();
uint32_t CodeOffset = GetCompressedAnnotation();
W.startLine() << "ChangeCodeLengthAndCodeOffset: {CodeOffset: "
@@ -1199,7 +1200,7 @@ void COFFDumper::printCodeViewSymbolsSubsection(StringRef Subsection,
<< "}\n";
break;
}
- case ChangeColumnEnd:
+ case BinaryAnnotationsOpCode::ChangeColumnEnd:
W.printNumber("ChangeColumnEnd", GetCompressedAnnotation());
break;
}
@@ -1416,7 +1417,7 @@ void COFFDumper::printCodeViewSymbolsSubsection(StringRef Subsection,
W.printEnum("Language", CompFlags->getLanguage(),
makeArrayRef(SourceLanguages));
W.printFlags("Flags", CompFlags->flags & ~0xff,
- makeArrayRef(CompileSym3Flags));
+ makeArrayRef(CompileSym3FlagNames));
W.printEnum("Machine", unsigned(CompFlags->Machine),
makeArrayRef(CPUTypeNames));
std::string FrontendVersion;
@@ -1516,7 +1517,7 @@ void COFFDumper::printCodeViewSymbolsSubsection(StringRef Subsection,
default: {
DictScope S(W, "UnknownSym");
W.printHex("Kind", unsigned(Kind));
- W.printHex("Size", Rec->RecordLength);
+ W.printHex("Size", Rec->RecordLen);
break;
}
}
OpenPOWER on IntegriCloud