aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
diff options
context:
space:
mode:
authorJason Molenda <jmolenda@apple.com>2020-02-25 14:55:47 -0800
committerJason Molenda <jmolenda@apple.com>2020-02-25 14:58:20 -0800
commit4b2b8b96db2837a95e8c3ceca3f31ac5641ca001 (patch)
tree05b9a4d3555a359793bd7a47c4c891aed7c25c7e /lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
parent3b5530cf9647cf79ee45aef42c4f5fa7cc9acfd9 (diff)
downloadllvm-4b2b8b96db2837a95e8c3ceca3f31ac5641ca001.zip
llvm-4b2b8b96db2837a95e8c3ceca3f31ac5641ca001.tar.gz
llvm-4b2b8b96db2837a95e8c3ceca3f31ac5641ca001.tar.bz2
Re-land Unwind past an interrupt handler correctly on arm or at pc==0
Updated the patch to only fetch $pc on a Return Address-using target only if we're in a trap frame *and* if there is a saved location for $pc in the trap frame's unwind rules. If not, we fall back to fetching the Return Address register (eg $lr). Original commit msg: Unwind past an interrupt handler correctly on arm or at pc==0 Fix RegisterContextLLDB::InitializeNonZerothFrame so that it will fetch a FullUnwindPlan instead of falling back to the architectural default unwind plan -- GetFullUnwindPlan knows how to spot a jmp 0x0 that results in a fault, which may be the case when we see a trap handler on the stack. Fix RegisterContextLLDB::SavedLocationForRegister so that when the pc value is requested from a trap handler frame, where we have a complete register context available to us, don't provide the Return Address register (lr) instead of the pc. We have an actual pc value here, and it's pointing to the instruction that faulted. Differential revision: https://reviews.llvm.org/D75007 <rdar://problem/59416588>
Diffstat (limited to 'lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp')
0 files changed, 0 insertions, 0 deletions