about summary refs log tree commit diff
path: root/ports/sysdeps/unix/sysv/linux/mips/clone.S
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2013-02-11 18:19:14 +0000
committerJoseph Myers <joseph@codesourcery.com>2013-02-11 18:19:14 +0000
commitaea7a9b9d2f9482d174ab95881b132de8472a388 (patch)
tree288649fb67917ffdbe5438013e4c277e521d9d88 /ports/sysdeps/unix/sysv/linux/mips/clone.S
parent046f153e209a5cd3f74fd7315743b51ff1853af1 (diff)
downloadglibc-aea7a9b9d2f9482d174ab95881b132de8472a388.tar.gz
glibc-aea7a9b9d2f9482d174ab95881b132de8472a388.tar.xz
glibc-aea7a9b9d2f9482d174ab95881b132de8472a388.zip
Add CFI information for MIPS assembly sources.
Diffstat (limited to 'ports/sysdeps/unix/sysv/linux/mips/clone.S')
-rw-r--r--ports/sysdeps/unix/sysv/linux/mips/clone.S19
1 files changed, 15 insertions, 4 deletions
diff --git a/ports/sysdeps/unix/sysv/linux/mips/clone.S b/ports/sysdeps/unix/sysv/linux/mips/clone.S
index 72360f9621..ef801882a9 100644
--- a/ports/sysdeps/unix/sysv/linux/mips/clone.S
+++ b/ports/sysdeps/unix/sysv/linux/mips/clone.S
@@ -47,7 +47,8 @@ NESTED(__clone,4*SZREG,sp)
 	SETUP_GP
 #endif
 	PTR_SUBU sp, FRAMESZ
-	SETUP_GP64 (GPOFF, __clone)
+	cfi_adjust_cfa_offset (FRAMESZ)
+	SETUP_GP64_STACK (GPOFF, __clone)
 #ifdef __PIC__
 	SAVE_GP (GPOFF)
 #endif
@@ -88,26 +89,35 @@ NESTED(__clone,4*SZREG,sp)
 
 	/* Do the system call */
 	li		v0,__NR_clone
+	cfi_endproc
 	syscall
 
 	bnez		a3,L(error)
 	beqz		v0,L(thread_start)
 
 	/* Successful return from the parent */
-	RESTORE_GP64
+	cfi_startproc
+	cfi_adjust_cfa_offset (FRAMESZ)
+	SETUP_GP64_STACK_CFI (GPOFF)
+	cfi_remember_state
+	RESTORE_GP64_STACK
 	PTR_ADDU	sp, FRAMESZ
+	cfi_adjust_cfa_offset (-FRAMESZ)
 	ret
 
 	/* Something bad happened -- no child created */
 L(error):
+	cfi_restore_state
 #ifdef __PIC__
 	PTR_LA		t9,__syscall_error
-	RESTORE_GP64
+	RESTORE_GP64_STACK
 	PTR_ADDU	sp, FRAMESZ
+	cfi_adjust_cfa_offset (-FRAMESZ)
 	jr		t9
 #else
-	RESTORE_GP64
+	RESTORE_GP64_STACK
 	PTR_ADDU	sp, FRAMESZ
+	cfi_adjust_cfa_offset (-FRAMESZ)
 	j		__syscall_error
 #endif
 	END(__clone)
@@ -118,6 +128,7 @@ L(error):
 
 ENTRY(__thread_start)
 L(thread_start):
+	cfi_undefined ($31)
 	/* cp is already loaded.  */
 	SAVE_GP (GPOFF)
 	/* The stackframe has been created on entry of clone().  */