Document new files for Linux i386/ELF port.
authorUlrich Drepper <drepper@redhat.com>
Fri, 8 Sep 1995 17:02:25 +0000 (17:02 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 8 Sep 1995 17:02:25 +0000 (17:02 +0000)
Fri Sep  8 16:32:12 1995  Ulrich Drepper  <drepper@gnu.ai.mit.edu>

        * sysdeps/unix/sysv/linux/Implies,
        sysdeps/unix/sysv/linux/Makefile, sysdeps/unix/sysv/linux/Subdirs,
        sysdeps/unix/sysv/linux/accept.S, sysdeps/unix/sysv/linux/adjtime.c,
        sysdeps/unix/sysv/linux/adjtimex.S, sysdeps/unix/sysv/linux/bind.S,
        sysdeps/unix/sysv/linux/connect.S, sysdeps/unix/sysv/linux/direct.h,
        sysdeps/unix/sysv/linux/dl-machine.h, sysdeps/unix/sysv/linux/errnos.h,
        sysdeps/unix/sysv/linux/fork.S, sysdeps/unix/sysv/linux/gethostid.c,
        sysdeps/unix/sysv/linux/gethostname.C,
        sysdeps/unix/sysv/linux/getpeername.S,
        sysdeps/unix/sysv/linux/getpgid.S, sysdeps/unix/sysv/linux/getpgrp.S,
sysdeps/unix/sysv/linux/getsockname.S,
sysdeps/unix/sysv/linux/getsockopt.S, sysdeps/unix/sysv/linux/gtty.S,
sysdeps/unix/sysv/linux/listen.S, sysdeps/unix/sysv/linux/local_lim.h,
sysdeps/unix/sysv/linux/madvise.c, sysdeps/unix/sysv/linux/msgctl.c,
sysdeps/unix/sysv/linux/msgget.c, sysdeps/unix/sysv/linux/msgrcv.c,
sysdeps/unix/sysv/linux/msgsnd.c, sysdeps/unix/sysv/linux/pipe.S,
sysdeps/unix/sysv/linux/poll.c, sysdeps/unix/sysv/linux/readv.c,
sysdeps/unix/sysv/linux/recv.S, sysdeps/unix/sysv/linux/recvfrom.S,
sysdeps/unix/sysv/linux/recvmsg.S, sysdeps/unix/sysv/linux/semctl.c,
sysdeps/unix/sysv/linux/semget.c, sysdeps/unix/sysv/linux/semop.c,
sysdeps/unix/sysv/linux/send.S, sysdeps/unix/sysv/linux/sendmsg.S,
sysdeps/unix/sysv/linux/sendto.S, sysdeps/unix/sysv/linux/setegid.c,
sysdeps/unix/sysv/linux/seteuid.c, sysdeps/unix/sysv/linux/sethostid.c,
sysdeps/unix/sysv/linux/setpgid.c, sysdeps/unix/sysv/linux/setpgrp.c,
sysdeps/unix/sysv/linux/setsid.S, sysdeps/unix/sysv/linux/setsockopt.S,
sysdeps/unix/sysv/linux/settimeofday.S,
sysdeps/unix/sysv/linux/shmat.c, sysdeps/unix/sysv/linux/shmctl.c,
sysdeps/unix/sysv/linux/shmdt.c, sysdeps/unix/sysv/linux/shmget.c,
sysdeps/unix/sysv/linux/shutdown.S,
sysdeps/unix/sysv/linux/sigaction.S, sysdeps/unix/sysv/linux/signal.S,
sysdeps/unix/sysv/linux/sigpending.S, sysdeps/unix/sysv/linux/sigset.h,
sysdeps/unix/sysv/linux/sockaddrcom.h,
sysdeps/unix/sysv/linux/socketpair.S, sysdeps/unix/sysv/linux/speed.c,
sysdeps/unix/sysv/linux/statbuf.h, sysdeps/unix/sysv/linux/stty.S,
sysdeps/unix/sysv/linux/syscall.h, sysdeps/unix/sysv/linux/sysconf.c,
sysdeps/unix/sysv/linux/tcdrain.c, sysdeps/unix/sysv/linux/tcflow.c,
sysdeps/unix/sysv/linux/tcflush.c, sysdeps/unix/sysv/linux/tcgetattr.c,
sysdeps/unix/sysv/linux/tcsetattr.c,
sysdeps/unix/sysv/linux/termbits.h, sysdeps/unix/sysv/linux/ualarm.c,
sysdeps/unix/sysv/linux/ulimit.c, sysdeps/unix/sysv/linux/usleep.c,
sysdeps/unix/sysv/linux/utsnamelen.h, sysdeps/unix/sysv/linux/vfork.c,
sysdeps/unix/sysv/linux/wait.c, sysdeps/unix/sysv/linux/wait4.S,
sysdeps/unix/sysv/linux/waitpid.c, sysdeps/unix/sysv/linux/writev.c:
New Linux/ELF specific, architecture independent files.

sysdeps/unix/sysv/linux/i386/Dist,
sysdeps/unix/sysv/linux/i386/Makefile,
sysdeps/unix/sysv/linux/i386/brk.S,
sysdeps/unix/sysv/linux/i386/fcntlbits.h,
sysdeps/unix/sysv/linux/i386/fpu_control.c,
sysdeps/unix/sysv/linux/i386/fpu_control.h,
sysdeps/unix/sysv/linux/i386/fstat.S,
sysdeps/unix/sysv/linux/i386/fxstat.S,
sysdeps/unix/sysv/linux/i386/ieee_fpu.c,
sysdeps/unix/sysv/linux/i386/init-first.S,
sysdeps/unix/sysv/linux/i386/ipc.S,
sysdeps/unix/sysv/linux/i386/lstat.S,
sysdeps/unix/sysv/linux/i386/lxstat.S,
sysdeps/unix/sysv/linux/i386/mknod.S,
sysdeps/unix/sysv/linux/i386/mmap.S,
sysdeps/unix/sysv/linux/i386/sbrk.S,
sysdeps/unix/sysv/linux/i386/setfpucw.c,
sysdeps/unix/sysv/linux/i386/signum.h,
sysdeps/unix/sysv/linux/i386/socket.S,
sysdeps/unix/sysv/linux/i386/stat.S,
sysdeps/unix/sysv/linux/i386/syscall.S,
sysdeps/unix/sysv/linux/i386/sysdep.S,
sysdeps/unix/sysv/linux/i386/sysdep.h,
sysdeps/unix/sysv/linux/i386/xmknod.S,
sysdeps/unix/sysv/linux/i386/xstat.S:
New Linux i386/ELF specific files.

sysdeps/unix/sysv/linux/sys/ipc_buf.h,
sysdeps/unix/sysv/linux/sys/mman.h,
sysdeps/unix/sysv/linux/sys/msq_buf.h,
sysdeps/unix/sysv/linux/sys/sem_buf.h,
sysdeps/unix/sysv/linux/sys/shm_buf.h,
sysdeps/unix/sysv/linux/sys/socketcall.h,
sysdeps/unix/sysv/linux/sys/timex.h:
New Linux/ELF specific, architecture independent header files.

113 files changed:
ChangeLog
sysdeps/unix/sysv/linux/Implies [new file with mode: 0644]
sysdeps/unix/sysv/linux/Makefile [new file with mode: 0644]
sysdeps/unix/sysv/linux/Subdirs [new file with mode: 0644]
sysdeps/unix/sysv/linux/accept.S [moved from sysdeps/unix/sysv/sysv4/linux/accept.S with 100% similarity]
sysdeps/unix/sysv/linux/adjtime.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/adjtimex.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/bind.S [moved from sysdeps/unix/sysv/sysv4/linux/bind.S with 100% similarity]
sysdeps/unix/sysv/linux/connect.S [moved from sysdeps/unix/sysv/sysv4/linux/connect.S with 100% similarity]
sysdeps/unix/sysv/linux/direct.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/dl-machine.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/errnos.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/fork.S [moved from sysdeps/unix/sysv/sysv4/linux/waitpid.S with 86% similarity]
sysdeps/unix/sysv/linux/gethostid.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/gethostname.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/getpeername.S [moved from sysdeps/unix/sysv/sysv4/linux/getpeername.S with 100% similarity]
sysdeps/unix/sysv/linux/getpgid.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/getpgrp.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/getsockname.S [moved from sysdeps/unix/sysv/sysv4/linux/getsockname.S with 100% similarity]
sysdeps/unix/sysv/linux/getsockopt.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/gtty.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/i386/Dist [new file with mode: 0644]
sysdeps/unix/sysv/linux/i386/Makefile [new file with mode: 0644]
sysdeps/unix/sysv/linux/i386/brk.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/i386/fcntlbits.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/i386/fpu_control.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/i386/fpu_control.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/i386/fstat.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/i386/fxstat.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/i386/ieee_fpu.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/i386/init-first.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/i386/ipc.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/i386/lstat.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/i386/lxstat.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/i386/mknod.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/i386/mmap.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/i386/sbrk.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/i386/setfpucw.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/i386/signum.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/i386/socket.S [moved from sysdeps/unix/sysv/sysv4/linux/i386/socket.S with 86% similarity]
sysdeps/unix/sysv/linux/i386/stat.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/i386/syscall.S [moved from sysdeps/unix/sysv/sysv4/linux/i386/syscall.S with 95% similarity]
sysdeps/unix/sysv/linux/i386/sysdep.S [moved from sysdeps/unix/sysv/sysv4/linux/i386/sysdep.S with 73% similarity]
sysdeps/unix/sysv/linux/i386/sysdep.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/i386/xmknod.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/i386/xstat.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/listen.S [moved from sysdeps/unix/sysv/sysv4/linux/listen.S with 100% similarity]
sysdeps/unix/sysv/linux/local_lim.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/madvise.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/msgctl.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/msgget.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/msgrcv.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/msgsnd.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/pipe.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/poll.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/readv.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/recv.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/recvfrom.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/recvmsg.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/semctl.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/semget.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/semop.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/send.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/sendmsg.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/sendto.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/setegid.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/seteuid.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/sethostid.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/setpgid.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/setpgrp.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/setsid.S [moved from sysdeps/unix/sysv/sysv4/linux/setsid.S with 100% similarity]
sysdeps/unix/sysv/linux/setsockopt.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/settimeofday.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/shmat.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/shmctl.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/shmdt.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/shmget.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/shutdown.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/sigaction.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/signal.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/sigpending.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/sigset.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/sockaddrcom.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/socketpair.S [moved from sysdeps/unix/sysv/sysv4/linux/socketpair.S with 100% similarity]
sysdeps/unix/sysv/linux/speed.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/statbuf.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/stty.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/sys/ipc_buf.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/sys/mman.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/sys/msq_buf.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/sys/sem_buf.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/sys/shm_buf.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/sys/socketcall.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/sys/timex.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/syscall.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/sysconf.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/tcdrain.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/tcflow.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/tcflush.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/tcgetattr.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/tcsetattr.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/termbits.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/ualarm.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/ulimit.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/usleep.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/utsnamelen.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/vfork.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/wait.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/wait4.S [moved from sysdeps/unix/sysv/sysv4/linux/wait4.S with 100% similarity]
sysdeps/unix/sysv/linux/waitpid.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/writev.c [new file with mode: 0644]
sysdeps/unix/sysv/sysv4/linux/i386/sysdep.h [deleted file]
sysdeps/unix/sysv/sysv4/linux/rename.S [deleted file]

index 2b307d6..92fbb01 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,86 @@
+Fri Sep  8 16:32:12 1995  Ulrich Drepper  <drepper@gnu.ai.mit.edu>
+
+        * sysdeps/unix/sysv/linux/Implies,
+        sysdeps/unix/sysv/linux/Makefile, sysdeps/unix/sysv/linux/Subdirs,
+        sysdeps/unix/sysv/linux/accept.S, sysdeps/unix/sysv/linux/adjtime.c,
+        sysdeps/unix/sysv/linux/adjtimex.S, sysdeps/unix/sysv/linux/bind.S,
+        sysdeps/unix/sysv/linux/connect.S, sysdeps/unix/sysv/linux/direct.h,
+        sysdeps/unix/sysv/linux/dl-machine.h, sysdeps/unix/sysv/linux/errnos.h,
+        sysdeps/unix/sysv/linux/fork.S, sysdeps/unix/sysv/linux/gethostid.c,
+        sysdeps/unix/sysv/linux/gethostname.C,
+        sysdeps/unix/sysv/linux/getpeername.S,
+        sysdeps/unix/sysv/linux/getpgid.S, sysdeps/unix/sysv/linux/getpgrp.S,
+       sysdeps/unix/sysv/linux/getsockname.S,
+       sysdeps/unix/sysv/linux/getsockopt.S, sysdeps/unix/sysv/linux/gtty.S,
+       sysdeps/unix/sysv/linux/listen.S, sysdeps/unix/sysv/linux/local_lim.h,
+       sysdeps/unix/sysv/linux/madvise.c, sysdeps/unix/sysv/linux/msgctl.c,
+       sysdeps/unix/sysv/linux/msgget.c, sysdeps/unix/sysv/linux/msgrcv.c,
+       sysdeps/unix/sysv/linux/msgsnd.c, sysdeps/unix/sysv/linux/pipe.S,
+       sysdeps/unix/sysv/linux/poll.c, sysdeps/unix/sysv/linux/readv.c,
+       sysdeps/unix/sysv/linux/recv.S, sysdeps/unix/sysv/linux/recvfrom.S,
+       sysdeps/unix/sysv/linux/recvmsg.S, sysdeps/unix/sysv/linux/semctl.c,
+       sysdeps/unix/sysv/linux/semget.c, sysdeps/unix/sysv/linux/semop.c,
+       sysdeps/unix/sysv/linux/send.S, sysdeps/unix/sysv/linux/sendmsg.S,
+       sysdeps/unix/sysv/linux/sendto.S, sysdeps/unix/sysv/linux/setegid.c,
+       sysdeps/unix/sysv/linux/seteuid.c, sysdeps/unix/sysv/linux/sethostid.c,
+       sysdeps/unix/sysv/linux/setpgid.c, sysdeps/unix/sysv/linux/setpgrp.c,
+       sysdeps/unix/sysv/linux/setsid.S, sysdeps/unix/sysv/linux/setsockopt.S,
+       sysdeps/unix/sysv/linux/settimeofday.S,
+       sysdeps/unix/sysv/linux/shmat.c, sysdeps/unix/sysv/linux/shmctl.c,
+       sysdeps/unix/sysv/linux/shmdt.c, sysdeps/unix/sysv/linux/shmget.c,
+       sysdeps/unix/sysv/linux/shutdown.S,
+       sysdeps/unix/sysv/linux/sigaction.S, sysdeps/unix/sysv/linux/signal.S,
+       sysdeps/unix/sysv/linux/sigpending.S, sysdeps/unix/sysv/linux/sigset.h,
+       sysdeps/unix/sysv/linux/sockaddrcom.h,
+       sysdeps/unix/sysv/linux/socketpair.S, sysdeps/unix/sysv/linux/speed.c,
+       sysdeps/unix/sysv/linux/statbuf.h, sysdeps/unix/sysv/linux/stty.S,
+       sysdeps/unix/sysv/linux/syscall.h, sysdeps/unix/sysv/linux/sysconf.c,
+       sysdeps/unix/sysv/linux/tcdrain.c, sysdeps/unix/sysv/linux/tcflow.c,
+       sysdeps/unix/sysv/linux/tcflush.c, sysdeps/unix/sysv/linux/tcgetattr.c,
+       sysdeps/unix/sysv/linux/tcsetattr.c,
+       sysdeps/unix/sysv/linux/termbits.h, sysdeps/unix/sysv/linux/ualarm.c,
+       sysdeps/unix/sysv/linux/ulimit.c, sysdeps/unix/sysv/linux/usleep.c,
+       sysdeps/unix/sysv/linux/utsnamelen.h, sysdeps/unix/sysv/linux/vfork.c,
+       sysdeps/unix/sysv/linux/wait.c, sysdeps/unix/sysv/linux/wait4.S,
+       sysdeps/unix/sysv/linux/waitpid.c, sysdeps/unix/sysv/linux/writev.c:
+       New Linux/ELF specific, architecture independent files.
+
+       sysdeps/unix/sysv/linux/i386/Dist,
+       sysdeps/unix/sysv/linux/i386/Makefile,
+       sysdeps/unix/sysv/linux/i386/brk.S,
+       sysdeps/unix/sysv/linux/i386/fcntlbits.h,
+       sysdeps/unix/sysv/linux/i386/fpu_control.c,
+       sysdeps/unix/sysv/linux/i386/fpu_control.h,
+       sysdeps/unix/sysv/linux/i386/fstat.S,
+       sysdeps/unix/sysv/linux/i386/fxstat.S,
+       sysdeps/unix/sysv/linux/i386/ieee_fpu.c,
+       sysdeps/unix/sysv/linux/i386/init-first.S,
+       sysdeps/unix/sysv/linux/i386/ipc.S,
+       sysdeps/unix/sysv/linux/i386/lstat.S,
+       sysdeps/unix/sysv/linux/i386/lxstat.S,
+       sysdeps/unix/sysv/linux/i386/mknod.S,
+       sysdeps/unix/sysv/linux/i386/mmap.S,
+       sysdeps/unix/sysv/linux/i386/sbrk.S,
+       sysdeps/unix/sysv/linux/i386/setfpucw.c,
+       sysdeps/unix/sysv/linux/i386/signum.h,
+       sysdeps/unix/sysv/linux/i386/socket.S,
+       sysdeps/unix/sysv/linux/i386/stat.S,
+       sysdeps/unix/sysv/linux/i386/syscall.S,
+       sysdeps/unix/sysv/linux/i386/sysdep.S,
+       sysdeps/unix/sysv/linux/i386/sysdep.h,
+       sysdeps/unix/sysv/linux/i386/xmknod.S,
+       sysdeps/unix/sysv/linux/i386/xstat.S:
+       New Linux i386/ELF specific files.
+
+       sysdeps/unix/sysv/linux/sys/ipc_buf.h,
+       sysdeps/unix/sysv/linux/sys/mman.h,
+       sysdeps/unix/sysv/linux/sys/msq_buf.h,
+       sysdeps/unix/sysv/linux/sys/sem_buf.h,
+       sysdeps/unix/sysv/linux/sys/shm_buf.h,
+       sysdeps/unix/sysv/linux/sys/socketcall.h,
+       sysdeps/unix/sysv/linux/sys/timex.h:
+       New Linux/ELF specific, architecture independent header files.
+
 Wed Sep  6 19:41:10 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
 
        * elf/dl-lookup.c (_dl_lookup_symbol): Test WEAK_VALUE.s rather
diff --git a/sysdeps/unix/sysv/linux/Implies b/sysdeps/unix/sysv/linux/Implies
new file mode 100644 (file)
index 0000000..141aab4
--- /dev/null
@@ -0,0 +1,7 @@
+# Linux has not yet (as of 1.3.18) the canonical set of <sys/mman.h>
+# system calls.  msync() and madvice() are missing, so their stubs
+# are found here.  I think later version will have them ones.
+unix/mman
+
+# Linux has network support in the kernel.
+unix/inet
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
new file mode 100644 (file)
index 0000000..702ad04
--- /dev/null
@@ -0,0 +1,21 @@
+ifeq ($(subdir), io)
+sysdep_routines := $(sysdep_routines) fxstat lxstat xstat
+endif
+
+ifeq ($(subdir), misc)
+sysdep_routines := $(sysdep_routines) xmknod
+endif
+
+#ifeq ($(subdir), posix)
+#sysdep_routines := $(sysdep_routines) setpgrp
+#endif
+
+ifeq ($(subdir), time)
+sysdep_routines := $(sysdep_routines) adjtimex
+endif
+
+ifeq ($(subdir), sysvipc)
+sysdep_routines := $(sysdep_routines) ipc
+endif
+
+headers := $(headers) sys/socketcall.h sys/timex.h
diff --git a/sysdeps/unix/sysv/linux/Subdirs b/sysdeps/unix/sysv/linux/Subdirs
new file mode 100644 (file)
index 0000000..ea1a9e9
--- /dev/null
@@ -0,0 +1 @@
+sysvipc
diff --git a/sysdeps/unix/sysv/linux/adjtime.c b/sysdeps/unix/sysv/linux/adjtime.c
new file mode 100644 (file)
index 0000000..3673cd9
--- /dev/null
@@ -0,0 +1,69 @@
+/* Copyright (C) 1995 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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#include <errno.h>
+#include <limits.h>
+#include <sys/time.h>
+#include <sys/timex.h>
+
+#define MAX_SEC        (LONG_MAX / 1000000L - 2)
+#define MIN_SEC        (LONG_MIN / 1000000L + 2)
+
+int
+__adjtime (itv, otv)
+     const struct timeval *itv;
+     struct timeval *otv;
+{
+  struct timex tntx;
+
+  if (itv)
+    {
+      struct timeval tmp;
+
+      /* We will do some check here. */
+      tmp.tv_sec = itv->tv_sec + itv->tv_usec / 1000000L;
+      tmp.tv_usec = itv->tv_usec % 1000000L;
+      if (tmp.tv_sec > MAX_SEC || tmp.tv_sec < MIN_SEC)
+       {
+         errno = EINVAL;
+         return -1;
+       }
+      tntx.offset = tmp.tv_usec + tmp.tv_sec * 1000000L;
+      tntx.mode = ADJ_OFFSET_SINGLESHOT;
+    }
+  else
+    tntx.mode = 0;
+
+  if (__adjtimex (&tntx) < 0) return -1;
+
+  if (otv)
+    {
+      if (tntx.offset < 0)
+       {
+         otv->tv_usec = -(-tntx.offset % 1000000);
+         otv->tv_sec  = -(-tntx.offset / 1000000);
+       }
+      else
+       {
+         otv->tv_usec = tntx.offset % 1000000;
+         otv->tv_sec  = tntx.offset / 1000000;
+       }
+    }
+  return 0;
+}
+
+weak_alias (__adjtime, adjtime)
diff --git a/sysdeps/unix/sysv/linux/adjtimex.S b/sysdeps/unix/sysv/linux/adjtimex.S
new file mode 100644 (file)
index 0000000..de680ac
--- /dev/null
@@ -0,0 +1,22 @@
+/* Copyright (C) 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>
+
+SYSCALL__ (adjtimex, 1)
+       ret
diff --git a/sysdeps/unix/sysv/linux/direct.h b/sysdeps/unix/sysv/linux/direct.h
new file mode 100644 (file)
index 0000000..ef88147
--- /dev/null
@@ -0,0 +1,43 @@
+/* Copyright (C) 1992, 1993 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.  */
+
+#ifndef           _BSDDIR_H
+#define           _BSDDIR_H    1
+
+#include <limits.h>
+
+/* This is what system V calls a "struct dirent".  */
+
+struct direct
+  {
+    unsigned long int d_fileno;
+    long int d_off;
+    unsigned short int d_reclen;
+    char d_name[NAME_MAX + 1];
+  };
+
+#include <stddef.h>
+
+/* We calculate the length of the name by taking the length of the whole
+   `struct direct' record, subtracting the size of everything before the
+   name, and subtracting one for the terminating null.  */
+
+#define D_NAMLEN(d) \
+  ((d)->d_reclen - offsetof (struct direct, d_name) - 1)
+
+#endif
diff --git a/sysdeps/unix/sysv/linux/dl-machine.h b/sysdeps/unix/sysv/linux/dl-machine.h
new file mode 100644 (file)
index 0000000..2ed6c67
--- /dev/null
@@ -0,0 +1,214 @@
+/* Machine-dependent ELF dynamic relocation inline functions.
+   i386/Linux version.
+Copyright (C) 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.  */
+
+#define ELF_MACHINE_NAME "i386"
+
+#include <assert.h>
+#include <string.h>
+#include <link.h>
+#include <syscall.h>
+#include <sys/mman.h>
+
+/* Return nonzero iff E_MACHINE is compatible with the running host.  */
+static inline int
+elf_machine_matches_host (Elf32_Half e_machine)
+{
+  switch (e_machine)
+    {
+    case EM_386:
+    case EM_486:
+      return 1;
+    default:
+      return 0;
+    }
+}
+
+
+/* Return the run-time address of the _GLOBAL_OFFSET_TABLE_.
+   Must be inlined in a function which uses global data.  */
+static inline Elf32_Addr *
+elf_machine_got (void)
+{
+  register Elf32_Addr *got asm ("%ebx");
+  return got;
+}
+
+
+/* Return the run-time load address of the shared object.  */
+static inline Elf32_Addr
+elf_machine_load_address (void)
+{
+  Elf32_Addr addr;
+  asm ("       call here\n"
+       "here:  popl %0\n"
+       "       subl $here, %0"
+       : "=r" (addr));
+  return addr;
+}
+/* The `subl' insn above will contain an R_386_32 relocation entry
+   intended to insert the run-time address of the label `here'.
+   This will be the first relocation in the text of the dynamic linker;
+   we skip it to avoid trying to modify read-only text in this early stage.  */
+#define ELF_MACHINE_BEFORE_RTLD_RELOC(dynamic_info) \
+  ++(const Elf32_Rel *) (dynamic_info)[DT_REL]->d_un.d_ptr; \
+  (dynamic_info)[DT_RELSZ]->d_un.d_val -= sizeof (Elf32_Rel)
+
+/* Perform the relocation specified by RELOC and SYM (which is fully resolved).
+   MAP is the object containing the reloc.  */
+
+static inline void
+elf_machine_rel (struct link_map *map,
+                const Elf32_Rel *reloc,
+                Elf32_Addr sym_loadaddr, const Elf32_Sym *sym)
+{
+  Elf32_Addr *const reloc_addr = (void *) (map->l_addr + reloc->r_offset);
+  const Elf32_Addr sym_value = sym_loadaddr + sym->st_value;
+
+  switch (ELF32_R_TYPE (reloc->r_info))
+    {
+    case R_386_COPY:
+      memcpy (reloc_addr, (void *) sym_value, sym->st_size);
+      break;
+    case R_386_GLOB_DAT:
+    case R_386_JMP_SLOT:
+      *reloc_addr = sym_value;
+      break;
+    case R_386_32:
+      if (map->l_type == lt_interpreter)
+       {
+         /* Undo the relocation done here during bootstrapping.  Now we will
+            relocate it anew, possibly using a binding found in the user
+            program or a loaded library rather than the dynamic linker's
+            built-in definitions used while loading those libraries.  */
+         const Elf32_Sym *const dlsymtab
+           = (void *) (map->l_addr + map->l_info[DT_SYMTAB]->d_un.d_ptr);
+         *reloc_addr -= (map->l_addr +
+                         dlsymtab[ELF32_R_SYM (reloc->r_info)].st_value);
+       }
+      *reloc_addr += sym_value;
+      break;
+    case R_386_RELATIVE:
+      if (map->l_type != lt_interpreter) /* Already done in dynamic linker.  */
+       *reloc_addr += map->l_addr;
+      break;
+    case R_386_PC32:
+      *reloc_addr = sym_value - (Elf32_Addr) reloc_addr;
+      break;
+    default:
+      assert (! "unexpected dynamic reloc type");
+      break;
+    }
+}
+
+static inline void
+elf_machine_lazy_rel (struct link_map *map, const Elf32_Rel *reloc)
+{
+  Elf32_Addr *const reloc_addr = (void *) (map->l_addr + reloc->r_offset);
+  switch (ELF32_R_TYPE (reloc->r_info))
+    {
+    case R_386_JMP_SLOT:
+      *reloc_addr += map->l_addr;
+      break;
+    default:
+      assert (! "unexpected PLT reloc type");
+      break;
+    }
+}
+
+/* The i386 never uses Elf32_Rela relocations.  */
+#define ELF_MACHINE_NO_RELA 1
+
+
+/* Set up the loaded object described by L so its unrelocated PLT
+   entries will jump to the on-demand fixup code in dl-runtime.c.  */
+
+static inline void
+elf_machine_runtime_setup (struct link_map *l)
+{
+  Elf32_Addr *got;
+  extern void _dl_runtime_resolve (Elf32_Word);
+
+  /* The GOT entries for functions in the PLT have not yet been filled
+     in.  Their initial contents will arrange when called to push an
+     offset into the .rel.plt section, push _GLOBAL_OFFSET_TABLE_[1],
+     and then jump to _GLOBAL_OFFSET_TABLE[2].  */
+  got = (Elf32_Addr *) (l->l_addr + l->l_info[DT_PLTGOT]->d_un.d_ptr);
+  got[1] = (Elf32_Addr) l;     /* Identify this shared object.  */
+  /* This function will get called to fix up the GOT entry indicated by
+     the offset on the stack, and then jump to the resolved address.  */
+  got[2] = (Elf32_Addr) &_dl_runtime_resolve;
+}
+
+
+/* Mask identifying addresses reserved for the user program,
+   where the dynamic linker should not map anything.  */
+#define ELF_MACHINE_USER_ADDRESS_MASK  0xf8000000UL
+
+
+
+/* Initial entry point code for the dynamic linker.
+   The C function `_dl_start' is the real entry point;
+   its return value is the user program's entry point.  */
+
+#define RTLD_START asm ("\
+.text\n\
+.globl _start\n\
+.globl _dl_start_user\n\
+_start:\n\
+       call _dl_start\n\
+_dl_start_user:\n\
+       # Save the user entry point address in %edi.\n\
+       movl %eax, %edi\n\
+       # Point %ebx at the GOT.
+       call 0f\n\
+0:     popl %ebx\n\
+       addl $_GLOBAL_OFFSET_TABLE_+[.-0b], %ebx\n\
+       # See if we were run as a command with the executable file\n\
+       # name as an extra leading argument.\n\
+       movl rtld_command@GOT(%ebx), %eax\n\
+       movl (%eax),%eax\n\
+       testl %eax,%eax\n\
+       jz 0f\n\
+       # Pop the original argument count, decrement it, and replace\n\
+       # the original first argument pointer with the new count.\n\
+       popl %eax\n\
+       decl %eax\n\
+       movl %eax,(%esp)\n\
+       # Call _dl_init_next to return the address of an initializer\n\
+       # function to run.\n\
+0:     call _dl_init_next@PLT\n\
+       # Check for zero return, when out of initializers.\n\
+       testl %eax,%eax\n\
+       jz 1f\n\
+       # Call the shared object initializer function.\n\
+       # NOTE: We depend only on the registers (%ebx and %edi)\n\
+       # and the return address pushed by this call;\n\
+       # the initializer is called with the stack just\n\
+       # as it appears on entry, and it is free to move\n\
+       # the stack around, as long as it winds up jumping to\n\
+       # the return address on the top of the stack.\n\
+       call *%eax\n\
+       # Loop to call _dl_init_next for the next initializer.\n\
+       jmp 0b\n\
+1:     # Pass our finalizer function to the user in %edx, as per ELF ABI.\n\
+       movl _dl_fini@GOT(%ebx), %edx\n\
+       # Jump to the user's entry point.\n\
+       jmp *%edi\n\
+");
diff --git a/sysdeps/unix/sysv/linux/errnos.h b/sysdeps/unix/sysv/linux/errnos.h
new file mode 100644 (file)
index 0000000..be1e4d3
--- /dev/null
@@ -0,0 +1 @@
+#include <linux/errno.h>
similarity index 86%
rename from sysdeps/unix/sysv/sysv4/linux/waitpid.S
rename to sysdeps/unix/sysv/linux/fork.S
index 20d9d66..a49a4bc 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1995 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992, 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,7 +18,7 @@ Cambridge, MA 02139, USA.  */
 
 #include <sysdep.h>
 
