public inbox for libc-hacker@sourceware.org
 help / color / mirror / Atom feed
* cfi directives for s390*.
@ 2003-12-05 17:48 Martin Schwidefsky
  2003-12-06  0:20 ` Ulrich Drepper
  0 siblings, 1 reply; 2+ messages in thread
From: Martin Schwidefsky @ 2003-12-05 17:48 UTC (permalink / raw)
  To: libc-hacker

Hi,
I inspected all s390* assembler files and added CFI directives to them.
The directives necessary for cancallation support are already there.
Whats missing are the cfi calls in the remaining .S files which come
in handy for debugging. I hope I got them all...

blue skies,
  Martin.

2003-12-05  Martin Schwidefsky  <schwidefsky@de.ibm.com>

	* sysdeps/s390/s390-32/elf/setjmp.S (setjmp, __setjmp): Add END
	statements.
	* sysdeps/s390/s390-64/elf/setjmp.S (setjmp, __setjmp): Likewise.
	* sysdeps/s390/s390-32/sysdep.h (ENTRY): Add cfi_startproc directive.
	(END): Add cfi_endproc directive.
	* sysdeps/s390/s390-64/sysdep.h (ENTRY, END): Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/socket.S (__socket): Remove
	cfi_startproc and cfi_endproc directive.
	* sysdeps/unix/sysv/linux/s390/s390-64/socket.S (__socket): Likewise.
	* sysdeps/s390/s390-32/addmul_1.S (__mpn_addmul_1): Add CFI directives.
	* sysdeps/s390/s390-32/add_n.S (__mpn_add_n): Likewise.
	* sysdeps/s390/s390-64/add_n.S (__mpn_add_n): Likewise.
	* sysdeps/s390/s390-32/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE):
	Likewise.
	* sysdeps/s390/s390-64/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE):
	Likewise.
	* sysdeps/s390/s390-32/mul_1.S (__mpn_mul_1): Likewise.
	* sysdeps/s390/s390-32/sub_n.S (__mpn_sub_n): Likewise.
	* sysdeps/s390/s390-64/sub_n.S (__mpn_sub_n): Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S (__mmap64): Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/mmap.S (__mmap): Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-64/mmap.S (__mmap): Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/syscall.S (syscall): Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-64/syscall.S (syscall): Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S (__syscall_error):
	Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S (__syscall_error):
	Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/clone.S (__clone): Add CFI
	directives. Move thread_start out of ENTRY/PSEUDO_END block to
	make backchain terminate.
	* sysdeps/unix/sysv/linux/s390/s390-64/clone.S (__clone): Likewise.

diff -urN libc/sysdeps/s390/s390-32/addmul_1.S libc-s390/sysdeps/s390/s390-32/addmul_1.S
--- libc/sysdeps/s390/s390-32/addmul_1.S	2003-11-14 13:59:00.000000000 +0100
+++ libc-s390/sysdeps/s390/s390-32/addmul_1.S	2003-12-05 14:38:06.000000000 +0100
@@ -33,6 +33,7 @@
 	.text
 ENTRY(__mpn_addmul_1)
 	st     %r6,24(%r15)
+	cfi_offset (%r6, -72)
 	slr    %r6,%r6            # cy_limb = 0
 .L0:	icm    %r1,15,0(%r3)      # get s1_ptr[i]
 	mr     %r0,%r5            # umul_ppmm(prod_high,prod_low,s1_ptr[j],s2_limb)
diff -urN libc/sysdeps/s390/s390-32/add_n.S libc-s390/sysdeps/s390/s390-32/add_n.S
--- libc/sysdeps/s390/s390-32/add_n.S	2003-11-14 13:59:00.000000000 +0100
+++ libc-s390/sysdeps/s390/s390-32/add_n.S	2003-12-05 14:38:06.000000000 +0100
@@ -33,6 +33,7 @@
 	.text
 ENTRY(__mpn_add_n)
 	st     %r6,24(%r15)   # save register 6
+	cfi_offset (%r6, -72)
 	sr     %r1,%r1
         lhi    %r0,1          # cannot use ahi to add carry, use alr
 .L0:	l      %r6,0(%r1,%r3) # .L0 -> no carry from last add
diff -urN libc/sysdeps/s390/s390-32/dl-machine.h libc-s390/sysdeps/s390/s390-32/dl-machine.h
--- libc/sysdeps/s390/s390-32/dl-machine.h	2003-11-14 13:59:00.000000000 +0100
+++ libc-s390/sysdeps/s390/s390-32/dl-machine.h	2003-12-05 14:38:06.000000000 +0100
@@ -146,12 +146,14 @@
     .globl _dl_runtime_resolve\n\
     .type _dl_runtime_resolve, @function\n\
     .align 16\n\
+    " CFI_STARTPROC "\n\
 _dl_runtime_resolve:\n\
     # save registers\n\
     stm    2,5,32(15)\n\
     st     14,48(15)\n\
     lr     0,15\n\
     ahi    15,-96\n\
+    " CFI_ADJUST_CFA_OFFSET(96)"\n\
     st     0,0(15)\n\
     # load args saved by PLT\n\
     lm     2,3,120(15)\n\
@@ -162,21 +164,25 @@
     lr     1,2          # function addr returned in r2\n\
     # restore registers\n\
     ahi    15,96\n\
+    " CFI_ADJUST_CFA_OFFSET(-96)" \n\
     l      14,48(15)\n\
     lm     2,5,32(15)\n\
     br     1\n\
 1:  .long  fixup-1b\n\
+    " CFI_ENDPROC "\n\
     .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
 \n\
     .globl _dl_runtime_profile\n\
     .type _dl_runtime_profile, @function\n\
     .align 16\n\
+    " CFI_STARTPROC "\n\
 _dl_runtime_profile:\n\
     # save registers\n\
     stm    2,5,32(15)\n\
     st     14,48(15)\n\
     lr     0,15\n\
     ahi    15,-96\n\
+    " CFI_ADJUST_CFA_OFFSET(96)"\n\
     st     0,0(15)\n\
     # load args saved by PLT\n\
     lm     2,3,120(15)\n\
@@ -189,10 +195,12 @@
     lr     1,2          # function addr returned in r2\n\
     # restore registers\n\
     ahi    15,96\n\
+    " CFI_ADJUST_CFA_OFFSET(-96)" \n\
     l      14,48(15)\n\
     lm     2,5,32(15)\n\
     br     1\n\
 1:  .long  profile_fixup-1b\n\
+    " CFI_ENDPROC "\n\
     .size _dl_runtime_profile, .-_dl_runtime_profile\n\
 ");
 #else
@@ -204,6 +212,7 @@
     .type _dl_runtime_resolve, @function\n\
     .type _dl_runtime_profile, @function\n\
     .align 16\n\
+    " CFI_STARTPROC "\n\
 _dl_runtime_resolve:\n\
 _dl_runtime_profile:\n\
     # save registers\n\
@@ -211,6 +220,7 @@
     st     14,48(15)\n\
     lr     0,15\n\
     ahi    15,-96\n\
+    " CFI_ADJUST_CFA_OFFSET(96)"\n\
     st     0,0(15)\n\
     # load args saved by PLT\n\
     lm     2,3,120(15)\n\
@@ -223,10 +233,12 @@
     lr     1,2          # function addr returned in r2\n\
     # restore registers\n\
     ahi    15,96\n\
+    " CFI_ADJUST_CFA_OFFSET(-96)" \n\
     l      14,48(15)\n\
     lm     2,5,32(15)\n\
     br     1\n\
 1:  .long  fixup-1b\n\
+    " CFI_ENDPROC "\n\
     .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
     .size _dl_runtime_profile, .-_dl_runtime_profile\n\
 ");
diff -urN libc/sysdeps/s390/s390-32/elf/setjmp.S libc-s390/sysdeps/s390/s390-32/elf/setjmp.S
--- libc/sysdeps/s390/s390-32/elf/setjmp.S	2003-11-14 13:59:00.000000000 +0100
+++ libc-s390/sysdeps/s390/s390-32/elf/setjmp.S	2003-12-05 14:38:06.000000000 +0100
@@ -34,9 +34,15 @@
 	/* Binary compatibility entry point.  */
 ENTRY(_setjmp)
 	.weak  C_SYMBOL_NAME (_setjmp)
+	lhi    %r3,0                /* second argument of zero */
+	j      .Linternal_sigsetjmp /* branch relativ to __sigsetjmp */
+END (_setjmp)
 libc_hidden_def (_setjmp)
+
 ENTRY(__setjmp)
 	lhi    %r3,0                /* second argument of zero */
+	j      .Linternal_sigsetjmp /* branch relativ to __sigsetjmp */
+END (__setjmp)
 
 ENTRY(__sigsetjmp)
 .Linternal_sigsetjmp:
diff -urN libc/sysdeps/s390/s390-32/mul_1.S libc-s390/sysdeps/s390/s390-32/mul_1.S
--- libc/sysdeps/s390/s390-32/mul_1.S	2003-11-14 13:59:00.000000000 +0100
+++ libc-s390/sysdeps/s390/s390-32/mul_1.S	2003-12-05 14:38:06.000000000 +0100
@@ -33,6 +33,7 @@
 	.text
 ENTRY(__mpn_mul_1)
 	st     %r6,24(%r15)
+	cfi_offset (%r6, -72)
 	slr    %r6,%r6            # cy_limb = 0
 .L0:    icm    %r1,15,0(%r3)      # get s1_ptr[i]
 	mr     %r0,%r5            # umul_ppmm(prod_high,prod_low,s1_ptr[j],s2_limb)
diff -urN libc/sysdeps/s390/s390-32/sub_n.S libc-s390/sysdeps/s390/s390-32/sub_n.S
--- libc/sysdeps/s390/s390-32/sub_n.S	2003-11-14 13:59:00.000000000 +0100
+++ libc-s390/sysdeps/s390/s390-32/sub_n.S	2003-12-05 14:38:06.000000000 +0100
@@ -32,6 +32,7 @@
 
 ENTRY(__mpn_sub_n)
 	st     %r6,24(%r15)   # save register 6
+	cfi_offset (%r6, -72)
 	sr     %r1,%r1
 	lhi    %r0,1          # cannot use ahi to add carry, use slr
 .L0:    l      %r6,0(%r1,%r3) # .L0 -> no carry from last sub
diff -urN libc/sysdeps/s390/s390-32/sysdep.h libc-s390/sysdeps/s390/s390-32/sysdep.h
--- libc/sysdeps/s390/s390-32/sysdep.h	2003-11-14 13:59:00.000000000 +0100
+++ libc-s390/sysdeps/s390/s390-32/sysdep.h	2003-12-05 14:38:06.000000000 +0100
@@ -51,10 +51,12 @@
   ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function)			      \
   .align ALIGNARG(2);							      \
   C_LABEL(name)								      \
+  cfi_startproc;							      \
   CALL_MCOUNT
 
 #undef	END
 #define END(name)							      \
+  cfi_endproc;								      \
   ASM_SIZE_DIRECTIVE(name)						      \
 
 /* If compiled for profiling, call `mcount' at the start of each function.  */
