This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 12/12] S390: Fix unwind in 32-bit _mcount


* Fix CFI offset for %r14.
* Fix unwound value of %r15 being off by 128 bytes.

         * sysdeps/s390/s390-32/s390-mcount.S (_mcount):
         Fix unwind.
---
 sysdeps/s390/s390-32/s390-mcount.S | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/sysdeps/s390/s390-32/s390-mcount.S b/sysdeps/s390/s390-32/s390-mcount.S
index 153777e1b8..84f48a20fc 100644
--- a/sysdeps/s390/s390-32/s390-mcount.S
+++ b/sysdeps/s390/s390-32/s390-mcount.S
@@ -55,9 +55,13 @@ C_LABEL(_mcount)
 	/* Save the caller-clobbered registers.  */
 	ahi   %r15,-128
 	cfi_adjust_cfa_offset (128)
+	/* binutils 2.28+: .cfi_val_offset r15, -96 */
+	.cfi_escape \
+		/* DW_CFA_val_offset */ 0x14, \
+		/* r15 */               0x0f, \
+		/* scaled offset */     0x18
 	stm   %r14,%r5,96(%r15)
-	cfi_offset (r14, 0)
-	cfi_offset (r15, 4)
+	cfi_offset (r14, -128)
 	l     %r2,132(%r15)       # callers address  = first parameter
 	la    %r2,0(%r2)          # clear bit 0
 	la    %r3,0(%r14)         # callees address  = second parameter
-- 
2.18.0


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]