]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Fri Mar 3 12:24:52 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
authorRoland McGrath <roland@gnu.org>
Mon, 6 Mar 1995 00:27:08 +0000 (00:27 +0000)
committerRoland McGrath <roland@gnu.org>
Mon, 6 Mar 1995 00:27:08 +0000 (00:27 +0000)
* sysdeps/generic/sys/mman.h (__mmap, __munmap): Declare these.
* sysdeps/unix/sysv/irix4/sys/mman.h: Likewise.
* sysdeps/unix/bsd/ultrix4/sys/mman.h: Likewise.
* sysdeps/unix/bsd/osf1/sys/mman.h: Likewise.
* sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Likewise.
* sysdeps/stub/munmap.c (munmap): Rename to __munmap, add weak
  alias munmap.
* sysdeps/unix/mman/munmap.S: Likewise.
* sysdeps/mach/munmap.c: Likewise.
* sysdeps/mach/hurd/mmap.c (mmap): Rename to __mmap, add weak
  alias mmap.
* sysdeps/unix/mman/mmap.S: Likewise.
* sysdeps/unix/bsd/sun/sunos4/mmap.c: Likewise.
* sysdeps/stub/mmap.c: Likewise.

* sysdeps/unix/bsd/setsid.c: Use __getpgid instead of __getpgrp.

* sysdeps/unix/dirfd.c: #undef dirfd before function defn.

Thu Mar  2 12:15:24 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

* misc/search.h: Add missing semicolon.

* sysdeps/unix/dirfd.c: Fix typo.

* sysdeps/generic/sys/mman.h (mmap): Use __off_t instead of off_t
  in decl.

* stdio/vfscanf.c (%c): In no-assign case, fix loop to decrement
  WIDTH before test.

22 files changed:
ChangeLog
misc/search.h
stdio/vfscanf.c
sysdeps/generic/sys/mman.h
sysdeps/mach/hurd/mmap.c
sysdeps/mach/munmap.c
sysdeps/stub/mmap.c
sysdeps/stub/munmap.c
sysdeps/unix/bsd/Attic/osf1/sys/mman.h
sysdeps/unix/bsd/hp/m68k/vfork.S [new file with mode: 0644]
sysdeps/unix/bsd/i386/vfork.S [new file with mode: 0644]
sysdeps/unix/bsd/setsid.c
sysdeps/unix/bsd/sun/m68k/vfork.S [new file with mode: 0644]
sysdeps/unix/bsd/sun/sunos4/mmap.c
sysdeps/unix/bsd/sun/sunos4/sys/mman.h
sysdeps/unix/bsd/ultrix4/sys/mman.h
sysdeps/unix/bsd/vax/vfork.S [new file with mode: 0644]
sysdeps/unix/dirfd.c
sysdeps/unix/i386/vfork.S [new file with mode: 0644]
sysdeps/unix/mman/mmap.S
sysdeps/unix/mman/munmap.S
sysdeps/unix/sysv/irix4/sys/mman.h

index ef7324d05f6f070e7577a8523d77aa3bb4ea59e6..2ce34030a2deee953bd29a8e10bd365a5758e60f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,36 @@
+Fri Mar  3 12:24:52 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * sysdeps/generic/sys/mman.h (__mmap, __munmap): Declare these.
+       * sysdeps/unix/sysv/irix4/sys/mman.h: Likewise.
+       * sysdeps/unix/bsd/ultrix4/sys/mman.h: Likewise.
+       * sysdeps/unix/bsd/osf1/sys/mman.h: Likewise.
+       * sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Likewise.
+       * sysdeps/stub/munmap.c (munmap): Rename to __munmap, add weak
+       alias munmap.
+       * sysdeps/unix/mman/munmap.S: Likewise.
+       * sysdeps/mach/munmap.c: Likewise.
+       * sysdeps/mach/hurd/mmap.c (mmap): Rename to __mmap, add weak
+       alias mmap.
+       * sysdeps/unix/mman/mmap.S: Likewise.
+       * sysdeps/unix/bsd/sun/sunos4/mmap.c: Likewise.
+       * sysdeps/stub/mmap.c: Likewise.
+
+       * sysdeps/unix/bsd/setsid.c: Use __getpgid instead of __getpgrp.
+
+       * sysdeps/unix/dirfd.c: #undef dirfd before function defn.
+
+Thu Mar  2 12:15:24 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * misc/search.h: Add missing semicolon.
+
+       * sysdeps/unix/dirfd.c: Fix typo.
+
+       * sysdeps/generic/sys/mman.h (mmap): Use __off_t instead of off_t
+       in decl.
+
+       * stdio/vfscanf.c (%c): In no-assign case, fix loop to decrement
+       WIDTH before test.
+
 Wed Mar  1 00:57:47 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
 
        * stdlib/strtod.c: Fixes from drepper.
