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
16 lines
470 B
YAML
16 lines
470 B
YAML
--- !minidump
|
|
Streams:
|
|
- Type: SystemInfo
|
|
Processor Arch: ARM
|
|
Platform ID: Linux
|
|
CSD Version: '15E216'
|
|
CPU:
|
|
CPUID: 0x00000000
|
|
- Type: ModuleList
|
|
Modules:
|
|
- Base of Image: 0x0000000000001000
|
|
Size of Image: 0x00001000
|
|
Module Name: '/target/path/libuuidmatch.so'
|
|
CodeView Record: 525344537295E17C66689E05CBB5DEE5003865D55267C116
|
|
...
|