[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