From 681254c83055e48ed096d10e55acedfc773d0225 Mon Sep 17 00:00:00 2001 From: Greg Clayton Date: Tue, 22 Feb 2011 19:32:07 +0000 Subject: [PATCH] Remove an assertion that was causing a crash. llvm-svn: 126235 --- .../Process/Utility/RegisterContextLLDB.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.cpp b/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.cpp index 621d7fc4ca37..0f3207b9cf35 100644 --- a/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.cpp +++ b/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.cpp @@ -113,8 +113,18 @@ RegisterContextLLDB::InitializeZerothFrame() if (addr_range.GetBaseAddress().IsValid()) { m_start_pc = addr_range.GetBaseAddress(); - assert (frame_sp->GetFrameCodeAddress().GetSection() == m_start_pc.GetSection()); - m_current_offset = frame_sp->GetFrameCodeAddress().GetOffset() - m_start_pc.GetOffset(); + if (frame_sp->GetFrameCodeAddress().GetSection() == m_start_pc.GetSection()) + { + m_current_offset = frame_sp->GetFrameCodeAddress().GetOffset() - m_start_pc.GetOffset(); + } + else if (frame_sp->GetFrameCodeAddress().GetModule() == m_start_pc.GetModule()) + { + // This means that whatever symbol we kicked up isn't really correct + // as no should cross section boundaries... We really should NULL out + // the function/symbol in this case unless there is a bad assumption + // here due to inlined functions? + m_current_offset = frame_sp->GetFrameCodeAddress().GetFileAddress() - m_start_pc.GetFileAddress(); + } m_current_offset_backed_up_one = m_current_offset; } else -- GitLab