diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-12-06 00:20:16 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-12-06 00:20:16 +0000 |
commit | 844a34a2ae4b493f86ed1e79c5992329b54a5511 (patch) | |
tree | 4c28fbeb9a311bd9acfa4a7a7d11f133ae516603 /sysdeps/unix/sysv/linux/s390/s390-64 | |
parent | dd17514ce7a10d785b977586224d31563888cb9d (diff) |
Update.
2003-12-05 Martin Schwidefsky <schwidefsky@de.ibm.com>
* sysdeps/s390/s390-32/elf/setjmp.S (setjmp, __setjmp): Add END
statements.
* sysdeps/s390/s390-64/elf/setjmp.S (setjmp, __setjmp): Likewise.
* sysdeps/s390/s390-32/sysdep.h (ENTRY): Add cfi_startproc directive.
(END): Add cfi_endproc directive.
* sysdeps/s390/s390-64/sysdep.h (ENTRY, END): Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/socket.S (__socket): Remove
cfi_startproc and cfi_endproc directive.
* sysdeps/unix/sysv/linux/s390/s390-64/socket.S (__socket): Likewise.
* sysdeps/s390/s390-32/addmul_1.S (__mpn_addmul_1): Add CFI directives.
* sysdeps/s390/s390-32/add_n.S (__mpn_add_n): Likewise.
* sysdeps/s390/s390-64/add_n.S (__mpn_add_n): Likewise.
* sysdeps/s390/s390-32/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE):
Likewise.
* sysdeps/s390/s390-64/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE):
Likewise.
* sysdeps/s390/s390-32/mul_1.S (__mpn_mul_1): Likewise.
* sysdeps/s390/s390-32/sub_n.S (__mpn_sub_n): Likewise.
* sysdeps/s390/s390-64/sub_n.S (__mpn_sub_n): Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S (__mmap64): Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/mmap.S (__mmap): Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/mmap.S (__mmap): Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/syscall.S (syscall): Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/syscall.S (syscall): Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S (__syscall_error):
Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S (__syscall_error):
Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/clone.S (__clone): Add CFI
directives. Move thread_start out of ENTRY/PSEUDO_END block to
make backchain terminate.
* sysdeps/unix/sysv/linux/s390/s390-64/clone.S (__clone): Likewise.
* sysdeps/s390/s390-32/backtrace.c (trace_arg): New structure.
(unwind_backtrace, unwind_getip): New variables.
(init, __backchain_backtrace, backtrace_helper): New functions.
(__backtrace): Use unwind info for backtrace instead of backchain
walking if the unwind functions can be found.
* sysdeps/s390/s390-64/backtrace.c: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/posix_fadvise64.c: New file.
* sysdeps/unix/sysv/linux/s390/sys/procfs.h (ELF_NGREG32): New #define.
(elf_greg_t32, elf_gregset_t32, elf_fpregset_t32): New types.
(elf_prstatus32, elf_prpsinfo32): New structures.
(prgregset32_t, prfpregset32_t, prstatus32_t, prpsinfo32_t): New types.
* scripts/data/c++-types-s390-linux-gnu.data: New file.
* scripts/data/c++-types-s390x-linux-gnu.data: New file.
Diffstat (limited to 'sysdeps/unix/sysv/linux/s390/s390-64')
-rw-r--r-- | sysdeps/unix/sysv/linux/s390/s390-64/clone.S | 3 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/s390/s390-64/mmap.S | 12 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/s390/s390-64/socket.S | 6 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/s390/s390-64/syscall.S | 12 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S | 10 |
5 files changed, 37 insertions, 6 deletions
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/clone.S b/sysdeps/unix/sysv/linux/s390/s390-64/clone.S index c6f2bdcbd8..f70bd15260 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/clone.S +++ b/sysdeps/unix/sysv/linux/s390/s390-64/clone.S @@ -33,6 +33,7 @@ .text ENTRY(__clone) stg %r6,48(%r15) /* store %r6 to save area */ + cfi_offset (%r6,-112) lgr %r0,%r5 /* move *arg out of the way */ ltgr %r1,%r2 /* check fn and move to %r1 */ jz error /* no NULL function pointers */ @@ -51,6 +52,7 @@ ENTRY(__clone) error: lghi %r2,-EINVAL jg SYSCALL_ERROR_LABEL +PSEUDO_END (__clone) thread_start: /* fn is in gpr 1, arg in gpr 0 */ @@ -63,5 +65,4 @@ thread_start: #else jg _exit /* branch to _exit -> thread termination */ #endif -PSEUDO_END (__clone) weak_alias (__clone, clone) diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/mmap.S b/sysdeps/unix/sysv/linux/s390/s390-64/mmap.S index 8c94fd4c28..443d432e1c 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/mmap.S +++ b/sysdeps/unix/sysv/linux/s390/s390-64/mmap.S @@ -27,9 +27,20 @@ ENTRY(__mmap) /* Save registers and setup stack frame. */ stmg %r6,%r15,48(%r15) + cfi_offset (%r15,-40) + cfi_offset (%r14,-48) + cfi_offset (%r13,-56) + cfi_offset (%r12,-64) + cfi_offset (%r11,-72) + cfi_offset (%r10,-80) + cfi_offset (%r9,-88) + cfi_offset (%r8,-96) + cfi_offset (%r7,-104) + cfi_offset (%r6,-112) lgr %r1,%r15 lg %r0,8(%r15) /* Load eos. */ aghi %r15,-208 /* Buy stack space. */ + cfi_adjust_cfa_offset (208) stg %r1,0(%r15) /* Store back chain. */ stg %r0,8(%r15) /* Store eos. */ @@ -50,6 +61,7 @@ ENTRY(__mmap) svc SYS_ify(mmap) lg %r15,0(%r15) /* Load back chain. */ + cfi_adjust_cfa_offset (-208) lmg %r6,%r15,48(%r15) /* Load registers. */ /* Check gpr 2 for error. */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/socket.S b/sysdeps/unix/sysv/linux/s390/s390-64/socket.S index 3985a9c4b7..c98a97449b 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/socket.S +++ b/sysdeps/unix/sysv/linux/s390/s390-64/socket.S @@ -47,8 +47,6 @@ .globl __socket ENTRY(__socket) - cfi_startproc - /* Save registers and setup stack. */ stmg %r6,%r15,48(%r15) /* Save registers. */ cfi_offset (%r15,-40) @@ -130,9 +128,7 @@ L(socket_cancel): j 4b #endif - cfi_endproc - -PSEUDO_END (__socket) +END (__socket) #ifndef NO_WEAK_ALIAS weak_alias (__socket, socket) diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S b/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S index 5a6bcfc90d..4caeaeaf50 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S +++ b/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S @@ -25,9 +25,20 @@ ENTRY (syscall) /* Save registers and setup stack. */ stmg %r6,%r15,48(%r15) /* Save registers. */ + cfi_offset (%r15,-40) + cfi_offset (%r14,-48) + cfi_offset (%r13,-56) + cfi_offset (%r12,-64) + cfi_offset (%r11,-72) + cfi_offset (%r10,-80) + cfi_offset (%r9,-88) + cfi_offset (%r8,-96) + cfi_offset (%r7,-104) + cfi_offset (%r6,-112) lgr %r1,%r15 lg %r0,8(%r15) /* Load eos. */ aghi %r15,-160 /* Buy stack space. */ + cfi_adjust_cfa_offset (160) stg %r1,0(%r15) /* Store back chain. */ stg %r0,8(%r15) /* Store eos. */ @@ -45,6 +56,7 @@ ENTRY (syscall) j 3f 2: ex %r1,1b-0b(%r7) /* lsb of R1 is subsituted as SVC number */ 3: lg %r15,0(%r15) /* load back chain */ + cfi_adjust_cfa_offset (-160) lmg %r6,15,48(%r15) /* Load registers. */ lghi %r0,-4095 diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S index 84c747aef0..ce1f03e006 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S +++ b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S @@ -56,13 +56,18 @@ ENTRY(__syscall_error) br %r14 # else stmg %r13,%r15,104(%r15) + cfi_offset (%r15,-40) + cfi_offset (%r14,-48) + cfi_offset (%r13,-56) lgr %r0,%r15 aghi %r15,-160 + cfi_adjust_cfa_offset (160) lcr %r13,%r2 stg %r0,0(%r15) brasl %r14,__errno_location st %r13,0(%r2) lmg %r13,%r15,264(%r15) + cfi_adjust_cfa_offset (-160) lghi %r2,-1 br %r14 #endif @@ -97,13 +102,18 @@ ENTRY(__syscall_error) br %r14 # else stmg %r13,%r15,104(%r15) + cfi_offset (%r15,-40) + cfi_offset (%r14,-48) + cfi_offset (%r13,-56) lgr %r0,%r15 aghi %r15,-160 + cfi_adjust_cfa_offset (160) lcr %r13,%r2 stg %r0,0(%r15) brasl %r14,__errno_location@PLT st %r13,0(%r2) lmg %r13,%r15,264(%r15) + cfi_adjust_cfa_offset (-160) lghi %r2,-1 br %r14 # endif |