forked from OSchip/llvm-project
fcdef15d77
Add a new state for UnwindPlan::Row which indicates that any register not listed is not defined, and should not be found in stack frames newer than this one and passed up the stack. Mostly intended for use with architectural default unwind plans that are used for jitted stack frames, where we have no unwind information or start address. lldb has no way to tell if registers were spilled in the jitted frame & overwritten, so passing register values up the stack is not safe to show the user. Architectural default unwind plans are also used as a fast unwind plan on x86_64 in particular, and are used as the fallback unwind plans when lldb thinks it may be able to work around a problem which causes the unwinder to stop walking the stack early. For fast unwind plans, when we don't find a register location in the arch default unwind plan, we fall back to computing & using the full unwind plan. One small part of this patch is to know that a register marked as Undefined in the fast unwind plan is a special case, and we should continue on to the full unwind plan to find what the real unwind rule is for this register. Differential Revision: https://reviews.llvm.org/D96829 <rdar://problem/70398009> |
||
---|---|---|
.. | ||
ABIMacOSX_i386.cpp | ||
ABIMacOSX_i386.h | ||
ABISysV_i386.cpp | ||
ABISysV_i386.h | ||
ABISysV_x86_64.cpp | ||
ABISysV_x86_64.h | ||
ABIWindows_x86_64.cpp | ||
ABIWindows_x86_64.h | ||
ABIX86.cpp | ||
ABIX86.h | ||
ABIX86_64.h | ||
CMakeLists.txt |