[all-commits] [llvm/llvm-project] 1beffc: Support build-ids of other sizes than 16 in UUID::...

Jaroslav Sevcik via All-commits all-commits at lists.llvm.org
Sun Jun 7 03:04:54 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 1beffc18886ae4cd72dfe1f9b6b79204cac51e5e
      https://github.com/llvm/llvm-project/commit/1beffc18886ae4cd72dfe1f9b6b79204cac51e5e
  Author: Jaroslav Sevcik <jarin at google.com>
  Date:   2020-06-07 (Sun, 07 Jun 2020)

  Changed paths:
    M lldb/include/lldb/Utility/UUID.h
    M lldb/source/Interpreter/OptionValueUUID.cpp
    M lldb/source/Plugins/ObjectFile/Breakpad/BreakpadRecords.cpp
    M lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.cpp
    M lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
    M lldb/source/Utility/UUID.cpp
    M lldb/test/API/functionalities/postmortem/minidump-new/TestMiniDumpUUID.py
    A lldb/test/API/functionalities/postmortem/minidump-new/linux-arm-uuids-elf-build-id-4.yaml
    A lldb/test/API/functionalities/postmortem/minidump-new/linux-arm-uuids-match.yaml
    M lldb/unittests/ObjectFile/ELF/TestObjectFileELF.cpp
    M lldb/unittests/Target/ModuleCacheTest.cpp
    M lldb/unittests/Utility/UUIDTest.cpp

  Log Message:
  -----------
  Support build-ids of other sizes than 16 in UUID::SetFromStringRef

SBTarget::AddModule currently handles the UUID parameter in a very
weird way: UUIDs with more than 16 bytes are trimmed to 16 bytes. On
the other hand, shorter-than-16-bytes UUIDs are completely ignored. In
this patch, we change the parsing code to handle UUIDs of arbitrary
size.

To support arbitrary size UUIDs in SBTarget::AddModule, this patch
changes UUID::SetFromStringRef to parse UUIDs of arbitrary length. We
subtly change the semantics of SetFromStringRef - SetFromStringRef now
only succeeds if the entire input is consumed to prevent some
prefix-parsing confusion. This is up for discussion, but I believe
this is more consistent - we always return false for invalid UUIDs
rather than sometimes truncating to a valid prefix. Also, all the
call-sites except the API and interpreter seem to expect to consume
the entire input.

This also adds tests for adding existing modules 4-, 16-, and 20-byte
build-ids. Finally, we took the liberty of testing the minidump
scenario we care about - removing placeholder module from minidump and
replacing it with the real module.

Reviewed By: labath, friss

Differential Revision: https://reviews.llvm.org/D80755




More information about the All-commits mailing list