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]

Re: [PATCH] S390: Add CFI rule in _dl_runtime_resolve[_vx] for unwinding.


On 12/04/2017 04:05 PM, Stefan Liebler wrote:
Hi,

In _dl_runtime_resolve[_vx], unwinding fails after the new stack frame is created as there is no CFI rule for r15. This is also observable in GDB: Backtrace stopped: previous frame inner to this frame (corrupt stack?)

Therefore this patch is now storing r15 on stack and is using cfi_offset rule. The stmg/lmg instruction is used to store/load r14 and r15 with one instruction. On 64bit, the offsets of the fprs have moved to store r15 directly after r14. On 31bit, the r14/r15 is now stored between the other gprs and fprs as the space wasn't used.

Okay to commit?

Bye.
Stefan

ChangeLog:

     * sysdeps/s390/s390-64/dl-trampoline.h (_dl_runtime_resolve):
     Store r15 on stack and add cfi rule.
     * sysdeps/s390/s390-32/dl-trampoline.h (_dl_runtime_resolve):
     Likewise.

Committed


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