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.
This commit is contained in:
Will Newton 2014-05-19 14:38:30 +01:00
parent 7d05a8168b
commit a60339aaff
2 changed files with 6 additions and 0 deletions

View File

@ -1,3 +1,8 @@
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.
2014-05-20 Will Newton <will.newton@linaro.org>
Yvan Roux <yvan.roux@linaro.org>

View File

@ -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; \