[Lldb-commits] [lldb] [LLDB][Minidump] Fix ProcessMinidump::GetMemoryRegions to include 64b regions when /proc/pid maps are missing. (PR #101086)
Pavel Labath via lldb-commits
lldb-commits at lists.llvm.org
Fri Aug 16 01:11:32 PDT 2024
================
@@ -457,34 +456,24 @@ MinidumpParser::FindMemoryRange(lldb::addr_t addr) {
}
}
- // Some Minidumps have a Memory64ListStream that captures all the heap memory
- // (full-memory Minidumps). We can't exactly use the same loop as above,
- // because the Minidump uses slightly different data structures to describe
- // those
-
- if (!data64.empty()) {
- llvm::ArrayRef<MinidumpMemoryDescriptor64> memory64_list;
- uint64_t base_rva;
- std::tie(memory64_list, base_rva) =
- MinidumpMemoryDescriptor64::ParseMemory64List(data64);
-
- if (memory64_list.empty())
- return std::nullopt;
-
- for (const auto &memory_desc64 : memory64_list) {
- const lldb::addr_t range_start = memory_desc64.start_of_memory_range;
- const size_t range_size = memory_desc64.data_size;
-
- if (base_rva + range_size > GetData().size())
- return std::nullopt;
-
- if (range_start <= addr && addr < range_start + range_size) {
- return minidump::Range(range_start,
- GetData().slice(base_rva, range_size));
+ if (!GetStream(StreamType::Memory64List).empty()) {
+ llvm::Error err = llvm::Error::success();
+ for (const auto &memory_desc : GetMinidumpFile().getMemory64List(err)) {
+ // Explicit error check so we can return from within
+ if (memory_desc.first.StartOfMemoryRange <= addr
+ && addr < memory_desc.first.StartOfMemoryRange + memory_desc.first.DataSize
+ && !err) {
+ return minidump::Range(memory_desc.first.StartOfMemoryRange, memory_desc.second);
}
- base_rva += range_size;
}
+
+ if (err)
+ // Without std::move(err) fails with
+ // error: call to deleted constructor of '::llvm::Error'
----------------
labath wrote:
That's just the general property of llvm::Error objects (that they can't be copied) and the LLDB_LOG_ERROR macro (that it consumes the error). I don't think it needs a special comment.
https://github.com/llvm/llvm-project/pull/101086
More information about the lldb-commits
mailing list