index 2e5615de9bf236aaa6106775cd092ce8ec933f34..c6d18702cae85baf0b41541ec94c560223713673 100644 (file)
@@ -41,7 +41,7 @@ struct qelem
 extern void insque __P ((struct qelem *__elem, struct qelem *__prev));
 
 /* Unlink ELEM from the doubly-linked list that it is in.  */
-extern void remque __P ((struct qelem *elem))
+extern void remque __P ((struct qelem *elem));
 
 
 __END_DECLS
index 681e89819b20d0a72fc5fc7b13cfe5164f53c6fd..10baa94ecc8c4e0cef8ec30cca221bd441ec024c 100644 (file)
@@ -231,8 +231,7 @@ DEFUN(__vfscanf, (s, format, arg),
              while (inchar() != EOF && --width > 0);
            }
          else
-           while (inchar() != EOF && width > 0)
-             --width;
+           while (inchar() != EOF && --width > 0);
 
          if (do_assign)
            ++done;
index 3575eeb3b477487b3898f4e68c79cd48f529e9a8..e9d69ec1add1bb4266a18576edca2118407a9869 100644 (file)
@@ -1,5 +1,5 @@
 /* Definitions for BSD-style memory management.  Generic/4.4 BSD version.
-Copyright (C) 1994 Free Software Foundation, Inc.
+Copyright (C) 1994, 1995 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
 
 The GNU C Library is free software; you can redistribute it and/or
@@ -79,11 +79,14 @@ __BEGIN_DECLS
    for errors (in which case `errno' is set).  A successful `mmap' call
    deallocates any previous mapping for the affected region.  */
 
+__caddr_t __mmap __P ((__caddr_t __addr, size_t __len,
+                      int __prot, int __flags, int __fd, __off_t __offset));
 __caddr_t mmap __P ((__caddr_t __addr, size_t __len,
-                    int __prot, int __flags, int __fd, off_t __offset));
+                    int __prot, int __flags, int __fd, __off_t __offset));
 
 /* Deallocate any mapping for the region starting at ADDR and extending LEN
    bytes.  Returns 0 if successful, -1 for errors (and sets errno).  */
+int __munmap __P ((__caddr_t __addr, size_t __len));
 int munmap __P ((__caddr_t __addr, size_t __len));
 
 /* Change the memory protection of the region starting at ADDR and
index e682225ec8e45690b08868d345fa08ee3297b08d..0fb1a08cfb81b2a618b9f02d1a3e9967d38c63b0 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994 Free Software Foundation, Inc.
+/* Copyright (C) 1994, 1995 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
 
 The GNU C Library is free software; you can redistribute it and/or
@@ -32,7 +32,7 @@ Cambridge, MA 02139, USA.  */
    deallocates any previous mapping for the affected region.  */
 
 caddr_t
-mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
+__mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
 {
   error_t err;
   vm_prot_t vmprot;
@@ -102,4 +102,6 @@ mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
 
   return err ? (caddr_t) (long int) __hurd_fail (err) : (caddr_t) mapaddr;
 }
+
+weak_alias (__mmap, mmap)
        
index 5ca11298f364079a17e9b16dc00e611f47317c50..29270bb7f43b492f516706996b08520ac7641941 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994 Free Software Foundation, Inc.
+/* Copyright (C) 1994, 1995 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
 
 The GNU C Library is free software; you can redistribute it and/or
@@ -25,7 +25,7 @@ Cambridge, MA 02139, USA.  */
    bytes.  Returns 0 if successful, -1 for errors (and sets errno).  */
 
 int
