ソースを参照

fixes to get nptl compiling for x86_64

Signed-off-by: Austin Foxley <austinf@cetoncorp.com>
Austin Foxley 14 年 前
コミット
8826c1e457

+ 1 - 1
libc/sysdeps/linux/common/Makefile.in

@@ -39,7 +39,7 @@ CSRC := $(filter-out fork.c getpid.c raise.c open.c close.c read.c write.c, $(CS
 ifeq ($(TARGET_ARCH),arm)
 CSRC := $(filter-out vfork.c, $(CSRC))
 else ifeq ($(TARGET_ARCH),x86_64)
-#do nothing
+CSRC := $(filter-out vfork.c, $(CSRC))
 else
 CSRC := $(filter-out waitpid.c, $(CSRC))
 endif

+ 4 - 7
libc/sysdeps/linux/x86_64/sysdep.h

@@ -116,9 +116,6 @@ lose:									      \
 #endif
 
 #endif	/* __ASSEMBLER__ */
-#ifdef IS_IN_rtld
-# include <dl-sysdep.h>		/* Defines RTLD_PRIVATE_ERRNO.  */
-#endif
 
 /* For Linux we can use the system call table in the header file
 	/usr/include/asm/unistd.h
@@ -320,10 +317,10 @@ lose:									      \
 #  define PTR_DEMANGLE(reg)	rorq $17, reg;				      \
 				xorq __pointer_chk_guard_local(%rip), reg
 # else
-#  define PTR_MANGLE(reg)	asm ("xorq __pointer_chk_guard_local(%%rip), %0\n" \
+#  define PTR_MANGLE(reg)	__asm__ ("xorq __pointer_chk_guard_local(%%rip), %0\n" \
 				     "rolq $17, %0"			      \
 				     : "=r" (reg) : "0" (reg))
-#  define PTR_DEMANGLE(reg)	asm ("rorq $17, %0\n"			      \
+#  define PTR_DEMANGLE(reg)	__asm__ ("rorq $17, %0\n"			      \
 				     "xorq __pointer_chk_guard_local(%%rip), %0" \
 				     : "=r" (reg) : "0" (reg))
 # endif
@@ -334,13 +331,13 @@ lose:									      \
 #  define PTR_DEMANGLE(reg)	rorq $17, reg;				      \
 				xorq %fs:POINTER_GUARD, reg
 # else
-#  define PTR_MANGLE(var)	asm ("xorq %%fs:%c2, %0\n"		      \
+#  define PTR_MANGLE(var)	__asm__ ("xorq %%fs:%c2, %0\n"		      \
 				     "rolq $17, %0"			      \
 				     : "=r" (var)			      \
 				     : "0" (var),			      \
 				       "i" (offsetof (tcbhead_t,	      \
 						      pointer_guard)))
-#  define PTR_DEMANGLE(var)	asm ("rorq $17, %0\n"			      \
+#  define PTR_DEMANGLE(var)	__asm__ ("rorq $17, %0\n"			      \
 				     "xorq %%fs:%c2, %0"		      \
 				     : "=r" (var)			      \
 				     : "0" (var),			      \

+ 4 - 0
libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/Makefile.arch

@@ -42,6 +42,10 @@ ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
 #Needed to use the correct SYSCALL_ERROR_HANDLER
 ASFLAGS-clone.S += -DUSE___THREAD
 ASFLAGS-vfork.S += -DUSE___THREAD
+ASFLAGS-sem_wait.S += -DUSE___THREAD
+ASFLAGS-sem_trywait.S += -DUSE___THREAD
+ASFLAGS-sem_timedwait.S += -DUSE___THREAD
+ASFLAGS-sem_post.S += -DUSE___THREAD
 endif
 
 CFLAGS += $(SSP_ALL_CFLAGS)

+ 1 - 0
libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S

@@ -21,6 +21,7 @@
 #include <pthread-errnos.h>
 #include <bits/kernel-features.h>
 #include <lowlevellock.h>
+#include <tcb-offsets.h>
 
 	.text
 

+ 0 - 1
libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/not-cancel.h

@@ -1 +0,0 @@
-#include "../i386/not-cancel.h"

+ 0 - 8
libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S

@@ -40,14 +40,6 @@
 __pthread_cond_timedwait:
 .LSTARTCODE:
 	cfi_startproc
-#ifdef SHARED
-	cfi_personality(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect,
-			DW.ref.__gcc_personality_v0)
-	cfi_lsda(DW_EH_PE_pcrel | DW_EH_PE_sdata4, .LexceptSTART)
-#else
-	cfi_personality(DW_EH_PE_udata4, __gcc_personality_v0)
-	cfi_lsda(DW_EH_PE_udata4, .LexceptSTART)
-#endif
 
 	pushq	%r12
 	cfi_adjust_cfa_offset(8)

+ 0 - 8
libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S

@@ -35,14 +35,6 @@
 __pthread_cond_wait:
 .LSTARTCODE:
 	cfi_startproc
-#ifdef SHARED
-	cfi_personality(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect,
-			DW.ref.__gcc_personality_v0)
-	cfi_lsda(DW_EH_PE_pcrel | DW_EH_PE_sdata4, .LexceptSTART)
-#else
-	cfi_personality(DW_EH_PE_udata4, __gcc_personality_v0)
-	cfi_lsda(DW_EH_PE_udata4, .LexceptSTART)
-#endif
 
 #define FRAME_SIZE 32
 	leaq	-FRAME_SIZE(%rsp), %rsp

+ 0 - 8
libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S

@@ -34,14 +34,6 @@
 __pthread_once:
 .LSTARTCODE:
 	cfi_startproc
-#ifdef SHARED
-	cfi_personality(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect,
-			DW.ref.__gcc_personality_v0)
-	cfi_lsda(DW_EH_PE_pcrel | DW_EH_PE_sdata4, .LexceptSTART)
-#else
-	cfi_personality(DW_EH_PE_udata4, __gcc_personality_v0)
-	cfi_lsda(DW_EH_PE_udata4, .LexceptSTART)
-#endif
 	testl	$2, (%rdi)
 	jz	1f
 	xorl	%eax, %eax

+ 0 - 8
libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S

@@ -35,14 +35,6 @@
 sem_timedwait:
 .LSTARTCODE:
 	cfi_startproc
-#ifdef SHARED
-	cfi_personality(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect,
-			DW.ref.__gcc_personality_v0)
-	cfi_lsda(DW_EH_PE_pcrel | DW_EH_PE_sdata4, .LexceptSTART)
-#else
-	cfi_personality(DW_EH_PE_udata4, __gcc_personality_v0)
-	cfi_lsda(DW_EH_PE_udata4, .LexceptSTART)
-#endif
 #if VALUE == 0
 	movl	(%rdi), %eax
 #else

+ 0 - 8
libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S

@@ -31,14 +31,6 @@
 sem_wait:
 .LSTARTCODE:
 	cfi_startproc
-#ifdef SHARED
-	cfi_personality(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect,
-			DW.ref.__gcc_personality_v0)
-	cfi_lsda(DW_EH_PE_pcrel | DW_EH_PE_sdata4, .LexceptSTART)
-#else
-	cfi_personality(DW_EH_PE_udata4, __gcc_personality_v0)
-	cfi_lsda(DW_EH_PE_udata4, .LexceptSTART)
-#endif
 
 #if VALUE == 0
 	movl	(%rdi), %eax