summaryrefslogtreecommitdiff
path: root/ports/sysdeps/unix/sysv/linux/aarch64
diff options
context:
space:
mode:
authorMarcus Shawcroft <marcus.shawcroft@linaro.org>2013-05-12 18:09:33 +0100
committerMarcus Shawcroft <marcus.shawcroft@linaro.org>2013-05-12 18:09:33 +0100
commitd842b1440dc2adc84387b460d4ed536042dd7322 (patch)
treea98ecf4718b46aa5fa374ffeeaf8f2b184541041 /ports/sysdeps/unix/sysv/linux/aarch64
parent601a3a5fd5d2ae7ddef9fb8d742bdef512a7dd0f (diff)
downloadglibc-d842b1440dc2adc84387b460d4ed536042dd7322.tar.gz
[AArch64] Fix out of range branch from ioctl() and clone()
2013-05-12 Marcus Shawcroft <marcus.shawcroft@linaro.org> * sysdeps/unix/sysv/linux/aarch64/clone.S (__clone): Do not call sycall_error directly with a confitional branch. * sysdeps/unix/sysv/linux/aarch64/ioctl.S (__ioctl): Do not call sycall_error directly with a confitional branch.
Diffstat (limited to 'ports/sysdeps/unix/sysv/linux/aarch64')
-rw-r--r--ports/sysdeps/unix/sysv/linux/aarch64/clone.S3
-rw-r--r--ports/sysdeps/unix/sysv/linux/aarch64/ioctl.S4
2 files changed, 3 insertions, 4 deletions
diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/clone.S b/ports/sysdeps/unix/sysv/linux/aarch64/clone.S
index 999ecf21ce..b359e6e8a3 100644
--- a/ports/sysdeps/unix/sysv/linux/aarch64/clone.S
+++ b/ports/sysdeps/unix/sysv/linux/aarch64/clone.S
@@ -65,9 +65,10 @@ ENTRY(__clone)
svc 0x0
cmp x0, #0
beq 2f
- blt C_SYMBOL_NAME(__syscall_error)
+ blt 3f
RET
1: mov x0, #-EINVAL
+3:
b syscall_error
2:
diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/ioctl.S b/ports/sysdeps/unix/sysv/linux/aarch64/ioctl.S
index b089bb55c5..2e08cf708c 100644
--- a/ports/sysdeps/unix/sysv/linux/aarch64/ioctl.S
+++ b/ports/sysdeps/unix/sysv/linux/aarch64/ioctl.S
@@ -24,9 +24,7 @@ ENTRY(__ioctl)
sxtw x0, w0
svc #0x0
cmn x0, #0x1, lsl #12
- b.hi C_SYMBOL_NAME(__syscall_error)
- ret
-
+ PSEUDO_RET
PSEUDO_END (__ioctl)
weak_alias (__ioctl, ioctl)