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?
On Wed, Aug 29, 2018 at 10:11 AM Greg Clayton via Phabricator <
revi...@reviews.llvm.org> wrote:

> clayborg created this revision.
> clayborg added reviewers: zturner, labath, dvlahovski, lemo.
>
> The CvRecordPdb70 structure looks like:
>
>   struct CvRecordPdb70 {
>     uint8_t Uuid[16];
>     llvm::support::ulittle32_t Age;
>     // char PDBFileName[];
>   };
>
> 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.
>
>
> https://reviews.llvm.org/D51442
>
> Files:
>   source/Plugins/Process/minidump/MinidumpParser.cpp
>
>
> Index: source/Plugins/Process/minidump/MinidumpParser.cpp
> ===================================================================
> --- source/Plugins/Process/minidump/MinidumpParser.cpp
> +++ source/Plugins/Process/minidump/MinidumpParser.cpp
> @@ -81,7 +81,7 @@
>      const CvRecordPdb70 *pdb70_uuid = nullptr;
>      Status error = consumeObject(cv_record, pdb70_uuid);
>      if (!error.Fail())
> -      return UUID::fromData(pdb70_uuid, sizeof(*pdb70_uuid));
> +      return UUID::fromData(pdb70_uuid->Uuid, sizeof(pdb70_uuid->Uuid));
>    } else if (cv_signature == CvSignature::ElfBuildId)
>      return UUID::fromData(cv_record);
>
>
>
>
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to