Fix the partial backtrace in a recursive inferior compiled with -fomit-frame-pointer.
- Removes the block in UnwindLLDB::AddOneMoreFrame that tests for a bad stack setup,
since it is neither correct (tests the FP GPR), complete (doesn't consider multi-frame
cycles), nor reachable (the construction of RegisterContextLLDB will fail in the case
where either of the two (why just two?) previous frames have the same canonical frame
address as the frame that we propose adding to the stack).
llvm-svn: 191430
diff --git a/lldb/source/Plugins/Process/Utility/UnwindLLDB.cpp b/lldb/source/Plugins/Process/Utility/UnwindLLDB.cpp
index 0eea003..552ae50 100644
--- a/lldb/source/Plugins/Process/Utility/UnwindLLDB.cpp
+++ b/lldb/source/Plugins/Process/Utility/UnwindLLDB.cpp
@@ -185,21 +185,7 @@
}
goto unwind_done;
}
- if (!m_frames.empty())
- {
- if (m_frames.back()->start_pc == cursor_sp->start_pc)
- {
- if (m_frames.back()->cfa == cursor_sp->cfa)
- goto unwind_done; // Infinite loop where the current cursor is the same as the previous one...
- else if (abi && abi->StackUsesFrames())
- {
- // We might have a CFA that is not using the frame pointer and
- // we want to validate that the frame pointer is valid.
- if (reg_ctx_sp->GetFP() == 0)
- goto unwind_done;
- }
- }
- }
+
cursor_sp->reg_ctx_lldb_sp = reg_ctx_sp;
m_frames.push_back (cursor_sp);
return true;