This commit gives us a fully functioning NPTL on x86-64 by using the GOTOFF 
macro
as needed.

Signed-off-by: William Pitcock <[email protected]>
---
 .../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S  |    2 +-
 .../unix/sysv/linux/x86_64/lowlevelrobustlock.S    |    2 +-
 .../sysv/linux/x86_64/pthread_cond_timedwait.S     |   10 +---------
 .../sysv/linux/x86_64/pthread_rwlock_timedrdlock.S |    2 +-
 .../sysv/linux/x86_64/pthread_rwlock_timedwrlock.S |    2 +-
 .../sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S |    2 +-
 6 files changed, 6 insertions(+), 14 deletions(-)

diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S 
b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
index f875323..e59bdda 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
@@ -163,7 +163,7 @@ __lll_timedlock_wait:
        cfi_startproc
 # ifndef __ASSUME_FUTEX_CLOCK_REALTIME
 #  ifdef __PIC__
-       cmpl    $0, __have_futex_clock_realtime(%rip)
+       cmpl    $0, __have_futex_clock_realtime@GOTOFF(%rip)
 #  else
        cmpl    $0, __have_futex_clock_realtime
 #  endif
diff --git 
a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S 
b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S
index 2eb8e29..5cc4256 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S
@@ -118,7 +118,7 @@ __lll_robust_timedlock_wait:
        cfi_startproc
 # ifndef __ASSUME_FUTEX_CLOCK_REALTIME
 #  ifdef __PIC__
-       cmpl    $0, __have_futex_clock_realtime(%rip)
+       cmpl    $0, __have_futex_clock_realtime@GOTOFF(%rip)
 #  else
        cmpl    $0, __have_futex_clock_realtime
 #  endif
diff --git 
a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S 
b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
index 3a965ad..645436f 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
@@ -98,7 +98,7 @@ __pthread_cond_timedwait:
 22:
 #ifndef __ASSUME_FUTEX_CLOCK_REALTIME
 #  ifdef __PIC__
-       cmpl    $0, __have_futex_clock_realtime(%rip)
+       cmpl    $0, __have_futex_clock_realtime@GOTOFF(%rip)
 #  else
        cmpl    $0, __have_futex_clock_realtime
 #  endif
@@ -437,14 +437,6 @@ __pthread_cond_timedwait:
        /* Only clocks 0 and 1 are allowed so far.  Both are handled in the
           kernel.  */
        leaq    32(%rsp), %rsi
-#  ifdef SHARED
-       movq    __vdso_clock_gettime@GOTPCREL(%rip), %rax
-       movq    (%rax), %rax
-       PTR_DEMANGLE (%rax)
-       jz      26f
-       call    *%rax
-       jmp     27f
-#  endif
 26:    movl    $__NR_clock_gettime, %eax
        syscall
 27:
diff --git 
a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S 
b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S
index 3629ffb..15edd61 100644
--- 
a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S
+++ 
b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S
@@ -96,7 +96,7 @@ pthread_rwlock_timedrdlock:
 11:
 #ifndef __ASSUME_FUTEX_CLOCK_REALTIME
 #  ifdef __PIC__
-       cmpl    $0, __have_futex_clock_realtime(%rip)
+       cmpl    $0, __have_futex_clock_realtime@GOTOFF(%rip)
 #  else
        cmpl    $0, __have_futex_clock_realtime
 #  endif
diff --git 
a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S 
b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S
index 23e1ee1..3c4a279 100644
--- 
a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S
+++ 
b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S
@@ -93,7 +93,7 @@ pthread_rwlock_timedwrlock:
 11:
 #ifndef __ASSUME_FUTEX_CLOCK_REALTIME
 #  ifdef __PIC__
-       cmpl    $0, __have_futex_clock_realtime(%rip)
+       cmpl    $0, __have_futex_clock_realtime@GOTOFF(%rip)
 #  else
        cmpl    $0, __have_futex_clock_realtime
 #  endif
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S 
b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S
index 704a222..3ff3412 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S
@@ -61,7 +61,7 @@ sem_timedwait:
 
 #ifndef __ASSUME_FUTEX_CLOCK_REALTIME
 #  ifdef __PIC__
-       cmpl    $0, __have_futex_clock_realtime(%rip)
+       cmpl    $0, __have_futex_clock_realtime@GOTOFF(%rip)
 #  else
        cmpl    $0, __have_futex_clock_realtime
 #  endif
-- 
1.7.4.1

_______________________________________________
uClibc mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/uclibc

Reply via email to