mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-27 03:41:23 +08:00
Use JUMPTARGET in x86-64 pthread
When PLT may be used, JUMPTARGET should be used instead calling the function directly. * sysdeps/unix/sysv/linux/x86_64/cancellation.S (__pthread_enable_asynccancel): Use JUMPTARGET to call __pthread_unwind. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S (__condvar_cleanup2): Use JUMPTARGET to call _Unwind_Resume. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S (__condvar_cleanup1): Likewise.
This commit is contained in:
parent
a4cea54b12
commit
893e371b2f
10
ChangeLog
10
ChangeLog
@ -1,3 +1,13 @@
|
||||
2016-03-21 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/x86_64/cancellation.S
|
||||
(__pthread_enable_asynccancel): Use JUMPTARGET to call
|
||||
__pthread_unwind.
|
||||
* sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
|
||||
(__condvar_cleanup2): Use JUMPTARGET to call _Unwind_Resume.
|
||||
* sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
|
||||
(__condvar_cleanup1): Likewise.
|
||||
|
||||
2016-03-21 Dylan Alex Simon <dylan-sourceware@dylex.net>
|
||||
|
||||
[BZ #19822]
|
||||
|
@ -76,11 +76,7 @@ ENTRY(__pthread_enable_asynccancel)
|
||||
lock
|
||||
orl $TCB_EXITING_BITMASK, %fs:CANCELHANDLING
|
||||
mov %fs:CLEANUP_JMP_BUF, %RDI_LP
|
||||
#ifdef SHARED
|
||||
call __pthread_unwind@PLT
|
||||
#else
|
||||
call __pthread_unwind
|
||||
#endif
|
||||
call JUMPTARGET(__pthread_unwind)
|
||||
hlt
|
||||
END(__pthread_enable_asynccancel)
|
||||
|
||||
|
@ -586,7 +586,7 @@ __condvar_cleanup2:
|
||||
movq FRAME_SIZE+16(%rsp), %r13
|
||||
movq FRAME_SIZE+24(%rsp), %r12
|
||||
.LcallUR:
|
||||
call _Unwind_Resume@PLT
|
||||
call JUMPTARGET(_Unwind_Resume)
|
||||
hlt
|
||||
.LENDCODE:
|
||||
cfi_endproc
|
||||
|
@ -518,7 +518,7 @@ __condvar_cleanup1:
|
||||
|
||||
8: movq 24(%rsp), %rdi
|
||||
.LcallUR:
|
||||
call _Unwind_Resume@PLT
|
||||
call JUMPTARGET(_Unwind_Resume)
|
||||
hlt
|
||||
.LENDCODE:
|
||||
cfi_endproc
|
||||
|
Loading…
Reference in New Issue
Block a user