diff -urN libc/sysdeps/s390/s390-64/add_n.S libc-s390/sysdeps/s390/s390-64/add_n.S
--- libc/sysdeps/s390/s390-64/add_n.S	2003-11-14 13:59:00.000000000 +0100
+++ libc-s390/sysdeps/s390/s390-64/add_n.S	2003-12-05 14:38:06.000000000 +0100
@@ -33,6 +33,7 @@
 	.text
 ENTRY(__mpn_add_n)
 	stg    %r6,48(%r15)   # save register 6
+	cfi_offset (%r6,-112)
 	slgr   %r1,%r1
         lghi   %r0,1          # cannot use ahi to add carry, use alr
 .L0:	lg     %r6,0(%r1,%r3) # .L0 -> no carry from last add
diff -urN libc/sysdeps/s390/s390-64/dl-machine.h libc-s390/sysdeps/s390/s390-64/dl-machine.h
--- libc/sysdeps/s390/s390-64/dl-machine.h	2003-11-14 13:59:00.000000000 +0100
+++ libc-s390/sysdeps/s390/s390-64/dl-machine.h	2003-12-05 14:38:06.000000000 +0100
@@ -139,12 +139,14 @@
     .globl _dl_runtime_resolve\n\
     .type _dl_runtime_resolve, @function\n\
     .align 16\n\
