Allow any build-id length between 4 and 20 bytes inclusive

Build-id support is being added to lld and by default it may produce a
64-bit build-id.

Prior to this change lldb would reject such a build-id. However, it then
falls back to a 4-byte crc32, which is a poorer quality identifier.

Differential Revision:	http://reviews.llvm.org/D18096

llvm-svn: 263432
This commit is contained in:
Ed Maste 2016-03-14 14:06:00 +00:00
parent cdce026b4d
commit 81955f8048
1 changed files with 3 additions and 2 deletions

View File

@ -1410,8 +1410,9 @@ ObjectFileELF::RefineModuleDetailsFromNote (lldb_private::DataExtractor &data, l
// Only bother processing this if we don't already have the uuid set.
if (!uuid.IsValid())
{
// 16 bytes is UUID|MD5, 20 bytes is SHA1
if ((note.n_descsz == 16 || note.n_descsz == 20))
// 16 bytes is UUID|MD5, 20 bytes is SHA1. Other linkers may produce a build-id of a different
// length. Accept it as long as it's at least 4 bytes as it will be better than our own crc32.
if (note.n_descsz >= 4 && note.n_descsz <= 20)
{
uint8_t uuidbuf[20];
if (data.GetU8 (&offset, &uuidbuf, note.n_descsz) == nullptr)