mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-21 01:12:26 +08:00
Update.
2003-07-08 Jakub Jelinek <jakub@redhat.com> * pthreadP.h (__pthread_unwind_next, __pthread_register_cancel, __pthread_unregister_cancel): Add prototypes and hidden_proto. * unwind.c (__pthread_unwind_next): Add hidden_def. * cleanup.c (__pthread_register_cancel, __pthread_unregister_cancel): Likewise. * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S (__new_sem_wait): Use HIDDEN_JUMPTARGET to jump to __pthread_unwind. * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S (sem_timedwait): Likewise. * sysdeps/unix/sysv/linux/x86_64/sem_wait.S (sem_wait): Likewise. * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait): Likewise. * sysdeps/unix/sysv/linux/i386/pthread_once.S (__pthread_once): Use HIDDEN_JUMPTARGET to call __pthread_register_cancel, __pthread_unregister_cancel and __pthread_unwind_next.
This commit is contained in:
parent
57a5ea0215
commit
da0c02eee1
@ -1,3 +1,21 @@
|
||||
2003-07-08 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* pthreadP.h (__pthread_unwind_next, __pthread_register_cancel,
|
||||
__pthread_unregister_cancel): Add prototypes and hidden_proto.
|
||||
* unwind.c (__pthread_unwind_next): Add hidden_def.
|
||||
* cleanup.c (__pthread_register_cancel, __pthread_unregister_cancel):
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/i386/i486/sem_wait.S (__new_sem_wait):
|
||||
Use HIDDEN_JUMPTARGET to jump to __pthread_unwind.
|
||||
* sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S (sem_timedwait):
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/x86_64/sem_wait.S (sem_wait): Likewise.
|
||||
* sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait):
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/i386/pthread_once.S (__pthread_once): Use
|
||||
HIDDEN_JUMPTARGET to call __pthread_register_cancel,
|
||||
__pthread_unregister_cancel and __pthread_unwind_next.
|
||||
|
||||
2003-07-04 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (PSEUDO): Use
|
||||
|
@ -35,6 +35,7 @@ __pthread_register_cancel (__pthread_unwind_buf_t *buf)
|
||||
/* Store the new cleanup handler info. */
|
||||
THREAD_SETMEM (self, cleanup_jmp_buf, (struct pthread_unwind_buf *) buf);
|
||||
}
|
||||
hidden_def (__pthread_register_cancel)
|
||||
|
||||
|
||||
void
|
||||
@ -45,3 +46,4 @@ __pthread_unregister_cancel (__pthread_unwind_buf_t *buf)
|
||||
|
||||
THREAD_SETMEM (THREAD_SELF, cleanup_jmp_buf, ibuf->priv.data.prev);
|
||||
}
|
||||
hidden_def (__pthread_unregister_cancel)
|
||||
|
@ -114,8 +114,21 @@ extern void __pthread_unwind (__pthread_unwind_buf_t *__buf)
|
||||
weak_function
|
||||
#endif
|
||||
;
|
||||
extern void __pthread_unwind_next (__pthread_unwind_buf_t *__buf)
|
||||
__cleanup_fct_attribute __attribute ((__noreturn__))
|
||||
#ifndef SHARED
|
||||
weak_function
|
||||
#endif
|
||||
;
|
||||
extern void __pthread_register_cancel (__pthread_unwind_buf_t *__buf)
|
||||
__cleanup_fct_attribute;
|
||||
extern void __pthread_unregister_cancel (__pthread_unwind_buf_t *__buf)
|
||||
__cleanup_fct_attribute;
|
||||
#if defined NOT_IN_libc && defined IS_IN_libpthread
|
||||
hidden_proto (__pthread_unwind)
|
||||
hidden_proto (__pthread_unwind_next)
|
||||
hidden_proto (__pthread_register_cancel)
|
||||
hidden_proto (__pthread_unregister_cancel)
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -187,6 +187,6 @@ sem_timedwait:
|
||||
LOCK
|
||||
orl $0x10, %gs:CANCELHANDLING
|
||||
movl %gs:CLEANUP_JMP_BUF, %eax
|
||||
jmp __pthread_unwind
|
||||
jmp HIDDEN_JUMPTARGET (__pthread_unwind)
|
||||
cfi_endproc
|
||||
.size sem_timedwait,.-sem_timedwait
|
||||
|
@ -123,7 +123,7 @@ __new_sem_wait:
|
||||
LOCK
|
||||
orl $0x10, %gs:CANCELHANDLING
|
||||
movl %gs:CLEANUP_JMP_BUF, %eax
|
||||
jmp __pthread_unwind
|
||||
jmp HIDDEN_JUMPTARGET (__pthread_unwind)
|
||||
cfi_endproc
|
||||
.size __new_sem_wait,.-__new_sem_wait
|
||||
versioned_symbol(libpthread, __new_sem_wait, sem_wait, GLIBC_2_1)
|
||||
|
@ -112,14 +112,14 @@ __pthread_once:
|
||||
jne 7f
|
||||
|
||||
leal 8(%esp), %eax
|
||||
call __pthread_register_cancel
|
||||
call HIDDEN_JUMPTARGET(__pthread_register_cancel)
|
||||
|
||||
/* Call the user-provided initialization function. */
|
||||
call *24+UNWINDBUFSIZE(%esp)
|
||||
|
||||
/* Pop the cleanup handler. */
|
||||
leal 8(%esp), %eax
|
||||
call __pthread_unregister_cancel
|
||||
call HIDDEN_JUMPTARGET(__pthread_unregister_cancel)
|
||||
addl $UNWINDBUFSIZE+8, %esp
|
||||
cfi_adjust_cfa_offset (-UNWINDBUFSIZE-8)
|
||||
|
||||
@ -156,7 +156,7 @@ __pthread_once:
|
||||
ENTER_KERNEL
|
||||
|
||||
leal 8(%esp), %eax
|
||||
call __pthread_unwind_next /* Note: no @PLT. */
|
||||
call HIDDEN_JUMPTARGET (__pthread_unwind_next)
|
||||
/* NOTREACHED */
|
||||
hlt
|
||||
cfi_endproc
|
||||
|
@ -170,6 +170,6 @@ sem_timedwait:
|
||||
LOCK
|
||||
orl $0x10, %fs:CANCELHANDLING
|
||||
movq %fs:CLEANUP_JMP_BUF, %rdi
|
||||
jmp __pthread_unwind
|
||||
jmp HIDDEN_JUMPTARGET (__pthread_unwind)
|
||||
cfi_endproc
|
||||
.size sem_timedwait,.-sem_timedwait
|
||||
|
@ -115,6 +115,6 @@ sem_wait:
|
||||
LOCK
|
||||
orl $0x10, %fs:CANCELHANDLING
|
||||
movq %fs:CLEANUP_JMP_BUF, %rdi
|
||||
jmp __pthread_unwind
|
||||
jmp HIDDEN_JUMPTARGET (__pthread_unwind)
|
||||
cfi_endproc
|
||||
.size sem_wait,.-sem_wait
|
||||
|
@ -122,3 +122,4 @@ __pthread_unwind_next (__pthread_unwind_buf_t *buf)
|
||||
|
||||
__pthread_unwind ((__pthread_unwind_buf_t *) ibuf->priv.data.prev);
|
||||
}
|
||||
hidden_def (__pthread_unwind_next)
|
||||
|
Loading…
Reference in New Issue
Block a user