From 71a0ad66a95953ed0ad9da7e4502f9f43b2149a0 Mon Sep 17 00:00:00 2001 From: David Blaikie Date: Wed, 16 Oct 2013 20:29:06 +0000 Subject: [PATCH] DIEHash: Include the trailing zero byte after the children of a DIE llvm-svn: 192836 --- llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp | 3 +++ llvm/unittests/CodeGen/DIEHashTest.cpp | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp b/llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp index c56d2e647308..abc504c0581c 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp @@ -383,6 +383,9 @@ void DIEHash::computeHash(DIE *Die) { E = Die->getChildren().end(); I != E; ++I) computeHash(*I); + + // Following the last (or if there are no children), append a zero byte. + Hash.update((uint8_t)0); } /// This is based on the type signature computation given in section 7.27 of the diff --git a/llvm/unittests/CodeGen/DIEHashTest.cpp b/llvm/unittests/CodeGen/DIEHashTest.cpp index 6b9a4dbc26a6..86358d5d31a3 100644 --- a/llvm/unittests/CodeGen/DIEHashTest.cpp +++ b/llvm/unittests/CodeGen/DIEHashTest.cpp @@ -23,6 +23,6 @@ TEST(DIEHashData1Test, DIEHash) { DIEInteger Size(4); Die.addValue(dwarf::DW_AT_byte_size, dwarf::DW_FORM_data1, &Size); uint64_t MD5Res = Hash.computeTypeSignature(&Die); - ASSERT_EQ(MD5Res, 0x540e9ff30ade3e4aULL); + ASSERT_EQ(MD5Res, 0x4F68EF1039F8D2BULL); } }