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.
This commit is contained in:
Ilya Leoshkevich 2018-08-10 09:07:44 +02:00 committed by Stefan Liebler
parent 71c01af52f
commit 8f135efcad
2 changed files with 11 additions and 2 deletions

View File

@ -1,3 +1,8 @@
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> 2018-08-10 Ilya Leoshkevich <iii@linux.ibm.com>
* sysdeps/s390/s390-64/Versions (__fentry__): Add. * sysdeps/s390/s390-64/Versions (__fentry__): Add.

View File

@ -55,9 +55,13 @@ C_LABEL(_mcount)
/* Save the caller-clobbered registers. */ /* Save the caller-clobbered registers. */
ahi %r15,-128 ahi %r15,-128
cfi_adjust_cfa_offset (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) stm %r14,%r5,96(%r15)
cfi_offset (r14, 0) cfi_offset (r14, -128)
cfi_offset (r15, 4)
l %r2,132(%r15) # callers address = first parameter l %r2,132(%r15) # callers address = first parameter
la %r2,0(%r2) # clear bit 0 la %r2,0(%r2) # clear bit 0
la %r3,0(%r14) # callees address = second parameter la %r3,0(%r14) # callees address = second parameter