+    " CFI_STARTPROC "\n\
 _dl_runtime_resolve:\n\
     # save registers\n\
     stmg   2,5,64(15)\n\
     stg	   14,96(15)\n\
     lgr	   0,15\n\
     aghi   15,-160\n\
+    " CFI_ADJUST_CFA_OFFSET(160)"\n\
     stg	   0,0(15)\n\
     # load args saved by PLT\n\
     lmg	   2,3,208(15)\n\
@@ -152,20 +154,24 @@
     lgr	   1,2		# function addr returned in r2\n\
     # restore registers\n\
     aghi   15,160\n\
+    " CFI_ADJUST_CFA_OFFSET(-160)" \n\
     lg	   14,96(15)\n\
     lmg	   2,5,64(15)\n\
     br	   1\n\
+    " CFI_ENDPROC "\n\
     .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
 \n\
     .globl _dl_runtime_profile\n\
     .type _dl_runtime_profile, @function\n\
     .align 16\n\
+    " CFI_STARTPROC "\n\
 _dl_runtime_profile:\n\
     # save registers\n\
     stmg   2,5,64(15)\n\
     stg	   14,96(15)\n\
     lgr	   0,15\n\
     aghi   15,-160\n\
+    " CFI_ADJUST_CFA_OFFSET(160)"\n\
     stg	   0,0(15)\n\
     # load args saved by PLT\n\
     lmg	   2,3,208(15)\n\
