Skip to content

Commit 6400be0

Browse files
committed
linux-user/aarch64: Add padding before __kernel_rt_sigreturn
Without this padding, an unwind through the signal handler will pick up the unwind info for the preceding syscall. This fixes gcc's 30_threads/thread/native_handle/cancel.cc. Cc: [email protected] Fixes: ee95fae ("linux-user/aarch64: Add vdso") Resolves: https://linaro.atlassian.net/browse/GNU-974 Signed-off-by: Richard Henderson <[email protected]> Reviewed-by: Alex Bennée <[email protected]> Message-Id: <[email protected]>
1 parent 240f46b commit 6400be0

File tree

3 files changed

+4
-0
lines changed

3 files changed

+4
-0
lines changed

linux-user/aarch64/vdso-be.so

8 Bytes
Binary file not shown.

linux-user/aarch64/vdso-le.so

8 Bytes
Binary file not shown.

linux-user/aarch64/vdso.S

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,11 @@ vdso_syscall __kernel_clock_getres, __NR_clock_getres
6363
* For now, elide the unwind info for __kernel_rt_sigreturn and rely on
6464
* the libgcc fallback routine as we have always done. This requires
6565
* that the code sequence used be exact.
66+
*
67+
* Add a nop as a spacer to ensure that unwind does not pick up the
68+
* unwind info from the preceding syscall.
6669
*/
70+
nop
6771
__kernel_rt_sigreturn:
6872
/* No BTI C insn here -- we arrive via RET. */
6973
mov x8, #__NR_rt_sigreturn

0 commit comments

Comments
 (0)