From 97112ff6f4f2a1dcd4c7f8a7512e0a4a02a2a332 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Wed, 13 Dec 2000 16:29:09 +0000 Subject: Handle fork and vfork on a per architecture basis... --- include/unistd.h | 5 ++++- libc/sysdeps/linux/arm/Makefile | 2 +- libc/sysdeps/linux/common/syscalls.c | 9 +++++---- libc/sysdeps/linux/i386/Makefile | 2 +- test/string/Makefile | 10 ++++++++-- 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 -_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 -- cgit v1.2.3