diff options
author | Tom Tromey <tromey@redhat.com> | 2014-01-20 12:58:03 +0000 |
---|---|---|
committer | Marcus Shawcroft <marcus.shawcroft@linaro.org> | 2014-01-20 15:44:05 +0000 |
commit | 3a3acb6afc753475675b5724f206e619d0c9590d (patch) | |
tree | 17c565f3ad7d09d9890e42495ab3fc9cf20229b9 /ports | |
parent | b67e7fe0f9f9b0f6c4386a0eccba83178098438c (diff) | |
download | glibc-3a3acb6afc753475675b5724f206e619d0c9590d.tar glibc-3a3acb6afc753475675b5724f206e619d0c9590d.tar.gz glibc-3a3acb6afc753475675b5724f206e619d0c9590d.tar.bz2 glibc-3a3acb6afc753475675b5724f206e619d0c9590d.zip |
[AArch64] BZ #16169 Add CFI directives to clone.S
[BZ #16169] Add CFI directives to the AArch64 clone.S implementation
and ensure that the FP in the child is zero'd in order to comply with
AAPCS.
Diffstat (limited to 'ports')
-rw-r--r-- | ports/ChangeLog.aarch64 | 6 | ||||
-rw-r--r-- | ports/sysdeps/unix/sysv/linux/aarch64/clone.S | 7 |
2 files changed, 12 insertions, 1 deletions
diff --git a/ports/ChangeLog.aarch64 b/ports/ChangeLog.aarch64 index 19d8fe13a0..f11a086536 100644 --- a/ports/ChangeLog.aarch64 +++ b/ports/ChangeLog.aarch64 @@ -1,3 +1,9 @@ +2014-01-20 Tom Tromey <tromey@redhat.com> + + [BZ #16169] + * sysdeps/unix/sysv/linux/aarch64/clone.S (__clone): Add CFI + directives; Zero x29. + 2014-01-20 Marcus Shawcroft <marcus.shawcroft@linaro.org> * sysdeps/aarch64/configure.ac: New file. diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/clone.S b/ports/sysdeps/unix/sysv/linux/aarch64/clone.S index 2ca8021064..f2964f4871 100644 --- a/ports/sysdeps/unix/sysv/linux/aarch64/clone.S +++ b/ports/sysdeps/unix/sysv/linux/aarch64/clone.S @@ -63,6 +63,7 @@ ENTRY(__clone) mov x8, #SYS_ify(clone) /* X0:flags, x1:newsp, x2:parenttidptr, x3:newtls, x4:childtid. */ svc 0x0 + cfi_endproc cmp x0, #0 beq 2f blt 3f @@ -72,6 +73,9 @@ ENTRY(__clone) b syscall_error 2: + cfi_startproc + cfi_undefined (x30) + mov x29, 0 #ifdef RESET_PID tbnz x5, #CLONE_THREAD_BIT, 3f mov x0, #-1 @@ -93,7 +97,8 @@ ENTRY(__clone) /* We are done, pass the return value through x0. */ b HIDDEN_JUMPTARGET(_exit) - + cfi_endproc + cfi_startproc PSEUDO_END (__clone) weak_alias (__clone, clone) |