-SYSCALL__ (waitpid, 3)
+SYSCALL__ (fork, 0)
        ret
 
-weak_alias (__waitpid, waitpid)
+weak_alias (__fork, fork)
diff --git a/sysdeps/unix/sysv/linux/gethostid.c b/sysdeps/unix/sysv/linux/gethostid.c
new file mode 100644 (file)
index 0000000..94f4a1e
--- /dev/null
@@ -0,0 +1,96 @@
+/* Copyright (C) 1995 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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+#define HOSTIDFILE "/var/adm/hostid"
+
+#ifdef SET_PROCEDURE
+int
+sethostid (id)
+     long int id;
+{
+  int fd;
+  ssize_t written;
+
+  /* Test for appropriate rights to set host ID.  */
+  if (geteuid () || getuid ())
+    {
+      errno = EPERM;
+      return -1;
+    }
+
+  /* Open file for writing.  Everybody is allowed to read this file.  */
+  fd = __open (HOSTIDFILE, O_CREAT|O_WRONLY, 0644);
+  if (fd < 0)
+    return -1;
+
+  written = __write (fd, &id, sizeof (id));
+
+  __close (fd);
+
+  return written != sizeof (id) ? -1 : 0;
+}
+
+#else
+# include <sys/param.h>
+# include <resolv/netdb.h>
+# include <netinet/in.h>
+
+long int
+gethostid ()
+{
+  char hostname[MAXHOSTNAMELEN + 1];
+  struct hostent *hp;
+  unsigned long id;
+  struct in_addr in;
+  int fd;
+
+  /* First try to get the ID from a former invocation of sethostid.  */
+  fd = __open (HOSTIDFILE, O_RDONLY);
+  if (fd >= 0)
+    {
+      ssize_t n = __read (fd, &id, sizeof (id));
+
+      __close (fd);
+
+      if (n == sizeof (id))
+       return id;
+    }
+
+  /* Getting from the file was not succesful.  An intelligent guess for
+     a unique number of a host is its IP address.  Return this.  */
+  if (gethostname (hostname, MAXHOSTNAMELEN) < 0 || hostname[0] == '\0')
+    /* This also fails.  Return and arbitrary value.  */
+    return 0;
+
+  /* To get the IP address we need to knoe the host name.  */
+  hp = gethostbyname (hostname);
+  if (hp == NULL)
+    return 0;
+
+  in.s_addr = 0;
+  memcpy (&in, hp->h_addr,
+         sizeof (in) < hp->h_length ? sizeof (in) : hp->h_length);
+
+  /* For the return value to be not exactly the IP address we do some
+     bit fiddling.  */
+  return in.s_addr << 16 | in.s_addr >> 16;
+}
+#endif
diff --git a/sysdeps/unix/sysv/linux/gethostname.c b/sysdeps/unix/sysv/linux/gethostname.c
new file mode 100644 (file)
index 0000000..4b7720d
--- /dev/null
@@ -0,0 +1,53 @@
+/* Copyright (C) 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 <errno.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/utsname.h>
+
+/* Put the name of the current host in no more than LEN bytes of NAME.
+   The result is null-terminated if LEN is large enough for the full
+   name and the terminator.  */
+int
+__gethostname (name, len)
+     char *name;
+     size_t len;
+{
+  struct utsname buf;
+
+  if (name == NULL)
+    {
+      errno = EINVAL;
+      return -1;
+    }
+
+  if (uname (&buf))
+    return -1;
+
+  if (strlen (buf.nodename) + 1 > len)
+    {
+      errno = EINVAL;
+      return -1;
+    }
+
+  strcpy (name, buf.nodename);
+  return 0;
+}
+
+weak_alias (__gethostname, gethostname)
diff --git a/sysdeps/unix/sysv/linux/getpgid.S b/sysdeps/unix/sysv/linux/getpgid.S
new file mode 100644 (file)
index 0000000..3151296
--- /dev/null
@@ -0,0 +1,22 @@
+/* Copyright (C) 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>
+
+SYSCALL (getpgid, 1)
+       ret
diff --git a/sysdeps/unix/sysv/linux/getpgrp.S b/sysdeps/unix/sysv/linux/getpgrp.S
new file mode 100644 (file)
index 0000000..75e8d34
--- /dev/null
@@ -0,0 +1,22 @@
+/* Copyright (C) 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>
+
+SYSCALL (getpgrp, 0)
+       ret
diff --git a/sysdeps/unix/sysv/linux/getsockopt.S b/sysdeps/unix/sysv/linux/getsockopt.S
new file mode 100644 (file)
index 0000000..6ce92a6
--- /dev/null
@@ -0,0 +1,2 @@
+#define        socket  getsockopt
+#include <socket.S>
diff --git a/sysdeps/unix/sysv/linux/gtty.S b/sysdeps/unix/sysv/linux/gtty.S
new file mode 100644 (file)
index 0000000..1cff6b2
--- /dev/null
@@ -0,0 +1,22 @@
+/* Copyright (C) 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>
+
+SYSCALL (gtty, 2)
+       ret
diff --git a/sysdeps/unix/sysv/linux/i386/Dist b/sysdeps/unix/sysv/linux/i386/Dist
new file mode 100644 (file)
index 0000000..91365ad
--- /dev/null
@@ -0,0 +1 @@
+fxstat.S lxstat.S xmknod.S xstat.S
diff --git a/sysdeps/unix/sysv/linux/i386/Makefile b/sysdeps/unix/sysv/linux/i386/Makefile
new file mode 100644 (file)
index 0000000..76d295e
--- /dev/null
@@ -0,0 +1,7 @@
+ifeq ($(subdir), misc)
+sysdep_routines := $(sysdep_routines) fpu_control setfpucw
+
+extra-libs := $(extra-libs) libieee
+libieee-routines := ieee_fpu
+libieee-inhibit-o := .so .po
+endif
diff --git a/sysdeps/unix/sysv/linux/i386/brk.S b/sysdeps/unix/sysv/linux/i386/brk.S
new file mode 100644 (file)
index 0000000..ef2f55d
--- /dev/null
@@ -0,0 +1,60 @@
+/* Copyright (C) 1991, 1992, 1993, 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>
+
+.data
+.globl C_SYMBOL_NAME(__curbrk)
+C_LABEL(__curbrk)
+#ifdef PIC
+       .long 0
+#else
+# ifdef HAVE_GNU_LD
+       .long C_SYMBOL_NAME(_end)
+# else
+       .long C_SYMBOL_NAME(end)
+# endif
+#endif
+
+.text
+.globl C_SYMBOL_NAME(syscall_error)
+
+ENTRY (__brk)
+       movl %ebx, %edx
+       movl $SYS_ify(brk), %eax
+       movl 4(%esp), %ebx
+       int $0x80
+       movl %edx, %ebx
+
+       cmpl 4(%esp), %eax
+       jne JUMPTARGET(syscall_error)
+
+#ifdef PIC
+       /* Standard PIC nonsense to store into `__curbrk' through the GOT.  */
+       call here
+here:  popl %ecx
+       addl $_GLOBAL_OFFSET_TABLE_+[.-here], %ecx
+       movl C_SYMBOL_NAME(__curbrk@GOT)(%ecx), %ecx
+       movl %eax, (%ecx)
+#else
+       movl %eax, C_SYMBOL_NAME(__curbrk)
+#endif
+       xorl %eax, %eax
+       ret
+
+weak_alias (__brk, brk)
diff --git a/sysdeps/unix/sysv/linux/i386/fcntlbits.h b/sysdeps/unix/sysv/linux/i386/fcntlbits.h
new file mode 100644 (file)
index 0000000..8d92ac0
--- /dev/null
@@ -0,0 +1,26 @@
+/* O_*, F_*, FD_* bit values for Linux.
+Copyright (C) 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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#ifndef        _FCNTLBITS_H
+#define        _FCNTLBITS_H    1
+
+#include <sys/types.h>
+#include <linux/fcntl.h>
+
+#endif /* fcntlbits.h */
diff --git a/sysdeps/unix/sysv/linux/i386/fpu_control.c b/sysdeps/unix/sysv/linux/i386/fpu_control.c
new file mode 100644 (file)
index 0000000..79933b9
--- /dev/null
@@ -0,0 +1,20 @@
+/* Default control word for ix86 FPU.
+Copyright (C) 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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+unsigned short ___fpu_control = 0;
diff --git a/sysdeps/unix/sysv/linux/i386/fpu_control.h b/sysdeps/unix/sysv/linux/i386/fpu_control.h
new file mode 100644 (file)
index 0000000..28f3eeb
--- /dev/null
@@ -0,0 +1,100 @@
+/* Copyright (C) 1993 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+Contributed by Olaf Flebbe.
+
+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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#ifndef _FPU_CONTROL_H
+#define _FPU_CONTROL_H
+
+/* Here is the dirty part. Settup up your 387 through the control word
+ * (cw) register. 
+ *
+ *     15-13    12  11-10  9-8     7-6     5    4    3    2    1    0
+ * | reserved | IC | RC  | PC | reserved | PM | UM | OM | ZM | DM | IM
+ *
+ * IM: Invalid operation mask
+ * DM: Denormalized operand mask
+ * ZM: Zero-divide mask
+ * OM: Overflow mask
+ * UM: Underflow mask
+ * PM: Precision (inexact result) mask
+ * 
+ * Mask bit is 1 means no interrupt.
+ *
+ * PC: Precision control
+ * 11 - round to extended precision
+ * 10 - round to double precision
+ * 00 - round to single precision
+ *
+ * RC: Rounding control
+ * 00 - rounding to nearest
+ * 01 - rounding down (toward - infinity)
+ * 10 - rounding up (toward + infinity)
+ * 11 - rounding toward zero
+ *
+ * IC: Infinity control
+ * That is for 8087 and 80287 only.
+ *
+ * The hardware default is 0x037f. I choose 0x1372.
+ */
+
+#include <features.h>
+
+/* masking of interrupts */
+#define _FPU_MASK_IM  0x01  
+#define _FPU_MASK_DM  0x02
+#define _FPU_MASK_ZM  0x04
+#define _FPU_MASK_OM  0x08
+#define _FPU_MASK_UM  0x10
+#define _FPU_MASK_PM  0x20
+
+/* precision control */
+#define _FPU_EXTENDED 0x300   /* RECOMMENDED */
+#define _FPU_DOUBLE   0x200
+#define _FPU_SINGLE   0x0     /* DO NOT USE */
+
+/* rounding control */
+#define _FPU_RC_NEAREST 0x0    /* RECOMMENDED */
+#define _FPU_RC_DOWN    0x400
+#define _FPU_RC_UP      0x800
+#define _FPU_RC_ZERO    0xC00
+
+#define _FPU_RESERVED 0xF0C0  /* Reserved bits in cw */
+
+
+/* Now two recommended cw */
+
+/* Linux default:
+     - extended precision
+     - rounding to nearest
+     - exceptions on overflow, zero divide and NaN */
+#define _FPU_DEFAULT  0x1372 
+
+/* IEEE:  same as above, but exceptions */
+#define _FPU_IEEE     0x137f
+
+/* private namespace. It should only be used in init-first.o. */
+extern unsigned short __fpu_control;
+
+__BEGIN_DECLS
+
+/* called in init-first.o. It can be used to manipulate 387 control word. */
+extern void __setfpucw __P ((unsigned short));
+
+__END_DECLS
+
+#endif /* fpu_control.h */
diff --git a/sysdeps/unix/sysv/linux/i386/fstat.S b/sysdeps/unix/sysv/linux/i386/fstat.S
new file mode 100644 (file)
index 0000000..434ad4a
--- /dev/null
@@ -0,0 +1,4 @@
+#define __stat __fstat
+#define stat fstat
+#define __xstat __fxstat
+#include "stat.S"
diff --git a/sysdeps/unix/sysv/linux/i386/fxstat.S b/sysdeps/unix/sysv/linux/i386/fxstat.S
new file mode 100644 (file)
index 0000000..c4db088
--- /dev/null
@@ -0,0 +1,4 @@
+#define __xstat __fxstat
+#define _xstat _fxstat
+#define stat fstat
+#include "xstat.S"
diff --git a/sysdeps/unix/sysv/linux/i386/ieee_fpu.c b/sysdeps/unix/sysv/linux/i386/ieee_fpu.c
new file mode 100644 (file)
index 0000000..4a0bf31
--- /dev/null
@@ -0,0 +1,22 @@
+/* Default control word for ix86 FPU.
+Copyright (C) 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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#include <fpu_control.h>
+
+unsigned short ___fpu_control = _FPU_IEEE;
diff --git a/sysdeps/unix/sysv/linux/i386/init-first.S b/sysdeps/unix/sysv/linux/i386/init-first.S
new file mode 100644 (file)
index 0000000..3c0c185
--- /dev/null
@@ -0,0 +1,84 @@
+/* Initialization code run first thing by the ELF startup code.
+   For i386/Linux.
+Copyright (C) 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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#include <sysdep.h>
+
+       .text
+
+       /* Called from start.S.  Not: there is no value in %ebx.  */
+
+ENTRY (__libc_init_first)
+
+       /* Make sure we are not using iBSC2 personality.  */
+       movl $SYS_ify (personality), %eax
+       xorl %ebx, %ebx
+       int $0x80
+
+#ifdef PIC
+       /* Set control work of FPU.  */
+       call .L0
+.L0:   popl %ebx
+       addl $_GLOBAL_OFFSET_TABLE_+[.-.L0], %ebx
+       movzwl C_SYMBOL_NAME(___fpu_control@GOT)(%ebx), %eax
+#else
+       movzwl ___fpu_control, %eax
+#endif
+       pushl %eax
+       call JUMPTARGET(__setfpucw)
+       addl $4, %esp
+
+       /* That is all for now.  */
+       ret
+
+
+       /* This is only a dummy function for the list below.  */
+       .type _dummy_exit, @function
+C_LABEL(_dummy_exit)
+       ret
+
+
+       .section .init,"ax",@progbits
+       movl 16(%ebp), %edx     /* envp */
+       movl 12(%ebp), %ecx     /* argv */
+       movl 8(%ebp), %eax      /* argc */
+       pushl %edx
+       pushl %ecx
+       pushl %eax
+
+       call JUMPTARGET(__libc_init)
+
+       addl $12, %esp
+
+
+       /* Make sure __libc_subinit section is always present.  */
+       .section __libc_subinit, "a", @progbits
+       .align 4
+       .type __elf_set___libc_subinit_element__dummy_exit__, @object
+       .size __elf_set___libc_subinit_element__dummy_exit__, 4
+__elf_set___libc_subinit_element__dummy_exit__:
+       .long _dummy_exit
+
+       /* Make sure __libc_atexit section is always present.  */
+       .section __libc_atexit, "a", @progbits
+       .align 4
+       .type __elf_set___libc_atexit_element__dummy_exit__, @object
+       .size __elf_set___libc_atexit_element__dummy_exit__, 4
+__elf_set___libc_atexit_element__dummy_exit__:
+       .long _dummy_exit
diff --git a/sysdeps/unix/sysv/linux/i386/ipc.S b/sysdeps/unix/sysv/linux/i386/ipc.S
new file mode 100644 (file)
index 0000000..bb523a2
--- /dev/null
@@ -0,0 +1,22 @@
+/* Copyright (C) 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>
+
+SYSCALL__ (ipc, 5)
+       ret
diff --git a/sysdeps/unix/sysv/linux/i386/lstat.S b/sysdeps/unix/sysv/linux/i386/lstat.S
new file mode 100644 (file)
index 0000000..9135c6b
--- /dev/null
@@ -0,0 +1,4 @@
+#define __stat __lstat
+#define stat lstat
+#define __xstat __lxstat
+#include "stat.S"
diff --git a/sysdeps/unix/sysv/linux/i386/lxstat.S b/sysdeps/unix/sysv/linux/i386/lxstat.S
new file mode 100644 (file)
index 0000000..fee635b
--- /dev/null
@@ -0,0 +1,4 @@
+#define __xstat __lxstat
+#define _xstat _lxstat
+#define stat lstat
+#include "xstat.S"
diff --git a/sysdeps/unix/sysv/linux/i386/mknod.S b/sysdeps/unix/sysv/linux/i386/mknod.S
new file mode 100644 (file)
index 0000000..7faf89d
--- /dev/null
@@ -0,0 +1,39 @@
+/* Copyright (C) 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>
+
+/* In Linux the `mknod' call is actually done by a emulation of the
+   `xmknod' system call, which takes an additional first argument
+   giving a version number for the interface.  This macro gives the
+   Linux version number that corresponds to the modern interface.  */
+#define _MKNOD_VER      1
+
+ENTRY (__mknod)
+       movl 12(%esp), %edx
+       movl 8(%esp), %ecx
+       movl 4(%esp), %eax
+       pushl %edx
+       pushl %ecx
+       pushl %eax
+        pushl $_MKNOD_VER       /* Push extra first arg to syscall.  */
+       call JUMPTARGET(__xmknod)
+       addl $16, %esp          /* Correct version parameter offset.  */
+       ret
+
+weak_alias (__mknod, mknod)
diff --git a/sysdeps/unix/sysv/linux/i386/mmap.S b/sysdeps/unix/sysv/linux/i386/mmap.S
new file mode 100644 (file)
index 0000000..96ea870
--- /dev/null
@@ -0,0 +1,45 @@
+/* Copyright (C) 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>
+
+.globl syscall_error
+
+ENTRY (__mmap)
+
+       /* Save registers.  */
+       movl %ebx, %edx
+
+       movl $SYS_ify(mmap), %eax       /* System call number in %eax.  */
+
+       lea 4(%esp), %ebx               /* Address of args is 1st arg.  */
+
+        /* Do the system call trap.  */
+       int $0x80
+
+       /* Restore registers.  */
+       movl %edx, %ebx
+
+       /* %eax is < 0 if there was an error.  */
+       testl %eax, %eax
+       jl JUMPTARGET(syscall_error)
+
+       /* Successful; return the syscall's value.  */
+       ret
+
+weak_alias (__mmap, mmap)
diff --git a/sysdeps/unix/sysv/linux/i386/sbrk.S b/sysdeps/unix/sysv/linux/i386/sbrk.S
new file mode 100644 (file)
index 0000000..7a0e940
--- /dev/null
@@ -0,0 +1,82 @@
+/* Copyright (C) 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>
+
+.data
+.globl C_SYMBOL_NAME(__curbrk)
+
+.text
+.globl C_SYMBOL_NAME(syscall_error)
+
+ENTRY (__sbrk)
+
+       movl %ebx, %edx
+
+#ifdef PIC
+       /* Standard PIC nonsense to access `__curbrk' through the GOT.  */
+       call .L0
+.L0:   popl %ecx
+       addl $_GLOBAL_OFFSET_TABLE_+[.-.L0], %ecx
+
+       movl C_SYMBOL_NAME(__curbrk@GOT)(%ecx), %ecx
+       movl (%ecx), %ebx
+       movl %ebx, %eax
+       testl %ebx, %ebx
+       jne .L1
+
+       /* We have to initialize `__curbrk' first.  */
+       movl $SYS_ify(brk), %eax
+       int $0x80
+
+       movl %eax, (%ecx)
+       movl %eax, %ebx
+       .align 16, 0x90
+
+.L1:
+#else
+       movl C_SYMBOL_NAME(__curbrk), %ebx
+       movl %ebx, %eax
+#endif
+       
+       addl 4(%esp), %ebx
+       cmpl %ebx, %eax
+       je .L2
+
+       movl $SYS_ify(brk), %eax
+       int $0x80
+
+       cmpl %eax, %ebx
+       jne .L3
+
+#ifdef PIC
+       xchgl %eax, (%ecx)
+#else
+       xchgl %eax, C_SYMBOL_NAME(__curbrk)
+#endif
+
+.L2:
+       movl %edx, %ebx
+       ret
+
+       .align 16
+.L3:
+       movl %edx, %ebx
+       jmp JUMPTARGET(syscall_error)
+
+weak_alias (__sbrk, sbrk)
diff --git a/sysdeps/unix/sysv/linux/i386/setfpucw.c b/sysdeps/unix/sysv/linux/i386/setfpucw.c
new file mode 100644 (file)
index 0000000..329573d
--- /dev/null
@@ -0,0 +1,43 @@
+/* Copyright (C) 1993 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+Contributed by Olaf Flebbe.
+
+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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#include <fpu_control.h>
+
+void
+__setfpucw (fpu_control)
+     unsigned short fpu_control;
+{
+  volatile unsigned short cw;
+
+  /* If user supplied _fpu_control, use it ! */
+  if (!fpu_control)
+  { 
+    /* use linux defaults */
+    fpu_control = _FPU_DEFAULT;
+  }
+  /* Get Control Word */
+  __asm__ volatile ("fnstcw %0" : "=m" (cw) : );
+  
+  /* mask in */
+  cw &= _FPU_RESERVED;
+  cw = cw | (fpu_control & ~_FPU_RESERVED);
+
+  /* set cw */
+  __asm__ volatile ("fldcw %0" :: "m" (cw));
+}
diff --git a/sysdeps/unix/sysv/linux/i386/signum.h b/sysdeps/unix/sysv/linux/i386/signum.h
new file mode 100644 (file)
index 0000000..8e4f270
--- /dev/null
@@ -0,0 +1,66 @@
+/* Signal number definitions.  Linux version.
+Copyright (C) 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.  */
+
+#ifdef _SIGNAL_H
+
+/* Fake signal functions.  */
+#define        SIG_ERR ((__sighandler_t) -1) /* Error return.  */
+#define        SIG_DFL ((__sighandler_t) 0) /* Default action.  */
+#define        SIG_IGN ((__sighandler_t) 1) /* Ignore signal.  */
+
+
+/* Signals.  */
+#define        SIGHUP          1       /* Hangup (POSIX).  */
+#define        SIGINT          2       /* Interrupt (ANSI).  */
+#define        SIGQUIT         3       /* Quit (POSIX).  */
+#define        SIGILL          4       /* Illegal instruction (ANSI).  */
+#define        SIGTRAP         5       /* Trace trap (POSIX).  */
+#define        SIGABRT         SIGIOT  /* Abort (ANSI).  */
+#define        SIGIOT          6       /* IOT trap (4.2 BSD).  */
+#define        SIGBUS          7       /* BUS error (4.2 BSD).  */
+#define        SIGFPE          8       /* Floating-point exception (ANSI).  */
+#define        SIGKILL         9       /* Kill, unblockable (POSIX).  */
+#define        SIGUSR1         10      /* User-defined signal 1 (POSIX).  */
+#define        SIGSEGV         11      /* Segmentation violation (ANSI).  */
+#define        SIGUSR2         12      /* User-defined signal 2 (POSIX).  */
+#define        SIGPIPE         13      /* Broken pipe (POSIX).  */
+#define        SIGALRM         14      /* Alarm clock (POSIX).  */
+#define        SIGTERM         15      /* Termination (ANSI).  */
+#define        SIGSTKFLT       16      /* ??? */
+#define        SIGCLD          SIGCHLD /* Same as SIGCHLD (System V).  */
+#define        SIGCHLD         17      /* Child status has changed (POSIX).  */
+#define        SIGCONT         18      /* Continue (POSIX).  */
+#define        SIGSTOP         19      /* Stop, unblockable (POSIX).  */
+#define        SIGTSTP         20      /* Keyboard stop (POSIX).  */
+#define        SIGTTIN         21      /* Background read from tty (POSIX).  */
+#define        SIGTTOU         22      /* Background write to tty (POSIX).  */
+#define        SIGURG          23      /* Urgent condition on socket (4.2 BSD).  */
+#define        SIGXCPU         24      /* CPU limit exceeded (4.2 BSD).  */
+#define        SIGXFSZ         25      /* File size limit exceeded (4.2 BSD).  */
+#define        SIGVTALRM       26      /* Virtual alarm clock (4.2 BSD).  */
+#define        SIGPROF         27      /* Profiling alarm clock (4.2 BSD).  */
+#define        SIGWINCH        28      /* Window size change (4.3 BSD, Sun).  */
+#define        SIGPOLL         SIGIO   /* Pollable event occured (System V).  */
+#define        SIGIO           29      /* I/O now possible (4.2 BSD).  */
+#define        SIGPWR          30      /* Power failure restart (System V).  */
+#define SIGUNUSED      31
+
+#endif /* <signal.h> included.  */
+
+#define        _NSIG           32      /* Biggest signal number + 1.  */
similarity index 86%
rename from sysdeps/unix/sysv/sysv4/linux/i386/socket.S
rename to sysdeps/unix/sysv/linux/i386/socket.S
index 7b8dd75..3d3a672 100644 (file)
@@ -19,6 +19,9 @@ Cambridge, MA 02139, USA.  */
 #include <sysdep.h>
 #include <sys/socketcall.h>
 
