diff options
Diffstat (limited to 'nptl')
-rw-r--r-- | nptl/ChangeLog | 11 | ||||
-rw-r--r-- | nptl/Makefile | 1 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h | 6 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h | 7 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h | 6 |
5 files changed, 30 insertions, 1 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 93540dfa66..f00ba09057 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,14 @@ +2003-07-11 Jakub Jelinek <jakub@redhat.com> + + * Makefile (CFLAGS-pthread_once.c): Add -fexceptions + -fasynchronous-unwind-tables. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h + (PSEUDO): Add cfi directives. + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h (PSEUDO): + Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h (PSEUDO): + Likewise. + 2003-07-08 Jakub Jelinek <jakub@redhat.com> * pthreadP.h (__pthread_unwind_next, __pthread_register_cancel, diff --git a/nptl/Makefile b/nptl/Makefile index a261efbb6d..b562e6618c 100644 --- a/nptl/Makefile +++ b/nptl/Makefile @@ -160,6 +160,7 @@ CFLAGS-forward.c = -fexceptions CFLAGS-pthread_testcancel.c = -fexceptions CFLAGS-pthread_join.c = -fexceptions -fasynchronous-unwind-tables CFLAGS-pthread_timedjoin.c = -fexceptions -fasynchronous-unwind-tables +CFLAGS-pthread_once.c = -fexceptions -fasynchronous-unwind-tables CFLAGS-pthread_cond_wait.c = -fexceptions -fasynchronous-unwind-tables CFLAGS-pthread_cond_timedwait.c = -fexceptions -fasynchronous-unwind-tables CFLAGS-sem_wait.c = -fexceptions -fasynchronous-unwind-tables diff --git a/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h b/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h index 7c669bfb3e..d39425e0f4 100644 --- a/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h +++ b/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h @@ -30,14 +30,17 @@ # define PSEUDO(name, syscall_name, args) \ .section ".text"; \ ENTRY (name) \ + cfi_startproc; \ SINGLE_THREAD_P; \ bne- .Lpseudo_cancel; \ DO_CALL (SYS_ify (syscall_name)); \ PSEUDO_RET; \ .Lpseudo_cancel: \ stwu 1,-48(1); \ + cfi_adjust_cfa_offset (48); \ mflr 9; \ stw 9,52(1); \ + cfi_offset (lr, 4); \ DOCARGS_##args; /* save syscall args around CENABLE. */ \ CENABLE; \ stw 3,16(1); /* store CENABLE return value (MASK). */ \ @@ -53,7 +56,8 @@ lwz 3,8(1); \ mtlr 4; \ mtcr 0; \ - addi 1,1,48; + addi 1,1,48; \ + cfi_endproc; # define DOCARGS_0 # define UNDOCARGS_0 diff --git a/nptl/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h b/nptl/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h index 80671df08a..1f7cff8c41 100644 --- a/nptl/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h +++ b/nptl/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h @@ -29,10 +29,16 @@ # define PSEUDO(name, syscall_name, args) \ .text; \ L(pseudo_cancel): \ + cfi_startproc; \ STM_##args \ stm %r12,%r15,48(%r15); \ + cfi_offset (%r15, -36); \ + cfi_offset (%r14, -40); \ + cfi_offset (%r13, -44); \ + cfi_offset (%r12, -48); \ lr %r14,%r15; \ ahi %r15,-96; \ + cfi_adjust_cfa_offset (96); \ st %r14,0(%r15); \ basr %r13,0; \ 0: l %r1,1f-0b(%r13); \ @@ -46,6 +52,7 @@ L(pseudo_cancel): \ bas %r14,0(%r1,%r13); \ lr %r2,%r12; \ lm %r12,%r15,48+96(%r15); \ + cfi_endproc; \ j L(pseudo_check); \ 1: .long CENABLE-0b; \ 2: .long CDISABLE-0b; \ diff --git a/nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h b/nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h index f3722a0d8f..4d53311f9d 100644 --- a/nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h +++ b/nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h @@ -29,10 +29,15 @@ # define PSEUDO(name, syscall_name, args) \ .text; \ L(pseudo_cancel): \ + cfi_startproc; \ STM_##args \ stmg %r13,%r15,104(%r15); \ + cfi_offset (%r15,-40); \ + cfi_offset (%r14,-48); \ + cfi_offset (%r13,-56); \ lgr %r14,%r15; \ aghi %r15,-160; \ + cfi_adjust_cfa_offset (160); \ stg %r14,0(%r15); \ brasl %r14,CENABLE; \ lgr %r0,%r2; \ @@ -43,6 +48,7 @@ L(pseudo_cancel): \ brasl %r14,CDISABLE; \ lgr %r2,%r13; \ lmg %r13,%r15,104+160(%r15); \ + cfi_endproc; \ j L(pseudo_check); \ ENTRY(name) \ SINGLE_THREAD_P \ |