summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.h
diff options
context:
space:
mode:
authorJason Molenda <jmolenda@apple.com>2014-11-04 02:31:50 +0000
committerJason Molenda <jmolenda@apple.com>2014-11-04 02:31:50 +0000
commitd98c3abf9fb4278d37e89ec267f132aa85c12423 (patch)
treed6a0ef55b14a6f178e92a0c252b984d7b15983ff /lldb/source/Plugins/Process/Utility/RegisterContextLLDB.h
parent8d8f396d86741bdf99e7a47173bc87b526729092 (diff)
downloadbcm5719-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.h7
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
//------------------------------------------------------------------
OpenPOWER on IntegriCloud