@@ -175,9 +181,11 @@
     lgr	   1,2		# function addr returned in r2\n\
     # restore registers\n\
     aghi   15,160\n\
+    " CFI_ADJUST_CFA_OFFSET(-160)" \n\
     lg	   14,96(15)\n\
     lmg	   2,5,64(15)\n\
     br	   1\n\
+    " CFI_ENDPROC "\n\
     .size _dl_runtime_profile, .-_dl_runtime_profile\n\
 ");
 #else
@@ -189,6 +197,7 @@
     .type _dl_runtime_resolve, @function\n\
     .type _dl_runtime_profile, @function\n\
     .align 16\n\
+    " CFI_STARTPROC "\n\
 _dl_runtime_resolve:\n\
 _dl_runtime_profile:\n\
     # save registers\n\
@@ -196,6 +205,7 @@
     stg	   14,96(15)\n\
     lgr	   0,15\n\
     aghi   15,-160\n\
+    " CFI_ADJUST_CFA_OFFSET(160)"\n\
     stg	   0,0(15)\n\
     # load args saved by PLT\n\
     lmg	   2,3,208(15)\n\
@@ -205,9 +215,11 @@
     lgr	   1,2		# function addr returned in r2\n\
     # restore registers\n\
     aghi   15,160\n\
+    " CFI_ADJUST_CFA_OFFSET(-160)" \n\
     lg	   14,96(15)\n\
     lmg	   2,5,64(15)\n\
     br	   1\n\
+    " CFI_ENDPROC "\n\
     .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
     .size _dl_runtime_profile, .-_dl_runtime_profile\n\
 ");
diff -urN libc/sysdeps/s390/s390-64/elf/setjmp.S libc-s390/sysdeps/s390/s390-64/elf/setjmp.S
--- libc/sysdeps/s390/s390-64/elf/setjmp.S	2003-11-14 13:59:00.000000000 +0100
+++ libc-s390/sysdeps/s390/s390-64/elf/setjmp.S	2003-12-05 14:38:06.000000000 +0100
@@ -34,9 +34,15 @@
 	/* Binary compatibility entry point.  */
 ENTRY(_setjmp)
         .weak  C_SYMBOL_NAME (_setjmp)
+        slgr   %r3,%r3              /* Second argument of zero.  */
+        j      .Linternal_sigsetjmp /* Branch relativ to __sigsetjmp.  */
+END (setjmp)
 libc_hidden_def (_setjmp)
+
 ENTRY(__setjmp)
         slgr   %r3,%r3              /* Second argument of zero.  */
+        j      .Linternal_sigsetjmp /* Branch relativ to __sigsetjmp.  */
+END (setjmp)
 
 ENTRY(__sigsetjmp)
 .Linternal_sigsetjmp:
diff -urN libc/sysdeps/s390/s390-64/sub_n.S libc-s390/sysdeps/s390/s390-64/sub_n.S
--- libc/sysdeps/s390/s390-64/sub_n.S	2003-11-14 13:59:00.000000000 +0100
+++ libc-s390/sysdeps/s390/s390-64/sub_n.S	2003-12-05 14:38:06.000000000 +0100
@@ -30,6 +30,7 @@
 
 ENTRY(__mpn_sub_n)
         stg    %r6,48(%r15)   # save register 6
+	cfi_offset (%r6,-112)
         sgr    %r1,%r1
         lghi   %r0,1          # cannot use ahi to add carry, use slr
 .L0:	lg     %r6,0(%r1,%r3) # .L0 -> no carry from last sub
diff -urN libc/sysdeps/s390/s390-64/sysdep.h libc-s390/sysdeps/s390/s390-64/sysdep.h
--- libc/sysdeps/s390/s390-64/sysdep.h	2003-11-14 13:59:00.000000000 +0100
+++ libc-s390/sysdeps/s390/s390-64/sysdep.h	2003-12-05 14:38:06.000000000 +0100
@@ -51,10 +51,12 @@
   ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function)			      \
   .align ALIGNARG(2);							      \
   C_LABEL(name)								      \
