diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | sysdeps/s390/s390-32/dl-trampoline.S | 6 | ||||
-rw-r--r-- | sysdeps/s390/s390-32/s390-mcount.S | 6 | ||||
-rw-r--r-- | sysdeps/s390/s390-64/dl-trampoline.S | 8 | ||||
-rw-r--r-- | sysdeps/s390/s390-64/s390x-mcount.S | 6 |
5 files changed, 34 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index 4aa537fa9d..1f4d2b2723 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-12-04 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> + + * sysdeps/s390/s390-64/dl-trampoline.S: Add CFI for the call saved + registers. + * sysdeps/s390/s390-32/dl-trampoline.S: Likewise. + * sysdeps/s390/s390-32/s390-mcount.S: Add CFI. + * sysdeps/s390/s390-64/s390x-mcount.S: Add CFI. + 2009-11-30 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/bits/sched.h: Define SCHED_IDLE and diff --git a/sysdeps/s390/s390-32/dl-trampoline.S b/sysdeps/s390/s390-32/dl-trampoline.S index fbbbc189db..cedef46382 100644 --- a/sysdeps/s390/s390-32/dl-trampoline.S +++ b/sysdeps/s390/s390-32/dl-trampoline.S @@ -45,6 +45,7 @@ _dl_runtime_resolve: stm %r2,%r5,32(%r15) # save registers st %r14,8(%r15) + cfi_offset (r14, -88) lr %r0,%r15 # create stack frame ahi %r15,-96 cfi_adjust_cfa_offset (96) @@ -76,6 +77,11 @@ _dl_runtime_profile: st %r6,8(%r15) st %r12,12(%r15) st %r14,16(%r15) + cfi_offset (r6, -64) + cfi_offset (f0, -40) + cfi_offset (f2, -32) + cfi_offset (r12, -84) + cfi_offset (r14, -80) lr %r12,%r15 # create stack frame cfi_def_cfa_register (12) ahi %r15,-96 diff --git a/sysdeps/s390/s390-32/s390-mcount.S b/sysdeps/s390/s390-32/s390-mcount.S index 6d11f9bbdb..aae433bbc5 100644 --- a/sysdeps/s390/s390-32/s390-mcount.S +++ b/sysdeps/s390/s390-32/s390-mcount.S @@ -50,11 +50,15 @@ ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(_mcount) ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(_mcount), @function) + cfi_startproc .align ALIGNARG(4) C_LABEL(_mcount) /* Save the caller-clobbered registers. */ ahi %r15,-128 + cfi_adjust_cfa_offset (128) stm %r14,%r5,96(%r15) + cfi_offset (r14, 0) + cfi_offset (r15, 4) l %r2,132(%r15) # callers address = first parameter la %r2,0(%r2) # clear bit 0 la %r3,0(%r14) # callees address = second parameter @@ -77,7 +81,9 @@ C_LABEL(_mcount) */ lm %r14,%r5,96(%r15) ahi %r15,128 + cfi_adjust_cfa_offset (-128) br %r14 + cfi_endproc ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(_mcount)) #undef mcount diff --git a/sysdeps/s390/s390-64/dl-trampoline.S b/sysdeps/s390/s390-64/dl-trampoline.S index 72043c9779..b49c68108d 100644 --- a/sysdeps/s390/s390-64/dl-trampoline.S +++ b/sysdeps/s390/s390-64/dl-trampoline.S @@ -42,6 +42,7 @@ _dl_runtime_resolve: stmg 2,5,64(15) # save registers stg 14,96(15) + cfi_offset (r14, -64) lgr 0,15 # create stack frame aghi 15,-160 cfi_adjust_cfa_offset (160) @@ -72,6 +73,13 @@ _dl_runtime_profile: stg %r6,16(%r15) stg %r12,24(%r15) stg %r14,32(%r15) + cfi_offset (r6, -96) + cfi_offset (f0, -56) + cfi_offset (f2, -48) + cfi_offset (f4, -40) + cfi_offset (f6, -32) + cfi_offset (r12, -136) + cfi_offset (r14, -128) lgr %r12,%r15 # create stack frame cfi_def_cfa_register (12) aghi %r15,-160 diff --git a/sysdeps/s390/s390-64/s390x-mcount.S b/sysdeps/s390/s390-64/s390x-mcount.S index 78b55218a9..e866c3f5a9 100644 --- a/sysdeps/s390/s390-64/s390x-mcount.S +++ b/sysdeps/s390/s390-64/s390x-mcount.S @@ -46,11 +46,15 @@ ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(_mcount) ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(_mcount), @function) + cfi_startproc .align ALIGNARG(4) C_LABEL(_mcount) /* Save the caller-clobbered registers. */ aghi %r15,-224 + cfi_adjust_cfa_offset (224) stmg %r14,%r5,160(%r15) + cfi_offset (r14, 0) + cfi_offset (r15, 8) lg %r2,232(%r15) # callers address = first parameter la %r2,0(%r2) # clear bit 0 la %r3,0(%r14) # callees address = second parameter @@ -65,7 +69,9 @@ C_LABEL(_mcount) return value. */ lmg %r14,%r5,160(%r15) aghi %r15,224 + cfi_adjust_cfa_offset (-224) br %r14 + cfi_endproc ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(_mcount)) #undef mcount |