[llvm] r311117 - [llvm-pdbutil] Fix some dumping issues.

Zachary Turner via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 17 14:56:41 PDT 2017


Hmm, thanks for the report, I will take a look.

On Thu, Aug 17, 2017 at 2:50 PM Evgenii Stepanov <eugeni.stepanov at gmail.com>
wrote:

> Hi,
>
> I'm getting this error after this commit:
> llvm/tools/llvm-pdbutil/MinimalSymbolDumper.cpp:34:3: error: default
> label in switch which covers all enumeration values
> [-Werror,-Wcovered-switch-default]
>   default: {
>
> On Thu, Aug 17, 2017 at 1:04 PM, Zachary Turner via llvm-commits
> <llvm-commits at lists.llvm.org> wrote:
> > Author: zturner
> > Date: Thu Aug 17 13:04:51 2017
> > New Revision: 311117
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=311117&view=rev
> > Log:
> > [llvm-pdbutil] Fix some dumping issues.
> >
> > When dumping, we were treating the S_INLINESITESYM as referring
> > to a type record, when it actually refers to an id record.  We
> > had this correct in TypeIndexDiscovery, so our merging algorithm
> > should be fine, but we had it wrong in the dumper, which means it
> > would appear to work most of the time, unless the index was out
> > of bounds in the type stream, when it would fail.  Fixed this, and
> > audited a few other cases to make them match the behavior in
> > TypeIndexDiscovery.
> >
> > Also, I've now observed a new symbol record with kind 0x1168 which
> > I have no clue what it is, so to avoid crashing we have to just
> > print "Unknown Symbol Kind".
> >
> > Modified:
> >     llvm/trunk/lib/DebugInfo/CodeView/LazyRandomTypeCollection.cpp
> >     llvm/trunk/tools/llvm-pdbutil/MinimalSymbolDumper.cpp
> >
> > Modified: llvm/trunk/lib/DebugInfo/CodeView/LazyRandomTypeCollection.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/CodeView/LazyRandomTypeCollection.cpp?rev=311117&r1=311116&r2=311117&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/lib/DebugInfo/CodeView/LazyRandomTypeCollection.cpp
> (original)
> > +++ llvm/trunk/lib/DebugInfo/CodeView/LazyRandomTypeCollection.cpp Thu
> Aug 17 13:04:51 2017
> > @@ -83,7 +83,9 @@ uint32_t LazyRandomTypeCollection::getOf
> >  }
> >
> >  CVType LazyRandomTypeCollection::getType(TypeIndex Index) {
> > -  error(ensureTypeExists(Index));
> > +  uint32_t I = Index.getIndex();
> > +  auto EC = ensureTypeExists(Index);
> > +  error(std::move(EC));
> >    assert(contains(Index));
> >
> >    return Records[Index.toArrayIndex()].Type;
> >
> > Modified: llvm/trunk/tools/llvm-pdbutil/MinimalSymbolDumper.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbutil/MinimalSymbolDumper.cpp?rev=311117&r1=311116&r2=311117&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/tools/llvm-pdbutil/MinimalSymbolDumper.cpp (original)
> > +++ llvm/trunk/tools/llvm-pdbutil/MinimalSymbolDumper.cpp Thu Aug 17
> 13:04:51 2017
> > @@ -24,15 +24,16 @@ using namespace llvm;
> >  using namespace llvm::codeview;
> >  using namespace llvm::pdb;
> >
> > -static StringRef getSymbolKindName(SymbolKind K) {
> > +static std::string getSymbolKindName(SymbolKind K) {
> >    switch (K) {
> >  #define SYMBOL_RECORD(EnumName, value, name)
>        \
> >    case EnumName:
>        \
> >      return #EnumName;
> >  #define CV_SYMBOL(EnumName, value) SYMBOL_RECORD(EnumName, value,
> EnumName)
> >  #include "llvm/DebugInfo/CodeView/CodeViewSymbols.def"
> > -  default:
> > -    llvm_unreachable("Unknown symbol kind!");
> > +  default: {
> > +    return formatv("Unknown Symbol Kind [{0:X}]", uint32_t(K)).str();
> > +  }
> >    }
> >    return "";
> >  }
> > @@ -674,7 +675,7 @@ Error MinimalSymbolDumper::visitKnownRec
> >  Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR,
> >                                              HeapAllocationSiteSym &HAS)
> {
> >    AutoIndent Indent(P, 7);
> > -  P.formatLine("type = {0}, addr = {1} call size = {2}",
> typeIndex(HAS.Type),
> > +  P.formatLine("type = {0}, addr = {1} call size = {2}",
> idIndex(HAS.Type),
> >                 formatSegmentOffset(HAS.Segment, HAS.CodeOffset),
> >                 HAS.CallInstructionSize);
> >    return Error::success();
> > @@ -686,7 +687,7 @@ Error MinimalSymbolDumper::visitKnownRec
> >    StringRef Annotations(reinterpret_cast<const char *>(Bytes.begin()),
> >                          Bytes.size());
> >
> > -  P.formatLine("inlinee = {0}, parent = {1}, end = {2}",
> typeIndex(IS.Inlinee),
> > +  P.formatLine("inlinee = {0}, parent = {1}, end = {2}",
> idIndex(IS.Inlinee),
> >                 IS.Parent, IS.End);
> >    P.formatLine("annotations = {0}", toHex(Annotations));
> >    return Error::success();
> > @@ -776,7 +777,7 @@ Error MinimalSymbolDumper::visitKnownRec
> >  Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR, CallerSym
> &Caller) {
> >    AutoIndent Indent(P, 7);
> >    for (const auto &I : Caller.Indices) {
> > -    P.formatLine("callee: {0}", typeIndex(I));
> > +    P.formatLine("callee: {0}", idIndex(I));
> >    }
> >    return Error::success();
> >  }
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170817/93e13210/attachment.html>


More information about the llvm-commits mailing list