+  cfi_startproc;							      \
   CALL_MCOUNT
 
 #undef	END
 #define END(name)							      \
+  cfi_endproc;								      \
   ASM_SIZE_DIRECTIVE(name)						      \
 
 /* If compiled for profiling, call `mcount' at the start of each function.  */
diff -urN libc/sysdeps/unix/sysv/linux/s390/s390-32/clone.S libc-s390/sysdeps/unix/sysv/linux/s390/s390-32/clone.S
--- libc/sysdeps/unix/sysv/linux/s390/s390-32/clone.S	2003-11-14 13:59:00.000000000 +0100
+++ libc-s390/sysdeps/unix/sysv/linux/s390/s390-32/clone.S	2003-12-05 14:38:29.000000000 +0100
@@ -32,6 +32,7 @@
 	.text
 ENTRY(__clone)
 	st	%r6,24(%r15)		/* store %r6 to save area */
+	cfi_offset (%r6, -72)
 	lr	%r0,%r5			/* move *arg out of the way */
 	ltr     %r1,%r2			/* check fn and move to %r1 */
 	jz      error			/* no NULL function pointers */
@@ -50,6 +51,7 @@
 error:
 	lhi	%r2,-EINVAL
 	j	SYSCALL_ERROR_LABEL
+PSEUDO_END (__clone)
 	
 thread_start:
 	/* fn is in gpr 1, arg in gpr 0 */
@@ -71,5 +73,4 @@
 	br      %r1             /* branch to _exit -> thread termination */
 .L1:	.long   _exit - .L0
 #endif
-PSEUDO_END (__clone)
 weak_alias (__clone, clone)
diff -urN libc/sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S libc-s390/sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S
--- libc/sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S	2003-11-14 13:59:00.000000000 +0100
+++ libc-s390/sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S	2003-12-05 14:38:06.000000000 +0100
@@ -26,8 +26,19 @@
 ENTRY(__mmap64)
 	/* Save registers and setup stack frame.  */
 	stm	%r6,%r15,24(%r15)
+	cfi_offset (%r15, -36)
+	cfi_offset (%r14, -40)
+	cfi_offset (%r13, -44)
+	cfi_offset (%r12, -48)
+	cfi_offset (%r11, -52)
+	cfi_offset (%r10, -56)
+	cfi_offset (%r9, -60)
+	cfi_offset (%r8, -64)
+	cfi_offset (%r7, -68)
+	cfi_offset (%r6, -72)
 	lr	%r1,%r15
 	ahi	%r15,-120		/* Buy stack space.   */
+	cfi_adjust_cfa_offset (120)
 	st	%r1,0(%r15)		/* Store back chain.  */
 
 	/* Store parameters on stack, because mmap2 and old_mmap
@@ -56,6 +67,7 @@
 #endif
 
 	l	%r15,0(%r15)		/* Load back chain.  */
+	cfi_adjust_cfa_offset (-120)
 	lm	%r6,%r15,24(%r15)	/* Load registers.  */
 
 	/* Check gpr 2 for error.  */
diff -urN libc/sysdeps/unix/sysv/linux/s390/s390-32/mmap.S libc-s390/sysdeps/unix/sysv/linux/s390/s390-32/mmap.S
--- libc/sysdeps/unix/sysv/linux/s390/s390-32/mmap.S	2003-11-14 13:59:00.000000000 +0100
+++ libc-s390/sysdeps/unix/sysv/linux/s390/s390-32/mmap.S	2003-12-05 14:38:06.000000000 +0100
@@ -25,8 +25,19 @@
 ENTRY(__mmap)
 	/* Save registers and setup stack frame.  */
 	stm     %r6,%r15,24(%r15)
+	cfi_offset (%r15, -36)
+	cfi_offset (%r14, -40)
+	cfi_offset (%r13, -44)
+	cfi_offset (%r12, -48)
+	cfi_offset (%r11, -52)
+	cfi_offset (%r10, -56)
+	cfi_offset (%r9, -60)
+	cfi_offset (%r8, -64)
+	cfi_offset (%r7, -68)
+	cfi_offset (%r6, -72)
 	lr      %r1,%r15
 	ahi     %r15,-120               /* buy stack space */
