[git commit master 1/1] nptl: fix compilation on x86_64

Khem Raj raj.khem at gmail.com
Wed Mar 9 06:47:49 UTC 2011


commit: http://git.uclibc.org/uClibc/commit/?id=526af41956be03b56e1bf33ec144e797256c1255
branch: http://git.uclibc.org/uClibc/commit/?id=refs/heads/master

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

Signed-off-by: William Pitcock <nenolod at dereferenced.org>
Signed-off-by: Khem Raj <raj.khem at gmail.com>
---
 .../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 at 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 at 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 at 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 at 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 at 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 at 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 at GOTOFF(%rip)
 #  else
 	cmpl	$0, __have_futex_clock_realtime
 #  endif
-- 
1.7.3.4



More information about the uClibc-cvs mailing list