[libcxx-commits] [PATCH] D63006: [libunwind][AArch64] Fix libunwind::Registers_arm64::jumpto
Mikhail Maltsev via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Jun 17 03:57:07 PDT 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rL363545: [libunwind][AArch64] Fix libunwind::Registers_arm64::jumpto (authored by miyuki, committed by ).
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Changed prior to commit:
https://reviews.llvm.org/D63006?vs=203554&id=205017#toc
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D63006/new/
https://reviews.llvm.org/D63006
Files:
libunwind/trunk/src/UnwindRegistersRestore.S
Index: libunwind/trunk/src/UnwindRegistersRestore.S
===================================================================
--- libunwind/trunk/src/UnwindRegistersRestore.S
+++ libunwind/trunk/src/UnwindRegistersRestore.S
@@ -575,7 +575,8 @@
ldp x10,x11, [x0, #0x050]
ldp x12,x13, [x0, #0x060]
ldp x14,x15, [x0, #0x070]
- ldp x16,x17, [x0, #0x080]
+ // x16 and x17 were clobbered by the call into the unwinder, so no point in
+ // restoring them.
ldp x18,x19, [x0, #0x090]
ldp x20,x21, [x0, #0x0A0]
ldp x22,x23, [x0, #0x0B0]
@@ -583,8 +584,6 @@
ldp x26,x27, [x0, #0x0D0]
ldp x28,x29, [x0, #0x0E0]
ldr x30, [x0, #0x100] // restore pc into lr
- ldr x1, [x0, #0x0F8]
- mov sp,x1 // restore sp
ldp d0, d1, [x0, #0x110]
ldp d2, d3, [x0, #0x120]
@@ -604,7 +603,13 @@
ldr d30, [x0, #0x200]
ldr d31, [x0, #0x208]
+ // Finally, restore sp. This must be done after the the last read from the
+ // context struct, because it is allocated on the stack, and an exception
+ // could clobber the de-allocated portion of the stack after sp has been
+ // restored.
+ ldr x16, [x0, #0x0F8]
ldp x0, x1, [x0, #0x000] // restore x0,x1
+ mov sp,x16 // restore sp
ret x30 // jump to pc
#elif defined(__arm__) && !defined(__APPLE__)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D63006.205017.patch
Type: text/x-patch
Size: 1406 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20190617/02c0c1ca/attachment-0001.bin>
More information about the libcxx-commits
mailing list