From: Ilya Leoshkevich Date: Fri, 10 Aug 2018 07:07:44 +0000 (+0200) Subject: S390: Fix unwind in 32-bit _mcount X-Git-Tag: glibc-2.29~549 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8f135efcad9f32daaa560b7403ab8c1498c0c659;p=thirdparty%2Fglibc.git S390: Fix unwind in 32-bit _mcount * Fix CFI offset for %r14. * Fix unwound value of %r15 being off by 128 bytes. ChangeLog: * sysdeps/s390/s390-32/s390-mcount.S (_mcount): Fix unwind. --- diff --git a/ChangeLog b/ChangeLog index c3a085e22b8..bcbeb8cd671 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2018-08-10 Ilya Leoshkevich + + * sysdeps/s390/s390-32/s390-mcount.S (_mcount): + Fix unwind. + 2018-08-10 Ilya Leoshkevich * sysdeps/s390/s390-64/Versions (__fentry__): Add. diff --git a/sysdeps/s390/s390-32/s390-mcount.S b/sysdeps/s390/s390-32/s390-mcount.S index 153777e1b8b..84f48a20fc7 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