+	cfi_adjust_cfa_offset (120)
 	st      %r1,0(%r15)             /* store back chain */
 
 	/* Store parameters on stack, because old_mmap/mmap2
@@ -57,6 +68,7 @@
 #endif
 
 1:	l       %r15,0(%r15)            /* Load back chain.  */
+	cfi_adjust_cfa_offset (-120)
 	lm      %r6,%r15,24(%r15)       /* Load registers.  */
 
 	/* check gpr 2 for error */
diff -urN libc/sysdeps/unix/sysv/linux/s390/s390-32/socket.S libc-s390/sysdeps/unix/sysv/linux/s390/s390-32/socket.S
--- libc/sysdeps/unix/sysv/linux/s390/s390-32/socket.S	2003-11-14 13:59:00.000000000 +0100
+++ libc-s390/sysdeps/unix/sysv/linux/s390/s390-32/socket.S	2003-12-05 14:38:06.000000000 +0100
@@ -47,8 +47,6 @@
 
 .globl __socket
 ENTRY(__socket)
-	cfi_startproc
-
 	/* Save registers and setup stack.  */
 	stm     %r6,%r15,24(%r15)       /* save registers */
 	cfi_offset (%r15, -36)
@@ -136,7 +134,6 @@
 2:	.long	CENABLE-1b
 3:	.long	CDISABLE-1b
 #endif
-	cfi_endproc
 
 	SYSCALL_ERROR_HANDLER
 END (__socket)
diff -urN libc/sysdeps/unix/sysv/linux/s390/s390-32/syscall.S libc-s390/sysdeps/unix/sysv/linux/s390/s390-32/syscall.S
--- libc/sysdeps/unix/sysv/linux/s390/s390-32/syscall.S	2003-11-14 13:59:00.000000000 +0100
+++ libc-s390/sysdeps/unix/sysv/linux/s390/s390-32/syscall.S	2003-12-05 14:38:06.000000000 +0100
@@ -25,9 +25,20 @@
 ENTRY (syscall)
 	/* Save registers and setup stack.  */
 	stm     %r6,%r15,24(%r15)  /* save registers */
+	cfi_offset (%r15, -36)
+	cfi_offset (%r14, -40)
+	cfi_offset (%r13, -44)
+	cfi_offset (%r12, -48)
+	cfi_offset (%r11, -52)
+	cfi_offset (%r10, -56)
+	cfi_offset (%r9, -60)
+	cfi_offset (%r8, -64)
+	cfi_offset (%r7, -68)
+	cfi_offset (%r6, -72)
 	lr      %r1,%r15
 	l       %r0,4(0,%r15)      /* load eos */
 	ahi     %r15,-96           /* buy stack space */
+	cfi_adjust_cfa_offset (96)
 	st      %r1,0(0,%r15)      /* store back chain */
 	st      %r0,4(0,%r15)      /* store eos */
 
@@ -45,6 +56,7 @@
 	j      3f
 2:	ex     %r1,1b-0b(%r7)      /* lsb of R1 is subsituted as SVC number */
 3:	l      %r15,0(%r15)        /* load back chain */
+	cfi_adjust_cfa_offset (-96)
 	lm     %r6,15,24(%r15)     /* load registers */
 
 	lhi    %r0,-4095
diff -urN libc/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S libc-s390/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S
--- libc/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S	2003-11-14 13:59:00.000000000 +0100
+++ libc-s390/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S	2003-12-05 14:38:06.000000000 +0100
@@ -55,8 +55,12 @@
 1:	.long  errno
 # else
 	stm	%r13,%r15,52(%r15)
+	cfi_offset (%r15, -36)
+	cfi_offset (%r14, -40)
+	cfi_offset (%r13, -44)
 	lr	%r0,%r15
 	ahi	%r15,-96
+	cfi_adjust_cfa_offset (96)
 	lcr	%r13,%r2
 	st	%r0,0(%r15)
 	basr	%r1,0
@@ -64,6 +68,7 @@
 	basr	%r14,%r1
 	st	%r13,0(%r2)
 	lm	%r13,%r15,148(%r15)
+	cfi_adjust_cfa_offset (-96)
 	lhi	%r2,-1
 	br	%r14
 1:	.long  __errno_location
@@ -103,8 +108,14 @@
 1:	.long	_GLOBAL_OFFSET_TABLE_-0b
 # else
 	stm	%r11,%r15,44(%r15)
+	cfi_offset (%r15, -36)
+	cfi_offset (%r14, -40)
+	cfi_offset (%r13, -44)
+	cfi_offset (%r12, -48)
+	cfi_offset (%r11, -52)
 	lr	%r0,%r15
 	ahi	%r15,-96
