diff options
Diffstat (limited to 'lib/DebugInfo/CodeView/SymbolDumper.cpp')
| -rw-r--r-- | lib/DebugInfo/CodeView/SymbolDumper.cpp | 91 | 
1 files changed, 19 insertions, 72 deletions
| diff --git a/lib/DebugInfo/CodeView/SymbolDumper.cpp b/lib/DebugInfo/CodeView/SymbolDumper.cpp index b9fa9b6a6ad7e..c2c02f8de03fb 100644 --- a/lib/DebugInfo/CodeView/SymbolDumper.cpp +++ b/lib/DebugInfo/CodeView/SymbolDumper.cpp @@ -62,6 +62,18 @@ private:  };  } +static StringRef getSymbolKindName(SymbolKind Kind) { +  switch (Kind) { +#define SYMBOL_RECORD(EnumName, EnumVal, Name)                                 \ +  case EnumName:                                                               \ +    return #Name; +#include "llvm/DebugInfo/CodeView/CodeViewSymbols.def" +  default: +    break; +  } +  return "UnknownSym"; +} +  void CVSymbolDumperImpl::printLocalVariableAddrRange(      const LocalVariableAddrRange &Range, uint32_t RelocationOffset) {    DictScope S(W, "LocalVariableAddrRange"); @@ -86,18 +98,23 @@ void CVSymbolDumperImpl::printTypeIndex(StringRef FieldName, TypeIndex TI) {  }  Error CVSymbolDumperImpl::visitSymbolBegin(CVSymbol &CVR) { +  W.startLine() << getSymbolKindName(CVR.Type); +  W.getOStream() << " {\n"; +  W.indent(); +  W.printEnum("Kind", unsigned(CVR.Type), getSymbolTypeNames());    return Error::success();  }  Error CVSymbolDumperImpl::visitSymbolEnd(CVSymbol &CVR) {    if (PrintRecordBytes && ObjDelegate)      ObjDelegate->printBinaryBlockWithRelocs("SymData", CVR.content()); + +  W.unindent(); +  W.startLine() << "}\n";    return Error::success();  }  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, BlockSym &Block) { -  DictScope S(W, "BlockStart"); -    StringRef LinkageName;    W.printHex("PtrParent", Block.Parent);    W.printHex("PtrEnd", Block.End); @@ -113,7 +130,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, BlockSym &Block) {  }  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, Thunk32Sym &Thunk) { -  DictScope S(W, "Thunk32");    W.printNumber("Parent", Thunk.Parent);    W.printNumber("End", Thunk.End);    W.printNumber("Next", Thunk.Next); @@ -126,7 +142,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, Thunk32Sym &Thunk) {  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,                                             TrampolineSym &Tramp) { -  DictScope S(W, "Trampoline");    W.printEnum("Type", uint16_t(Tramp.Type), getTrampolineNames());    W.printNumber("Size", Tramp.Size);    W.printNumber("ThunkOff", Tramp.ThunkOffset); @@ -137,7 +152,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,  }  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, SectionSym &Section) { -  DictScope S(W, "Section");    W.printNumber("SectionNumber", Section.SectionNumber);    W.printNumber("Alignment", Section.Alignment);    W.printNumber("Rva", Section.Rva); @@ -152,7 +166,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, SectionSym &Section) {  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,                                             CoffGroupSym &CoffGroup) { -  DictScope S(W, "COFF Group");    W.printNumber("Size", CoffGroup.Size);    W.printFlags("Characteristics", CoffGroup.Characteristics,                 getImageSectionCharacteristicNames(), @@ -165,8 +178,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,                                             BPRelativeSym &BPRel) { -  DictScope S(W, "BPRelativeSym"); -    W.printNumber("Offset", BPRel.Offset);    printTypeIndex("Type", BPRel.Type);    W.printString("VarName", BPRel.Name); @@ -175,16 +186,12 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,                                             BuildInfoSym &BuildInfo) { -  DictScope S(W, "BuildInfo"); -    W.printNumber("BuildId", BuildInfo.BuildId);    return Error::success();  }  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,                                             CallSiteInfoSym &CallSiteInfo) { -  DictScope S(W, "CallSiteInfo"); -    StringRef LinkageName;    if (ObjDelegate) {      ObjDelegate->printRelocatedField("CodeOffset", @@ -200,8 +207,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,                                             EnvBlockSym &EnvBlock) { -  DictScope S(W, "EnvBlock"); -    ListScope L(W, "Entries");    for (auto Entry : EnvBlock.Fields) {      W.printString(Entry); @@ -211,7 +216,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,                                             FileStaticSym &FileStatic) { -  DictScope S(W, "FileStatic");    printTypeIndex("Index", FileStatic.Index);    W.printNumber("ModFilenameOffset", FileStatic.ModFilenameOffset);    W.printFlags("Flags", uint16_t(FileStatic.Flags), getLocalFlagNames()); @@ -220,7 +224,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,  }  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, ExportSym &Export) { -  DictScope S(W, "Export");    W.printNumber("Ordinal", Export.Ordinal);    W.printFlags("Flags", uint16_t(Export.Flags), getExportSymFlagNames());    W.printString("Name", Export.Name); @@ -229,8 +232,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, ExportSym &Export) {  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,                                             Compile2Sym &Compile2) { -  DictScope S(W, "CompilerFlags2"); -    W.printEnum("Language", Compile2.getLanguage(), getSourceLanguageNames());    W.printFlags("Flags", Compile2.getFlags(), getCompileSym2FlagNames());    W.printEnum("Machine", unsigned(Compile2.Machine), getCPUTypeNames()); @@ -254,8 +255,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,                                             Compile3Sym &Compile3) { -  DictScope S(W, "CompilerFlags3"); -    W.printEnum("Language", Compile3.getLanguage(), getSourceLanguageNames());    W.printFlags("Flags", Compile3.getFlags(), getCompileSym3FlagNames());    W.printEnum("Machine", unsigned(Compile3.Machine), getCPUTypeNames()); @@ -281,8 +280,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,                                             ConstantSym &Constant) { -  DictScope S(W, "Constant"); -    printTypeIndex("Type", Constant.Type);    W.printNumber("Value", Constant.Value);    W.printString("Name", Constant.Name); @@ -290,9 +287,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,  }  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, DataSym &Data) { -  DictScope S(W, "DataSym"); - -  W.printEnum("Kind", uint16_t(CVR.kind()), getSymbolTypeNames());    StringRef LinkageName;    if (ObjDelegate) {      ObjDelegate->printRelocatedField("DataOffset", Data.getRelocationOffset(), @@ -308,15 +302,12 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, DataSym &Data) {  Error CVSymbolDumperImpl::visitKnownRecord(      CVSymbol &CVR,      DefRangeFramePointerRelFullScopeSym &DefRangeFramePointerRelFullScope) { -  DictScope S(W, "DefRangeFramePointerRelFullScope");    W.printNumber("Offset", DefRangeFramePointerRelFullScope.Offset);    return Error::success();  }  Error CVSymbolDumperImpl::visitKnownRecord(      CVSymbol &CVR, DefRangeFramePointerRelSym &DefRangeFramePointerRel) { -  DictScope S(W, "DefRangeFramePointerRel"); -    W.printNumber("Offset", DefRangeFramePointerRel.Offset);    printLocalVariableAddrRange(DefRangeFramePointerRel.Range,                                DefRangeFramePointerRel.getRelocationOffset()); @@ -326,8 +317,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(  Error CVSymbolDumperImpl::visitKnownRecord(      CVSymbol &CVR, DefRangeRegisterRelSym &DefRangeRegisterRel) { -  DictScope S(W, "DefRangeRegisterRel"); -    W.printNumber("BaseRegister", DefRangeRegisterRel.Hdr.Register);    W.printBoolean("HasSpilledUDTMember",                   DefRangeRegisterRel.hasSpilledUDTMember()); @@ -341,8 +330,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(  Error CVSymbolDumperImpl::visitKnownRecord(      CVSymbol &CVR, DefRangeRegisterSym &DefRangeRegister) { -  DictScope S(W, "DefRangeRegister"); -    W.printNumber("Register", DefRangeRegister.Hdr.Register);    W.printNumber("MayHaveNoName", DefRangeRegister.Hdr.MayHaveNoName);    printLocalVariableAddrRange(DefRangeRegister.Range, @@ -353,8 +340,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(  Error CVSymbolDumperImpl::visitKnownRecord(      CVSymbol &CVR, DefRangeSubfieldRegisterSym &DefRangeSubfieldRegister) { -  DictScope S(W, "DefRangeSubfieldRegister"); -    W.printNumber("Register", DefRangeSubfieldRegister.Hdr.Register);    W.printNumber("MayHaveNoName", DefRangeSubfieldRegister.Hdr.MayHaveNoName);    W.printNumber("OffsetInParent", DefRangeSubfieldRegister.Hdr.OffsetInParent); @@ -366,8 +351,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(  Error CVSymbolDumperImpl::visitKnownRecord(      CVSymbol &CVR, DefRangeSubfieldSym &DefRangeSubfield) { -  DictScope S(W, "DefRangeSubfield"); -    if (ObjDelegate) {      DebugStringTableSubsectionRef Strings = ObjDelegate->getStringTable();      auto ExpectedProgram = Strings.getString(DefRangeSubfield.Program); @@ -387,8 +370,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,                                             DefRangeSym &DefRange) { -  DictScope S(W, "DefRange"); -    if (ObjDelegate) {      DebugStringTableSubsectionRef Strings = ObjDelegate->getStringTable();      auto ExpectedProgram = Strings.getString(DefRange.Program); @@ -406,8 +387,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,                                             FrameCookieSym &FrameCookie) { -  DictScope S(W, "FrameCookie"); -    StringRef LinkageName;    if (ObjDelegate) {      ObjDelegate->printRelocatedField("CodeOffset", @@ -423,8 +402,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,                                             FrameProcSym &FrameProc) { -  DictScope S(W, "FrameProc"); -    W.printHex("TotalFrameBytes", FrameProc.TotalFrameBytes);    W.printHex("PaddingFrameBytes", FrameProc.PaddingFrameBytes);    W.printHex("OffsetToPadding", FrameProc.OffsetToPadding); @@ -440,8 +417,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,  Error CVSymbolDumperImpl::visitKnownRecord(      CVSymbol &CVR, HeapAllocationSiteSym &HeapAllocSite) { -  DictScope S(W, "HeapAllocationSite"); -    StringRef LinkageName;    if (ObjDelegate) {      ObjDelegate->printRelocatedField("CodeOffset", @@ -458,8 +433,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,                                             InlineSiteSym &InlineSite) { -  DictScope S(W, "InlineSite"); -    W.printHex("PtrParent", InlineSite.Parent);    W.printHex("PtrEnd", InlineSite.End);    printTypeIndex("Inlinee", InlineSite.Inlinee); @@ -515,7 +488,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,                                             RegisterSym &Register) { -  DictScope S(W, "RegisterSym");    printTypeIndex("Type", Register.Index);    W.printEnum("Seg", uint16_t(Register.Register), getRegisterNames());    W.printString("Name", Register.Name); @@ -523,7 +495,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,  }  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, PublicSym32 &Public) { -  DictScope S(W, "PublicSym");    W.printFlags("Flags", uint32_t(Public.Flags), getPublicSymFlagNames());    W.printNumber("Seg", Public.Segment);    W.printNumber("Off", Public.Offset); @@ -532,7 +503,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, PublicSym32 &Public) {  }  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, ProcRefSym &ProcRef) { -  DictScope S(W, "ProcRef");    W.printNumber("SumName", ProcRef.SumName);    W.printNumber("SymOffset", ProcRef.SymOffset);    W.printNumber("Mod", ProcRef.Module); @@ -541,8 +511,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, ProcRefSym &ProcRef) {  }  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, LabelSym &Label) { -  DictScope S(W, "Label"); -    StringRef LinkageName;    if (ObjDelegate) {      ObjDelegate->printRelocatedField("CodeOffset", Label.getRelocationOffset(), @@ -558,8 +526,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, LabelSym &Label) {  }  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, LocalSym &Local) { -  DictScope S(W, "Local"); -    printTypeIndex("Type", Local.Type);    W.printFlags("Flags", uint16_t(Local.Flags), getLocalFlagNames());    W.printString("VarName", Local.Name); @@ -567,16 +533,12 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, LocalSym &Local) {  }  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, ObjNameSym &ObjName) { -  DictScope S(W, "ObjectName"); -    W.printHex("Signature", ObjName.Signature);    W.printString("ObjectName", ObjName.Name);    return Error::success();  }  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, ProcSym &Proc) { -  DictScope S(W, "ProcStart"); -    if (InFunctionScope)      return llvm::make_error<CodeViewError>(          "Visiting a ProcSym while inside function scope!"); @@ -584,7 +546,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, ProcSym &Proc) {    InFunctionScope = true;    StringRef LinkageName; -  W.printEnum("Kind", uint16_t(CVR.kind()), getSymbolTypeNames());    W.printHex("PtrParent", Proc.Parent);    W.printHex("PtrEnd", Proc.End);    W.printHex("PtrNext", Proc.Next); @@ -607,13 +568,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, ProcSym &Proc) {  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,                                             ScopeEndSym &ScopeEnd) { -  if (CVR.kind() == SymbolKind::S_END) -    DictScope S(W, "BlockEnd"); -  else if (CVR.kind() == SymbolKind::S_PROC_ID_END) -    DictScope S(W, "ProcEnd"); -  else if (CVR.kind() == SymbolKind::S_INLINESITE_END) -    DictScope S(W, "InlineSiteEnd"); -    InFunctionScope = false;    return Error::success();  } @@ -627,8 +581,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, CallerSym &Caller) {  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,                                             RegRelativeSym &RegRel) { -  DictScope S(W, "RegRelativeSym"); -    W.printHex("Offset", RegRel.Offset);    printTypeIndex("Type", RegRel.Type);    W.printEnum("Register", uint16_t(RegRel.Register), getRegisterNames()); @@ -638,8 +590,6 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,                                             ThreadLocalDataSym &Data) { -  DictScope S(W, "ThreadLocalDataSym"); -    StringRef LinkageName;    if (ObjDelegate) {      ObjDelegate->printRelocatedField("DataOffset", Data.getRelocationOffset(), @@ -653,15 +603,12 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,  }  Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, UDTSym &UDT) { -  DictScope S(W, "UDT");    printTypeIndex("Type", UDT.Type);    W.printString("UDTName", UDT.Name);    return Error::success();  }  Error CVSymbolDumperImpl::visitUnknownSymbol(CVSymbol &CVR) { -  DictScope S(W, "UnknownSym"); -  W.printEnum("Kind", uint16_t(CVR.kind()), getSymbolTypeNames());    W.printNumber("Length", CVR.length());    return Error::success();  } | 
