]> granicus.if.org Git - llvm/commitdiff
[PDB] Indicate which type record failed hash validation
authorReid Kleckner <rnk@google.com>
Fri, 1 Jul 2016 00:37:25 +0000 (00:37 +0000)
committerReid Kleckner <rnk@google.com>
Fri, 1 Jul 2016 00:37:25 +0000 (00:37 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274308 91177308-0d34-0410-b5e6-96231b3b80d8

lib/DebugInfo/PDB/Raw/TpiStream.cpp

index feb6f2b88d13f20916e6a0ac199cdecc401c5a01..016c51b8f4e0c856d7703078a30dbc61793d670c 100644 (file)
@@ -118,7 +118,7 @@ private:
   template <typename T> Error verify(T &Rec) {
     uint32_t Hash = getTpiHash(Rec, *RawRecord);
     if (Hash % NumHashBuckets != HashValues[Index])
-      return make_error<RawError>(raw_error_code::invalid_tpi_hash);
+      return errorInvalidHash();
     return Error::success();
   }
 
@@ -127,10 +127,16 @@ private:
     support::endian::write32le(Buf, Rec.getUDT().getIndex());
     uint32_t Hash = hashStringV1(StringRef(Buf, 4));
     if (Hash % NumHashBuckets != HashValues[Index])
-      return make_error<RawError>(raw_error_code::invalid_tpi_hash);
+      return errorInvalidHash();
     return Error::success();
   }
 
+  Error errorInvalidHash() {
+    return make_error<RawError>(
+        raw_error_code::invalid_tpi_hash,
+        "Type index is 0x" + utohexstr(TypeIndex::FirstNonSimpleIndex + Index));
+  }
+
   FixedStreamArray<support::ulittle32_t> HashValues;
   const CVRecord<TypeLeafKind> *RawRecord;
   uint32_t NumHashBuckets;