RegisterContextLLDB.cpp (InitializeNonZerothFrame): If we get a
0 mid-stack, stop backtracing.
SectionLoadList.cpp (ResolveLoadAddress): Don't assert on an
out-of-range address, just return an invalid Address object.
The unwinder may be passing in invalid addresses on the final
stack frame and the assert is a problem.
llvm-svn: 122386
diff --git a/lldb/source/Target/SectionLoadList.cpp b/lldb/source/Target/SectionLoadList.cpp
index f900d96..ac9f818 100644
--- a/lldb/source/Target/SectionLoadList.cpp
+++ b/lldb/source/Target/SectionLoadList.cpp
@@ -164,13 +164,15 @@
{
if (load_addr != pos->first && pos != m_collection.begin())
--pos;
- assert (load_addr >= pos->first);
- addr_t offset = load_addr - pos->first;
- if (offset < pos->second->GetByteSize())
+ if (load_addr >= pos->first)
{
- // We have found the top level section, now we need to find the
- // deepest child section.
- return pos->second->ResolveContainedAddress (offset, so_addr);
+ addr_t offset = load_addr - pos->first;
+ if (offset < pos->second->GetByteSize())
+ {
+ // We have found the top level section, now we need to find the
+ // deepest child section.
+ return pos->second->ResolveContainedAddress (offset, so_addr);
+ }
}
}
so_addr.Clear();