+#define P(a, b) P2(a, b)
+#define P2(a, b) a##b
+
 .globl syscall_error
 
 /* The socket-oriented system calls are handled unusally in Linux.
@@ -29,15 +32,16 @@ Cambridge, MA 02139, USA.  */
 
    The .S files for the other calls just #define socket and #include this.  */
 
-ENTRY (socket)
+.globl P(__,socket)
+ENTRY (P(__,socket))
 
        /* Save registers.  */
        movl %ebx, %edx
 
-       movl $SYS_socketcall, %eax      /* System call number in %eax.  */
+       movl $SYS_ify(socketcall), %eax /* System call number in %eax.  */
 
        /* Use ## so `socket' is a separate token that might be #define'd.  */
-       movl $SYS_##socket, %ebx        /* Subcode is first arg to syscall.  */
+       movl $P(SOCKOP_,socket), %ebx   /* Subcode is first arg to syscall.  */
        lea 8(%esp), %ecx               /* Address of args is 2nd arg.  */
 
         /* Do the system call trap.  */
@@ -52,3 +56,5 @@ ENTRY (socket)
 
        /* Successful; return the syscall's value.  */
        ret
+
+weak_alias (P(__,socket), socket)
diff --git a/sysdeps/unix/sysv/linux/i386/stat.S b/sysdeps/unix/sysv/linux/i386/stat.S
new file mode 100644 (file)
index 0000000..73204bf
--- /dev/null
@@ -0,0 +1,38 @@
+/* Copyright (C) 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>
+
+/* In Linux the `stat' call is actually done by emulating a `xstat' system
+   call, which takes an additional first argument giving a version number
+   for `struct stat'.  Likewise for `fstat' and `lstat' there are `fxstat'
+   and `lxstat' emulations.  This macro gives the Linux version number that
+   corresponds to the definition of `struct stat' in <statbuf.h>.  */
+#define        _STAT_VER       1
+
+ENTRY (__stat)
+       movl 8(%esp), %eax
+       movl 4(%esp), %ecx
+       pushl %eax
+       pushl %ecx
+       pushl $_STAT_VER        /* Push extra first arg to syscall.  */
+       call JUMPTARGET(__xstat)/* Jump to xstat implementation.  */
+       addl $12, %esp
+       ret
+
+weak_alias (__stat, stat)
similarity index 95%
rename from sysdeps/unix/sysv/sysv4/linux/i386/syscall.S
rename to sysdeps/unix/sysv/linux/i386/syscall.S
index efe6d36..6e6aa5d 100644 (file)
@@ -18,12 +18,14 @@ Cambridge, MA 02139, USA.  */
 
 #include <sysdep.h>
 
