For PE/COFF files, the Age is also in the executable and Guid+Age actually constitute a 20-byte UUID.  Is this not the case on Apple?  What object file format are you dealing with?<br><div class="gmail_quote"><div dir="ltr">On Wed, Aug 29, 2018 at 10:11 AM Greg Clayton via Phabricator <<a href="mailto:reviews@reviews.llvm.org">reviews@reviews.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">clayborg created this revision.<br>
clayborg added reviewers: zturner, labath, dvlahovski, lemo.<br>
<br>
The CvRecordPdb70 structure looks like:<br>
<br>
  struct CvRecordPdb70 {<br>
    uint8_t Uuid[16];<br>
    llvm::support::ulittle32_t Age;<br>
    // char PDBFileName[];<br>
  };<br>
<br>
We are currently including the "Age" in the UUID which seems wrong. I am proposing this fix to avoid including the age in the UUID since it is wrong for Apple targets. We want the UUID of a module to match the UUID that would be found in executable files. I can modify this patch to only do this for Apple vendors in the target triple if needed, but it seemed like this would be the functionality that people would expect on all targets, so I will start with this patch and see what people think.<br>
<br>
<br>
<a href="https://reviews.llvm.org/D51442" rel="noreferrer" target="_blank">https://reviews.llvm.org/D51442</a><br>
<br>
Files:<br>
  source/Plugins/Process/minidump/MinidumpParser.cpp<br>
<br>
<br>
Index: source/Plugins/Process/minidump/MinidumpParser.cpp<br>
===================================================================<br>
--- source/Plugins/Process/minidump/MinidumpParser.cpp<br>
+++ source/Plugins/Process/minidump/MinidumpParser.cpp<br>
@@ -81,7 +81,7 @@<br>
     const CvRecordPdb70 *pdb70_uuid = nullptr;<br>
     Status error = consumeObject(cv_record, pdb70_uuid);<br>
     if (!error.Fail())<br>
-      return UUID::fromData(pdb70_uuid, sizeof(*pdb70_uuid));<br>
+      return UUID::fromData(pdb70_uuid->Uuid, sizeof(pdb70_uuid->Uuid));<br>
   } else if (cv_signature == CvSignature::ElfBuildId)<br>
     return UUID::fromData(cv_record);<br>
<br>
<br>
<br>
</blockquote></div>