[lldb] [llvm] [Obj2Yaml] Add support for minidump generation with 64b memory ranges. (PR #101272)
Pavel Labath via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 5 02:05:40 PDT 2024
================
@@ -373,7 +373,6 @@ void yaml::MappingContextTraits<MemoryDescriptor, yaml::BinaryRef>::mapping(
void yaml::MappingContextTraits<MemoryDescriptor_64, yaml::BinaryRef>::mapping(
IO &IO, MemoryDescriptor_64 &Memory, BinaryRef &Content) {
mapRequiredHex(IO, "Start of Memory Range", Memory.StartOfMemoryRange);
- mapRequiredHex(IO, "Data Size", Memory.DataSize);
----------------
labath wrote:
> Content isn't initialized when the mapping is being configured, so binary_size() always resolves to 0.
Are you sure about that? Did you put this line after the line that initializes the `Content` field?
This pattern really should work, as that's the same one used for RawContentStream. And now that I've looked into it more closely, I think it'd be best to do exactly the same thing as RawContentStream does, where a smaller DataSize field is an error, and a larger value just pads the output with zeroes (so if you just want a field of a certain size, and don't care about the contents, you can just put `DataSize: 47` and omit the Content entirely:
```
$ yaml2obj <<EOF | obj2yaml
--- !minidump
Streams:
- Type: LinuxAuxv
Size: 100
Content: DEADBEEFBAADF00D
EOF
--- !minidump
Streams:
- Type: LinuxAuxv
Content: DEADBEEFBAADF00D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
...
$ yaml2obj <<EOF
--- !minidump
Streams:
- Type: LinuxAuxv
Size: 7
Content: DEADBEEFBAADF00D
EOF
YAML:3:5: error: Stream size must be greater or equal to the content size
- Type: LinuxAuxv
^
yaml2obj: error: failed to parse YAML input: Invalid argument
$ yaml2obj <<EOF | obj2yaml
--- !minidump
Streams:
- Type: LinuxAuxv
Size: 10
EOF
--- !minidump
Streams:
- Type: LinuxAuxv
Content: '00000000000000000000'
...
```
https://github.com/llvm/llvm-project/pull/101272
More information about the llvm-commits
mailing list