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