Browse Source

mips: Add vfork to libc

* When using NPTL get clone.o from nptl.
* Only use vfork if syscall is there.
* Add libc_a_SSRC to LINUX_LIBC_ARCH_OBJ.
* Use CLEAN_* for clean target.

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Khem Raj 14 years ago
parent
commit
e029f5e73d

+ 3 - 1
libc/sysdeps/linux/mips/Makefile.arch

@@ -10,15 +10,17 @@ CSRC := \
 	cacheflush.c pread_write.c sysmips.c _test_and_set.c \
 	readahead.c
 
+SSRC := bsd-_setjmp.S bsd-setjmp.S setjmp.S syscall.S pipe.S
+
 ifeq ($(UCLIBC_HAS_ADVANCED_REALTIME),y)
 CSRC += posix_fadvise.c posix_fadvise64.c
 endif
 
 ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y)
 CSRC += sigaction.c
+SSRC += vfork.S clone.S
 endif
 
-SSRC := bsd-_setjmp.S bsd-setjmp.S setjmp.S clone.S syscall.S pipe.S
 
 ARCH_HEADERS := sgidefs.h
 # regdef.h

+ 5 - 2
libc/sysdeps/linux/mips/vfork.S

@@ -29,6 +29,7 @@
 #define RESTORE_PID
 #endif
 
+#ifdef __NR_fork
 
 /* int vfork() */
 
@@ -93,5 +94,7 @@ L(error):
 #endif
 	END(__vfork)
 
-.weak vfork;
-	vfork = __vfork
+weak_alias(__vfork,vfork)
+libc_hidden_weak(vfork)
+
+#endif

+ 10 - 3
libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile.arch

@@ -22,6 +22,12 @@ ASFLAGS-pt-vfork.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1
 
 ASFLAGS-clone.S = -D_LIBC_REENTRANT
 ASFLAGS-vfork.S = -D_LIBC_REENTRANT
+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-pt-vfork.S += -DUSE___THREAD
+endif
 
 CFLAGS += $(SSP_ALL_CFLAGS)
 #CFLAGS:=$(CFLAGS:-O1=-O2)
@@ -42,13 +48,14 @@ libpthread-so-y += $(LINUX_ARCH_OBJ:.o=.oS)
 libpthread-nomulti-y+=$(LINUX_ARCH_OBJS)
 
 LIBC_LINUX_ARCH_OBJ:=$(patsubst %.c,$(LINUX_ARCH_OUT)/%.o,$(libc_a_CSRC))
+LIBC_LINUX_ARCH_OBJ+=$(patsubst %.S,$(LINUX_ARCH_OUT)/%.o,$(libc_a_SSRC))
 
 libc-static-y+=$(LIBC_LINUX_ARCH_OBJ)
 libc-shared-y+=$(LIBC_LINUX_ARCH_OBJ:.o=.oS)
 
 libc-nomulti-y+=$(LIBC_LINUX_ARCH_OBJ)
 
-objclean-y+=pthread_linux_arch_objclean
+objclean-y+=CLEAN_libpthread/nptl/sysdeps/unix/sysv/linux/mips
 
-pthread_linux_arch_objclean:
-	$(RM) $(LINUX_ARCH_OUT)/*.{o,os,oS}
+CLEAN_libpthread/nptl/sysdeps/unix/sysv/linux/mips:
+	$(do_rm) $(addprefix $(LINUX_ARCH_OUT)/*., o os oS)