summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2000-12-13 16:29:09 +0000
committerEric Andersen <andersen@codepoet.org>2000-12-13 16:29:09 +0000
commit97112ff6f4f2a1dcd4c7f8a7512e0a4a02a2a332 (patch)
tree07381b1c6b4d0e1fa592554e6cae8f7f7dc4972e
parent4c1ad88f60d7b2b12b61bc648bcb4c6a4b35fdeb (diff)
Handle fork and vfork on a per architecture basis...
-rw-r--r--include/unistd.h5
-rw-r--r--libc/sysdeps/linux/arm/Makefile2
-rw-r--r--libc/sysdeps/linux/common/syscalls.c9
-rw-r--r--libc/sysdeps/linux/i386/Makefile2
-rw-r--r--test/string/Makefile10
5 files changed, 19 insertions, 9 deletions
diff --git a/include/unistd.h b/include/unistd.h
index ebba54f8d..1ccd29480 100644
--- a/include/unistd.h
+++ b/include/unistd.h
@@ -646,8 +646,11 @@ extern int setegid __P ((__gid_t __gid));
/* Clone the calling process, creating an exact copy.
Return -1 for errors, 0 to the new process,
and the process ID of the new process to the old process. */
-extern __pid_t __fork __P ((void));
+#ifdef __HAS_NO_MMU__
+#define fork fork_not_available_on_mmuless_systems
+#else
extern __pid_t fork __P ((void));
+#endif
#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
/* Clone the calling process, but without copying the whole address space.
diff --git a/libc/sysdeps/linux/arm/Makefile b/libc/sysdeps/linux/arm/Makefile
index b880bf446..db3cf1966 100644
--- a/libc/sysdeps/linux/arm/Makefile
+++ b/libc/sysdeps/linux/arm/Makefile
@@ -28,7 +28,7 @@ ASFLAGS=$(CFLAGS)
SSRC=_start.S longjmp.S setjmp.S
SOBJS=$(patsubst %.S,%.o, $(SSRC))
-CSRC=
+CSRC=fork.c vfork.c
COBJS=$(patsubst %.c,%.o, $(CSRC))
OBJS=$(SOBJS) $(MOBJ) $(COBJS)
diff --git a/libc/sysdeps/linux/common/syscalls.c b/libc/sysdeps/linux/common/syscalls.c
index 144581028..c0630e1fd 100644
--- a/libc/sysdeps/linux/common/syscalls.c
+++ b/libc/sysdeps/linux/common/syscalls.c
@@ -36,10 +36,7 @@ _syscall1(void, _exit, int, status);
#endif
//#define __NR_fork 2
-#ifdef L_fork
-#include <unistd.h>
-_syscall0(pid_t, fork);
-#endif
+//See architecture specific implementation...
//#define __NR_read 3
#ifdef L_read
@@ -791,6 +788,7 @@ _syscall1(int, fsync, int, fd);
//int sigreturn(unsigned long __unused);
//#define __NR_clone 120
+//See architecture specific implementation...
//#define __NR_setdomainname 121
#ifdef L_setdomainname
@@ -1060,3 +1058,6 @@ SYSCALL__(poll, 3)
//#define __NR_putpmsg 189
//#define __NR_vfork 190
+//See architecture specific implementation...
+
+
diff --git a/libc/sysdeps/linux/i386/Makefile b/libc/sysdeps/linux/i386/Makefile
index 1f25ff156..f4520b4ac 100644
--- a/libc/sysdeps/linux/i386/Makefile
+++ b/libc/sysdeps/linux/i386/Makefile
@@ -28,7 +28,7 @@ ASFLAGS=$(CFLAGS)
SSRC=_start.S longjmp.S setjmp.S #_start.S #clone.S
SOBJS=$(patsubst %.S,%.o, $(SSRC))
-CSRC=#select.c
+CSRC=fork.c vfork.c
COBJS=$(patsubst %.c,%.o, $(CSRC))
OBJS=$(SOBJS) $(COBJS)
diff --git a/test/string/Makefile b/test/string/Makefile
index c68996812..7bcd6dc76 100644
--- a/test/string/Makefile
+++ b/test/string/Makefile
@@ -5,9 +5,15 @@ include $(TOPDIR)Rules.mak
LSFLAGS = $(shell if ls -sh >/dev/null 2>&1; \
then echo "-sh"; else echo "-s" ; fi)
-XCFLAGS = -Wall -Os -fomit-frame-pointer -fno-builtin -nostdinc \
+#XCFLAGS = -Wall -Os -fomit-frame-pointer -fno-builtin -nostdinc \
+# -I$(TOPDIR)include -I/usr/include/linux
+#XLDFLAGS = -nostdlib -s -gc-sections
+STRIPTOOL=/bin/true
+
+
+XCFLAGS = -Wall -g -fno-builtin -nostdinc \
-I$(TOPDIR)include -I/usr/include/linux
-XLDFLAGS = -nostdlib -s -gc-sections
+XLDFLAGS = -nostdlib -gc-sections
EXTRA_LIBS=$(TOPDIR)libc.a -lgcc
YCFLAGS = -Wall -Os -fomit-frame-pointer