31 lines
1.2 KiB
Diff
31 lines
1.2 KiB
Diff
commit a60339aaff82beadea6f580e587d64052cb5e3b8
|
|
Author: Will Newton <will.newton@linaro.org>
|
|
Date: Mon May 19 14:38:30 2014 +0100
|
|
|
|
AArch64: Fix handling of nocancel syscall failures
|
|
|
|
The current code for nocancel syscalls does not do a comparison of
|
|
the system call return value. This leads to code being generated
|
|
where the b.cs follows the svc instruction directly without setting
|
|
the flags on which the branch depends.
|
|
|
|
ChangeLog:
|
|
|
|
2014-05-20 Will Newton <will.newton@linaro.org>
|
|
|
|
* sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h (PSEUDO):
|
|
Test the return value of the system call in the nocancel case.
|
|
|
|
diff --git a/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h b/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h
|
|
index f6903b5..0e9bef3 100644
|
|
--- a/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h
|
|
+++ b/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h
|
|
@@ -32,6 +32,7 @@
|
|
__##syscall_name##_nocancel: \
|
|
cfi_startproc; \
|
|
DO_CALL (syscall_name, args); \
|
|
+ cmn x0, 4095; \
|
|
PSEUDO_RET; \
|
|
cfi_endproc; \
|
|
.size __##syscall_name##_nocancel,.-__##syscall_name##_nocancel; \
|