llvm-cov: Added support for function checksums.

The function checksums are hashed from the concatenation of the function
name and line number.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196358 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Yuchen Wu
2013-12-04 06:00:17 +00:00
parent 45a5b27d9b
commit 2ebea72474
10 changed files with 29 additions and 7 deletions

View File

@@ -125,7 +125,7 @@ bool GCOVFunction::readGCNO(GCOVBuffer &Buff, GCOV::GCOVVersion Version) {
uint32_t Dummy;
if (!Buff.readInt(Dummy)) return false; // Function header length
if (!Buff.readInt(Ident)) return false;
if (!Buff.readInt(Dummy)) return false; // Checksum #1
if (!Buff.readInt(Checksum)) return false;
if (Version != GCOV::V402) {
uint32_t CfgChecksum;
if (!Buff.readInt(CfgChecksum)) return false;
@@ -212,6 +212,7 @@ bool GCOVFunction::readGCNO(GCOVBuffer &Buff, GCOV::GCOVVersion Version) {
bool GCOVFunction::readGCDA(GCOVBuffer &Buff, GCOV::GCOVVersion Version) {
uint32_t Dummy;
if (!Buff.readInt(Dummy)) return false; // Function header length
uint32_t GCDAIdent;
if (!Buff.readInt(GCDAIdent)) return false;
if (Ident != GCDAIdent) {
@@ -220,8 +221,13 @@ bool GCOVFunction::readGCDA(GCOVBuffer &Buff, GCOV::GCOVVersion Version) {
return false;
}
if (!Buff.readInt(Dummy)) return false; // Checksum #1
uint32_t GCDAChecksum;
if (!Buff.readInt(GCDAChecksum)) return false;
if (Checksum != GCDAChecksum) {
errs() << "Function checksums do not match: " << Checksum << " != "
<< GCDAChecksum << " (in " << Name << ").\n";
return false;
}
uint32_t CfgChecksum;
if (Version != GCOV::V402) {