[git commit master] mips: Add vfork to libc
Khem Raj
raj.khem at gmail.com
Wed May 19 22:59:50 UTC 2010
commit: http://git.uclibc.org/uClibc/commit/?id=e029f5e73de2c195d0a87e5816f28fb09594e80f
branch: http://git.uclibc.org/uClibc/commit/?id=refs/heads/master
* 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 at gmail.com>
---
libc/sysdeps/linux/mips/Makefile.arch | 4 +++-
libc/sysdeps/linux/mips/vfork.S | 7 +++++--
.../sysdeps/unix/sysv/linux/mips/Makefile.arch | 13 ++++++++++---
3 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/libc/sysdeps/linux/mips/Makefile.arch b/libc/sysdeps/linux/mips/Makefile.arch
index 73e6499..e8925e4 100644
--- a/libc/sysdeps/linux/mips/Makefile.arch
+++ b/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
diff --git a/libc/sysdeps/linux/mips/vfork.S b/libc/sysdeps/linux/mips/vfork.S
index 8400df0..b307447 100644
--- a/libc/sysdeps/linux/mips/vfork.S
+++ b/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
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile.arch
index 3042cb4..0307977 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile.arch
+++ b/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)
--
1.6.3.3
More information about the uClibc-cvs
mailing list