Don't call internal __pthread_unwind via PLT
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 18 May 2016 20:41:43 +0000 (13:41 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 18 May 2016 20:41:55 +0000 (13:41 -0700)
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.

ChangeLog
sysdeps/unix/sysv/linux/x86_64/cancellation.S

index ee3cb0e..02db57a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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]
index 04a0e59..bd22aa0 100644 (file)
 #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)