================ @@ -797,20 +822,75 @@ void MinidumpFileBuilder::AddLinuxFileStreams( } } -Status MinidumpFileBuilder::Dump(lldb::FileUP &core_file) const { - constexpr size_t header_size = sizeof(llvm::minidump::Header); - constexpr size_t directory_size = sizeof(llvm::minidump::Directory); +Status MinidumpFileBuilder::AddMemory(const ProcessSP &process_sp, + SaveCoreStyle core_style) { + Status error; + + Process::CoreFileMemoryRanges ranges_for_memory_list; + error = process_sp->CalculateCoreFileSaveRanges( + SaveCoreStyle::eSaveCoreStackOnly, ranges_for_memory_list); + if (error.Fail()) { + return error; + } + + std::set<addr_t> stack_ranges; + for (const auto &core_range : ranges_for_memory_list) { + stack_ranges.insert(core_range.range.start()); + } + // We leave a little padding for dictionary and any other metadata we would + // want. Also so that we can put the header of the memory list 64 in 32b land, + // because the directory requires a 32b RVA. + Process::CoreFileMemoryRanges ranges; + error = process_sp->CalculateCoreFileSaveRanges(core_style, ranges); + if (error.Fail()) { + return error; + } + + uint64_t total_size = + 256 + (ranges.size() * sizeof(llvm::minidump::MemoryDescriptor_64)); ---------------- clayborg wrote:
What is 256 here? And why do we care about `ranges.size() * sizeof(llvm::minidump::MemoryDescriptor_64))`? https://github.com/llvm/llvm-project/pull/95312 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits