Don't call internal __pthread_unwind via PLT

Add PTHREAD_UNWIND to replace JUMPTARGET(__pthread_unwind) and define
it to __GI___pthread_unwind within libpthread.

	* sysdeps/unix/sysv/linux/x86_64/cancellation.S (PTHREAD_UNWIND):
	New
	(__pthread_unwind): Renamed to ...
	(PTHREAD_UNWIND): This.
	(__pthread_enable_asynccancel): Replace
	JUMPTARGET(__pthread_unwind) with PTHREAD_UNWIND.
This commit is contained in:
H.J. Lu 2016-05-18 13:41:43 -07:00
parent 48526672b6
commit d29261db22
2 changed files with 13 additions and 2 deletions

View File

@ -1,3 +1,12 @@
2016-05-18 H.J. Lu <hongjiu.lu@intel.com>
* sysdeps/unix/sysv/linux/x86_64/cancellation.S (PTHREAD_UNWIND):
New
(__pthread_unwind): Renamed to ...
(PTHREAD_UNWIND): This.
(__pthread_enable_asynccancel): Replace
JUMPTARGET(__pthread_unwind) with PTHREAD_UNWIND.
2016-05-18 Joseph Myers <joseph@codesourcery.com>
* sysdeps/unix/sysv/linux/bits/sched.h [__USE_GNU]

View File

@ -21,9 +21,11 @@
#include <kernel-features.h>
#include "lowlevellock.h"
#define PTHREAD_UNWIND JUMPTARGET(__pthread_unwind)
#if IS_IN (libpthread)
# if defined SHARED && !defined NO_HIDDEN
# define __pthread_unwind __GI___pthread_unwind
# undef PTHREAD_UNWIND
# define PTHREAD_UNWIND __GI___pthread_unwind
# endif
#else
# ifndef SHARED
@ -76,7 +78,7 @@ ENTRY(__pthread_enable_asynccancel)
lock
orl $TCB_EXITING_BITMASK, %fs:CANCELHANDLING
mov %fs:CLEANUP_JMP_BUF, %RDI_LP
call JUMPTARGET(__pthread_unwind)
call PTHREAD_UNWIND
hlt
END(__pthread_enable_asynccancel)