aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineBasicBlock.cpp
diff options
context:
space:
mode:
authorDavid Spickett <david.spickett@linaro.org>2021-10-08 10:44:23 +0000
committerDavid Spickett <david.spickett@linaro.org>2021-11-11 11:32:06 +0000
commit9db2541d4c30100d7ccc6cc9db717df102b302d9 (patch)
tree6ff5617cef74e14e1b4184bdc47ec8969c8c1b0b /llvm/lib/CodeGen/MachineBasicBlock.cpp
parent1e6d9c06a5d20b65499b74a891a0e79cada3803e (diff)
downloadllvm-9db2541d4c30100d7ccc6cc9db717df102b302d9.zip
llvm-9db2541d4c30100d7ccc6cc9db717df102b302d9.tar.gz
llvm-9db2541d4c30100d7ccc6cc9db717df102b302d9.tar.bz2
[lldb][AArch64] Add UnwindPlan for Linux sigreturn
This adds a specific unwind plan for AArch64 Linux sigreturn frames. Previously we assumed that the fp would be valid here but it is not. https://github.com/torvalds/linux/blob/master/arch/arm64/kernel/vdso/sigreturn.S On Ubuntu Bionic it happened to point to an old frame info which meant you got what looked like a correct backtrace. On Focal, the info is completely invalid. (probably due to some code shuffling in libc) This adds an UnwindPlan that knows that the sp in a sigreturn frame points to an rt_sigframe from which we can offset to get saved sp and pc values to backtrace correctly. Based on LibUnwind's change: https://reviews.llvm.org/D90898 A new test is added that sets all compares the frames from the initial signal catch to the handler break. Ensuring that the stack/frame pointer, function name and register values match. (this test is AArch64 Linux specific because it's the only one with a specific unwind plan for this situation) Fixes https://bugs.llvm.org/show_bug.cgi?id=52165 Reviewed By: omjavaid, labath Differential Revision: https://reviews.llvm.org/D112069
Diffstat (limited to 'llvm/lib/CodeGen/MachineBasicBlock.cpp')
0 files changed, 0 insertions, 0 deletions