Don't call internal _Unwind_Resume via PLT

Message ID 20160504175451.GB22590@intel.com
State New, archived
Headers

Commit Message

Lu, Hongjiu May 4, 2016, 5:54 p.m. UTC
  There is no need to call the internal funtion, _Unwind_Resume, which
is defined in unwind-forcedunwind.c, via PLT.

Tested on x86-64.  OK for master?

H.J.
---
	* sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
	(__condvar_cleanup2): Remove JUMPTARGET from  _Unwind_Resume
	call.
	* sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
	(__condvar_cleanup1): Likewise.
---
 sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S | 2 +-
 sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S      | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
  

Comments

H.J. Lu May 18, 2016, 6:01 p.m. UTC | #1
On Wed, May 4, 2016 at 10:54 AM, H.J. Lu <hongjiu.lu@intel.com> wrote:
> There is no need to call the internal funtion, _Unwind_Resume, which
> is defined in unwind-forcedunwind.c, via PLT.
>
> Tested on x86-64.  OK for master?
>
> H.J.
> ---
>         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
>         (__condvar_cleanup2): Remove JUMPTARGET from  _Unwind_Resume
>         call.
>         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
>         (__condvar_cleanup1): Likewise.
> ---
>  sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S | 2 +-
>  sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S      | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S b/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
> index a2adc09..82ffa1a 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
> +++ b/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
> @@ -586,7 +586,7 @@ __condvar_cleanup2:
>         movq    FRAME_SIZE+16(%rsp), %r13
>         movq    FRAME_SIZE+24(%rsp), %r12
>  .LcallUR:
> -       call    JUMPTARGET(_Unwind_Resume)
> +       call    _Unwind_Resume
>         hlt
>  .LENDCODE:
>         cfi_endproc
> diff --git a/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S b/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
> index c4d3504..c82f37b 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
> +++ b/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
> @@ -518,7 +518,7 @@ __condvar_cleanup1:
>
>  8:     movq    24(%rsp), %rdi
>  .LcallUR:
> -       call    JUMPTARGET(_Unwind_Resume)
> +       call    _Unwind_Resume
>         hlt
>  .LENDCODE:
>         cfi_endproc
> --
> 2.5.5
>

I am going to check in this patch.
  

Patch

diff --git a/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S b/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
index a2adc09..82ffa1a 100644
--- a/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
+++ b/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
@@ -586,7 +586,7 @@  __condvar_cleanup2:
 	movq	FRAME_SIZE+16(%rsp), %r13
 	movq	FRAME_SIZE+24(%rsp), %r12
 .LcallUR:
-	call	JUMPTARGET(_Unwind_Resume)
+	call	_Unwind_Resume
 	hlt
 .LENDCODE:
 	cfi_endproc
diff --git a/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S b/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
index c4d3504..c82f37b 100644
--- a/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
+++ b/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
@@ -518,7 +518,7 @@  __condvar_cleanup1:
 
 8:	movq	24(%rsp), %rdi
 .LcallUR:
-	call	JUMPTARGET(_Unwind_Resume)
+	call	_Unwind_Resume
 	hlt
 .LENDCODE:
 	cfi_endproc