-ASM_GLOBAL_DIRECTIVE syscall_error
+.globl syscall_error
 ENTRY (syscall)
        popl %ecx               /* Pop return address into %ecx.  */
        popl %eax               /* Pop syscall number into %eax.  */
        pushl %ecx              /* Push back return address.  */
        DO_CALL (5)             /* Frob the args and do the system call.  */
+       movl (%esp), %ecx
+       pushl %ecx
        testl %eax, %eax        /* Check %eax for error.  */
        jl JUMPTARGET(syscall_error) /* Jump to error handler if negative.  */
        ret                     /* Return to caller.  */
similarity index 73%
rename from sysdeps/unix/sysv/sysv4/linux/i386/sysdep.S
rename to sysdeps/unix/sysv/linux/i386/sysdep.S
index 5cf29ec..b873c95 100644 (file)
@@ -20,8 +20,21 @@ Cambridge, MA 02139, USA.  */
    The code for Linux is almost identical to the canonical Unix/i386
    code, except that the error number in %eax is negated.  */
 
+.globl __syscall_error
 __syscall_error:
        negl %eax
 
 #define __syscall_error __syscall_error_1
 #include <sysdeps/unix/i386/sysdep.S>
+
+/* Because the Linux version is in fact i386/ELF and the start.? file
+   for this system (sysdeps/i386/elf/start.S) is also used by The Hurd
+   and therefore this files must not contain the definition of the
+   `errno' variable (I don't know why, ask Roland), we have to define
+   it somewhere else.
+
+   ...and this please is here.  */
+       .data
+       .globl errno
+errno:
+       .long 0
diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h
new file mode 100644 (file)
index 0000000..7fe4d41
--- /dev/null
@@ -0,0 +1,135 @@
+/* Copyright (C) 1992, 1993, 1995 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>, August 1995.
+
+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.  */
+
+/* In the Linux/ELF world, C symbols are asm symbols.  */
+#define NO_UNDERSCORES
+
+/* There is some commonality.  */
+#include <sysdeps/unix/i386/sysdep.h>
+
+/* For Linux we can use the system call table in the header file
+       /usr/include/asm/unistd.h
+   of the kernel.  But these symbols do not follow the SYS_* syntax
+   so we have to redefine the `SYS_ify' macro here.  */
+#undef SYS_ify
+#ifdef __STDC__
+# define SYS_ify(syscall_name) __NR_##syscall_name
+#else
+# define SYS_ify(syscall_name) __NR_/**/syscall_name
+#endif
+
+
+#ifdef ASSEMBLER
+
+/* Linux uses a negative return value to indicate syscall errors, unlike
+   most Unices, which use the condition codes' carry flag.  */
+#undef PSEUDO
+#define        PSEUDO(name, syscall_name, args)                                      \
+  .text;                                                                     \
+  .globl syscall_error;                                                              \
+  ENTRY (name)                                                               \
+    movl $SYS_ify (syscall_name), %eax;                                              \
+    DO_CALL (args);                                                          \
+    testl %eax, %eax;                                                        \
+    jl JUMPTARGET (syscall_error)
+
+/* We define our own ENTRY macro because the alignment should be 16 for ELF.  */
+#undef ENTRY
+#define ENTRY(name)                                                          \
+  ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (name);                                 \
+  ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME (name), @function)                       \
+  .align 16;                                                                 \
+  C_LABEL (name)
+
+/* Linux takes system call arguments in registers:
+
+       syscall number  %eax         call-clobbered
+       arg 1           %ebx         call-saved
+       arg 2           %ecx         call-clobbered
+       arg 3           %edx         call-clobbered
+       arg 4           %esi         call-saved
+       arg 5           %edi         call-saved
+
+   The stack layout upon entering the function is:
+
+       20(%esp)        Arg# 5
+       16(%esp)        Arg# 4
+       12(%esp)        Arg# 3
+        8(%esp)        Arg# 2
+        4(%esp)        Arg# 1
+         (%esp)        Return address
+
+   (Of course a function with say 3 arguments does not have entries for
+   arguments 4 and 5.)
+
+   The following code tries hard to be optimal.  A general assuption
+   (which is true accoriding to the data books I have) is that
+
+       2 * xchg        is more expensive than  pushl + movl + popl
+
+   Beside this a neat trick is used.  The calling conventions for Linux
+   tell that among the registers used for parameters %ecx and %edx need
+   not be saved.  Beside this we may clobber this registers even when
+   they are not used for parameter passing.
+
+   As a result one can see below that we save the content of the %ebx
+   register in the %edx register when we have less than 3 arguments
+   (2 * movl is less expensive than pushl + popl).
+
+   Second unlike for the other registers we don't save the content of
+   %ecx and %edx when we have than 1 and 2 registers resp.  */
+
+#undef DO_CALL
+#define DO_CALL(args)                                                        \
+    DOARGS_##args                                                            \
+    int $0x80;                                                               \
+    UNDOARGS_##args
+
+#define        DOARGS_0        /* No arguments to frob.  */
+#define        UNDOARGS_0      /* No arguments to unfrob.  */
+#define        _DOARGS_0(n)    /* No arguments to frob.  */
+#define        _UNDOARGS_0     /* No arguments to unfrob.  */
+
+#define        DOARGS_1        movl %ebx, %edx; movl 4(%esp), %ebx; DOARGS_0
+#define        UNDOARGS_1      UNDOARGS_0; movl %edx, %ebx
+#define        _DOARGS_1(n)    pushl %ebx; movl n+4(%esp), %ebx; _DOARGS_0 (n)
+#define        _UNDOARGS_1     _UNDOARGS_0; popl %ebx
+
+#define        DOARGS_2        movl 8(%esp), %ecx; DOARGS_1
+#define        UNDOARGS_2      UNDOARGS_1
+#define        _DOARGS_2(n)    movl n(%esp), %ecx; _DOARGS_1 (n-4)
+#define        _UNDOARGS_2     _UNDOARGS_1
+
+#define DOARGS_3       _DOARGS_3 (12)
+#define UNDOARGS_3     _UNDOARGS_3
+#define _DOARGS_3(n)   movl n(%esp), %edx; _DOARGS_2 (n-4)
+#define _UNDOARGS_3    _UNDOARGS_2
+
+#define DOARGS_4       _DOARGS_4 (16)
+#define UNDOARGS_4     _UNDOARGS_4
+#define _DOARGS_4(n)   pushl %esi; movl n+4(%esp), %esi; _DOARGS_3 (n)
+#define _UNDOARGS_4    _UNDOARGS_3; popl %esi
+
+#define DOARGS_5       _DOARGS_5 (20)
+#define UNDOARGS_5     _UNDOARGS_5
+#define _DOARGS_5(n)   pushl %edi; movl n+4(%esp), %edi; _DOARGS_4 (n)
+#define _UNDOARGS_5    _UNDOARGS_4; popl %edi
+
+
+#endif /* ASSEMBLER */
diff --git a/sysdeps/unix/sysv/linux/i386/xmknod.S b/sysdeps/unix/sysv/linux/i386/xmknod.S
new file mode 100644 (file)
index 0000000..fde3165
--- /dev/null
@@ -0,0 +1,49 @@
+/* Copyright (C) 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>
+#include <errnos.h>
+
+.globl syscall_error
+ENTRY (__xmknod)
+       popl %ecx               /* Pop return address into %eax.  */
+       popl %edx               /* Pop version number into %edx.  */
+       pushl %ecx              /* Push back the return address.  */
+
+       movl $SYS_ify(mknod), %eax
+                       /* Load syscall number for prev_stat in %eax.  */
+       cmpl $1, %edx           /* Version 1 xstat call?  */
+       je .L1                  /* Yes, do syscall.  */
+
+       movl $-EINVAL, %eax     /* Load error code into %eax.  */
+       jmp .L2
+
+.L1:   DO_CALL (3)             /* Do the syscall.   */
+
+       movl (%esp), %ecx
+       testl %eax, %eax        /* Check for error.  */
+       jl .L2
+
+       jmp *%ecx               /* Return success.  */
+
+.L2:   pushl %ecx
+       jmp JUMPTARGET(syscall_error)
+                               /* Yes, then branch to error handling.  */
+
+/* For compatibility with Linux libc.  */
+weak_alias (__xmknod, _xmknod)
diff --git a/sysdeps/unix/sysv/linux/i386/xstat.S b/sysdeps/unix/sysv/linux/i386/xstat.S
new file mode 100644 (file)
index 0000000..34822be
--- /dev/null
@@ -0,0 +1,51 @@
+/* Copyright (C) 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>
+#include <errnos.h>
+
+#define SYS_expand(name) SYS_ify(name)
+
+.globl syscall_error
+ENTRY (__xstat)
+       popl %ecx               /* Pop return address into %eax.  */
+       popl %edx               /* Pop version number into %edx.  */
+       pushl %ecx              /* Push back the return address.  */
+
+       movl $SYS_expand(stat), %eax
+                       /* Load syscall number for prev_stat in %eax.  */
+       cmpl $1, %edx           /* Version 1 xstat call?  */
+       je .L1                  /* Yes, do syscall.  */
+
+       movl $-EINVAL, %eax     /* Load error code into %eax.  */
+       jmp .L2
+
+.L1:   DO_CALL (2)             /* Do the syscall.   */
+
+       movl (%esp), %ecx
+       testl %eax, %eax        /* Check for error.  */
+       jl .L2
+
+       jmp *%ecx               /* Return success.  */
+
+.L2:   pushl %ecx
+       jmp JUMPTARGET(syscall_error)
+                               /* Yes, then branch to error handling.  */
+
+/* For compatibility with Linux libc.  */
+weak_alias (__xstat, _xstat)
diff --git a/sysdeps/unix/sysv/linux/local_lim.h b/sysdeps/unix/sysv/linux/local_lim.h
new file mode 100644 (file)
index 0000000..bfc65bd
--- /dev/null
@@ -0,0 +1,31 @@
+/* Minimum guaranteed maximum values for system limits.  Hurd version.
+
+Copyright (C) 1993, 1994 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.  */
+
+/* Linux has a fixed limit of supplementary groups allocated with a
+   process.  This value is determined by the size of the `groups'
+   member of the `task_struct' structure in <linux/sched.h>.  */
+   
+#define NGROUPS_MAX    32
+
+
+/* Maximum size of file names.  Not all file system types support
+   this size but it is only a maximum value.  */
+
+#define NAME_MAX       255
diff --git a/sysdeps/unix/sysv/linux/madvise.c b/sysdeps/unix/sysv/linux/madvise.c
new file mode 100644 (file)
index 0000000..72b7d76
--- /dev/null
@@ -0,0 +1 @@
+#include <sysdeps/stub/madvise.c>
diff --git a/sysdeps/unix/sysv/linux/msgctl.c b/sysdeps/unix/sysv/linux/msgctl.c
new file mode 100644 (file)
index 0000000..cd64d15
--- /dev/null
@@ -0,0 +1,32 @@
+/* Copyright (C) 1995 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#include <sys/msg.h>
+
+/* Allows to control internal state and destruction of message queue
+   objects.  */
+
+int
+msgctl (msqid, cmd, buf)
+     int msqid;
+     int cmd;
+     struct msqid_ds *buf;
+{
+  return __ipc (IPCOP_msgctl, msqid, cmd, 0, buf);
+}
diff --git a/sysdeps/unix/sysv/linux/msgget.c b/sysdeps/unix/sysv/linux/msgget.c
new file mode 100644 (file)
index 0000000..b1c29d6
--- /dev/null
@@ -0,0 +1,32 @@
+/* Copyright (C) 1995 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#include <sys/msg.h>
+#include <stdlib.h>            /* for definition of NULL */
+
+/* Return descriptor for message queue associated with KEY.  The MSGFLG
+   parameter describes how to proceed with clashing of key values.  */
+
+int
+msgget (key, msgflg)
+     key_t key;
+     int msgflg;
+{
+  return __ipc (IPCOP_msgget, key, msgflg, 0, NULL);
+}
diff --git a/sysdeps/unix/sysv/linux/msgrcv.c b/sysdeps/unix/sysv/linux/msgrcv.c
new file mode 100644 (file)
index 0000000..21c6b75
--- /dev/null
@@ -0,0 +1,38 @@
+/* Copyright (C) 1995 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#include <sys/msg.h>
+
+int
+msgrcv (msqid, msgp, msgsz, msgtyp, msgflg)
+     int msqid;
+     void *msgp;
+     size_t msgsz;
+     long msgtyp;
+     int msgflg;
+{
+  /* The problem here is that Linux' calling convention only allows up to
+     fives parameters to a system call.  */
+  struct ipc_kludge tmp;
+
+  tmp.msgp = msgp;
+  tmp.msgtyp = msgtyp;
+
+  return __ipc (IPCOP_msgrcv, msqid, msgsz, msgflg, &tmp);
+}
diff --git a/sysdeps/unix/sysv/linux/msgsnd.c b/sysdeps/unix/sysv/linux/msgsnd.c
new file mode 100644 (file)
index 0000000..6d2d3ef
--- /dev/null
@@ -0,0 +1,30 @@
+/* Copyright (C) 1995 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#include <sys/msg.h>
+
+int
+msgsnd (msqid, msgp, msgsz, msgflg)
+     int msqid;
+     void *msgp;
+     size_t msgsz;
+     int msgflg;
+{
+  return __ipc (IPCOP_msgsnd, msqid, msgsz, msgflg, msgp);
+}
diff --git a/sysdeps/unix/sysv/linux/pipe.S b/sysdeps/unix/sysv/linux/pipe.S
new file mode 100644 (file)
index 0000000..cd050b3
--- /dev/null
@@ -0,0 +1,24 @@
+/* Copyright (C) 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>
+
+SYSCALL__ (pipe, 1)
+       ret
+
+weak_alias (__pipe, pipe)
diff --git a/sysdeps/unix/sysv/linux/poll.c b/sysdeps/unix/sysv/linux/poll.c
new file mode 100644 (file)
index 0000000..ff43a76
--- /dev/null
@@ -0,0 +1 @@
+#include <sysdeps/stub/poll.c>
diff --git a/sysdeps/unix/sysv/linux/readv.c b/sysdeps/unix/sysv/linux/readv.c
new file mode 100644 (file)
index 0000000..baa976d
--- /dev/null
@@ -0,0 +1 @@
+#include <sysdeps/posix/readv.c>
diff --git a/sysdeps/unix/sysv/linux/recv.S b/sysdeps/unix/sysv/linux/recv.S
new file mode 100644 (file)
index 0000000..f1081cc
--- /dev/null
@@ -0,0 +1,2 @@
+#define        socket  recv
+#include <socket.S>
diff --git a/sysdeps/unix/sysv/linux/recvfrom.S b/sysdeps/unix/sysv/linux/recvfrom.S
new file mode 100644 (file)
index 0000000..febaa9e
--- /dev/null
@@ -0,0 +1,2 @@
+#define        socket  recvfrom
+#include <socket.S>
diff --git a/sysdeps/unix/sysv/linux/recvmsg.S b/sysdeps/unix/sysv/linux/recvmsg.S
new file mode 100644 (file)
index 0000000..ffadd30
--- /dev/null
@@ -0,0 +1,2 @@
+#define        socket  recvmsg
+#include <socket.S>
diff --git a/sysdeps/unix/sysv/linux/semctl.c b/sysdeps/unix/sysv/linux/semctl.c
new file mode 100644 (file)
index 0000000..dd0e7b9
--- /dev/null
@@ -0,0 +1,33 @@
+/* Copyright (C) 1995 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#include <sys/sem.h>
+
+/* Return identifier for array of NSEMS semaphores associated with
+   KEY.  */
+
+int
+semctl (semid, semnum, cmd, arg)
+     int semid;
+     int semnum;
+     int cmd;
+     union semun arg;
+{
+  return __ipc (IPCOP_semctl, semid, semnum, cmd, &arg);
+}
diff --git a/sysdeps/unix/sysv/linux/semget.c b/sysdeps/unix/sysv/linux/semget.c
new file mode 100644 (file)
index 0000000..6320e47
--- /dev/null
@@ -0,0 +1,33 @@
+/* Copyright (C) 1995 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#include <sys/sem.h>
+#include <stdlib.h>            /* for definition of NULL */
+
+/* Return identifier for array of NSEMS semaphores associated with
+   KEY.  */
+
+int
+semget (key, nsems, semflg)
+     key_t key;
+     int nsems;
+     int semflg;
+{
+  return __ipc (IPCOP_semget, key, nsems, semflg, NULL);
+}
diff --git a/sysdeps/unix/sysv/linux/semop.c b/sysdeps/unix/sysv/linux/semop.c
new file mode 100644 (file)
index 0000000..57f074e
--- /dev/null
@@ -0,0 +1,31 @@
+/* Copyright (C) 1995 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#include <sys/sem.h>
+
+/* Perform user-defined atomical operation of array of semaphores.  */
+
+int
+semop (semid, sops, nsops)
+     int semid;
+     struct sembuf *sops;
+     unsigned int nsops;
+{
+  return __ipc (IPCOP_semop, semid, (int) nsops, 0, sops);
+}
diff --git a/sysdeps/unix/sysv/linux/send.S b/sysdeps/unix/sysv/linux/send.S
new file mode 100644 (file)
index 0000000..52293c6
--- /dev/null
@@ -0,0 +1,2 @@
+#define        socket  send
+#include <socket.S>
diff --git a/sysdeps/unix/sysv/linux/sendmsg.S b/sysdeps/unix/sysv/linux/sendmsg.S
new file mode 100644 (file)
index 0000000..65f2c3e
--- /dev/null
@@ -0,0 +1,2 @@
+#define        socket  sendmsg
+#include <socket.S>
diff --git a/sysdeps/unix/sysv/linux/sendto.S b/sysdeps/unix/sysv/linux/sendto.S
new file mode 100644 (file)
index 0000000..aa637ce
--- /dev/null
@@ -0,0 +1,2 @@
+#define        socket  sendto
+#include <socket.S>
diff --git a/sysdeps/unix/sysv/linux/setegid.c b/sysdeps/unix/sysv/linux/setegid.c
new file mode 100644 (file)
index 0000000..1b29a6f
--- /dev/null
@@ -0,0 +1 @@
+#include <sysdeps/unix/bsd/setegid.c>
diff --git a/sysdeps/unix/sysv/linux/seteuid.c b/sysdeps/unix/sysv/linux/seteuid.c
new file mode 100644 (file)
index 0000000..850f3c5
--- /dev/null
@@ -0,0 +1,36 @@
+/* Copyright (C) 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 <errno.h>
+#include <unistd.h>
+#include <sys/types.h>
+
+int
+__seteuid (uid)
+     uid_t uid;
+{
+  if (uid == (uid_t) ~0)
+    {
+      errno = EINVAL;
+      return -1;
+    }
+
+  return __setreuid (-1, uid);
+}
+
+weak_alias (__seteuid, seteuid)
diff --git a/sysdeps/unix/sysv/linux/sethostid.c b/sysdeps/unix/sysv/linux/sethostid.c
new file mode 100644 (file)
index 0000000..eb71b74
--- /dev/null
@@ -0,0 +1,2 @@
+#define SET_PROCEDURE 1
+#include "gethostid.c"
diff --git a/sysdeps/unix/sysv/linux/setpgid.S b/sysdeps/unix/sysv/linux/setpgid.S
new file mode 100644 (file)
index 0000000..ba8140f
--- /dev/null
@@ -0,0 +1,22 @@
+/* Copyright (C) 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>
+
+SYSCALL (setpgid, 2)
+       ret
diff --git a/sysdeps/unix/sysv/linux/setpgrp.c b/sysdeps/unix/sysv/linux/setpgrp.c
new file mode 100644 (file)
index 0000000..4497e07
--- /dev/null
@@ -0,0 +1,25 @@
+/* Copyright (C) 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 <unistd.h>
+
+int
+setpgrp ()
+{
+  return setpgid (0, 0);
+}
diff --git a/sysdeps/unix/sysv/linux/setsockopt.S b/sysdeps/unix/sysv/linux/setsockopt.S
new file mode 100644 (file)
index 0000000..33d5717
--- /dev/null
@@ -0,0 +1,2 @@
+#define        socket  setsockopt
+#include <socket.S>
diff --git a/sysdeps/unix/sysv/linux/settimeofday.S b/sysdeps/unix/sysv/linux/settimeofday.S
new file mode 100644 (file)
index 0000000..4f86a26
--- /dev/null
@@ -0,0 +1,24 @@
+/* Copyright (C) 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>
+
+SYSCALL__ (settimeofday, 2)
+       ret
+
+weak_alias (__settimeofday, settimeofday)
diff --git a/sysdeps/unix/sysv/linux/shmat.c b/sysdeps/unix/sysv/linux/shmat.c
new file mode 100644 (file)
index 0000000..1efef29
--- /dev/null
@@ -0,0 +1,37 @@
+/* Copyright (C) 1995 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#include <sys/sem.h>
+
+/* Attach the shared memory segment associated with SHMID to the data
+   segment of the calling process.  SHMADDR and SHMFLG determine how
+   and where the segment is attached.  */
+
+char *
+shmat (shmid, shmaddr, shmflg)
+     int shmid;
+     char *shmaddr;
+     int shmflg;
+{
+  int retval;
+  unsigned long raddr;
+
+  retval = __ipc (IPCOP_shmat, shmid, shmflg, (int) &raddr, shmaddr);
+  return retval < 0 ? (char *) retval : (char *) raddr;
+}
diff --git a/sysdeps/unix/sysv/linux/shmctl.c b/sysdeps/unix/sysv/linux/shmctl.c
new file mode 100644 (file)
index 0000000..81192a8
--- /dev/null
@@ -0,0 +1,31 @@
+/* Copyright (C) 1995 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#include <sys/shm.h>
+
+/* Provide operations to control over shared memory segments.  */
+
+int
+shmctl (shmid, cmd, buf)
+     int shmid;
+     int cmd;
+     struct shmid_ds *buf;
+{
+  return __ipc (IPCOP_shmctl, shmid, cmd, 0, buf);
+}
diff --git a/sysdeps/unix/sysv/linux/shmdt.c b/sysdeps/unix/sysv/linux/shmdt.c
new file mode 100644 (file)
index 0000000..1e5bbe1
--- /dev/null
@@ -0,0 +1,30 @@
+/* Copyright (C) 1995 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#include <sys/shm.h>
+
+/* Detach shared memory segment starting at address specified by SHMADDR
+   from the caller's data segment.  */
+
+int
+shmdt (shmaddr)
+     char *shmaddr;
+{
+  return __ipc (IPCOP_shmdt, 0, 0, 0, shmaddr);
+}
diff --git a/sysdeps/unix/sysv/linux/shmget.c b/sysdeps/unix/sysv/linux/shmget.c
new file mode 100644 (file)
index 0000000..f0b2b65
--- /dev/null
@@ -0,0 +1,33 @@
+/* Copyright (C) 1995 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#include <sys/shm.h>
+#include <stdlib.h>            /* for definition of NULL */
+
+/* Return an identifier for an shared memory segment of at least size SIZE
+   which is associated with KEY.  */
+
+int
+shmget (key, size, shmflg)
+     key_t key;
+     int size;
+     int shmflg;
+{
+  return __ipc (IPCOP_shmget, key, size, shmflg, NULL);
+}
diff --git a/sysdeps/unix/sysv/linux/shutdown.S b/sysdeps/unix/sysv/linux/shutdown.S
new file mode 100644 (file)
index 0000000..6cc95d5
--- /dev/null
@@ -0,0 +1,2 @@
+#define        socket  shutdown
+#include <socket.S>
diff --git a/sysdeps/unix/sysv/linux/sigaction.S b/sysdeps/unix/sysv/linux/sigaction.S
new file mode 100644 (file)
index 0000000..0618d6e
--- /dev/null
@@ -0,0 +1,24 @@
+/* Copyright (C) 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>
+
+SYSCALL__ (sigaction, 3)
+       ret
+
+weak_alias (__sigaction, sigaction)
diff --git a/sysdeps/unix/sysv/linux/signal.S b/sysdeps/unix/sysv/linux/signal.S
new file mode 100644 (file)
index 0000000..68582a6
--- /dev/null
@@ -0,0 +1,8 @@
+#include <sysdeps/unix/sysv/signal.S>
+
+/* Used in siginterrupt() */
+
+       .data
+       .globl _sigintr
+_sigintr:
+       .long 0
diff --git a/sysdeps/unix/sysv/linux/sigpending.S b/sysdeps/unix/sysv/linux/sigpending.S
new file mode 100644 (file)
index 0000000..574ea3a
--- /dev/null
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/sco3.2.4/sigpending.S>
diff --git a/sysdeps/unix/sysv/linux/sigset.h b/sysdeps/unix/sysv/linux/sigset.h
new file mode 100644 (file)
index 0000000..e9bbb96
--- /dev/null
@@ -0,0 +1 @@
+#include <sysdeps/generic/sigset.h>
diff --git a/sysdeps/unix/sysv/linux/sockaddrcom.h b/sysdeps/unix/sysv/linux/sockaddrcom.h
new file mode 100644 (file)
index 0000000..768d05b
--- /dev/null
@@ -0,0 +1,37 @@
+/* Definition of `struct sockaddr_*' common members.  Generic/4.2 BSD version.
+Copyright (C) 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.  */
+
+#ifndef _SOCKADDRCOM_H
+#define _SOCKADDRCOM_H 1
+
+/* This prevents including the file <linux/socket.h>.  */
+#define _LINUX_SOCKET_H
+#define _LINUX_TYPES_H
+
+/* This macro is used to declare the initial common members
+   of the data types used for socket addresses, `struct sockaddr',
+   `struct sockaddr_in', `struct sockaddr_un', etc.  */
+
+#define        __SOCKADDR_COMMON(sa_prefix) \
+  unsigned short int sa_prefix##family
+
+#define __SOCKADDR_COMMON_SIZE (sizeof (unsigned short int))
+
+
+#endif /* sockaddrcom.h */
diff --git a/sysdeps/unix/sysv/linux/speed.c b/sysdeps/unix/sysv/linux/speed.c
new file mode 100644 (file)
index 0000000..84811de
--- /dev/null
@@ -0,0 +1,103 @@
+/* `struct termios' speed frobnication functions.  Linux version.
+Copyright (C) 1991, 1992, 1993, 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 <stddef.h>
+#include <errno.h>
+#include <termios.h>
+
+static const speed_t speeds[] =
+  {
+    0,
+    50,
+    75,
+    110,
+    134,
+    150,
+    200,
+    300,
+    600,
+    1200,
+    1800,
+    2400,
+    4800,
+    9600,
+    19200,
+    38400,
+    38400,             /* Mention this twice here is a trick.  */
+    57600,
+    115200,
+    230400,
+  };
+
+
+/* Return the output baud rate stored in *TERMIOS_P.  */
+speed_t
+cfgetospeed (termios_p)
+     const struct termios *termios_p;
+{
+  speed_t retval = termios_p->c_cflag & (CBAUD | CBAUDEX);
+
+  if (retval & CBAUDEX)
+    {
+      retval &= ~CBAUDEX;
+      retval |= CBAUD + 1;
+    }
+
+  return retval;
+}
+
+/* Return the input baud rate stored in *TERMIOS_P.
+   For Linux there is no difference between input and output speed.  */
+strong_alias (cfgetospeed, cfgetispeed);
+
+/* Set the output baud rate stored in *TERMIOS_P to SPEED.  */
+int
+cfsetospeed  (termios_p, speed) 
+     struct termios *termios_p;
+     speed_t speed;
+{
+  register unsigned int i;
+
+  if (termios_p == NULL)
+    {
+      errno = EINVAL;
+      return -1;
+    }
+
+  /* This allows either B1200 or 1200 to work. XXX
+     Do we really want to try to support this, given that
+     fetching the speed must return one or the other?  */
+
+  for (i = 0; i < sizeof (speeds) / sizeof (speeds[0]); ++i)
+    if (i == speed || speeds[i] == speed)
+      {
+       termios_p->c_cflag &= ~(CBAUD | CBAUDEX);
+       termios_p->c_cflag |= (i & CBAUD);
+       if (i & ~CBAUD)
+         termios_p->c_cflag |= CBAUDEX;
+       return 0;
+      }
+
+  errno = EINVAL;
+  return -1;
+}
+
+/* Set the input baud rate stored in *TERMIOS_P to SPEED.
+   For Linux there is no difference between input and output speed.  */
+strong_alias (cfsetospeed, cfsetispeed);
diff --git a/sysdeps/unix/sysv/linux/statbuf.h b/sysdeps/unix/sysv/linux/statbuf.h
new file mode 100644 (file)
index 0000000..ad81704
--- /dev/null
@@ -0,0 +1,72 @@
+/* Copyright (C) 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.  */
+
+#ifndef        _STATBUF_H
+#define        _STATBUF_H
+
+struct stat
+  {
+    short int st_dev;                  /* Device.  */
+    unsigned short __pad1;
+    unsigned long int st_ino;          /* File serial number.  */
+    unsigned short int st_mode;                /* File mode.  */
+    unsigned short int st_nlink;       /* Link count.  */
+    unsigned short int st_uid;         /* User ID of the file's owner. */
+    unsigned short int st_gid;         /* Group ID of the file's group.*/
+    unsigned short int st_rdev;                /* Device number, if device.  */
+    unsigned short int __pad2;
+    long int st_size;                  /* Size of file, in bytes.  */
+    unsigned long int st_blksize;      /* Optimal block size for I/O.  */
+#define        _STATBUF_ST_BLKSIZE             /* Tell code we have this member.  */
+
+    unsigned long int st_blocks;       /* Number of 512-byte blocks allocated.  */
+    long int st_atime;                 /* Time of last access.  */
+    unsigned long int __unused1;
+    long int st_mtime;                 /* Time of last modification.  */
+    unsigned long int __unused2;
+    long int st_ctime;                 /* Time of last status change.  */
+    unsigned long int __unused3;
+    unsigned long int __unused4;
+    unsigned long int __unused5;
+  };
+
+/* Encoding of the file mode.  */
+
+#define        __S_IFMT        0170000 /* These bits determine file type.  */
+
+/* File types.  */
+#define        __S_IFDIR       0040000 /* Directory.  */
+#define        __S_IFCHR       0020000 /* Character device.  */
+#define        __S_IFBLK       0060000 /* Block device.  */
+#define        __S_IFREG       0100000 /* Regular file.  */
+#define        __S_IFIFO       0010000 /* FIFO.  */
+
+/* These don't actually exist on System V, but having them doesn't hurt.  */
+#define        __S_IFLNK       0120000 /* Symbolic link.  */
+#define        __S_IFSOCK      0140000 /* Socket.  */
+
+/* Protection bits.  */
+
+#define        __S_ISUID       04000   /* Set user ID on execution.  */
+#define        __S_ISGID       02000   /* Set group ID on execution.  */
+#define        __S_ISVTX       01000   /* Save swapped text after use (sticky).  */
+#define        __S_IREAD       0400    /* Read by owner.  */
+#define        __S_IWRITE      0200    /* Write by owner.  */
+#define        __S_IEXEC       0100    /* Execute by owner.  */
+
+#endif /* statbuf.h */
diff --git a/sysdeps/unix/sysv/linux/stty.S b/sysdeps/unix/sysv/linux/stty.S
new file mode 100644 (file)
index 0000000..6c04c2a
--- /dev/null
@@ -0,0 +1,22 @@
+/* Copyright (C) 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>
+
+SYSCALL (stty, 2)
+       ret
diff --git a/sysdeps/unix/sysv/linux/sys/ipc_buf.h b/sysdeps/unix/sysv/linux/sys/ipc_buf.h
new file mode 100644 (file)
index 0000000..767fc9a
--- /dev/null
@@ -0,0 +1,84 @@
+/* Copyright (C) 1995 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#ifndef _SYS_IPC_BUF_H
+#define _SYS_IPC_BUF_H
+
+#include <features.h>
+#include <sys/types.h>
+
+/* Mode bits for `msgget', `semget', and `shmget'.  */
+#define IPC_CREAT      01000           /* create key if key does not exist */
+#define IPC_EXCL       02000           /* fail if key exists */
+#define IPC_NOWAIT     04000           /* return error on wait */
+
+/* Control commands for `msgctl', `semctl', and `shmctl'.  */
+#define IPC_RMID       0               /* remove identifier */
+#define IPC_SET                1               /* set `ipc_perm' options */
+#define IPC_STAT       2               /* get `ipc_perm' options */
+#define IPC_INFO       3               /* see ipcs */
+
+
+__BEGIN_DECLS
+
+/* Special key values.  */
+#define IPC_PRIVATE    ((key_t) 0)     /* private key */
+
+
+/* Data structure used to pass permission information to IPC operations.  */
+struct ipc_perm
+{
+  key_t __key;                         /* key */
+  __uid_t uid;                         /* owner's user ID */
+  __gid_t gid;                         /* owner's group ID */
+  __uid_t cuid;                                /* creator's user ID */
+  __gid_t cgid;                                /* creator's group ID */
+  __mode_t mode;                       /* read/write permission */
+  unsigned short int __seq;            /* sequence number */
+};
+
+
+/* Kludge to work around Linux' restriction of only up to five
+   arguments to a system call.  */
+struct ipc_kludge
+{
+  void *msgp;
+  long msgtyp;
+};
+
+/* The actual system call: all functions are multiplexed by this.  */
+extern int __ipc __P ((int __call, int __first, int __second, int __third,
+                      void *__ptr));
+
+/* The codes for the functions to use the multiplexer `__ipc'.  */
+#define IPCOP_semop     1
+#define IPCOP_semget    2
+#define IPCOP_semctl    3
+#define IPCOP_msgsnd   11
+#define IPCOP_msgrcv   12
+#define IPCOP_msgget   13
+#define IPCOP_msgctl   14
+#define IPCOP_shmat    21
+#define IPCOP_shmdt    22
+#define IPCOP_shmget   23
+#define IPCOP_shmctl   24
+
+__END_DECLS
+
+#endif /* sys/ipc_buf.h */
diff --git a/sysdeps/unix/sysv/linux/sys/mman.h b/sysdeps/unix/sysv/linux/sys/mman.h
new file mode 100644 (file)
index 0000000..b05738d
--- /dev/null
@@ -0,0 +1,112 @@
+/* Definitions for BSD-style memory management.  Linux version.
+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
+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.  */
+
+/* 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
+#include <features.h>
+
+#include <gnu/types.h>
+#define __need_size_t
+#include <stddef.h>
+
+
+/* Protections are chosen from these bits, OR'd together.  The
+   implementation does not necessarily support PROT_EXEC or PROT_WRITE
+   without PROT_READ.  The only guarantees are that no writing will be
+   allowed without PROT_WRITE and no access will be allowed for PROT_NONE. */
+
+#define        PROT_NONE       0x00    /* No access.  */
+#define        PROT_READ       0x01    /* Pages can be read.  */
+#define        PROT_WRITE      0x02    /* Pages can be written.  */
+#define        PROT_EXEC       0x04    /* Pages can be executed.  */
+
+
+/* Flags contain mapping type, sharing type and options.  */
+
+/* Mapping type (must choose one and only one of these).  */
+#define        MAP_FILE        0x0000  /* Mapped from a file or device.  */
+#define        MAP_ANON        0x0020  /* Allocated from anonymous virtual memory.  */
+#define        MAP_TYPE        0x000f  /* Mask for type field.  */
+
+/* Sharing types (must choose one and only one of these).  */
+#define        MAP_COPY        MAP_PRIVATE     /* Virtual copy of region at mapping time.  */
+#define        MAP_SHARED      0x0001  /* Share changes.  */
+#define        MAP_PRIVATE     0x0002  /* Changes private; copy pages on write.  */
+
+/* Other flags.  */
+#define        MAP_FIXED       0x0010  /* Map address must be exactly as requested. */
+#define        MAP_NOEXTEND    0x0000  /* For MAP_FILE, don't change file size.
+                                  Not available on Linux???  */
+#define        MAP_HASSEMPHORE 0x0000  /* Region may contain semaphores.
+                                  Not available on Linux???  */
+#define        MAP_INHERIT     0x0000  /* Region is retained after exec.
+                                  Not available on Linux???  */
+
+/* Advice to `madvise'.  */
+#define        MADV_NORMAL     0       /* No further special treatment.  */
+#define        MADV_RANDOM     1       /* Expect random page references.  */
+#define        MADV_SEQUENTIAL 2       /* Expect sequential page references.  */
+#define        MADV_WILLNEED   3       /* Will need these pages.  */
+#define        MADV_DONTNEED   4       /* Don't need these pages.  */
+
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+/* 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
+   page-aligned); otherwise the system chooses a convenient nearby address.
+   The return value is the actual mapping address chosen or (caddr_t) -1
+   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
+   extending LEN bytes to PROT.  Returns 0 if successful, -1 for errors
+   (and sets errno).  */
+int mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
+
+/* Synchronize the region starting at ADDR and extending LEN bytes with the
+   file it maps.  Filesystem operations on a file being mapped are
+   unpredictable before this is done.  */
+int msync __P ((__caddr_t __addr, size_t __len));
+
+/* Advise the system about particular usage patterns the program follows
+   for the region starting at ADDR and extending LEN bytes.  */
+int madvise __P ((__caddr_t __addr, size_t __len, int __advice));
+
+__END_DECLS
+
+
+#endif /* sys/mman.h */
diff --git a/sysdeps/unix/sysv/linux/sys/msq_buf.h b/sysdeps/unix/sysv/linux/sys/msq_buf.h
new file mode 100644 (file)
index 0000000..92a52d5
--- /dev/null
@@ -0,0 +1,54 @@
+/* Copyright (C) 1995 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#ifndef _SYS_MSQ_BUF_H
+#define _SYS_MSQ_BUF_H
+
+#include <features.h>
+#include <sys/types.h>
+
+/* Define options for message queue functions.  */
+#define MSG_NOERROR    010000  /* no error if message is too big */
+#define MSG_EXCEPT     020000  /* recv any msg except of specified type */
+
+
+__BEGIN_DECLS
+
+/* Structure of record for one message inside the kernel.
+   The type `struct __msg' is opaque.  */
+struct msqid_ds
+{
+  struct ipc_perm msg_perm;    /* structure describing operation permission */
+  struct msg *__msg_first;     /* pointer to first message on queue */
+  struct msg *__msg_last;      /* pointer to last message on queue */
+  __time_t msg_stime;          /* time of last msgsnd command */
+  __time_t msg_rtime;          /* time of last msgrcv command */
+  __time_t msg_ctime;          /* time of last change */
+  struct wait_queue *__wwait;  /* ??? */
+  struct wait_queue *__rwait;  /* ??? */
+  unsigned short int __msg_cbytes;/* current number of bytes on queue */
+  unsigned short int msg_qnum; /* number of messages currently on queue */
+  unsigned short int msg_qbytes;/* max number of bytes allowed on queue */
+  __pid_t msg_lspid;           /* pid of last msgsnd() */
+  __pid_t msg_lrpid;           /* pid of last msgrcv() */
+};
+
+__END_DECLS
+
+#endif /* sys/msq_buf.h */
diff --git a/sysdeps/unix/sysv/linux/sys/sem_buf.h b/sysdeps/unix/sysv/linux/sys/sem_buf.h
new file mode 100644 (file)
index 0000000..d93002a
--- /dev/null
@@ -0,0 +1,65 @@
+/* Copyright (C) 1995 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#ifndef _SYS_SEM_BUF_H
+#define _SYS_SEM_BUF_H
+
+#include <features.h>
+#include <sys/types.h>
+
+/* Flags for `semop'.  */
+#define SEM_UNDO       0x1000          /* undo the operation on exit */
+
+/* Commands for `semctl'.  */
+#define GETPID         11              /* get sempid */
+#define GETVAL         12              /* get semval */
+#define GETALL         13              /* get all semval's */
+#define GETNCNT                14              /* get semncnt */
+#define GETZCNT                15              /* get semzcnt */
+#define SETVAL         16              /* set semval */
+#define SETALL         17              /* set all semval's */
+
+
+__BEGIN_DECLS
+
+/* Data structure describing a set of semaphores.  */
+struct semid_ds
+{
+  struct ipc_perm sem_perm;            /* operation permisson struct */
+  __time_t sem_otime;                  /* last semop() time */
+  __time_t sem_ctime;                  /* last time changed by semctl() */
+  struct sem *__sembase;               /* ptr to first semaphore in array */
+  struct sem_queue *__sem_pending;     /* pending operations */
+  struct sem_queue *__sem_pending_last; /* last pending operation */
+  struct sem_undo *__undo;             /* ondo requests on this array */
+  unsigned short int sem_nsems;                /* number of semaphores in set */
+};
+
+/* Union used for argument for `semctl'.  */
+union semun
+{
+  int val;                             /* value for SETVAL */
+  struct semid_ds *buf;                        /* buffer for IPC_STAT & IPC_SET */
+  unsigned short int *array;           /* array for GETALL & SETALL */
+  struct seminfo *__buf;               /* buffer for IPC_INFO */
+};
+
+__END_DECLS
+
+#endif /* sys/sem_buf.h */
diff --git a/sysdeps/unix/sysv/linux/sys/shm_buf.h b/sysdeps/unix/sysv/linux/sys/shm_buf.h
new file mode 100644 (file)
index 0000000..fa1e823
--- /dev/null
@@ -0,0 +1,56 @@
+/* Copyright (C) 1995 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#ifndef _SYS_SHM_BUF_H
+#define _SYS_SHM_BUF_H
+
+#include <features.h>
+#include <sys/types.h>
+
+/* Flags for `shmat'.  */
+#define SHM_RDONLY     010000          /* attach read-only else read-write */
+#define SHM_RND                020000          /* round attach address to SHMLBA */
+#define SHM_REMAP      040000          /* take-over region on attach */
+
+/* Commands for `shmctl'.  */
+#define SHM_LOCK       11              /* lock segment (root only) */
+#define SHM_UNLOCK     12              /* unlock segment (root only) */
+
+
+__BEGIN_DECLS
+
+/* Data structure describing a set of semaphores.  */
+struct shmid_ds
+{
+  struct ipc_perm sem_perm;            /* operation permisson struct */
+  int shm_segsz;                       /* size of segment in bytes */
+  __time_t sem_atime;                  /* time of last shmat() */
+  __time_t sem_dtime;                  /* time of last shmdt() */
+  __time_t sem_ctime;                  /* time of last change by shmctl() */
+  __pid_t shm_cpid;                    /* pid of creator */
+  __pid_t shm_lpid;                    /* pid of last shmop */
+  unsigned short int shm_nattch;       /* number of current attaches */
+  unsigned short int __shm_npages;     /* size of segment (pages) */
+  unsigned long int *__shm_pages;      /* array of ptrs to frames -> SHMMAX */
+  struct vm_area_struct *__attaches;   /* descriptors for attaches */
+};
+
+__END_DECLS
+
+#endif /* sys/shm_buf.h */
diff --git a/sysdeps/unix/sysv/linux/sys/socketcall.h b/sysdeps/unix/sysv/linux/sys/socketcall.h
new file mode 100644 (file)
index 0000000..4bfd712
--- /dev/null
@@ -0,0 +1,46 @@
+/* ID for functions called via socketcall system call.
+   Copyright (C) 1995 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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#ifndef _SYS_SOCKETCALL_H
+#define _SYS_SOCKETCALL_H
+
+/* Define unique numbers for the operations permitted on socket.  Linux
+   uses a single system call for all these functions.  The relevant code
+   file is /usr/include/linux/net.h.
+   We cannot use a enum here because the values are used in assembler
+   code.  */
+
+#define SOCKOP_socket          1
+#define SOCKOP_bind            2
+#define SOCKOP_connect         3
+#define SOCKOP_listen          4
+#define SOCKOP_accept          5
+#define SOCKOP_getsockname     6
+#define SOCKOP_getpeername     7
+#define SOCKOP_socketpair      8
+#define SOCKOP_send            9
+#define SOCKOP_recv            10
+#define SOCKOP_sendto          11
+#define SOCKOP_recvfrom                12
+#define SOCKOP_shutdown                13
+#define SOCKOP_setsockopt      14
+#define SOCKOP_getsockopt      15
+#define SOCKOP_sendmsg         16
+#define SOCKOP_recvmsg         17
+
+#endif
diff --git a/sysdeps/unix/sysv/linux/sys/timex.h b/sysdeps/unix/sysv/linux/sys/timex.h
new file mode 100644 (file)
index 0000000..fad47cd
--- /dev/null
@@ -0,0 +1,30 @@
+/* Copyright (C) 1995 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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#ifndef _SYS_TIMEX_H
+#define _SYS_TIMEX_H
+
+#include <features.h>
+#include <linux/timex.h>
+
+__BEGIN_DECLS
+
+extern int __adjtimex __P ((struct timex *__ntx));
+
+__END_DECLS
+
+#endif /* sys/timex.h */
diff --git a/sysdeps/unix/sysv/linux/syscall.h b/sysdeps/unix/sysv/linux/syscall.h
new file mode 100644 (file)
index 0000000..fe6cfcf
--- /dev/null
@@ -0,0 +1,59 @@
+/* Copyright (C) 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.  */
+
+#ifndef _SYSCALL_H
+#define _SYSCALL_H
+
+/* This file should list the numbers of the system the system knows.
+   But instead of duplicating this we use the information available
+   from the kernel sources.  */
+#include <asm/unistd.h>
+
+/* Among the system calls defined there are
+       _dup2   
+       _mkdir  
+       _rmdir  
+       _readlink       
+       _symlink        
+       _rename         
+       _swapon         
+       _access         
+       _select         
+       _getgroups      
+       _setgroups      
+       _getitimer      
+       _setitimer      
+       _setdomainname  
+       _getrlimit      
+       _setrlimit      
+       _getrusage      
+       _getpriority    
+       _setpriority    
+       _truncate       
+       _ftruncate      
+       _setpgid        
+       _fchmod 
+       _fchdir 
+       _fchown 
+       _setregid       
+       _setreuid       
+       _vhangup        
+   (This is a hack for the autoconf mechanism.  Don't change a single
+    character, esp white spaces, unless you know what you are doing!)  */
+
+#endif
diff --git a/sysdeps/unix/sysv/linux/sysconf.c b/sysdeps/unix/sysv/linux/sysconf.c
new file mode 100644 (file)
index 0000000..e366d04
--- /dev/null
@@ -0,0 +1 @@
+#include <sysdeps/posix/sysconf.c>
diff --git a/sysdeps/unix/sysv/linux/tcdrain.c b/sysdeps/unix/sysv/linux/tcdrain.c
new file mode 100644 (file)
index 0000000..67c7573
--- /dev/null
@@ -0,0 +1,31 @@
+/* Copyright (C) 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 <termios.h>
+#include <sys/ioctl.h>
+
+/* Wait for pending output to be written on FD.  */
+int
+__tcdrain (fd)
+      int fd;
+{
+  /* With an argument of 1, TCSBRK for output to be drain.  */
+  return __ioctl (fd, TCSBRK, 1);
+}
+
+weak_alias (__tcdrain, tcdrain)
diff --git a/sysdeps/unix/sysv/linux/tcflow.c b/sysdeps/unix/sysv/linux/tcflow.c
new file mode 100644 (file)
index 0000000..5be68e2
--- /dev/null
@@ -0,0 +1 @@
+#include <sysdeps/unix/bsd/sun/sunos4/tcflow.c>
diff --git a/sysdeps/unix/sysv/linux/tcflush.c b/sysdeps/unix/sysv/linux/tcflush.c
new file mode 100644 (file)
index 0000000..78e09b2
--- /dev/null
@@ -0,0 +1 @@
+#include <sysdeps/unix/bsd/sun/sunos4/tcflush.c>
diff --git a/sysdeps/unix/sysv/linux/tcgetattr.c b/sysdeps/unix/sysv/linux/tcgetattr.c
new file mode 100644 (file)
index 0000000..3f12348
--- /dev/null
@@ -0,0 +1,31 @@
+/* Copyright (C) 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 <termios.h>
+#include <sys/ioctl.h>
+
+/* Put the state of FD into *TERMIOS_P.  */
+int
+__tcgetattr (fd, termios_p)
+      int fd;
+      struct termios *termios_p;
+{
+  return __ioctl (fd, TCGETS, termios_p);
+}
+
+weak_alias (__tcgetattr, tcgetattr)
diff --git a/sysdeps/unix/sysv/linux/tcsetattr.c b/sysdeps/unix/sysv/linux/tcsetattr.c
new file mode 100644 (file)
index 0000000..ef5009d
--- /dev/null
@@ -0,0 +1 @@
+#include <sysdeps/unix/bsd/sun/sunos4/tcsetattr.c>
diff --git a/sysdeps/unix/sysv/linux/termbits.h b/sysdeps/unix/sysv/linux/termbits.h
new file mode 100644 (file)
index 0000000..8a71334
--- /dev/null
@@ -0,0 +1,209 @@
+/* termios type and macro definitions.  Linux version.
+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.  */
+
+/* Type of terminal control flag masks.  */
+typedef unsigned int tcflag_t;
+
+/* Type of control characters.  */
+typedef unsigned char cc_t;
+
+/* Type of baud rate specifiers.  */
+typedef unsigned int speed_t;
+
+/* Terminal control structure.  */
+struct termios
+{
+  /* Input modes.  */
+  tcflag_t c_iflag;
+#define        IGNBRK  0x0001          /* Ignore break condition.  */
+#define        BRKINT  0x0002          /* Signal interrupt on break.  */
+#define        IGNPAR  0x0004          /* Ignore characters with parity errors.  */
+#define        PARMRK  0x0008          /* Mark parity and framing errors.  */
+#define        INPCK   0x0010          /* Enable input parity check.  */
+#define        ISTRIP  0x0020          /* Strip 8th bit off characters.  */
+#define        INLCR   0x0040          /* Map NL to CR on input.  */
+#define        IGNCR   0x0080          /* Ignore CR.  */
+#define        ICRNL   0x0100          /* Map CR to NL on input.  */
+#ifdef __USE_BSD
+#define        IUCLC   0x0200          /* Map upper case to lower case on input.  */
+#endif
+#define        IXON    0x0400          /* Enable start/stop output control.  */
+#define        IXOFF   0x1000          /* Enable start/stop input control.  */
+#ifdef __USE_BSD
+#define        IXANY   0x0800          /* Any character will restart after stop.  */
+#define        IMAXBEL 0x2000          /* Ring bell when input queue is full.  */
+#endif
+
+  /* Output modes.  */
+  tcflag_t c_oflag;
+#define        OPOST   0x0001          /* Perform output processing.  */
+#ifdef __USE_BSD
+#define        OLCUC   0x00000002      /* Map lower case to upper case on output.  */
+#define        ONLCR   0x00000004      /* Map NL to CR-NL on output.  */
+#define        OCRNL   0x00000008
+#define        ONOCR   0x00000010
+#define        ONLRET  0x00000020
+#define        OFILL   0x00000040
+#define        OFDEL   0x00000080
+#define        NLDLY   0x00000100
+#define        NL0     0
+#define        NL1     0x00000100
+#define        CRDLY   0x00000600
+#define        CR0     0
+#define        CR1     0x00000200
+#define        CR2     0x00000400
+#define        CR3     0x00000600
+#define        TABDLY  0x00001800
+#define        TAB0    0
+#define        TAB1    0x00000800
+#define        TAB2    0x00001000
+#define        XTABS   0x00001800
+#define        TAB3    XTABS
+#define        BSDLY   0x00002000
+#define        BS0     0
+#define        BS1     0x00002000
+#define        VTDLY   0x00004000
+#define        VT0     0
+#define        VT1     0x00004000
+#define        FFDLY   0x00008000
+#define        FF0     0
+#define        FF1     0x00008000
+#define        PAGEOUT 0x00010000
+#define        WRAP    0x00020000
+#endif
+
+  /* Control modes.  */
+  tcflag_t c_cflag;
+#define        CSIZE   (CS5|CS6|CS7|CS8) /* Number of bits per byte (mask).  */
+#define        CS5     0               /* 5 bits per byte.  */
+#define        CS6     0x00000010      /* 6 bits per byte.  */
+#define        CS7     0x00000020      /* 7 bits per byte.  */
+#define        CS8     0x00000030      /* 8 bits per byte.  */
+#define        CSTOPB  0x00000040      /* Two stop bits instead of one.  */
+#define        CREAD   0x00000080      /* Enable receiver.  */
+#define        PARENB  0x00000100      /* Parity enable.  */
+#define        PARODD  0x00000200      /* Odd parity instead of even.  */
+#define        HUPCL   0x00000400      /* Hang up on last close.  */
+#define        CLOCAL  0x00000800      /* Ignore modem status lines.  */
+#ifdef __USE_BSD
+#define        CRTSCTS 0x08000000
+#define        CBAUD   0x0000000f      /* Mask for speed from c_cflag.  */
+#define CBAUDEX        0x00010000      /* Mask for extended speed from c_cflag.  */
+#endif
+
+  /* Input and output baud rates.  These are encoded in c_cflag.  */
+#define B0      0x000000000
+#define B50     0x000000001
+#define B75     0x000000002
+#define B110    0x000000003
+#define B134    0x000000004
+#define B150    0x000000005
+#define B200    0x000000006
+#define B300    0x000000007
+#define B600    0x000000008
+#define B1200   0x000000009
+#define B1800   0x00000000a
+#define B2400   0x00000000b
+#define B4800   0x00000000c
+#define B9600   0x00000000d
+#define B19200  0x00000000e
+#define B38400  0x00000000f
+#ifdef __USE_BSD
+#define EXTA    0x00000000e
+#define EXTB    0x00000000f
+#endif
+#define B57600 0x000010001
+#define B115200        0x000010002
+#define B230400        0x000010003
+
+  /* Local modes.  */
+  tcflag_t c_lflag;
+#ifdef __USE_BSD
+#define        ECHOKE  0x00000800      /* Visual erase for KILL.  */
+#endif
+#define        ECHOE   0x00000010      /* Visual erase for ERASE.  */
+#define        ECHOK   0x00000020      /* Echo NL after KILL.  */
+#define        ECHO    0x00000008      /* Enable echo.  */
+#define        ECHONL  0x00000040      /* Echo NL even if ECHO is off.  */
+#ifdef __USE_BSD
+#define        ECHOPRT 0x00000400      /* Hardcopy visual erase.  */
+#define        ECHOCTL 0x00000200      /* Echo control characters as ^X.  */
+#endif
+#define        ISIG    0x00000001      /* Enable signals.  */
+#define        ICANON  0x00000002      /* Do erase and kill processing.  */
+#define        IEXTEN  0x00008000      /* Enable DISCARD and LNEXT.  */
+#define        TOSTOP  0x00000100      /* Send SIGTTOU for background output.  */
+#ifdef __USE_BSD
+#define        PENDIN  0x00004000      /* Retype pending input (state).  */
+#endif
+#define        NOFLSH  0x00000080      /* Disable flush after interrupt.  */
+
+  cc_t c_line;                 /* Line discipline (?) */
+
+  /* Control characters.  */
+#define        VEOF    4               /* End-of-file character [ICANON].  */
+#define        VEOL    5               /* End-of-line character [ICANON].  */
+#ifdef __USE_BSD
+#define        VEOL2   6               /* Second EOL character [ICANON].  */
+#define        VSWTCH  7               /* ??? */
+#endif
+#define        VERASE  2               /* Erase character [ICANON].  */
+#ifdef __USE_BSD
+#define        VWERASE 14              /* Word-erase character [ICANON].  */
+#endif
+#define        VKILL   3               /* Kill-line character [ICANON].  */
+#ifdef __USE_BSD
+#define        VREPRINT 12             /* Reprint-line character [ICANON].  */
+#endif
+#define        VINTR   0               /* Interrupt character [ISIG].  */
+#define        VQUIT   1               /* Quit character [ISIG].  */
+#define        VSUSP   10              /* Suspend character [ISIG].  */
+#ifdef __USE_BSD
+#define        VDSUSP  11              /* Delayed suspend character [ISIG].  */
+#endif
+#define        VSTART  8               /* Start (X-ON) character [IXON, IXOFF].  */
+#define        VSTOP   9               /* Stop (X-OFF) character [IXON, IXOFF].  */
+#ifdef __USE_BSD
+#define        VLNEXT  15              /* Literal-next character [IEXTEN].  */
+#define        VDISCARD 13             /* Discard character [IEXTEN].  */
+#endif
+#define        VMIN    VEOF            /* Minimum number of bytes read at once [!ICANON].  */
+#define        VTIME   VEOL            /* Time-out value (tenths of a second) [!ICANON].  */
+#define        NCCS    19
+  cc_t c_cc[NCCS];
+};
+
+#define _IOT_termios /* Hurd ioctl type field.  */ \
+  _IOT (_IOTS (cflag_t), 4, _IOTS (cc_t), NCCS, _IOTS (speed_t), 2)
+
+/* Values for the OPTIONAL_ACTIONS argument to `tcsetattr'.  */
+#define        TCSANOW         0       /* Change immediately.  */
+#define        TCSADRAIN       1       /* Change when pending output is written.  */
+#define        TCSAFLUSH       2       /* Flush pending input before changing.  */
+
+/* Values for the QUEUE_SELECTOR argument to `tcflush'.  */
+#define        TCIFLUSH        0       /* Discard data received but not yet read.  */
+#define        TCOFLUSH        1       /* Discard data written but not yet sent.  */
+#define        TCIOFLUSH       2       /* Discard all pending data.  */
+
+/* Values for the ACTION argument to `tcflow'.  */
+#define        TCOOFF  0               /* Suspend output.  */
+#define        TCOON   1               /* Restart suspended output.  */
+#define        TCIOFF  2               /* Send a STOP character.  */
+#define        TCION   3               /* Send a START character.  */
diff --git a/sysdeps/unix/sysv/linux/ualarm.c b/sysdeps/unix/sysv/linux/ualarm.c
new file mode 100644 (file)
index 0000000..5522f58
--- /dev/null
@@ -0,0 +1 @@
+#include <sysdeps/unix/bsd/ualarm.c>
diff --git a/sysdeps/unix/sysv/linux/ulimit.c b/sysdeps/unix/sysv/linux/ulimit.c
new file mode 100644 (file)
index 0000000..2b11930
--- /dev/null
@@ -0,0 +1,73 @@
+/* Copyright (C) 1991, 1992, 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 <ansidecl.h>
+#include <sysdep.h>
+#include <sys/resource.h>
+#include <unistd.h>
+#include <errno.h>
+
+/* Function depends on CMD:
+   1 = Return the limit on the size of a file, in units of 512 bytes.
+   2 = Set the limit on the size of a file to NEWLIMIT.  Only the
+       super-user can increase the limit.
+   3 = illegal due to shared libraries; normally is
+       (Return the maximum possible address of the data segment.)
+   4 = Return the maximum number of files that the calling process
+       can open.
+   Returns -1 on errors.  */
+long int
+__ulimit (cmd, newlimit)
+     int cmd;
+     long int newlimit;
+{
+  int status;
+
+  switch (cmd)
+    {
+    case 1:
+      {
+       /* Get limit on file size.  */
+       struct rlimit fsize;
+
+       status = getrlimit(RLIMIT_FSIZE, &fsize);
+       if (status < 0)
+         return -1;
+
+       /* Convert from bytes to 512 byte units.  */
+       return fsize.rlim_cur / 512;
+      }
+    case 2:
+      /* Set limit on file size.  */
+      {
+       struct rlimit fsize;
+       fsize.rlim_cur = newlimit * 512;
+       fsize.rlim_max = newlimit * 512;
+       
+       return setrlimit(RLIMIT_FSIZE, &fsize);
+      }
+    case 4:
+      return sysconf(_SC_OPEN_MAX);
+
+    default:
+      errno = EINVAL;
+      return -1;
+    }
+}
+
+weak_alias (__ulimit, ulimit);
diff --git a/sysdeps/unix/sysv/linux/usleep.c b/sysdeps/unix/sysv/linux/usleep.c
new file mode 100644 (file)
index 0000000..d08c6b6
--- /dev/null
@@ -0,0 +1 @@
+#include <sysdeps/unix/bsd/usleep.c>
diff --git a/sysdeps/unix/sysv/linux/utsnamelen.h b/sysdeps/unix/sysv/linux/utsnamelen.h
new file mode 100644 (file)
index 0000000..c16c385
--- /dev/null
@@ -0,0 +1,24 @@
+/* Copyright (C) 1995 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., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Length of the entries in `struct utsname' is 65.  */
+#define _UTSNAME_LENGTH 65
+
+/* Linux provides as additional information in the `struct utsname'
+   the name of the current domain.  Define _UTSNAME_DOMAIN_LENGTH
+   to a value != 0 to activate this entry.  */
+#define _UTSNAME_DOMAIN_LENGTH _UTSNAME_LENGTH
diff --git a/sysdeps/unix/sysv/linux/vfork.c b/sysdeps/unix/sysv/linux/vfork.c
new file mode 100644 (file)
index 0000000..9b4dd5f
--- /dev/null
@@ -0,0 +1 @@
+#include <sysdeps/generic/vfork.c>
diff --git a/sysdeps/unix/sysv/linux/wait.c b/sysdeps/unix/sysv/linux/wait.c
new file mode 100644 (file)
index 0000000..63cf60c
--- /dev/null
@@ -0,0 +1 @@
+#include <sysdeps/posix/wait.c>
diff --git a/sysdeps/unix/sysv/linux/waitpid.c b/sysdeps/unix/sysv/linux/waitpid.c
new file mode 100644 (file)
index 0000000..d4ee06b
--- /dev/null
@@ -0,0 +1,32 @@
+/* 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>
+#include <stdlib.h>
+#include <sys/wait.h>
+
+__pid_t
+__waitpid (pid, stat_loc, options)
+     __pid_t pid;
+     int *stat_loc;
+     int options;
+{
+  return __wait4 (pid, stat_loc, options, NULL);
+}
+
+weak_alias (__waitpid, waitpid)
diff --git a/sysdeps/unix/sysv/linux/writev.c b/sysdeps/unix/sysv/linux/writev.c
new file mode 100644 (file)
index 0000000..0dc6a76
--- /dev/null
@@ -0,0 +1 @@
+#include <sysdeps/posix/writev.c>
diff --git a/sysdeps/unix/sysv/sysv4/linux/i386/sysdep.h b/sysdeps/unix/sysv/sysv4/linux/i386/sysdep.h
deleted file mode 100644 (file)
index d0c1c10..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-/* Copyright (C) 1992, 1993, 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.  */
-
-/* In the Linux/ELF world, C symbols are asm symbols.  */
-#define NO_UNDERSCORES
-
-/* There is some commonality.  */
-#include <sysdeps/unix/i386/sysdep.h>
-
-#ifdef ASSEMBLER
-
-/* Linux uses a negative return value to indicate syscall errors, unlike
-   most Unices, which use the condition codes' carry flag.  */
-#undef PSEUDO
-#define        PSEUDO(name, syscall_name, args)                                      \
-  .text;                                                                     \
-  .globl __syscall_error;                                                    \
-  ENTRY (name)                                                               \
-    movl $SYS_##syscall_name, %eax;                                          \
-    DO_CALL (args)                                                           \
-    testl %eax, %eax;                                                        \
-    jl JUMPTARGET(__syscall_error)
-
-
-/* Linux takes system call arguments in registers:
-
-       syscall number  %eax         call-clobbered
-       arg 1           %ebx         call-saved
-       arg 2           %ecx         call-clobbered
-       arg 3           %edx         call-clobbered
-       arg 4           %esi         call-saved
-       arg 5           %edi         call-saved
-
-   The stack layout upon entering the function is:
-
-       24(%esp)        Arg# 5
-       20(%esp)        Arg# 4
-       16(%esp)        Arg# 3
-       12(%esp)        Arg# 2
-        8(%esp)        Arg# 1
-        4(%esp)        Return address
-         (%esp)
-
-   (Of course a function with e.g. 3 argumentS does not have entries for
-   arguments 4 and 5.)
-
-   We put the arguments into registers from the stack, and save the
-   call-saved registers, by using the 386 `xchg' instruction to swap the
-   values in both directions.  */
-
-#undef DO_CALL
-#define DO_CALL(args)                                                        \
-    DOARGS_##args                                                            \
-    int $0x80;                                                               \
-    UNDOARGS_##args                                                          \
-
-#define        DOARGS_0        /* No arguments to frob.  */
-#define        UNDOARGS_0      /* No arguments to unfrob.  */
-#define        DOARGS_1        xchg 8(%esp), %ebx; DOARGS_0 /* Save %ebx on stack.  */
-#define        UNDOARGS_1      xchg 8(%esp), %ebx; UNDOARGS_0 /* Restore %ebx */
-#define        DOARGS_2        movel 12(%esp), %ecx; DOARGS_1
-#define        UNDOARGS_2      UNDOARGS_1 /* %ecx is clobbered.  */
-#define        DOARGS_3        movel 16(%esp), %edx; DOARGS_2
-#define        UNDOARGS_3      UNDOARGS_2 /* %edx is clobbered.  */
-#define        DOARGS_4        xchg 20(%esp), %esi; DOARGS_3 /* Save %esi on stack. */
-#define        UNDOARGS_4      xchg 20(%esp), %esi; UNDOARGS_3 /* Restore %esi.  */
-#define        DOARGS_5        xchg 24(%esp), %edi; DOARGS_3 /* Save %edi on stack. */
-#define        UNDOARGS_5      xchg 24(%esp), %edi; UNDOARGS_3 /* Restore %edi.  */
-
-
-#endif /* ASSEMBLER */
diff --git a/sysdeps/unix/sysv/sysv4/linux/rename.S b/sysdeps/unix/sysv/sysv4/linux/rename.S
deleted file mode 100644 (file)
index a5a8dfe..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/bsd/rename.S>