diff options
Diffstat (limited to 'lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp')
-rw-r--r-- | lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp b/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp index 5b0df72..05b3bb9 100644 --- a/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp +++ b/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp @@ -354,6 +354,22 @@ DataExtractor ProcessMinidump::GetAuxvData() { GetAddressByteSize(), GetAddressByteSize()); } +bool ProcessMinidump::IsLLDBMinidump() { + std::optional<llvm::ArrayRef<uint8_t>> lldb_generated_section = + m_minidump_parser->GetRawStream(StreamType::LLDBGenerated); + return lldb_generated_section.has_value(); +} + +DynamicLoader *ProcessMinidump::GetDynamicLoader() { + // This is a workaround for the dynamic loader not playing nice in issue + // #119598. The specific reason we use the dynamic loader is to get the TLS + // info sections, which we can assume are not being written to the minidump + // unless it's an LLDB generate minidump. + if (IsLLDBMinidump()) + return PostMortemProcess::GetDynamicLoader(); + return nullptr; +} + void ProcessMinidump::BuildMemoryRegions() { if (m_memory_regions) return; |