-munmap (caddr_t addr, size_t len)
+__munmap (caddr_t addr, size_t len)
 {
   kern_return_t err;
   if (err = __vm_deallocate (__mach_task_self (),
@@ -36,4 +36,5 @@ munmap (caddr_t addr, size_t len)
     }
   return 0;
 }
-       
+
+weak_alias (__munmap, munmap)
index 5ee4fa7797e05b8702de21f53cb73dc4f5072994..e230c9d8a40b13db47e3f60ae95aac774694ebfd 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994 Free Software Foundation, Inc.
+/* Copyright (C) 1994, 1995 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
 
 The GNU C Library is free software; you can redistribute it and/or
@@ -20,7 +20,7 @@ Cambridge, MA 02139, USA.  */
 #include <sys/mman.h>
 #include <errno.h>
 
-/* Map addresses starting near ADDR and extending for LEN bytes.  from
+/* Map addresses starting near ADDR and extending for LEN bytes.  From
    OFFSET into the file FD describes according to PROT and FLAGS.  If ADDR
    is nonzero, it is the desired mapping address.  If the MAP_FIXED bit is
    set in FLAGS, the mapping will be at ADDR exactly (which must be
@@ -30,9 +30,10 @@ Cambridge, MA 02139, USA.  */
    deallocates any previous mapping for the affected region.  */
 
 caddr_t
-mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
+__mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
 {
   errno = ENOSYS;
   return (caddr_t) -1;
 }
-       
+
+weak_alias (__mmap, mmap)
index c12889a1e55bb8891f112a197a7b7b488be0b855..ba61e0f97a544591c08fa2592cb31395f55acd7c 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994 Free Software Foundation, Inc.
+/* Copyright (C) 1994, 1995 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
 
 The GNU C Library is free software; you can redistribute it and/or
@@ -24,9 +24,10 @@ Cambridge, MA 02139, USA.  */
    bytes.  Returns 0 if successful, -1 for errors (and sets errno).  */
 
 int
-munmap (caddr_t addr, size_t len)
+__munmap (caddr_t addr, size_t len)
 {
   errno = ENOSYS;
   return -1;
 }
-       
+
+weak_alias (__munmap, munmap)
index 6ac25f459f0ba36148f87c0dda99b765131e27b3..397ad285350a21237606214317195be835ce8689 100644 (file)
@@ -1,5 +1,5 @@
 /* Definitions for BSD-style memory management.  OSF/1 version.
-Copyright (C) 1994 Free Software Foundation, Inc.
+Copyright (C) 1994, 1995 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
 
 The GNU C Library is free software; you can redistribute it and/or
@@ -17,10 +17,6 @@ License along with the GNU C Library; see the file COPYING.LIB.  If
 not, write to the Free Software Foundation, Inc., 675 Mass Ave,
 Cambridge, MA 02139, USA.  */
 
-/* These are the bits used by 4.4 BSD and its derivatives.  On systems
-   (such as GNU) where these facilities are not system services but can be
-   emulated in the C library, these are the definitions we emulate.  */
-
 #ifndef        _SYS_MMAN_H
 
 #define        _SYS_MMAN_H     1
@@ -87,11 +83,14 @@ __BEGIN_DECLS
    for errors (in which case `errno' is set).  A successful `mmap' call
    deallocates any previous mapping for the affected region.  */
 
+__caddr_t __mmap __P ((__caddr_t __addr, size_t __len,
+                      int __prot, int __flags, int __fd, off_t __offset));
 __caddr_t mmap __P ((__caddr_t __addr, size_t __len,
                     int __prot, int __flags, int __fd, off_t __offset));
 
 /* Deallocate any mapping for the region starting at ADDR and extending LEN
    bytes.  Returns 0 if successful, -1 for errors (and sets errno).  */
+int __munmap __P ((__caddr_t __addr, size_t __len));
 int munmap __P ((__caddr_t __addr, size_t __len));
 
 /* Change the memory protection of the region starting at ADDR and
diff --git a/sysdeps/unix/bsd/hp/m68k/vfork.S b/sysdeps/unix/bsd/hp/m68k/vfork.S
new file mode 100644 (file)
index 0000000..b70c122
--- /dev/null
@@ -0,0 +1,55 @@
+/* Copyright (C) 1991, 1994, 1995 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#include <sysdep.h>
+
+#ifndef        SYS_vfork
+#define        SYS_vfork       66
+#endif
+
+/* Clone the calling process, but without copying the whole address space.
+   The the calling process is suspended until the the new process exits or is
+   replaced by a call to `execve'.  Return -1 for errors, 0 to the new process,
+   and the process ID of the new process to the old process.  */
+.globl ___vfork
+___vfork:
+       /* Pop the return PC value into A0.  */
+       moveal sp@+, a0
+
+       /* Stuff the syscall number in D0 and trap into the kernel.  */
+       movel #SYS_vfork, d0
+       trap #0
+       bcs error               /* Branch forward if it failed.  */
+
+       /* It succeeded.  See which fork we're in.  D1 is now 0 for the
+          parent and 1 for the child.  Decrement it to make it -1 (all
+          bits set) for the parent, and 0 (no bits set) for the child.
+          Then AND it with D0, so the parent gets D0&-1==R0, and the child
+          gets D0&0==0.  */
+       subl #1, d1
+       andl d1, d0
+
+       /* Jump to the return PC.  */
+       jmp a0@
+
+error:
+       movel d0, _errno
+       moveq #-1, d0
+       jmp a0@
+
+weak_alias (__vfork, vfork)
diff --git a/sysdeps/unix/bsd/i386/vfork.S b/sysdeps/unix/bsd/i386/vfork.S
new file mode 100644 (file)
index 0000000..af7f907
--- /dev/null
@@ -0,0 +1,39 @@
+/* Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#include <sysdep.h>
+
+/* Since vfork shares the address space between the parent and child,
+   we must take care to avoid the child unwinding the stack frame and
+   clobbering it for the parent.  */
+
+.text
+ENTRY (__vfork)
+       popl scratch            /* Save the return PC in a register.  */
+       DO_CALL (vfork, 0)      /* Do the system call.  */
+       pushl scratch           /* Put the return PC back on the stack.  */
+       jb syscall_error        /* Branch if error.  */
+       /* R1 is now 0 for the parent and 1 for the child.  Decrement it to
+          make it -1 (all bits set) for the parent, and 0 (no bits set)
+          for the child.  Then AND it with R0, so the parent gets
+          R0&-1==R0, and the child gets R0&0==0.  */
+       decl r1
+       andl r1, r0
+       ret
+
+weak_alias (__vfork, vfork)
index 59594101cfe868567808734a0eecfeb69d797d4d..e05769458967b5e6691e30c62549b242f11593a2 100644 (file)
@@ -33,7 +33,7 @@ DEFUN_VOID(__setsid)
   int tty;
   int save = errno;
 
-  if (__getpgrp (pid) == pid)
+  if (__getpgid (pid) == pid)
     {
       /* Already the leader.  */
       errno = EPERM;
diff --git a/sysdeps/unix/bsd/sun/m68k/vfork.S b/sysdeps/unix/bsd/sun/m68k/vfork.S
new file mode 100644 (file)
index 0000000..cb7dae8
--- /dev/null
@@ -0,0 +1,55 @@
+/* Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#include <sysdep.h>
+
+#ifndef        SYS_vfork
+#define        SYS_vfork       66
+#endif
+
+/* Clone the calling process, but without copying the whole address space.
+   The the calling process is suspended until the the new process exits or is
+   replaced by a call to `execve'.  Return -1 for errors, 0 to the new process,
+   and the process ID of the new process to the old process.  */
+.globl ___vfork
+___vfork:
+       /* Pop the return PC value into A0.  */
+       movel sp@+, a0
+
+       /* Push the syscall number and trap into the kernel.  */
+       movel #SYS_vfork, sp@-
+       trap #0
+       bcs error               /* Branch forward if it failed.  */
+
+       /* It succeeded.  See which fork we're in.  D1 is now 0 for the
+          parent and 1 for the child.  Decrement it to make it -1 (all
+          bits set) for the parent, and 0 (no bits set) for the child.
+          Then AND it with D0, so the parent gets D0&-1==R0, and the child
+          gets D0&0==0.  */
+       decl d1
+       andl d1, d0
+
+       /* Jump to the return PC.  */
+       jmp a0@
+
+error:
+       movel d0, _errno
+       moveq #-1, d0
+       jmp a0@
+
+weak_alias (__vfork, vfork)
index 4dfc1ca2dabcd236e5f36a644aec4aaed8bde3e0..b71937381b2c25518d55f5114ea234a2301ebe6f 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994 Free Software Foundation, Inc.
+/* Copyright (C) 1994, 1995 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
 
 The GNU C Library is free software; you can redistribute it and/or
@@ -34,8 +34,9 @@ extern caddr_t __mmap_syscall (caddr_t addr, size_t len,
 
 
 caddr_t
-mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
+__mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
 {
   return __mmap_syscall (addr, len, prot, flags | _MAP_NEW, fd, offset);
 }
-       
+
+weak_alias (__mmap, mmap)
index 727e665fb677c0d201e12dbcfa1edd394f4849dd..10f31a898e8f6c26a9318ffd89d6036eadd41353 100644 (file)
@@ -1,5 +1,5 @@
 /* Definitions for BSD-style memory management.  SunOS 4 version.
-Copyright (C) 1994 Free Software Foundation, Inc.
+Copyright (C) 1994, 1995 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
 
 The GNU C Library is free software; you can redistribute it and/or
@@ -80,11 +80,14 @@ __BEGIN_DECLS
    for errors (in which case `errno' is set).  A successful `mmap' call
    deallocates any previous mapping for the affected region.  */
 
+__caddr_t __mmap __P ((__caddr_t __addr, size_t __len,
+                      int __prot, int __flags, int __fd, __off_t __offset));
 __caddr_t mmap __P ((__caddr_t __addr, size_t __len,
                     int __prot, int __flags, int __fd, __off_t __offset));
 
 /* Deallocate any mapping for the region starting at ADDR and extending LEN
    bytes.  Returns 0 if successful, -1 for errors (and sets errno).  */
+int __munmap __P ((__caddr_t __addr, size_t __len));
 int munmap __P ((__caddr_t __addr, size_t __len));
 
 /* Change the memory protection of the region starting at ADDR and
index c850b4f7c825574b5d5775cc82477237673d9e0f..d49da02c32526916058ba01a92d267373d4cdf04 100644 (file)
@@ -1,5 +1,5 @@
 /* Definitions for BSD-style memory management.  Ultrix 4 version.
-Copyright (C) 1994 Free Software Foundation, Inc.
+Copyright (C) 1994, 1995 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
 
 The GNU C Library is free software; you can redistribute it and/or
@@ -17,10 +17,6 @@ License along with the GNU C Library; see the file COPYING.LIB.  If
 not, write to the Free Software Foundation, Inc., 675 Mass Ave,
 Cambridge, MA 02139, USA.  */
 
-/* These are the bits used by 4.4 BSD and its derivatives.  On systems
-   (such as GNU) where these facilities are not system services but can be
-   emulated in the C library, these are the definitions we emulate.  */
-
 #ifndef        _SYS_MMAN_H
 
 #define        _SYS_MMAN_H     1
@@ -70,11 +66,14 @@ __BEGIN_DECLS
    for errors (in which case `errno' is set).  A successful `mmap' call
    deallocates any previous mapping for the affected region.  */
 
+__caddr_t __mmap __P ((__caddr_t __addr, size_t __len,
+                      int __prot, int __flags, int __fd, off_t __offset));
 __caddr_t mmap __P ((__caddr_t __addr, size_t __len,
                     int __prot, int __flags, int __fd, off_t __offset));
 
 /* Deallocate any mapping for the region starting at ADDR and extending LEN
    bytes.  Returns 0 if successful, -1 for errors (and sets errno).  */
+int __munmap __P ((__caddr_t __addr, size_t __len));
 int munmap __P ((__caddr_t __addr, size_t __len));
 
 /* Change the memory protection of the region starting at ADDR and
diff --git a/sysdeps/unix/bsd/vax/vfork.S b/sysdeps/unix/bsd/vax/vfork.S
new file mode 100644 (file)
index 0000000..daf8f0f
--- /dev/null
@@ -0,0 +1,57 @@
+/* Copyright (C) 1991, 1992, 1995 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#include <sysdep.h>
+
+#ifndef        SYS_vfork
+#define        SYS_vfork       66
+#endif
+
+/* Clone the calling process, but without copying the whole address space.
+   The the calling process is suspended until the the new process exits or is
+   replaced by a call to `execve'.  Return -1 for errors, 0 to the new process,
+   and the process ID of the new process to the old process.  */
+.globl ___vfork
+error: jmp syscall_error
+___vfork:
+       .word 0
+       /* Save our return address in R2, and return to code below.  */
+       movl 16(fp), r2
+       movab unwind, 16(fp)
+       ret
+unwind:
+       /* Do the system call.  */
+       chmk $SYS_vfork
+       bcs error
+
+       tstl r1
+       beq parent
+
+       /* We are the child.  Return zero.  */
+       clrl r0
+
+       /* Return to the saved address.  */
+parent:        jmp (r2)
+
+.globl _errno
+error:
+       movl r0, _errno
+       mnegl $1, r0
+       jmp (r2)
+
+weak_alias (__vfork, vfork)
index 6b6f980a41d9cd5c989baacc68fa278019518c7d..7733634a47edc4fb8d050cd3979b7501f4c31dee 100644 (file)
@@ -20,9 +20,11 @@ Cambridge, MA 02139, USA.  */
 #include <dirent.h>
 #include <dirstream.h>
 
+#undef dirfd
+
 int
 dirfd (dirp)
-     FILE *dirp;
+     DIR *dirp;
 {
   return dirp->__fd;
 }
diff --git a/sysdeps/unix/i386/vfork.S b/sysdeps/unix/i386/vfork.S
new file mode 100644 (file)
index 0000000..8ad6ffd
--- /dev/null
@@ -0,0 +1,23 @@
+/* Copyright (C) 1994 Free Software Foundation, Inc.
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#include <sysdep.h>
+
+/* Go directly into __vfork, don't do anything with the stack ptr.  */
+
+ENTRY(vfork)
+       jmp __vfork
index dd60f43b34f7f679acc801e6b0ef5d6954f62bb3..9a9f1cdb6bbb42c2555c1376051080deb8e6c490 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994 Free Software Foundation, Inc.
+/* Copyright (C) 1994, 1995 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
 
 The GNU C Library is free software; you can redistribute it and/or
@@ -18,5 +18,7 @@ Cambridge, MA 02139, USA.  */
 
 #include <sysdep.h>
 
-SYSCALL (mmap, 5)
+SYSCALL__ (mmap, 5)
        ret
+
+weak_alias (__mmap, mmap)
index 6b1ae163ee2e1a6a7b437f751e1c0c168929eb44..3742a6d2c73ad4d3aa502ef49c59d6b9d77bd3aa 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994 Free Software Foundation, Inc.
+/* Copyright (C) 1994, 1995 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
 
 The GNU C Library is free software; you can redistribute it and/or
@@ -18,5 +18,7 @@ Cambridge, MA 02139, USA.  */
 
 #include <sysdep.h>
 
-SYSCALL (munmap, 2)
+SYSCALL__ (munmap, 2)
        ret
+
+weak_alias (__munmap, munmap)
index ac50aab6dd82e73bc78f038bfb0aa289abd9f441..543ce552f3219885311e98986429caa146270951 100644 (file)
@@ -1,5 +1,5 @@
 /* Definitions for BSD-style memory management.  Irix 4 version.
-Copyright (C) 1994 Free Software Foundation, Inc.
+Copyright (C) 1994, 1995 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
 
 The GNU C Library is free software; you can redistribute it and/or
@@ -74,11 +74,14 @@ __BEGIN_DECLS
    for errors (in which case `errno' is set).  A successful `mmap' call
    deallocates any previous mapping for the affected region.  */
 
+__caddr_t __mmap __P ((__caddr_t __addr, size_t __len,
+                      int __prot, int __flags, int __fd, __off_t __offset));
 __caddr_t mmap __P ((__caddr_t __addr, size_t __len,
                     int __prot, int __flags, int __fd, __off_t __offset));
 
 /* Deallocate any mapping for the region starting at ADDR and extending LEN
    bytes.  Returns 0 if successful, -1 for errors (and sets errno).  */
+int __munmap __P ((__caddr_t __addr, size_t __len));
 int munmap __P ((__caddr_t __addr, size_t __len));
 
 /* Change the memory protection of the region starting at ADDR and