diff options
author | Greg Clayton <gclayton@apple.com> | 2018-12-14 19:36:01 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2018-12-14 19:36:01 +0000 |
commit | 026e1bf56a4be9f10131f3a3f81f11b06377a5c5 (patch) | |
tree | 3d7789c4fc1cab6a3e05e58a9a1c2dccc2b9b545 /lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp | |
parent | cac3d118ae775647f432c2d0159eca562c486744 (diff) | |
download | bcm5719-llvm-026e1bf56a4be9f10131f3a3f81f11b06377a5c5.tar.gz bcm5719-llvm-026e1bf56a4be9f10131f3a3f81f11b06377a5c5.zip |
Cache memory regions in ProcessMinidump and use the linux maps as the source of the information if available
Breakpad creates minidump files that sometimes have:
- linux maps textual content
- no MemoryInfoList
Right now unless the file has a MemoryInfoList we get no region information.
This patch:
- reads and caches the memory region info one time and sorts it for easy subsequent access
- get the region info from the best source in this order:
- linux maps info (if available)
- MemoryInfoList (if available)
- MemoryList or Memory64List
- returns memory region info for the gaps between regions (before the first and after the last)
Differential Revision: https://reviews.llvm.org/D55522
llvm-svn: 349182
Diffstat (limited to 'lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp')
-rw-r--r-- | lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp b/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp index 97e13762270..1744b65e38b 100644 --- a/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp +++ b/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp @@ -284,14 +284,8 @@ ArchSpec ProcessMinidump::GetArchitecture() { Status ProcessMinidump::GetMemoryRegionInfo(lldb::addr_t load_addr, MemoryRegionInfo &range_info) { - Status error; - auto info = m_minidump_parser.GetMemoryRegionInfo(load_addr); - if (!info) { - error.SetErrorString("No valid MemoryRegionInfo found!"); - return error; - } - range_info = info.getValue(); - return error; + range_info = m_minidump_parser.GetMemoryRegionInfo(load_addr); + return Status(); } void ProcessMinidump::Clear() { Process::m_thread_list.Clear(); } |