about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2014-01-20 12:58:03 +0000
committerMarcus Shawcroft <marcus.shawcroft@linaro.org>2014-01-20 15:44:05 +0000
commit3a3acb6afc753475675b5724f206e619d0c9590d (patch)
tree17c565f3ad7d09d9890e42495ab3fc9cf20229b9
parentb67e7fe0f9f9b0f6c4386a0eccba83178098438c (diff)
downloadglibc-3a3acb6afc753475675b5724f206e619d0c9590d.tar.gz
glibc-3a3acb6afc753475675b5724f206e619d0c9590d.tar.xz
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.
-rw-r--r--NEWS8
-rw-r--r--ports/ChangeLog.aarch646
-rw-r--r--ports/sysdeps/unix/sysv/linux/aarch64/clone.S7
3 files changed, 16 insertions, 5 deletions
diff --git a/NEWS b/NEWS
index da86ee502e..87ab0485fd 100644
--- a/NEWS
+++ b/NEWS
@@ -22,10 +22,10 @@ Version 2.19
   15919, 15921, 15923, 15939, 15941, 15948, 15963, 15966, 15985, 15988,
   15997, 16032, 16034, 16036, 16037, 16038, 16041, 16055, 16071, 16072,
   16074, 16077, 16078, 16103, 16112, 16133, 16143, 16144, 16146, 16150,
-  16151, 16153, 16167, 16172, 16195, 16214, 16245, 16271, 16274, 16283,
-  16289, 16293, 16314, 16316, 16330, 16337, 16338, 16356, 16365, 16366,
-  16369, 16372, 16375, 16379, 16384, 16385, 16386, 16387, 16390, 16394,
-  16400, 16407, 16408, 16414, 16430, 16453.
+  16151, 16153, 16167, 16169, 16172, 16195, 16214, 16245, 16271, 16274,
+  16283, 16289, 16293, 16314, 16316, 16330, 16337, 16338, 16356, 16365,
+  16366, 16369, 16372, 16375, 16379, 16384, 16385, 16386, 16387, 16390,
+  16394, 16400, 16407, 16408, 16414, 16430, 16453.
 
 * Slovenian translations for glibc messages have been contributed by the
   Translation Project's Slovenian team of translators.
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)