diff options
author | Ilya Leoshkevich <iii@linux.ibm.com> | 2018-08-10 09:07:44 +0200 |
---|---|---|
committer | Stefan Liebler <stli@linux.ibm.com> | 2018-08-10 09:07:44 +0200 |
commit | 8f135efcad9f32daaa560b7403ab8c1498c0c659 (patch) | |
tree | 086a4b3ff4175bb9ee7f33565a585f1a66c51702 | |
parent | 71c01af52fdf643abe3946f934693a55887a8ead (diff) | |
download | glibc-8f135efcad9f32daaa560b7403ab8c1498c0c659.zip glibc-8f135efcad9f32daaa560b7403ab8c1498c0c659.tar.gz glibc-8f135efcad9f32daaa560b7403ab8c1498c0c659.tar.bz2 |
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.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | sysdeps/s390/s390-32/s390-mcount.S | 8 |
2 files changed, 11 insertions, 2 deletions
@@ -1,5 +1,10 @@ 2018-08-10 Ilya Leoshkevich <iii@linux.ibm.com> + * sysdeps/s390/s390-32/s390-mcount.S (_mcount): + Fix unwind. + +2018-08-10 Ilya Leoshkevich <iii@linux.ibm.com> + * sysdeps/s390/s390-64/Versions (__fentry__): Add. * sysdeps/s390/s390-64/s390x-mcount.S: Move the common code to s390x-mcount.h and #include it. diff --git a/sysdeps/s390/s390-32/s390-mcount.S b/sysdeps/s390/s390-32/s390-mcount.S index 153777e..84f48a2 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 |