+	cfi_adjust_cfa_offset (96)
 	lcr	%r11,%r2
 	st	%r0,0(%r15)
 	basr	%r13,0
@@ -114,6 +125,7 @@
 	bas	%r14,0(%r1,%r13)
 	st	%r11,0(%r2)
 	lm	%r11,%r15,140(%r15)
+	cfi_adjust_cfa_offset (-96)
 	lhi	%r2,-1
 	br	%r14
 1:	.long _GLOBAL_OFFSET_TABLE_-0b
diff -urN libc/sysdeps/unix/sysv/linux/s390/s390-64/clone.S libc-s390/sysdeps/unix/sysv/linux/s390/s390-64/clone.S
--- libc/sysdeps/unix/sysv/linux/s390/s390-64/clone.S	2003-11-14 13:59:00.000000000 +0100
+++ libc-s390/sysdeps/unix/sysv/linux/s390/s390-64/clone.S	2003-12-05 14:38:49.000000000 +0100
@@ -33,6 +33,7 @@
 	.text
 ENTRY(__clone)
 	stg	%r6,48(%r15)		/* store %r6 to save area */
+	cfi_offset (%r6,-112)
 	lgr	%r0,%r5			/* move *arg out of the way */
 	ltgr    %r1,%r2			/* check fn and move to %r1 */
 	jz      error			/* no NULL function pointers */
@@ -51,6 +52,7 @@
 error:
 	lghi	%r2,-EINVAL
 	jg	SYSCALL_ERROR_LABEL
+PSEUDO_END (__clone)
 
 thread_start:
 	/* fn is in gpr 1, arg in gpr 0 */
@@ -63,5 +65,4 @@
 #else
 	jg	_exit		/* branch to _exit -> thread termination */
 #endif
-PSEUDO_END (__clone)
 weak_alias (__clone, clone)
diff -urN libc/sysdeps/unix/sysv/linux/s390/s390-64/mmap.S libc-s390/sysdeps/unix/sysv/linux/s390/s390-64/mmap.S
--- libc/sysdeps/unix/sysv/linux/s390/s390-64/mmap.S	2003-11-14 13:59:00.000000000 +0100
+++ libc-s390/sysdeps/unix/sysv/linux/s390/s390-64/mmap.S	2003-12-05 14:38:06.000000000 +0100
@@ -27,9 +27,20 @@
 ENTRY(__mmap)
 	/* Save registers and setup stack frame.  */
         stmg    %r6,%r15,48(%r15)
+	cfi_offset (%r15,-40)
+	cfi_offset (%r14,-48)
+	cfi_offset (%r13,-56)
+	cfi_offset (%r12,-64)
+	cfi_offset (%r11,-72)
+	cfi_offset (%r10,-80)
+	cfi_offset (%r9,-88)
+	cfi_offset (%r8,-96)
+	cfi_offset (%r7,-104)
+	cfi_offset (%r6,-112)
         lgr     %r1,%r15
         lg      %r0,8(%r15)             /* Load eos.  */
         aghi    %r15,-208               /* Buy stack space.  */
+	cfi_adjust_cfa_offset (208)
         stg     %r1,0(%r15)             /* Store back chain.  */
         stg     %r0,8(%r15)             /* Store eos.  */
 
@@ -50,6 +61,7 @@
         svc     SYS_ify(mmap)
 
         lg      %r15,0(%r15)            /* Load back chain.  */
+	cfi_adjust_cfa_offset (-208)
         lmg     %r6,%r15,48(%r15)       /* Load registers.  */
 
         /* Check gpr 2 for error.  */ 
diff -urN libc/sysdeps/unix/sysv/linux/s390/s390-64/socket.S libc-s390/sysdeps/unix/sysv/linux/s390/s390-64/socket.S
--- libc/sysdeps/unix/sysv/linux/s390/s390-64/socket.S	2003-11-14 13:59:00.000000000 +0100
+++ libc-s390/sysdeps/unix/sysv/linux/s390/s390-64/socket.S	2003-12-05 14:38:06.000000000 +0100
@@ -47,8 +47,6 @@
 
 .globl __socket
 ENTRY(__socket)
-	cfi_startproc
-
 	/* Save registers and setup stack.  */
         stmg    %r6,%r15,48(%r15)       /* Save registers.  */
 	cfi_offset (%r15,-40)
@@ -130,9 +128,7 @@
 	j	4b
 #endif
 
