diff options
author | Jason Molenda <jmolenda@apple.com> | 2014-11-04 02:31:50 +0000 |
---|---|---|
committer | Jason Molenda <jmolenda@apple.com> | 2014-11-04 02:31:50 +0000 |
commit | d98c3abf9fb4278d37e89ec267f132aa85c12423 (patch) | |
tree | d6a0ef55b14a6f178e92a0c252b984d7b15983ff /lldb/source/Plugins/Process/Utility/RegisterContextLLDB.h | |
parent | 8d8f396d86741bdf99e7a47173bc87b526729092 (diff) | |
download | bcm5719-llvm-d98c3abf9fb4278d37e89ec267f132aa85c12423.tar.gz bcm5719-llvm-d98c3abf9fb4278d37e89ec267f132aa85c12423.zip |
After we've completed a full backtrace, we'll have one frame which
is "invalid" -- it is past the end of the stack trace. Add a new
method IsCompletedStackWalk() so we can tell if an invalid stack
frame is from a complete backtrace or if it might be worth re-trying
the last unwind with a different method.
This fixes the unwinder problems Ryan Brown was having with go
programs. The unwinder can (under the right circumstances) still
destructively replace unwind plans permanently - I'll work on
that in a different patch.
<rdar://problem/18683658>
llvm-svn: 221229
Diffstat (limited to 'lldb/source/Plugins/Process/Utility/RegisterContextLLDB.h')
-rw-r--r-- | lldb/source/Plugins/Process/Utility/RegisterContextLLDB.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.h b/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.h index ff0b77488eb..d272073de55 100644 --- a/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.h +++ b/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.h @@ -73,6 +73,9 @@ public: IsValid () const; bool + IsCompletedStackWalk () const; + + bool IsTrapHandlerFrame () const; bool @@ -240,6 +243,10 @@ private: lldb_private::UnwindLLDB& m_parent_unwind; // The UnwindLLDB that is creating this RegisterContextLLDB + bool m_completed_stack_walk; // indicates that we completed a full stack walk + // (this frame is likely eNotAValidFrame aka !IsValid()) + // and we should not continue trying to unwind + //------------------------------------------------------------------ // For RegisterContextLLDB only //------------------------------------------------------------------ |