[llvm] r311117 - [llvm-pdbutil] Fix some dumping issues.
Evgenii Stepanov via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 17 14:50:18 PDT 2017
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
More information about the llvm-commits
mailing list