-	cfi_endproc
-
-PSEUDO_END (__socket)
+END (__socket)
 
 #ifndef NO_WEAK_ALIAS
 weak_alias (__socket, socket)
diff -urN libc/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S libc-s390/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S
--- libc/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S	2003-11-14 13:59:00.000000000 +0100
+++ libc-s390/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S	2003-12-05 14:38:06.000000000 +0100
@@ -25,9 +25,20 @@
 ENTRY (syscall)
 	/* Save registers and setup stack.  */
 	stmg	%r6,%r15,48(%r15)  /* Save registers.  */
+	cfi_offset (%r15,-40)
+	cfi_offset (%r14,-48)
+	cfi_offset (%r13,-56)
+	cfi_offset (%r12,-64)
+	cfi_offset (%r11,-72)
+	cfi_offset (%r10,-80)
+	cfi_offset (%r9,-88)
+	cfi_offset (%r8,-96)
+	cfi_offset (%r7,-104)
+	cfi_offset (%r6,-112)
 	lgr	%r1,%r15
 	lg	%r0,8(%r15)	   /* Load eos.	 */
 	aghi	%r15,-160	   /* Buy stack space.	*/
+	cfi_adjust_cfa_offset (160)
 	stg	%r1,0(%r15)	   /* Store back chain.	 */
 	stg	%r0,8(%r15)	   /* Store eos.  */
 	
@@ -45,6 +56,7 @@
 	j      3f
 2:	ex     %r1,1b-0b(%r7)      /* lsb of R1 is subsituted as SVC number */
 3:	lg     %r15,0(%r15)        /* load back chain */
+	cfi_adjust_cfa_offset (-160)
 	lmg	%r6,15,48(%r15)	   /* Load registers.  */
 
 	lghi   %r0,-4095
diff -urN libc/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S libc-s390/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S
--- libc/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S	2003-11-14 13:59:00.000000000 +0100
+++ libc-s390/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S	2003-12-05 14:38:06.000000000 +0100
@@ -56,13 +56,18 @@
 	br	%r14
 # else
 	stmg	%r13,%r15,104(%r15)
+	cfi_offset (%r15,-40)
+	cfi_offset (%r14,-48)
+	cfi_offset (%r13,-56)
 	lgr	%r0,%r15
 	aghi	%r15,-160
+	cfi_adjust_cfa_offset (160)
 	lcr	%r13,%r2
 	stg	%r0,0(%r15)
 	brasl	%r14,__errno_location
 	st	%r13,0(%r2)
 	lmg	%r13,%r15,264(%r15)
+	cfi_adjust_cfa_offset (-160)
 	lghi	%r2,-1
 	br	%r14
 #endif
@@ -97,13 +102,18 @@
 	br	%r14	
 # else
 	stmg	%r13,%r15,104(%r15)
+	cfi_offset (%r15,-40)
+	cfi_offset (%r14,-48)
+	cfi_offset (%r13,-56)
 	lgr	%r0,%r15
 	aghi	%r15,-160
+	cfi_adjust_cfa_offset (160)
 	lcr	%r13,%r2
 	stg	%r0,0(%r15)
 	brasl	%r14,__errno_location@PLT
 	st	%r13,0(%r2)
 	lmg	%r13,%r15,264(%r15)
+	cfi_adjust_cfa_offset (-160)
 	lghi	%r2,-1
 	br	%r14
 # endif

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: cfi directives for s390*.
  2003-12-05 17:48 cfi directives for s390* Martin Schwidefsky
@ 2003-12-06  0:20 ` Ulrich Drepper
  0 siblings, 0 replies; 2+ messages in thread
From: Ulrich Drepper @ 2003-12-06  0:20 UTC (permalink / raw)
  To: Martin Schwidefsky; +Cc: libc-hacker

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Martin Schwidefsky wrote:

> Whats missing are the cfi calls in the remaining .S files which come
> in handy for debugging. I hope I got them all...

Not necessary but now that you've done the work, I've applied it.  This
will make your life harder when it comes to integrating new gmp
versions, though.

- -- 
➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, CA ❖
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)

iD8DBQE/0SCV2ijCOnn/RHQRAgTcAKDKCdh6UaNaIOJh60qheTzR8SBElACePvbc
c2j5y5q8efpNYumT4I0A/x4=
=Kjjp
-----END PGP SIGNATURE-----

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2003-12-06  0:20 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-12-05 17:48 cfi directives for s390* Martin Schwidefsky
2003-12-06  0:20 ` Ulrich Drepper

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).