diff options
Diffstat (limited to 'sysdeps/unix/sysv/linux')
110 files changed, 2788 insertions, 16 deletions
diff --git a/sysdeps/unix/sysv/linux/s390/Dist b/sysdeps/unix/sysv/linux/s390/s390-32/Dist index d0740c12f9..d0740c12f9 100644 --- a/sysdeps/unix/sysv/linux/s390/Dist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/Dist diff --git a/sysdeps/unix/sysv/linux/s390/Makefile b/sysdeps/unix/sysv/linux/s390/s390-32/Makefile index 2115e40a2a..2115e40a2a 100644 --- a/sysdeps/unix/sysv/linux/s390/Makefile +++ b/sysdeps/unix/sysv/linux/s390/s390-32/Makefile diff --git a/sysdeps/unix/sysv/linux/s390/Versions b/sysdeps/unix/sysv/linux/s390/s390-32/Versions index 5a56361b60..5a56361b60 100644 --- a/sysdeps/unix/sysv/linux/s390/Versions +++ b/sysdeps/unix/sysv/linux/s390/s390-32/Versions diff --git a/sysdeps/unix/sysv/linux/s390/alphasort64.c b/sysdeps/unix/sysv/linux/s390/s390-32/alphasort64.c index 0b5ae47d2f..0b5ae47d2f 100644 --- a/sysdeps/unix/sysv/linux/s390/alphasort64.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/alphasort64.c diff --git a/sysdeps/unix/sysv/linux/s390/bits/fcntl.h b/sysdeps/unix/sysv/linux/s390/s390-32/bits/fcntl.h index a6a2e131da..0ae79d7adc 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/s390/s390-32/bits/fcntl.h @@ -1,5 +1,5 @@ /* O_*, F_*, FD_* bit values for Linux. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2001 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 diff --git a/sysdeps/unix/sysv/linux/s390/bits/mman.h b/sysdeps/unix/sysv/linux/s390/s390-32/bits/mman.h index 70069e9f06..d7fc58a915 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/mman.h +++ b/sysdeps/unix/sysv/linux/s390/s390-32/bits/mman.h @@ -1,5 +1,5 @@ /* Definitions for POSIX memory map interface. Linux/s390 version. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2001 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 diff --git a/sysdeps/unix/sysv/linux/s390/bits/resource.h b/sysdeps/unix/sysv/linux/s390/s390-32/bits/resource.h index 8dd3972a4b..b04764e6bf 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/resource.h +++ b/sysdeps/unix/sysv/linux/s390/s390-32/bits/resource.h @@ -1,5 +1,5 @@ /* Bit values & structures for resource limits. Linux version. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2001 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 diff --git a/sysdeps/unix/sysv/linux/s390/bits/stat.h b/sysdeps/unix/sysv/linux/s390/s390-32/bits/stat.h index a40159b023..a40159b023 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/stat.h +++ b/sysdeps/unix/sysv/linux/s390/s390-32/bits/stat.h diff --git a/sysdeps/unix/sysv/linux/s390/chown.c b/sysdeps/unix/sysv/linux/s390/s390-32/chown.c index 0e22192858..682f2dd01e 100644 --- a/sysdeps/unix/sysv/linux/s390/chown.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/chown.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2001 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 diff --git a/sysdeps/unix/sysv/linux/s390/clone.S b/sysdeps/unix/sysv/linux/s390/s390-32/clone.S index bde800d3b2..433246fc2e 100644 --- a/sysdeps/unix/sysv/linux/s390/clone.S +++ b/sysdeps/unix/sysv/linux/s390/s390-32/clone.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2001 Free Software Foundation, Inc. Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/s390/fchown.c b/sysdeps/unix/sysv/linux/s390/s390-32/fchown.c index 3a69ecc9e7..3a69ecc9e7 100644 --- a/sysdeps/unix/sysv/linux/s390/fchown.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/fchown.c diff --git a/sysdeps/unix/sysv/linux/s390/fcntl.c b/sysdeps/unix/sysv/linux/s390/s390-32/fcntl.c index ea951bc4f9..ea951bc4f9 100644 --- a/sysdeps/unix/sysv/linux/s390/fcntl.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/fcntl.c diff --git a/sysdeps/unix/sysv/linux/s390/fxstat.c b/sysdeps/unix/sysv/linux/s390/s390-32/fxstat.c index 4f219f0b9d..4f219f0b9d 100644 --- a/sysdeps/unix/sysv/linux/s390/fxstat.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/fxstat.c diff --git a/sysdeps/unix/sysv/linux/s390/getdents64.c b/sysdeps/unix/sysv/linux/s390/s390-32/getdents64.c index 0c75fb5a06..0c75fb5a06 100644 --- a/sysdeps/unix/sysv/linux/s390/getdents64.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/getdents64.c diff --git a/sysdeps/unix/sysv/linux/s390/getegid.c b/sysdeps/unix/sysv/linux/s390/s390-32/getegid.c index 37b4b4a530..37b4b4a530 100644 --- a/sysdeps/unix/sysv/linux/s390/getegid.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/getegid.c diff --git a/sysdeps/unix/sysv/linux/s390/geteuid.c b/sysdeps/unix/sysv/linux/s390/s390-32/geteuid.c index ebcb555b5e..ebcb555b5e 100644 --- a/sysdeps/unix/sysv/linux/s390/geteuid.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/geteuid.c diff --git a/sysdeps/unix/sysv/linux/s390/getgid.c b/sysdeps/unix/sysv/linux/s390/s390-32/getgid.c index 0a4d6061f0..0a4d6061f0 100644 --- a/sysdeps/unix/sysv/linux/s390/getgid.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/getgid.c diff --git a/sysdeps/unix/sysv/linux/s390/getgroups.c b/sysdeps/unix/sysv/linux/s390/s390-32/getgroups.c index 20a7166103..20a7166103 100644 --- a/sysdeps/unix/sysv/linux/s390/getgroups.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/getgroups.c diff --git a/sysdeps/unix/sysv/linux/s390/getresgid.c b/sysdeps/unix/sysv/linux/s390/s390-32/getresgid.c index b703a414cc..b703a414cc 100644 --- a/sysdeps/unix/sysv/linux/s390/getresgid.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/getresgid.c diff --git a/sysdeps/unix/sysv/linux/s390/getresuid.c b/sysdeps/unix/sysv/linux/s390/s390-32/getresuid.c index 0b14cefe34..0b14cefe34 100644 --- a/sysdeps/unix/sysv/linux/s390/getresuid.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/getresuid.c diff --git a/sysdeps/unix/sysv/linux/s390/getrlimit.c b/sysdeps/unix/sysv/linux/s390/s390-32/getrlimit.c index fc06dbd641..fc06dbd641 100644 --- a/sysdeps/unix/sysv/linux/s390/getrlimit.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/getrlimit.c diff --git a/sysdeps/unix/sysv/linux/s390/getrlimit64.c b/sysdeps/unix/sysv/linux/s390/s390-32/getrlimit64.c index fef018f471..fef018f471 100644 --- a/sysdeps/unix/sysv/linux/s390/getrlimit64.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/getrlimit64.c diff --git a/sysdeps/unix/sysv/linux/s390/getuid.c b/sysdeps/unix/sysv/linux/s390/s390-32/getuid.c index d682c79a49..d682c79a49 100644 --- a/sysdeps/unix/sysv/linux/s390/getuid.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/getuid.c diff --git a/sysdeps/unix/sysv/linux/s390/lchown.c b/sysdeps/unix/sysv/linux/s390/s390-32/lchown.c index 8ca77fc037..acee703b9f 100644 --- a/sysdeps/unix/sysv/linux/s390/lchown.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/lchown.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2001 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 diff --git a/sysdeps/unix/sysv/linux/s390/lockf64.c b/sysdeps/unix/sysv/linux/s390/s390-32/lockf64.c index a88f5a784a..a88f5a784a 100644 --- a/sysdeps/unix/sysv/linux/s390/lockf64.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/lockf64.c diff --git a/sysdeps/unix/sysv/linux/s390/lxstat.c b/sysdeps/unix/sysv/linux/s390/s390-32/lxstat.c index 0efa0aea49..0efa0aea49 100644 --- a/sysdeps/unix/sysv/linux/s390/lxstat.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/lxstat.c diff --git a/sysdeps/unix/sysv/linux/s390/mmap.S b/sysdeps/unix/sysv/linux/s390/s390-32/mmap.S index f9650e9f03..f101408bf5 100644 --- a/sysdeps/unix/sysv/linux/s390/mmap.S +++ b/sysdeps/unix/sysv/linux/s390/s390-32/mmap.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2001 Free Software Foundation, Inc. Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). This file is part of the GNU C Library. @@ -19,7 +19,7 @@ #include <sysdep.h> -#define EINVAL 22 +#define EINVAL 22 .text ENTRY(__mmap) diff --git a/sysdeps/unix/sysv/linux/s390/mmap64.S b/sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S index b42ff6f22c..f53fe4cc5d 100644 --- a/sysdeps/unix/sysv/linux/s390/mmap64.S +++ b/sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2001 Free Software Foundation, Inc. Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). This file is part of the GNU C Library. diff --git a/sysdeps/unix/sysv/linux/s390/msgctl.c b/sysdeps/unix/sysv/linux/s390/s390-32/msgctl.c index 9f9b8431a3..9f9b8431a3 100644 --- a/sysdeps/unix/sysv/linux/s390/msgctl.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/msgctl.c diff --git a/sysdeps/unix/sysv/linux/s390/oldgetrlimit64.c b/sysdeps/unix/sysv/linux/s390/s390-32/oldgetrlimit64.c index 4c27e957bf..4c27e957bf 100644 --- a/sysdeps/unix/sysv/linux/s390/oldgetrlimit64.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/oldgetrlimit64.c diff --git a/sysdeps/unix/sysv/linux/s390/readdir64.c b/sysdeps/unix/sysv/linux/s390/s390-32/readdir64.c index 2ea26dd409..2ea26dd409 100644 --- a/sysdeps/unix/sysv/linux/s390/readdir64.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/readdir64.c diff --git a/sysdeps/unix/sysv/linux/s390/readdir64_r.c b/sysdeps/unix/sysv/linux/s390/s390-32/readdir64_r.c index 9f54f897e3..9f54f897e3 100644 --- a/sysdeps/unix/sysv/linux/s390/readdir64_r.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/readdir64_r.c diff --git a/sysdeps/unix/sysv/linux/s390/register-dump.h b/sysdeps/unix/sysv/linux/s390/s390-32/register-dump.h index 3c859aae88..0bd95991a4 100644 --- a/sysdeps/unix/sysv/linux/s390/register-dump.h +++ b/sysdeps/unix/sysv/linux/s390/s390-32/register-dump.h @@ -1,5 +1,5 @@ /* Dump registers. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). This file is part of the GNU C Library. diff --git a/sysdeps/unix/sysv/linux/s390/scandir64.c b/sysdeps/unix/sysv/linux/s390/s390-32/scandir64.c index 506fd8877c..506fd8877c 100644 --- a/sysdeps/unix/sysv/linux/s390/scandir64.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/scandir64.c diff --git a/sysdeps/unix/sysv/linux/s390/semctl.c b/sysdeps/unix/sysv/linux/s390/s390-32/semctl.c index e9b1a483c9..e9b1a483c9 100644 --- a/sysdeps/unix/sysv/linux/s390/semctl.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/semctl.c diff --git a/sysdeps/unix/sysv/linux/s390/setegid.c b/sysdeps/unix/sysv/linux/s390/s390-32/setegid.c index 2e3a54c893..2e3a54c893 100644 --- a/sysdeps/unix/sysv/linux/s390/setegid.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/setegid.c diff --git a/sysdeps/unix/sysv/linux/s390/seteuid.c b/sysdeps/unix/sysv/linux/s390/s390-32/seteuid.c index 18e41d08c1..18e41d08c1 100644 --- a/sysdeps/unix/sysv/linux/s390/seteuid.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/seteuid.c diff --git a/sysdeps/unix/sysv/linux/s390/setfsgid.c b/sysdeps/unix/sysv/linux/s390/s390-32/setfsgid.c index 0886712569..0886712569 100644 --- a/sysdeps/unix/sysv/linux/s390/setfsgid.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/setfsgid.c diff --git a/sysdeps/unix/sysv/linux/s390/setfsuid.c b/sysdeps/unix/sysv/linux/s390/s390-32/setfsuid.c index a9f22eb8ab..a9f22eb8ab 100644 --- a/sysdeps/unix/sysv/linux/s390/setfsuid.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/setfsuid.c diff --git a/sysdeps/unix/sysv/linux/s390/setgid.c b/sysdeps/unix/sysv/linux/s390/s390-32/setgid.c index 377021d9ec..377021d9ec 100644 --- a/sysdeps/unix/sysv/linux/s390/setgid.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/setgid.c diff --git a/sysdeps/unix/sysv/linux/s390/setgroups.c b/sysdeps/unix/sysv/linux/s390/s390-32/setgroups.c index 0e7086278f..0e7086278f 100644 --- a/sysdeps/unix/sysv/linux/s390/setgroups.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/setgroups.c diff --git a/sysdeps/unix/sysv/linux/s390/setregid.c b/sysdeps/unix/sysv/linux/s390/s390-32/setregid.c index 99c57ad20f..99c57ad20f 100644 --- a/sysdeps/unix/sysv/linux/s390/setregid.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/setregid.c diff --git a/sysdeps/unix/sysv/linux/s390/setresgid.c b/sysdeps/unix/sysv/linux/s390/s390-32/setresgid.c index daca1a4833..daca1a4833 100644 --- a/sysdeps/unix/sysv/linux/s390/setresgid.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/setresgid.c diff --git a/sysdeps/unix/sysv/linux/s390/setresuid.c b/sysdeps/unix/sysv/linux/s390/s390-32/setresuid.c index 3aeabe9ad7..3aeabe9ad7 100644 --- a/sysdeps/unix/sysv/linux/s390/setresuid.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/setresuid.c diff --git a/sysdeps/unix/sysv/linux/s390/setreuid.c b/sysdeps/unix/sysv/linux/s390/s390-32/setreuid.c index 8ad61226e9..8ad61226e9 100644 --- a/sysdeps/unix/sysv/linux/s390/setreuid.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/setreuid.c diff --git a/sysdeps/unix/sysv/linux/s390/setrlimit.c b/sysdeps/unix/sysv/linux/s390/s390-32/setrlimit.c index bfaef74c38..bfaef74c38 100644 --- a/sysdeps/unix/sysv/linux/s390/setrlimit.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/setrlimit.c diff --git a/sysdeps/unix/sysv/linux/s390/setuid.c b/sysdeps/unix/sysv/linux/s390/s390-32/setuid.c index c8fa23e354..c8fa23e354 100644 --- a/sysdeps/unix/sysv/linux/s390/setuid.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/setuid.c diff --git a/sysdeps/unix/sysv/linux/s390/shmctl.c b/sysdeps/unix/sysv/linux/s390/s390-32/shmctl.c index 7eac6380dd..7eac6380dd 100644 --- a/sysdeps/unix/sysv/linux/s390/shmctl.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/shmctl.c diff --git a/sysdeps/unix/sysv/linux/s390/socket.S b/sysdeps/unix/sysv/linux/s390/s390-32/socket.S index 562b98f933..9bed2f7db5 100644 --- a/sysdeps/unix/sysv/linux/s390/socket.S +++ b/sysdeps/unix/sysv/linux/s390/s390-32/socket.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2001 Free Software Foundation, Inc. Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). This file is part of the GNU C Library. diff --git a/sysdeps/unix/sysv/linux/s390/sys/procfs.h b/sysdeps/unix/sysv/linux/s390/s390-32/sys/procfs.h index 8b60338cdb..968d0855da 100644 --- a/sysdeps/unix/sysv/linux/s390/sys/procfs.h +++ b/sysdeps/unix/sysv/linux/s390/s390-32/sys/procfs.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2001 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 diff --git a/sysdeps/unix/sysv/linux/s390/sys/ucontext.h b/sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h index b9ec8069b0..cb1869c8f6 100644 --- a/sysdeps/unix/sysv/linux/s390/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2001 Free Software Foundation, Inc. Contributed by Denis Joseph Barrow (djbarrow@de.ibm.com). This file is part of the GNU C Library. diff --git a/sysdeps/unix/sysv/linux/s390/syscall.S b/sysdeps/unix/sysv/linux/s390/s390-32/syscall.S index dbd8d6887c..5a0674ad15 100644 --- a/sysdeps/unix/sysv/linux/s390/syscall.S +++ b/sysdeps/unix/sysv/linux/s390/s390-32/syscall.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2001 Free Software Foundation, Inc. Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). This file is part of the GNU C Library. diff --git a/sysdeps/unix/sysv/linux/s390/syscalls.list b/sysdeps/unix/sysv/linux/s390/s390-32/syscalls.list index 913f051ff4..913f051ff4 100644 --- a/sysdeps/unix/sysv/linux/s390/syscalls.list +++ b/sysdeps/unix/sysv/linux/s390/s390-32/syscalls.list diff --git a/sysdeps/unix/sysv/linux/s390/sysdep.S b/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S index 5515c0f9ce..15b822a4eb 100644 --- a/sysdeps/unix/sysv/linux/s390/sysdep.S +++ b/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2001 Free Software Foundation, Inc. Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). This file is part of the GNU C Library. diff --git a/sysdeps/unix/sysv/linux/s390/sysdep.h b/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h index 099ce3d176..507867b727 100644 --- a/sysdeps/unix/sysv/linux/s390/sysdep.h +++ b/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h @@ -20,7 +20,7 @@ #ifndef _LINUX_S390_SYSDEP_H #define _LINUX_S390_SYSDEP_H -#include <sysdeps/s390/sysdep.h> +#include <sysdeps/s390/s390-32/sysdep.h> #include <sysdeps/unix/sysdep.h> /* For Linux we can use the system call table in the header file diff --git a/sysdeps/unix/sysv/linux/s390/versionsort64.c b/sysdeps/unix/sysv/linux/s390/s390-32/versionsort64.c index 144b691e56..144b691e56 100644 --- a/sysdeps/unix/sysv/linux/s390/versionsort64.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/versionsort64.c diff --git a/sysdeps/unix/sysv/linux/s390/xstat.c b/sysdeps/unix/sysv/linux/s390/s390-32/xstat.c index e9869f5508..e9869f5508 100644 --- a/sysdeps/unix/sysv/linux/s390/xstat.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/xstat.c diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/Dist b/sysdeps/unix/sysv/linux/s390/s390-64/Dist new file mode 100644 index 0000000000..fe5ca68f09 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/Dist @@ -0,0 +1,4 @@ +clone.S +sys/elf.h +sys/procfs.h +sys/user.h diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/Makefile b/sysdeps/unix/sysv/linux/s390/s390-64/Makefile new file mode 100644 index 0000000000..0217d83a6c --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/Makefile @@ -0,0 +1,8 @@ +ifeq ($(subdir),csu) +CFLAGS-initfini.s += -DWEAK_GMON_START +endif + +ifeq ($(subdir),misc) +sysdep_routines += setfsgid setfsuid setresgid setresuid +sysdep_headers += sys/elf.h +endif diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/bits/elfclass.h b/sysdeps/unix/sysv/linux/s390/s390-64/bits/elfclass.h new file mode 100644 index 0000000000..73034d5926 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/bits/elfclass.h @@ -0,0 +1,34 @@ +/* Copyright (C) 2001 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + 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. */ + +/* This file specifies the native word size of the machine, which indicates + the ELF file class used for executables and shared objects on this + machine. */ + +#ifndef _LINK_H +# error "Never use <bits/elfclass.h> directly; include <link.h> instead." +#endif + +#include <bits/wordsize.h> + +#define __ELF_NATIVE_CLASS __WORDSIZE + +/* 64 bit Linux for S/390 is exceptional as it has .hash section with + 64 bit entries. */ +typedef uint64_t Elf_Symndx; diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/bits/fcntl.h b/sysdeps/unix/sysv/linux/s390/s390-64/bits/fcntl.h new file mode 100644 index 0000000000..d92df75f37 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/bits/fcntl.h @@ -0,0 +1,174 @@ +/* O_*, F_*, FD_* bit values for Linux for 64 bit S/390. + Copyright (C) 2001 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 _FCNTL_H +# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead." +#endif + + +#include <sys/types.h> + +/* open/fcntl - O_SYNC is only implemented on blocks devices and on files + located on an ext2 file system */ +#define O_ACCMODE 0003 +#define O_RDONLY 00 +#define O_WRONLY 01 +#define O_RDWR 02 +#define O_CREAT 0100 /* not fcntl */ +#define O_EXCL 0200 /* not fcntl */ +#define O_NOCTTY 0400 /* not fcntl */ +#define O_TRUNC 01000 /* not fcntl */ +#define O_APPEND 02000 +#define O_NONBLOCK 04000 +#define O_NDELAY O_NONBLOCK +#define O_SYNC 010000 +#define O_FSYNC O_SYNC +#define O_ASYNC 020000 +#define O_DIRECT 040000 + +#ifdef __USE_GNU +# define O_DIRECTORY 0200000 /* must be a directory */ +# define O_NOFOLLOW 0400000 /* don't follow links */ +#endif + +#ifdef __USE_LARGEFILE64 +/* Not necessary, files are always with 64bit off_t. */ +# define O_LARGEFILE 0 +#endif + +/* For now Linux has synchronisity options for data and read operations. + We define the symbols here but let them do the same as O_SYNC since + this is a superset. */ +#if defined __USE_POSIX199309 || defined __USE_UNIX98 +# define O_DSYNC O_SYNC /* Synchronize data. */ +# define O_RSYNC O_SYNC /* Synchronize read operations. */ +#endif + +/* Values for the second argument to `fcntl'. */ +#define F_DUPFD 0 /* Duplicate file descriptor. */ +#define F_GETFD 1 /* Get file descriptor flags. */ +#define F_SETFD 2 /* Set file descriptor flags. */ +#define F_GETFL 3 /* Get file status flags. */ +#define F_SETFL 4 /* Set file status flags. */ +#define F_GETLK 5 /* Get record locking info. */ +#define F_SETLK 6 /* Set record locking info (non-blocking). */ +#define F_SETLKW 7 /* Set record locking info (blocking). */ + +/* Not necessary, we always have 64-bit offsets. */ +#define F_GETLK64 5 /* Get record locking info. */ +#define F_SETLK64 6 /* Set record locking info (non-blocking). */ +#define F_SETLKW64 7 /* Set record locking info (blocking). */ + +#if defined __USE_BSD || defined __USE_XOPEN2K +# define F_SETOWN 8 /* Get owner of socket (receiver of SIGIO). */ +# define F_GETOWN 9 /* Set owner of socket (receiver of SIGIO). */ +#endif + +#ifdef __USE_GNU +# define F_SETSIG 10 /* Set number of signal to be sent. */ +# define F_GETSIG 11 /* Get number of signal to be sent. */ +#endif + +#ifdef __USE_GNU +# define F_SETLEASE 1024 /* Set a lease. */ +# define F_GETLEASE 1025 /* Enquire what lease is active. */ +# define F_NOTIFY 1026 /* Request notfications on a directory. */ +#endif + +/* For F_[GET|SET]FL. */ +#define FD_CLOEXEC 1 /* actually anything with low bit set goes */ + +/* For posix fcntl() and `l_type' field of a `struct flock' for lockf(). */ +#define F_RDLCK 0 /* Read lock. */ +#define F_WRLCK 1 /* Write lock. */ +#define F_UNLCK 2 /* Remove lock. */ + +/* for old implementation of bsd flock () */ +#define F_EXLCK 4 /* or 3 */ +#define F_SHLCK 8 /* or 4 */ + +#ifdef __USE_BSD +/* Operations for bsd flock(), also used by the kernel implementation */ +# define LOCK_SH 1 /* shared lock */ +# define LOCK_EX 2 /* exclusive lock */ +# define LOCK_NB 4 /* or'd with one of the above to prevent + blocking */ +# define LOCK_UN 8 /* remove lock */ +#endif + +#ifdef __USE_GNU +# define LOCK_MAND 32 /* This is a mandatory flock: */ +# define LOCK_READ 64 /* ... which allows concurrent read operations. */ +# define LOCK_WRITE 128 /* ... which allows concurrent write operations. */ +# define LOCK_RW 192 /* ... Which allows concurrent read & write operations. */ +#endif + + +#ifdef __USE_GNU +/* Types of directory notifications that may be requested with F_NOTIFY. */ +# define DN_ACCESS 0x00000001 /* File accessed. */ +# define DN_MODIFY 0x00000002 /* File modified. */ +# define DN_CREATE 0x00000004 /* File created. */ +# define DN_DELETE 0x00000008 /* File removed. */ +# define DN_RENAME 0x00000010 /* File renamed. */ +# define DN_ATTRIB 0x00000020 /* File changed attibutes. */ +# define DN_MULTISHOT 0x80000000 /* Don't remove notifier. */ +#endif + +/* We don't need to support __USE_FILE_OFFSET64. */ +struct flock + { + short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */ + short int l_whence; /* Where `l_start' is relative to (like `lseek'). */ + __off_t l_start; /* Offset where the lock begins. */ + __off_t l_len; /* Size of the locked area; zero means until EOF. */ + __pid_t l_pid; /* Process holding the lock. */ + }; + +#ifdef __USE_LARGEFILE64 +struct flock64 + { + short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */ + short int l_whence; /* Where `l_start' is relative to (like `lseek'). */ + __off64_t l_start; /* Offset where the lock begins. */ + __off64_t l_len; /* Size of the locked area; zero means until EOF. */ + __pid_t l_pid; /* Process holding the lock. */ + }; +#endif + + +/* Define some more compatibility macros to be backward compatible with + BSD systems which did not managed to hide these kernel macros. */ +#ifdef __USE_BSD +# define FAPPEND O_APPEND +# define FFSYNC O_FSYNC +# define FASYNC O_ASYNC +# define FNONBLOCK O_NONBLOCK +# define FNDELAY O_NDELAY +#endif /* Use BSD. */ + +/* Advise to `posix_fadvise'. */ +#ifdef __USE_XOPEN2K +# define POSIX_FADV_NORMAL 0 /* No further special treatment. */ +# define POSIX_FADV_RANDOM 1 /* Expect random page references. */ +# define POSIX_FADV_SEQUENTIAL 2 /* Expect sequential page references. */ +# define POSIX_FADV_WILLNEED 3 /* Will need these pages. */ +# define POSIX_FADV_DONTNEED 6 /* Don't need these pages. */ +# define POSIX_FADV_NOREUSE 7 /* Data will be accessed once. */ +#endif diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/bits/ipc.h b/sysdeps/unix/sysv/linux/s390/s390-64/bits/ipc.h new file mode 100644 index 0000000000..4354cb6598 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/bits/ipc.h @@ -0,0 +1,78 @@ +/* Copyright (C) 2001 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 _SYS_IPC_H +# error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead." +#endif + +#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. */ +#ifdef __USE_GNU +#define IPC_INFO 3 /* See ipcs. */ +#endif + +/* 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. */ + unsigned short int __pad1; + unsigned long int __unused1; + unsigned long int __unused2; + }; + + + +__BEGIN_DECLS + +/* The actual system call: all functions are multiplexed by this. */ +extern int __ipc __P ((int __call, int __first, int __second, int __third, + void *__ptr)); + +__END_DECLS + +/* 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 diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/bits/mman.h b/sysdeps/unix/sysv/linux/s390/s390-64/bits/mman.h new file mode 100644 index 0000000000..83797750bb --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/bits/mman.h @@ -0,0 +1,94 @@ +/* Definitions for POSIX memory map interface. 64 bit S/390 version. + Copyright (C) 2001 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 _SYS_MMAN_H +# error "Never use <bits/mman.h> directly; include <sys/mman.h> instead." +#endif + +/* The following definitions basically come from the kernel headers. + But the kernel header is not namespace clean. */ + + +/* 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_READ 0x1 /* Page can be read. */ +#define PROT_WRITE 0x2 /* Page can be written. */ +#define PROT_EXEC 0x4 /* Page can be executed. */ +#define PROT_NONE 0x0 /* Page can not be accessed. */ + +/* Sharing types (must choose one and only one of these). */ +#define MAP_SHARED 0x01 /* Share changes. */ +#define MAP_PRIVATE 0x02 /* Changes are private. */ +#ifdef __USE_MISC +# define MAP_TYPE 0x0f /* Mask for type of mapping. */ +#endif + +/* Other flags. */ +#define MAP_FIXED 0x10 /* Interpret addr exactly. */ +#ifdef __USE_MISC +# define MAP_FILE 0 +# define MAP_ANONYMOUS 0x20 /* Don't use a file. */ +# define MAP_ANON MAP_ANONYMOUS +#endif + +/* These are Linux-specific. */ +#ifdef __USE_MISC +# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */ +# define MAP_GROWSUP 0x0200 /* Register stack-like segment */ +# define MAP_DENYWRITE 0x0800 /* ETXTBSY */ +# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */ +# define MAP_LOCKED 0x2000 /* Lock the mapping. */ +# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */ +#endif + +/* Flags to `msync'. */ +#define MS_ASYNC 0x1 /* Sync memory asynchronously. */ +#define MS_SYNC 0x4 /* Synchronous memory sync. */ +#define MS_INVALIDATE 0x2 /* Invalidate the caches. */ + +/* Flags for `mlockall'. */ +#define MCL_CURRENT 0x1 /* Lock all currently mapped pages. */ +#define MCL_FUTURE 0x2 /* Lock all additions to address + space. */ + +/* Flags for `mremap'. */ +#ifdef __USE_GNU +# define MREMAP_MAYMOVE 1 +#endif + +/* Advice to `madvise'. */ +#ifdef __USE_BSD +# 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. */ +#endif + +/* The POSIX people had to invent similar names for the same things. */ +#ifdef __USE_XOPEN2K +# define POSIX_MADV_NORMAL 0 /* No further special treatment. */ +# define POSIX_MADV_RANDOM 1 /* Expect random page references. */ +# define POSIX_MADV_SEQUENTIAL 2 /* Expect sequential page references. */ +# define POSIX_MADV_WILLNEED 3 /* Will need these pages. */ +# define POSIX_MADV_DONTNEED 4 /* Don't need these pages. */ +#endif diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/bits/msq.h b/sysdeps/unix/sysv/linux/s390/s390-64/bits/msq.h new file mode 100644 index 0000000000..0d43633805 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/bits/msq.h @@ -0,0 +1,68 @@ +/* Copyright (C) 2001 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 _SYS_MSG_H +#error "Never use <bits/msq.h> directly; include <sys/msg.h> instead." +#endif + +#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 */ + + +/* 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 */ + __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 */ + unsigned long int __msg_cbytes; /* current number of bytes on queue */ + unsigned long int msg_qnum; /* number of messages currently on queue */ + unsigned long 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() */ + unsigned long int __unused1; + unsigned long int __unused2; +}; + +#ifdef __USE_MISC + +# define msg_cbytes __msg_cbytes + +/* ipcs ctl commands */ +# define MSG_STAT 11 +# define MSG_INFO 12 + +/* buffer for msgctl calls IPC_INFO, MSG_INFO */ +struct msginfo + { + int msgpool; + int msgmap; + int msgmax; + int msgmnb; + int msgmni; + int msgssz; + int msgtql; + unsigned short int msgseg; + }; + +#endif /* __USE_MISC */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/bits/resource.h b/sysdeps/unix/sysv/linux/s390/s390-64/bits/resource.h new file mode 100644 index 0000000000..791c7b8f87 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/bits/resource.h @@ -0,0 +1,196 @@ +/* Bit values & structures for resource limits. 64 bit S/390 version. + Copyright (C) 2001 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 _SYS_RESOURCE_H +# error "Never use <bits/resource.h> directly; include <sys/resource.h> instead." +#endif + +#include <bits/types.h> + +/* Transmute defines to enumerations. The macro re-definitions are + necessary because some programs want to test for operating system + features with #ifdef RUSAGE_SELF. In ISO C the reflexive + definition is a no-op. */ + +/* Kinds of resource limit. */ +enum __rlimit_resource +{ + /* Per-process CPU limit, in seconds. */ + RLIMIT_CPU = 0, +#define RLIMIT_CPU RLIMIT_CPU + + /* Largest file that can be created, in bytes. */ + RLIMIT_FSIZE = 1, +#define RLIMIT_FSIZE RLIMIT_FSIZE + + /* Maximum size of data segment, in bytes. */ + RLIMIT_DATA = 2, +#define RLIMIT_DATA RLIMIT_DATA + + /* Maximum size of stack segment, in bytes. */ + RLIMIT_STACK = 3, +#define RLIMIT_STACK RLIMIT_STACK + + /* Largest core file that can be created, in bytes. */ + RLIMIT_CORE = 4, +#define RLIMIT_CORE RLIMIT_CORE + + /* Largest resident set size, in bytes. + This affects swapping; processes that are exceeding their + resident set size will be more likely to have physical memory + taken from them. */ + RLIMIT_RSS = 5, +#define RLIMIT_RSS RLIMIT_RSS + + /* Number of processes. */ + RLIMIT_NPROC = 6, +#define RLIMIT_NPROC RLIMIT_NPROC + + /* Number of open files. */ + RLIMIT_NOFILE = 7, + RLIMIT_OFILE = RLIMIT_NOFILE, /* BSD name for same. */ +#define RLIMIT_NOFILE RLIMIT_NOFILE +#define RLIMIT_OFILE RLIMIT_OFILE + + /* Locked-in-memory address space. */ + RLIMIT_MEMLOCK = 8, +#define RLIMIT_MEMLOCK RLIMIT_MEMLOCK + + /* Address space limit (?) */ + RLIMIT_AS = 9, +#define RLIMIT_AS RLIMIT_AS + + RLIM_NLIMITS = 10 +#define RLIMIT_NLIMITS RLIMIT_NLIMITS +#define RLIM_NLIMITS RLIM_NLIMITS +}; + +/* Value to indicate that there is no limit. */ +# define RLIM_INFINITY ~0UL + +#ifdef __USE_LARGEFILE64 +# define RLIM64_INFINITY ~0UL +#endif + +/* We can represent all limits. */ +#define RLIM_SAVED_MAX RLIM_INFINITY +#define RLIM_SAVED_CUR RLIM_INFINITY + + +/* Type for resource quantity measurement. */ +typedef __rlim64_t rlim_t; +#ifdef __USE_LARGEFILE64 +typedef __rlim64_t rlim64_t; +#endif + +struct rlimit + { + /* The current (soft) limit. */ + rlim_t rlim_cur; + /* The hard limit. */ + rlim_t rlim_max; + }; + +#ifdef __USE_LARGEFILE64 +struct rlimit64 + { + /* The current (soft) limit. */ + rlim64_t rlim_cur; + /* The hard limit. */ + rlim64_t rlim_max; + }; +#endif + +/* Whose usage statistics do you want? */ +enum __rusage_who +{ + /* The calling process. */ + RUSAGE_SELF = 0, +#define RUSAGE_SELF RUSAGE_SELF + + /* All of its terminated child processes. */ + RUSAGE_CHILDREN = -1, +#define RUSAGE_CHILDREN RUSAGE_CHILDREN + + /* Both. */ + RUSAGE_BOTH = -2 +#define RUSAGE_BOTH RUSAGE_BOTH +}; + +#define __need_timeval +#include <bits/time.h> /* For `struct timeval'. */ + +/* Structure which says how much of each resource has been used. */ +struct rusage + { + /* Total amount of user time used. */ + struct timeval ru_utime; + /* Total amount of system time used. */ + struct timeval ru_stime; + /* Maximum resident set size (in kilobytes). */ + long int ru_maxrss; + /* Amount of sharing of text segment memory + with other processes (kilobyte-seconds). */ + long int ru_ixrss; + /* Amount of data segment memory used (kilobyte-seconds). */ + long int ru_idrss; + /* Amount of stack memory used (kilobyte-seconds). */ + long int ru_isrss; + /* Number of soft page faults (i.e. those serviced by reclaiming + a page from the list of pages awaiting reallocation. */ + long int ru_minflt; + /* Number of hard page faults (i.e. those that required I/O). */ + long int ru_majflt; + /* Number of times a process was swapped out of physical memory. */ + long int ru_nswap; + /* Number of input operations via the file system. Note: This + and `ru_oublock' do not include operations with the cache. */ + long int ru_inblock; + /* Number of output operations via the file system. */ + long int ru_oublock; + /* Number of IPC messages sent. */ + long int ru_msgsnd; + /* Number of IPC messages received. */ + long int ru_msgrcv; + /* Number of signals delivered. */ + long int ru_nsignals; + /* Number of voluntary context switches, i.e. because the process + gave up the process before it had to (usually to wait for some + resource to be available). */ + long int ru_nvcsw; + /* Number of involuntary context switches, i.e. a higher priority process + became runnable or the current process used up its time slice. */ + long int ru_nivcsw; + }; + +/* Priority limits. */ +#define PRIO_MIN -20 /* Minimum priority a process can have. */ +#define PRIO_MAX 20 /* Maximum priority a process can have. */ + +/* The type of the WHICH argument to `getpriority' and `setpriority', + indicating what flavor of entity the WHO argument specifies. */ +enum __priority_which +{ + PRIO_PROCESS = 0, /* WHO is a process ID. */ +#define PRIO_PROCESS PRIO_PROCESS + PRIO_PGRP = 1, /* WHO is a process group ID. */ +#define PRIO_PGRP PRIO_PGRP + PRIO_USER = 2 /* WHO is a user ID. */ +#define PRIO_USER PRIO_USER +}; diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/bits/sem.h b/sysdeps/unix/sysv/linux/s390/s390-64/bits/sem.h new file mode 100644 index 0000000000..091925638a --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/bits/sem.h @@ -0,0 +1,85 @@ +/* Copyright (C) 2001 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 _SYS_SEM_H +# error "Never include <bits/sem.h> directly; use <sys/sem.h> instead." +#endif + +#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 */ + + +/* Data structure describing a set of semaphores. */ +struct semid_ds +{ + struct ipc_perm sem_perm; /* operation permission struct */ + __time_t sem_otime; /* last semop() time */ + __time_t sem_ctime; /* last time changed by semctl() */ + unsigned long int sem_nsems; /* number of semaphores in set */ + unsigned long int __unused1; + unsigned long int __unused2; +}; + +/* The user should define a union like the following to use it for arguments + 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 + }; + + Previous versions of this file used to define this union but this is + incorrect. One can test the macro _SEM_SEMUN_UNDEFINED to see whether + one must define the union or not. */ +#define _SEM_SEMUN_UNDEFINED 1 + +#ifdef __USE_MISC + +/* ipcs ctl cmds */ +# define SEM_STAT 18 +# define SEM_INFO 19 + +struct seminfo +{ + int semmap; + int semmni; + int semmns; + int semmnu; + int semmsl; + int semopm; + int semume; + int semusz; + int semvmx; + int semaem; +}; + +#endif /* __USE_MISC */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/bits/shm.h b/sysdeps/unix/sysv/linux/s390/s390-64/bits/shm.h new file mode 100644 index 0000000000..3b39b64171 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/bits/shm.h @@ -0,0 +1,87 @@ +/* Copyright (C) 2001 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 _SYS_SHM_H +# error "Never include <bits/shm.h> directly; use <sys/shm.h> instead." +#endif + +#include <sys/types.h> + +/* Permission flag for shmget. */ +#define SHM_R 0400 /* or S_IRUGO from <linux/stat.h> */ +#define SHM_W 0200 /* or S_IWUGO from <linux/stat.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) */ + + +/* Data structure describing a set of semaphores. */ +struct shmid_ds + { + struct ipc_perm shm_perm; /* operation permission struct */ + size_t shm_segsz; /* size of segment in bytes */ + __time_t shm_atime; /* time of last shmat() */ + __time_t shm_dtime; /* time of last shmdt() */ + __time_t shm_ctime; /* time of last change by shmctl() */ + __pid_t shm_cpid; /* pid of creator */ + __pid_t shm_lpid; /* pid of last shmop */ + unsigned long int shm_nattch; /* number of current attaches */ + unsigned long int __unused1; + unsigned long int __unused2; + }; + +#ifdef __USE_MISC + +/* ipcs ctl commands */ +# define SHM_STAT 13 +# define SHM_INFO 14 + +/* shm_mode upper byte flags */ +# define SHM_DEST 01000 /* segment will be destroyed on last detach */ +# define SHM_LOCKED 02000 /* segment will not be swapped */ + +struct shminfo + { + unsigned long int shmmax; + unsigned long int shmmin; + unsigned long int shmmni; + unsigned long int shmseg; + unsigned long int shmall; + unsigned long int __unused1; + unsigned long int __unused2; + unsigned long int __unused3; + unsigned long int __unused4; + }; + +struct shm_info + { + int used_ids; + unsigned long int shm_tot; /* total allocated shm */ + unsigned long int shm_rss; /* total resident shm */ + unsigned long int shm_swp; /* total swapped shm */ + unsigned long int swap_attempts; + unsigned long int swap_successes; + }; + +#endif /* __USE_MISC */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/bits/sigaction.h b/sysdeps/unix/sysv/linux/s390/s390-64/bits/sigaction.h new file mode 100644 index 0000000000..5b96272c9f --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/bits/sigaction.h @@ -0,0 +1,72 @@ +/* Definitions for 64 bit S/390 sigaction. 64 bit S/390 version. + Copyright (C) 2001 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 _SIGNAL_H +# error "Never include <bits/sigaction.h> directly; use <signal.h> instead." +#endif + +/* Structure describing the action to be taken when a signal arrives. */ +struct sigaction + { + /* Signal handler. */ +#ifdef __USE_POSIX199309 + union + { + /* Used if SA_SIGINFO is not set. */ + __sighandler_t sa_handler; + /* Used if SA_SIGINFO is set. */ + void (*sa_sigaction) (int, siginfo_t *, void *); + } + __sigaction_handler; +# define sa_handler __sigaction_handler.sa_handler +# define sa_sigaction __sigaction_handler.sa_sigaction +#else + __sighandler_t sa_handler; +#endif + + /* Special flags. */ + unsigned long int sa_flags; + + /* Additional set of signals to be blocked. */ + __sigset_t sa_mask; + }; + +/* Bits in `sa_flags'. */ +#define SA_NOCLDSTOP 0x00000001 /* Don't send SIGCHLD when children stop. */ +#define SA_SIGINFO 0x00000004 +#ifdef __USE_MISC +# define SA_ONSTACK 0x08000000 /* Use signal stack by using `sa_restorer'. */ +# define SA_RESTART 0x10000000 /* Restart syscall on signal return. */ +# define SA_NODEFER 0x40000000 /* Don't automatically block the signal + when its handler is being executed. */ +# define SA_RESETHAND 0x80000000 /* Reset to SIG_DFL on entry to handler. */ +#endif +#ifdef __USE_MISC +# define SA_INTERRUPT 0x20000000 /* Historic no-op. */ + +/* Some aliases for the SA_ constants. */ +# define SA_NOMASK SA_NODEFER +# define SA_ONESHOT SA_RESETHAND +# define SA_STACK SA_ONSTACK +#endif + +/* Values for the HOW argument to `sigprocmask'. */ +#define SIG_BLOCK 0 /* for blocking signals */ +#define SIG_UNBLOCK 1 /* for unblocking signals */ +#define SIG_SETMASK 2 /* for setting the signal mask */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/bits/siginfo.h b/sysdeps/unix/sysv/linux/s390/s390-64/bits/siginfo.h new file mode 100644 index 0000000000..90e860c269 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/bits/siginfo.h @@ -0,0 +1,297 @@ +/* siginfo_t, sigevent and constants. 64 bit S/390 version. + Copyright (C) 2001 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. */ + +#if !defined _SIGNAL_H && !defined __need_siginfo_t \ + && !defined __need_sigevent_t +# error "Never include this file directly. Use <signal.h> instead" +#endif + +#if (!defined __have_sigval_t \ + && (defined _SIGNAL_H || defined __need_siginfo_t \ + || defined __need_sigevent_t)) +# define __have_sigval_t 1 + +/* Type for data associated with a signal. */ +typedef union sigval + { + int sival_int; + void *sival_ptr; + } sigval_t; +#endif + +#if (!defined __have_siginfo_t \ + && (defined _SIGNAL_H || defined __need_siginfo_t)) +# define __have_siginfo_t 1 + +# define __SI_MAX_SIZE 128 +# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4) + +typedef struct siginfo + { + int si_signo; /* Signal number. */ + int si_errno; /* If non-zero, an errno value associated with + this signal, as defined in <errno.h>. */ + int si_code; /* Signal code. */ + + union + { + int _pad[__SI_PAD_SIZE]; + + /* kill(). */ + struct + { + __pid_t si_pid; /* Sending process ID. */ + __uid_t si_uid; /* Real user ID of sending process. */ + } _kill; + + /* POSIX.1b timers. */ + struct + { + unsigned int _timer1; + unsigned int _timer2; + } _timer; + + /* POSIX.1b signals. */ + struct + { + __pid_t si_pid; /* Sending process ID. */ + __uid_t si_uid; /* Real user ID of sending process. */ + sigval_t si_sigval; /* Signal value. */ + } _rt; + + /* SIGCHLD. */ + struct + { + __pid_t si_pid; /* Which child. */ + __uid_t si_uid; /* Real user ID of sending process. */ + int si_status; /* Exit value or signal. */ + __clock_t si_utime; + __clock_t si_stime; + } _sigchld; + + /* SIGILL, SIGFPE, SIGSEGV, SIGBUS. */ + struct + { + void *si_addr; /* Faulting insn/memory ref. */ + int si_trapno; + } _sigfault; + + /* SIGPOLL. */ + struct + { + long int si_band; /* Band event for SIGPOLL. */ + int si_fd; + } _sigpoll; + } _sifields; + } siginfo_t; + + +/* X/Open requires some more fields with fixed names. */ +# define si_pid _sifields._kill.si_pid +# define si_uid _sifields._kill.si_uid +# define si_timer1 _sifields._timer._timer1 +# define si_timer2 _sifields._timer._timer2 +# define si_status _sifields._sigchld.si_status +# define si_utime _sifields._sigchld.si_utime +# define si_stime _sifields._sigchld.si_stime +# define si_value _sifields._rt.si_sigval +# define si_int _sifields._rt.si_sigval.sival_int +# define si_ptr _sifields._rt.si_sigval.sival_ptr +# define si_addr _sifields._sigfault.si_addr +# define si_trapno _sifields._sigfault.si_trapno +# define si_band _sifields._sigpoll.si_band +# define si_fd _sifields._sigpoll.si_fd + +/* Values for `si_code'. Positive values are reserved for kernel-generated + signals. */ +enum +{ + SI_ASYNCNL = -6, /* Sent by asynch name lookup completion. */ +# define SI_ASYNCNL SI_ASYNCNL + SI_SIGIO, /* Sent by queued SIGIO. */ +# define SI_SIGIO SI_SIGIO + SI_ASYNCIO, /* Sent by AIO completion. */ +# define SI_ASYNCIO SI_ASYNCIO + SI_MESGQ, /* Sent by real time mesq state change. */ +# define SI_MESGQ SI_MESGQ + SI_TIMER, /* Sent by timer expiration. */ +# define SI_TIMER SI_TIMER + SI_QUEUE, /* Sent by sigqueue. */ +# define SI_QUEUE SI_QUEUE + SI_USER, /* Sent by kill, sigsend, raise. */ +# define SI_USER SI_USER + SI_KERNEL = 0x80 /* Send by kernel. */ +#define SI_KERNEL SI_KERNEL +}; + + +/* `si_code' values for SIGILL signal. */ +enum +{ + ILL_ILLOPC = 1, /* Illegal opcode. */ +# define ILL_ILLOPC ILL_ILLOPC + ILL_ILLOPN, /* Illegal operand. */ +# define ILL_ILLOPN ILL_ILLOPN + ILL_ILLADR, /* Illegal addressing mode. */ +# define ILL_ILLADR ILL_ILLADR + ILL_ILLTRP, /* Illegal trap. */ +# define ILL_ILLTRP ILL_ILLTRP + ILL_PRVOPC, /* Privileged opcode. */ +# define ILL_PRVOPC ILL_PRVOPC + ILL_PRVREG, /* Privileged register. */ +# define ILL_PRVREG ILL_PRVREG + ILL_COPROC, /* Coprocessor error. */ +# define ILL_COPROC ILL_COPROC + ILL_BADSTK /* Internal stack error. */ +# define ILL_BADSTK ILL_BADSTK +}; + +/* `si_code' values for SIGFPE signal. */ +enum +{ + FPE_INTDIV = 1, /* Integer divide by zero. */ +# define FPE_INTDIV FPE_INTDIV + FPE_INTOVF, /* Integer overflow. */ +# define FPE_INTOVF FPE_INTOVF + FPE_FLTDIV, /* Floating point divide by zero. */ +# define FPE_FLTDIV FPE_FLTDIV + FPE_FLTOVF, /* Floating point overflow. */ +# define FPE_FLTOVF FPE_FLTOVF + FPE_FLTUND, /* Floating point underflow. */ +# define FPE_FLTUND FPE_FLTUND + FPE_FLTRES, /* Floating point inexact result. */ +# define FPE_FLTRES FPE_FLTRES + FPE_FLTINV, /* Floating point invalid operation. */ +# define FPE_FLTINV FPE_FLTINV + FPE_FLTSUB /* Subscript out of range. */ +# define FPE_FLTSUB FPE_FLTSUB +}; + +/* `si_code' values for SIGSEGV signal. */ +enum +{ + SEGV_MAPERR = 1, /* Address not mapped to object. */ +# define SEGV_MAPERR SEGV_MAPERR + SEGV_ACCERR /* Invalid permissions for mapped object. */ +# define SEGV_ACCERR SEGV_ACCERR +}; + +/* `si_code' values for SIGBUS signal. */ +enum +{ + BUS_ADRALN = 1, /* Invalid address alignment. */ +# define BUS_ADRALN BUS_ADRALN + BUS_ADRERR, /* Non-existant physical address. */ +# define BUS_ADRERR BUS_ADRERR + BUS_OBJERR /* Object specific hardware error. */ +# define BUS_OBJERR BUS_OBJERR +}; + +/* `si_code' values for SIGTRAP signal. */ +enum +{ + TRAP_BRKPT = 1, /* Process breakpoint. */ +# define TRAP_BRKPT TRAP_BRKPT + TRAP_TRACE /* Process trace trap. */ +# define TRAP_TRACE TRAP_TRACE +}; + +/* `si_code' values for SIGCHLD signal. */ +enum +{ + CLD_EXITED = 1, /* Child has exited. */ +# define CLD_EXITED CLD_EXITED + CLD_KILLED, /* Child was killed. */ +# define CLD_KILLED CLD_KILLED + CLD_DUMPED, /* Child terminated abnormally. */ +# define CLD_DUMPED CLD_DUMPED + CLD_TRAPPED, /* Traced child has trapped. */ +# define CLD_TRAPPED CLD_TRAPPED + CLD_STOPPED, /* Child has stopped. */ +# define CLD_STOPPED CLD_STOPPED + CLD_CONTINUED /* Stopped child has continued. */ +# define CLD_CONTINUED CLD_CONTINUED +}; + +/* `si_code' values for SIGPOLL signal. */ +enum +{ + POLL_IN = 1, /* Data input available. */ +# define POLL_IN POLL_IN + POLL_OUT, /* Output buffers available. */ +# define POLL_OUT POLL_OUT + POLL_MSG, /* Input message available. */ +# define POLL_MSG POLL_MSG + POLL_ERR, /* I/O error. */ +# define POLL_ERR POLL_ERR + POLL_PRI, /* High priority input available. */ +# define POLL_PRI POLL_PRI + POLL_HUP /* Device disconnected. */ +# define POLL_HUP POLL_HUP +}; + +# undef __need_siginfo_t +#endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t). */ + + +#if (defined _SIGNAL_H || defined __need_sigevent_t) \ + && !defined __have_sigevent_t +# define __have_sigevent_t 1 + +/* Structure to transport application-defined values with signals. */ +# define __SIGEV_MAX_SIZE 64 +# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4) + +/* Forward declaration of the `pthread_attr_t' type. */ +struct __pthread_attr_s; + +typedef struct sigevent + { + sigval_t sigev_value; + int sigev_signo; + int sigev_notify; + + union + { + int _pad[__SIGEV_PAD_SIZE]; + + struct + { + void (*_function) (sigval_t); /* Function to start. */ + struct __pthread_attr_s *_attribute; /* Really pthread_attr_t. */ + } _sigev_thread; + } _sigev_un; + } sigevent_t; + +/* POSIX names to access some of the members. */ +# define sigev_notify_function _sigev_un._sigev_thread._function +# define sigev_notify_attributes _sigev_un._sigev_thread._attribute + +/* `sigev_notify' values. */ +enum +{ + SIGEV_SIGNAL = 0, /* Notify via signal. */ +# define SIGEV_SIGNAL SIGEV_SIGNAL + SIGEV_NONE, /* Other notification: meaningless. */ +# define SIGEV_NONE SIGEV_NONE + SIGEV_THREAD /* Deliver via thread creation. */ +# define SIGEV_THREAD SIGEV_THREAD +}; + +#endif /* have _SIGNAL_H. */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/bits/sigstack.h b/sysdeps/unix/sysv/linux/s390/s390-64/bits/sigstack.h new file mode 100644 index 0000000000..d4e108a26e --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/bits/sigstack.h @@ -0,0 +1,59 @@ +/* sigstack, sigaltstack definitions. 64 bit S/390 version. + Copyright (C) 2001 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 _SIGNAL_H +# error "Never include this file directly. Use <signal.h> instead" +#endif + +#ifndef _SIGSTACK_H +#define _SIGSTACK_H 1 + +/* Structure describing a signal stack (obsolete). */ +struct sigstack + { + __ptr_t ss_sp; /* Signal stack pointer. */ + int ss_onstack; /* Nonzero if executing on this stack. */ + }; + + +/* Possible values for `ss_flags.'. */ +enum +{ + SS_ONSTACK = 1, +#define SS_ONSTACK SS_ONSTACK + SS_DISABLE +#define SS_DISABLE SS_DISABLE +}; + +/* Minimum stack size for a signal handler. */ +#define MINSIGSTKSZ 2048 + +/* System default stack size. */ +#define SIGSTKSZ 8192 + + +/* Alternate, preferred interface. */ +typedef struct sigaltstack + { + __ptr_t ss_sp; + int ss_flags; + size_t ss_size; + } stack_t; + +#endif /* bits/sigstack.h */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/bits/stat.h b/sysdeps/unix/sysv/linux/s390/s390-64/bits/stat.h new file mode 100644 index 0000000000..2bdae97383 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/bits/stat.h @@ -0,0 +1,107 @@ +/* Copyright (C) 2001 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 _SYS_STAT_H +# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead." +#endif + +/* Versions of the `struct stat' data structure. */ +#define _STAT_VER_KERNEL 0 +#define _STAT_VER_LINUX 1 +#define _STAT_VER _STAT_VER_LINUX + +/* Versions of the `xmknod' interface. */ +#define _MKNOD_VER_LINUX 0 + +struct stat + { + __dev_t st_dev; /* Device. */ + __ino_t st_ino; /* File serial number. */ + __nlink_t st_nlink; /* Link count. */ + __mode_t st_mode; /* File mode. */ + __uid_t st_uid; /* User ID of the file's owner. */ + __gid_t st_gid; /* Group ID of the file's group.*/ + int pad0; + __dev_t st_rdev; /* Device number, if device. */ + __off_t st_size; /* Size of file, in bytes. */ + __time_t st_atime; /* Time of last access. */ + long int __reserved0; /* Reserved for atime.nanoseconds. */ + __time_t st_mtime; /* Time of last modification. */ + long int __reserved1; /* Reserved for mtime.nanoseconds. */ + __time_t st_ctime; /* Time of last status change. */ + long int __reserved2; /* Reserved for ctime.nanoseconds. */ + __blksize_t st_blksize; /* Optimal block size for I/O. */ + __blkcnt_t st_blocks; /* Nr. 512-byte blocks allocated. */ + long int __unused[3]; + }; + +#ifdef __USE_LARGEFILE64 +/* Note stat64 is the same shape as stat. */ +struct stat64 + { + __dev_t st_dev; /* Device. */ + __ino64_t st_ino; /* File serial number. */ + __nlink_t st_nlink; /* Link count. */ + __mode_t st_mode; /* File mode. */ + __uid_t st_uid; /* User ID of the file's owner. */ + __gid_t st_gid; /* Group ID of the file's group.*/ + int pad0; + __dev_t st_rdev; /* Device number, if device. */ + __off_t st_size; /* Size of file, in bytes. */ + __time_t st_atime; /* Time of last access. */ + long int __reserved0; /* Reserved for atime.nanoseconds. */ + __time_t st_mtime; /* Time of last modification. */ + long int __reserved1; /* Reserved for mtime.nanoseconds. */ + __time_t st_ctime; /* Time of last status change. */ + long int __reserved2; /* Reserved for ctime.nanoseconds. */ + __blksize_t st_blksize; /* Optimal block size for I/O. */ + __blkcnt64_t st_blocks; /* Nr. 512-byte blocks allocated. */ + long int __unused[3]; + }; +#endif + +/* Tell code we have these members. */ +#define _STATBUF_ST_BLKSIZE +#define _STATBUF_ST_RDEV + +/* 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. */ +#define __S_IFLNK 0120000 /* Symbolic link. */ +#define __S_IFSOCK 0140000 /* Socket. */ + +/* POSIX.1b objects. */ +#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode) +#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode) +#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode) + +/* 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. */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/bits/types.h b/sysdeps/unix/sysv/linux/s390/s390-64/bits/types.h new file mode 100644 index 0000000000..45c4dc8d41 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/bits/types.h @@ -0,0 +1,115 @@ +/* Copyright (C) 2001 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. */ + +/* + * Never include this file directly; use <sys/types.h> instead. + */ + +#ifndef _BITS_TYPES_H +#define _BITS_TYPES_H 1 + +#include <features.h> + +#define __need_size_t +#include <stddef.h> + +/* Convenience types. */ +typedef unsigned char __u_char; +typedef unsigned short int __u_short; +typedef unsigned int __u_int; +typedef unsigned long int __u_long; +typedef unsigned long int __u_quad_t; +typedef long int __quad_t; +typedef signed char __int8_t; +typedef unsigned char __uint8_t; +typedef signed short int __int16_t; +typedef unsigned short int __uint16_t; +typedef signed int __int32_t; +typedef unsigned int __uint32_t; +typedef signed long int __int64_t; +typedef unsigned long int __uint64_t; +typedef __quad_t *__qaddr_t; + +typedef __uint64_t __dev_t; /* Type of device numbers. */ +typedef __uint32_t __uid_t; /* Type of user identifications. */ +typedef __uint32_t __gid_t; /* Type of group identifications. */ +typedef __uint64_t __ino_t; /* Type of file serial numbers. */ +typedef __uint64_t __ino64_t; /* "" (LFS) */ +typedef __uint32_t __mode_t; /* Type of file attribute bitmasks. */ +typedef __uint64_t __nlink_t; /* Type of file link counts. */ +typedef __int64_t __off_t; /* Type of file sizes and offsets. */ +typedef __int64_t __off64_t; /* "" (LFS) */ +typedef __int64_t __loff_t; /* Type of file sizes and offsets. */ +typedef __int32_t __pid_t; /* Type of process identifications. */ +typedef __int64_t __ssize_t; /* Type of a byte count, or error. */ +typedef __uint64_t __rlim_t; /* Type of resource counts. */ +typedef __uint64_t __rlim64_t; /* "" (LFS) */ +typedef __int64_t __blkcnt_t; /* Type to count nr disk blocks. */ +typedef __int64_t __blkcnt64_t; /* "" (LFS) */ +typedef __uint64_t __fsblkcnt_t; /* Type to count file system blocks. */ +typedef __uint64_t __fsblkcnt64_t; /* "" (LFS) */ +typedef __uint64_t __fsfilcnt_t; /* Type to count file system inodes. */ +typedef __uint64_t __fsfilcnt64_t; /* "" (LFS) */ +typedef __uint32_t __id_t; /* General type for IDs. */ + +typedef struct + { + int __val[2]; + } __fsid_t; /* Type of file system IDs. */ + +/* Everythin' else. */ +typedef int __daddr_t; /* Type of a disk address. */ +typedef char *__caddr_t; /* Type of a core address. */ +typedef long int __time_t; +typedef unsigned int __useconds_t; +typedef long int __suseconds_t; +typedef long int __swblk_t; /* Type of a swap block maybe? */ +typedef long int __clock_t; +typedef int __key_t; /* Type of a SYSV IPC key. */ + +/* Clock ID used in clock and timer functions. */ +typedef int __clockid_t; + +/* Timer ID returned by `timer_create'. */ +typedef int __timer_t; + +/* Used in `struct shmid_ds'. */ +typedef int __ipc_pid_t; + +/* type to represent block size. */ +typedef long int __blksize_t; + +/* Number of descriptors that can fit in an `fd_set'. */ +#define __FD_SETSIZE 1024 + +/* Used in XTI. */ +typedef int __t_scalar_t; +typedef unsigned int __t_uscalar_t; + +/* Duplicates info from stdint.h but this is used in unistd.h. */ +typedef long int __intptr_t; + +/* Duplicate info from sys/socket.h. */ +typedef unsigned int __socklen_t; + +/* Now add the thread types. */ +#if defined __USE_POSIX199506 || defined __USE_UNIX98 +# include <bits/pthreadtypes.h> +#endif + +#endif /* bits/types.h */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/clone.S b/sysdeps/unix/sysv/linux/s390/s390-64/clone.S new file mode 100644 index 0000000000..c6b160ac39 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/clone.S @@ -0,0 +1,55 @@ +/* Wrapper around clone system call. 64 bit S/390 version. + Copyright (C) 2001 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + 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. */ + +/* clone is even more special than fork as it mucks with stacks + and invokes a function in the right context after its all over. */ + +#include <sysdep.h> +#define _ERRNO_H 1 +#include <bits/errno.h> + + .text +ENTRY(__clone) + /* Sanity check arguments & move registers */ + ltgr %r1,%r2 /* no NULL function pointers */ + lghi %r2,-EINVAL + jz SYSCALL_ERROR_LABEL + ltgr %r3,%r3 /* no NULL stack pointers */ + jz SYSCALL_ERROR_LABEL + /* move child_stack and flags, then call SVC */ + lgr %r2,%r3 + lgr %r3,%r4 + svc SYS_ify(clone) + ltgr %r2,%r2 /* check return code */ + jm SYSCALL_ERROR_LABEL + jz thread_start + br %r14 + +thread_start: + /* fn is in gpr 1, arg in gpr 5 */ + lgr %r2,%r5 /* set first parameter to void *arg */ + sgr %r11,%r11 /* terminate the stack frame */ + aghi %r15,-96 /* make room on the stack for the save area */ + basr %r14,%r1 /* jump to fn */ +#ifdef PIC + larl %r12,_GLOBAL_OFFSET_TABLE_ +#endif + jg _exit@PLT /* branch to _exit -> thread termination */ +PSEUDO_END (__clone) diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/fstatfs64.c b/sysdeps/unix/sysv/linux/s390/s390-64/fstatfs64.c new file mode 100644 index 0000000000..2be4e59ba4 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/fstatfs64.c @@ -0,0 +1 @@ +/* fstatfs64 is the same as fstatfs. */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/ftruncate64.c b/sysdeps/unix/sysv/linux/s390/s390-64/ftruncate64.c new file mode 100644 index 0000000000..673a8b525a --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/ftruncate64.c @@ -0,0 +1 @@ +/* ftruncate64 is the same as ftruncate. */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/fxstat.c b/sysdeps/unix/sysv/linux/s390/s390-64/fxstat.c new file mode 100644 index 0000000000..96b71167cd --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/fxstat.c @@ -0,0 +1,42 @@ +/* fxstat using old-style Unix fstat system call. 64 bit S/390 version. + Copyright (C) 2001 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. */ + +/* Ho hum, since xstat == xstat64 we must get rid of the prototype or gcc + will complain since they don't strictly match. */ +#define __fxstat64 __fxstat64_disable + +#include <errno.h> +#include <stddef.h> +#include <sys/stat.h> + +#include <sysdep.h> +#include <sys/syscall.h> + +extern int __syscall_fstat (int, struct stat *); + +/* Get information about the file FD in BUF. */ +int +__fxstat (int vers, int fd, struct stat *buf) +{ + return INLINE_SYSCALL (fstat, 2, fd, buf); +} + +weak_alias (__fxstat, _fxstat); +#undef __fxstat64 +strong_alias (__fxstat, __fxstat64); diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/fxstat64.c b/sysdeps/unix/sysv/linux/s390/s390-64/fxstat64.c new file mode 100644 index 0000000000..9eff9ebeb7 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/fxstat64.c @@ -0,0 +1 @@ +/* fxstat64 is in fxstat.c */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/getdents.c b/sysdeps/unix/sysv/linux/s390/s390-64/getdents.c new file mode 100644 index 0000000000..491fa9dfb2 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/getdents.c @@ -0,0 +1,4 @@ +#define __getdents64 __no___getdents64_decl +#include <sysdeps/unix/sysv/linux/getdents.c> +#undef __getdents64 +weak_alias(__getdents, __getdents64); diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/getdents64.c b/sysdeps/unix/sysv/linux/s390/s390-64/getdents64.c new file mode 100644 index 0000000000..0df2c8f4c6 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/getdents64.c @@ -0,0 +1 @@ +/* getdents64 is in getdents.c */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/getrlimit64.c b/sysdeps/unix/sysv/linux/s390/s390-64/getrlimit64.c new file mode 100644 index 0000000000..9feab0e6b8 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/getrlimit64.c @@ -0,0 +1 @@ +/* getrlimit64 is the same as getrlimit. */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/glob.c b/sysdeps/unix/sysv/linux/s390/s390-64/glob.c new file mode 100644 index 0000000000..b6da989e57 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/glob.c @@ -0,0 +1,7 @@ +#define glob64 __no_glob64_decl +#define globfree64 __no_globfree64_decl +#include <sysdeps/generic/glob.c> +#undef glob64 +#undef globfree64 +weak_alias (glob, glob64) +weak_alias (globfree, globfree64) diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/glob64.c b/sysdeps/unix/sysv/linux/s390/s390-64/glob64.c new file mode 100644 index 0000000000..33918ea6a5 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/glob64.c @@ -0,0 +1 @@ +/* glob64 is in glob.c */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h b/sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h new file mode 100644 index 0000000000..10f17b28ee --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h @@ -0,0 +1,46 @@ +/* Definition of `struct stat' used in the kernel. 64 bit S/390 version. + Copyright (C) 2001 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + 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. */ + +struct kernel_stat + { + unsigned int st_dev; + unsigned int st_ino; + unsigned int st_mode; + unsigned int st_nlink; + unsigned int st_uid; + unsigned int st_gid; + unsigned int st_rdev; + unsigned int __pad1; + unsigned long int st_size; + unsigned long int st_atime; + unsigned long int st_mtime; + unsigned long int st_ctime; + unsigned int st_blksize; + int st_blocks; + unsigned long __unused1; + unsigned long __unused2; + }; + +extern int __xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf); + +#define XSTAT_IS_XSTAT64 1 +#define _HAVE___UNUSED1 +#define _HAVE___UNUSED2 + diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/lxstat.c b/sysdeps/unix/sysv/linux/s390/s390-64/lxstat.c new file mode 100644 index 0000000000..1b80b11163 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/lxstat.c @@ -0,0 +1,42 @@ +/* lxstat using old-style Unix fstat system call. 64 bit S/390 version. + Copyright (C) 2001 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. */ + +/* Ho hum, since xstat == xstat64 we must get rid of the prototype or gcc + will complain since they don't strictly match. */ +#define __lxstat64 __lxstat64_disable + +#include <errno.h> +#include <stddef.h> +#include <sys/stat.h> + +#include <sysdep.h> +#include <sys/syscall.h> + +extern int __syscall_lstat (const char *, struct stat *); + +/* Get information about the file FD in BUF. */ +int +__lxstat (int vers, const char *name, struct stat *buf) +{ + return INLINE_SYSCALL (lstat, 2, name, buf); +} + +weak_alias (__lxstat, _lxstat); +#undef __lxstat64 +strong_alias (__lxstat, __lxstat64); diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/lxstat64.c b/sysdeps/unix/sysv/linux/s390/s390-64/lxstat64.c new file mode 100644 index 0000000000..bb5dbd0fff --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/lxstat64.c @@ -0,0 +1 @@ +/* lxstat64 is in lxstat.c */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/mmap.S b/sysdeps/unix/sysv/linux/s390/s390-64/mmap.S new file mode 100644 index 0000000000..72d73d4416 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/mmap.S @@ -0,0 +1,67 @@ +/* Wrapper around mmap system call. 64 bit S/390 version. + Copyright (C) 2001 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + 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> + +#define EINVAL 22 + + .text + +ENTRY(__mmap) + /* Save registers and setup stack frame. */ + stmg %r6,%r15,48(%r15) + lgr %r1,%r15 + lg %r0,8(%r15) /* Load eos. */ + aghi %r15,-208 /* Buy stack space. */ + stg %r1,0(%r15) /* Store back chain. */ + stg %r0,8(%r15) /* Store eos. */ + + /* Store parameters on stack, because old_mmap + takes only one parameter: a pointer to the parameter area. */ + mvc 200(8,%r15),368(%r15) /* Move 'offset'. */ + lgfr %r6,%r6 + stg %r6,192(%r15) /* Store 'fd'. */ + lgfr %r5,%r5 + stg %r5,184(%r15) /* Store 'flags'. */ + lgfr %r4,%r4 + stg %r4,176(%r15) /* Store 'prot'. */ + stg %r3,168(%r15) /* Store 'length'. */ + stg %r2,160(%r15) /* Store 'start'. */ + + la %r2,160(%r15) /* Load address of parameter list. */ + /* Do the system call trap. */ + svc SYS_ify(mmap) + + lg %r15,0(%r15) /* Load back chain. */ + lmg %r6,%r15,48(%r15) /* Load registers. */ + + /* Check gpr 2 for error. */ + lghi %r0,-4096 + clgr %r2,%r0 + jnl SYSCALL_ERROR_LABEL + + /* Successful; return the syscall's value. */ + br %r14 + +PSEUDO_END (__mmap) + +weak_alias (__mmap, mmap) +weak_alias (__mmap, mmap64) + diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/mmap64.c b/sysdeps/unix/sysv/linux/s390/s390-64/mmap64.c new file mode 100644 index 0000000000..0dbd384a6a --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/mmap64.c @@ -0,0 +1 @@ +/* mmap64 is the same as mmap. */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/pread64.c b/sysdeps/unix/sysv/linux/s390/s390-64/pread64.c new file mode 100644 index 0000000000..b7f298dea8 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/pread64.c @@ -0,0 +1 @@ +/* Empty since the pread syscall is equivalent. */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/pwrite64.c b/sysdeps/unix/sysv/linux/s390/s390-64/pwrite64.c new file mode 100644 index 0000000000..b1b25f65a3 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/pwrite64.c @@ -0,0 +1 @@ +/* Empty since the pwrite syscall is equivalent. */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/readdir.c b/sysdeps/unix/sysv/linux/s390/s390-64/readdir.c new file mode 100644 index 0000000000..300ebb2629 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/readdir.c @@ -0,0 +1,7 @@ +#define readdir64 __no_readdir64_decl +#define __readdir64 __no___readdir64_decl +#include <sysdeps/unix/readdir.c> +#undef __readdir64 +strong_alias (__readdir, __readdir64) +#undef readdir64 +weak_alias (__readdir, readdir64) diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/readdir64.c b/sysdeps/unix/sysv/linux/s390/s390-64/readdir64.c new file mode 100644 index 0000000000..9796431dc4 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/readdir64.c @@ -0,0 +1 @@ +/* readdir64 is in readdir.c */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/readdir64_r.c b/sysdeps/unix/sysv/linux/s390/s390-64/readdir64_r.c new file mode 100644 index 0000000000..b8fe9a31b4 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/readdir64_r.c @@ -0,0 +1 @@ +/* readdir64_r is in readdir_r.c */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/readdir_r.c b/sysdeps/unix/sysv/linux/s390/s390-64/readdir_r.c new file mode 100644 index 0000000000..adb92db6af --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/readdir_r.c @@ -0,0 +1,4 @@ +#define readdir64_r __no_readdir64_r_decl +#include <sysdeps/unix/readdir_r.c> +#undef readdir64_r +weak_alias (__readdir_r, readdir64_r) diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/register-dump.h b/sysdeps/unix/sysv/linux/s390/s390-64/register-dump.h new file mode 100644 index 0000000000..a9da7d84d7 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/register-dump.h @@ -0,0 +1,133 @@ +/* Dump registers. 64 bit S/390 version. + Copyright (C) 2001 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + 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 <sys/uio.h> +#include <stdio-common/_itoa.h> + +/* We will print the register dump in this format: + + GPR0: XXXXXXXXXXXXXXXX GPR1: XXXXXXXXXXXXXXXX + GPR2: XXXXXXXXXXXXXXXX GPR3: XXXXXXXXXXXXXXXX + GPR4: XXXXXXXXXXXXXXXX GPR5: XXXXXXXXXXXXXXXX + GPR6: XXXXXXXXXXXXXXXX GPR7: XXXXXXXXXXXXXXXX + GPR8: XXXXXXXXXXXXXXXX GPR9: XXXXXXXXXXXXXXXX + GPRA: XXXXXXXXXXXXXXXX GPRB: XXXXXXXXXXXXXXXX + GPRC: XXXXXXXXXXXXXXXX GPRD: XXXXXXXXXXXXXXXX + GPRE: XXXXXXXXXXXXXXXX GPRF: XXXXXXXXXXXXXXXX + + PSW.MASK: XXXXXXXXXXXXXXXX PSW.ADDR: XXXXXXXXXXXXXXXX + + ST(0) XXXX XXXXXXXXXXXXXXXX ST(1) XXXX XXXXXXXXXXXXXXXX + ST(2) XXXX XXXXXXXXXXXXXXXX ST(3) XXXX XXXXXXXXXXXXXXXX + ST(4) XXXX XXXXXXXXXXXXXXXX ST(5) XXXX XXXXXXXXXXXXXXXX + ST(6) XXXX XXXXXXXXXXXXXXXX ST(7) XXXX XXXXXXXXXXXXXXXX + */ + +static void +hexvalue (unsigned long int value, char *buf, size_t len) +{ + char *cp = _itoa_word (value, buf + len, 16, 0); + while (cp > buf) + *--cp = '0'; +} + +static void +register_dump (int fd, struct sigcontext *ctx) +{ + char regs[19][16]; + struct iovec iov[40]; + size_t nr = 0; + +#define ADD_STRING(str) \ + iov[nr].iov_base = (char *) str; \ + iov[nr].iov_len = strlen (str); \ + ++nr +#define ADD_MEM(str, len) \ + iov[nr].iov_base = str; \ + iov[nr].iov_len = len; \ + ++nr + + /* Generate strings of register contents. */ + hexvalue (ctx->sregs->regs.gprs[0], regs[0], 16); + hexvalue (ctx->sregs->regs.gprs[1], regs[1], 16); + hexvalue (ctx->sregs->regs.gprs[2], regs[2], 16); + hexvalue (ctx->sregs->regs.gprs[3], regs[3], 16); + hexvalue (ctx->sregs->regs.gprs[4], regs[4], 16); + hexvalue (ctx->sregs->regs.gprs[5], regs[5], 16); + hexvalue (ctx->sregs->regs.gprs[6], regs[6], 16); + hexvalue (ctx->sregs->regs.gprs[7], regs[7], 16); + hexvalue (ctx->sregs->regs.gprs[8], regs[8], 16); + hexvalue (ctx->sregs->regs.gprs[9], regs[9], 16); + hexvalue (ctx->sregs->regs.gprs[10], regs[10], 16); + hexvalue (ctx->sregs->regs.gprs[11], regs[11], 16); + hexvalue (ctx->sregs->regs.gprs[12], regs[12], 16); + hexvalue (ctx->sregs->regs.gprs[13], regs[13], 16); + hexvalue (ctx->sregs->regs.gprs[14], regs[14], 16); + hexvalue (ctx->sregs->regs.gprs[15], regs[15], 16); + hexvalue (ctx->sregs->regs.psw.mask, regs[16], 16); + hexvalue (ctx->sregs->regs.psw.addr, regs[17], 16); + + /* Generate the output. */ + ADD_STRING ("Register dump:\n\n GPR0: "); + ADD_MEM (regs[0], 16); + ADD_STRING (" GPR1: "); + ADD_MEM (regs[1], 16); + ADD_STRING (" GPR2: "); + ADD_MEM (regs[2], 16); + ADD_STRING (" GPR3: "); + ADD_MEM (regs[3], 16); + ADD_STRING ("\n GPR4: "); + ADD_MEM (regs[4], 16); + ADD_STRING (" GPR5: "); + ADD_MEM (regs[5], 16); + ADD_STRING (" GPR6: "); + ADD_MEM (regs[6], 16); + ADD_STRING (" GPR7: "); + ADD_MEM (regs[7], 16); + ADD_STRING ("\n GPR8: "); + ADD_MEM (regs[8], 16); + ADD_STRING (" GPR9: "); + ADD_MEM (regs[9], 16); + ADD_STRING (" GPRA: "); + ADD_MEM (regs[10], 16); + ADD_STRING (" GPRB: "); + ADD_MEM (regs[11], 16); + ADD_STRING ("\n GPRC: "); + ADD_MEM (regs[12], 16); + ADD_STRING (" GPRD: "); + ADD_MEM (regs[13], 16); + ADD_STRING (" GPRE: "); + ADD_MEM (regs[14], 16); + ADD_STRING (" GPRF: "); + ADD_MEM (regs[15], 16); + ADD_STRING ("\n\n PSW.MASK: "); + ADD_MEM (regs[16], 16); + ADD_STRING (" PSW.ADDR: "); + ADD_MEM (regs[17], 16); + ADD_STRING (" TRAP: "); + ADD_MEM (regs[18], 4); + ADD_STRING ("\n"); + + /* Write the stuff out. */ + writev (fd, iov, nr); +} + + +#define REGISTER_DUMP register_dump (fd, &ctx) diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/setrlimit64.c b/sysdeps/unix/sysv/linux/s390/s390-64/setrlimit64.c new file mode 100644 index 0000000000..8edcff0086 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/setrlimit64.c @@ -0,0 +1 @@ +/* setrlimit64 is the same as setrlimit. */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c b/sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c new file mode 100644 index 0000000000..9e2ffa8e76 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c @@ -0,0 +1,50 @@ +/* Copyright (C) 2001 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. */ + +/* 64 bit Linux for S/390 only has rt signals, thus we do not even want to try + falling back to the old style signals as the default Linux handler does. */ + +#include <errno.h> +#include <signal.h> +#include <string.h> + +#include <sysdep.h> +#include <sys/syscall.h> + +extern int __syscall_rt_sigaction (int, const struct sigaction *, + struct sigaction *, size_t); + +/* The variable is shared between all wrappers around signal handling + functions which have RT equivalents. This is the definition. */ + + +/* If ACT is not NULL, change the action for SIG to *ACT. + If OACT is not NULL, put the old action for SIG in *OACT. */ +int +__libc_sigaction (sig, act, oact) + int sig; + const struct sigaction *act; + struct sigaction *oact; +{ + /* XXX The size argument hopefully will have to be changed to the + real size of the user-level sigset_t. */ + return INLINE_SYSCALL (rt_sigaction, 4, sig, act, oact, _NSIG / 8); +} + +weak_alias (__libc_sigaction, __sigaction) +weak_alias (__libc_sigaction, sigaction) diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sigpending.c b/sysdeps/unix/sysv/linux/s390/s390-64/sigpending.c new file mode 100644 index 0000000000..cdaacd769c --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/sigpending.c @@ -0,0 +1,41 @@ +/* Copyright (C) 2001 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. */ + +/* 64 bit Linux for S/390 only has rt signals, thus we do not even want to try + falling back to the old style signals as the default Linux handler does. */ + +#include <errno.h> +#include <signal.h> +#include <unistd.h> + +#include <sysdep.h> +#include <sys/syscall.h> + +extern int __syscall_rt_sigpending (sigset_t *, size_t); + + +/* Change the set of blocked signals to SET, + wait until a signal arrives, and restore the set of blocked signals. */ +int +sigpending (set) + sigset_t *set; +{ + /* XXX The size argument hopefully will have to be changed to the + real size of the user-level sigset_t. */ + return INLINE_SYSCALL (rt_sigpending, 2, set, _NSIG / 8); +} diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c b/sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c new file mode 100644 index 0000000000..1a580b0554 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c @@ -0,0 +1,44 @@ +/* Copyright (C) 2001 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. */ + +/* 64 bit Linux for S/390 only has rt signals, thus we do not even want to try + falling back to the old style signals as the default Linux handler does. */ + +#include <errno.h> +#include <signal.h> +#include <unistd.h> + +#include <sysdep.h> +#include <sys/syscall.h> + +extern int __syscall_rt_sigprocmask (int, const sigset_t *, + sigset_t *, size_t); + +/* Get and/or change the set of blocked signals. */ +int +__sigprocmask (how, set, oset) + int how; + const sigset_t *set; + sigset_t *oset; +{ + + /* XXX The size argument hopefully will have to be changed to the + real size of the user-level sigset_t. */ + return INLINE_SYSCALL (rt_sigprocmask, 4, how, set, oset, _NSIG / 8); +} +weak_alias (__sigprocmask, sigprocmask) diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sigsuspend.c b/sysdeps/unix/sysv/linux/s390/s390-64/sigsuspend.c new file mode 100644 index 0000000000..af7797eeb8 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/sigsuspend.c @@ -0,0 +1,39 @@ +/* Copyright (C) 2001 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 <errno.h> +#include <signal.h> +#include <unistd.h> + +#include <sysdep.h> +#include <sys/syscall.h> + +extern int __syscall_rt_sigsuspend (const sigset_t *, size_t); + + +/* Change the set of blocked signals to SET, + wait until a signal arrives, and restore the set of blocked signals. */ +int +__sigsuspend (set) + const sigset_t *set; +{ + /* XXX The size argument hopefully will have to be changed to the + real size of the user-level sigset_t. */ + return INLINE_SYSCALL (rt_sigsuspend, 2, set, _NSIG / 8); +} +weak_alias (__sigsuspend, sigsuspend) diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/socket.S b/sysdeps/unix/sysv/linux/s390/s390-64/socket.S new file mode 100644 index 0000000000..471c0b5ef2 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/socket.S @@ -0,0 +1,99 @@ +/* Copyright (C) 2001 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + 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> +#include <socketcall.h> + +/* &%/$&!! preprocessor */ +#define P(a, b) P2(a, b) +#define P2(a, b) a##b + + .text +/* The socket-oriented system calls are handled unusally in Linux. + They are all gated through the single `socketcall' system call number. + `socketcall' takes two arguments: the first is the subcode, specifying + which socket function is being called; and the second is a pointer to + the arguments to the specific function. + + The .S files for the other calls just #define socket and #include this. */ + +#ifndef __socket +#ifndef NO_WEAK_ALIAS +#define __socket P(__,socket) +#else +#define __socket socket +#endif +#endif + +#ifndef NARGS /* The socket.o object is compiled directly ... */ +#define NARGS 3 +#endif + +.globl __socket +ENTRY(__socket) + + /* Save registers and setup stack. */ + stmg %r6,%r15,48(%r15) /* Save registers. */ + lgr %r1,%r15 + lg %r0,8(%r15) /* Load eos. */ + ahi %r15,-208 /* Buy stack space. */ + stg %r1,0(%r15) /* Store back chain. */ + stg %r0,8(%r15) /* Store eos. */ + + /* Reorder arguments. */ +#if (NARGS >= 6) + mvc 200(8,%r15),368(%r15) /* Move between parameter lists. */ +#endif +#if (NARGS >= 5) + stg %r6,192(%r15) /* Store into parameter list. */ +#endif +#if (NARGS >= 4) + stg %r5,184(%r15) /* Store into parameter list. */ +#endif +#if (NARGS >= 3) + stg %r4,176(%r15) /* Store into parameter list. */ +#endif +#if (NARGS >= 2) + stg %r3,168(%r15) /* Store into parameter list. */ + stg %r2,160(%r15) +#endif + /* Load subcode for socket syscall. */ + lghi %r2,P(SOCKOP_,socket) + la %r3,160(%r15) /* Load address of parameter list. */ + + /* Do the system call trap. */ + svc SYS_ify(socketcall) + + lg %r15,0(%r15) /* Load back chain. */ + lmg %r6,15,48(%r15) /* Load registers. */ + + /* gpr2 is < 0 if there was an error. */ + lghi %r0,-125 + clgr %r2,%r0 + jnl SYSCALL_ERROR_LABEL + + /* Successful; return the syscall's value. */ + br %r14 + +PSEUDO_END (__socket) + +#ifndef NO_WEAK_ALIAS +weak_alias (__socket, socket) +#endif + diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/statfs64.c b/sysdeps/unix/sysv/linux/s390/s390-64/statfs64.c new file mode 100644 index 0000000000..06bc68826f --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/statfs64.c @@ -0,0 +1 @@ +/* statfs64 is the same as statfs. */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sys/procfs.h b/sysdeps/unix/sysv/linux/s390/s390-64/sys/procfs.h new file mode 100644 index 0000000000..3e91109bf5 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/sys/procfs.h @@ -0,0 +1,118 @@ +/* Copyright (C) 2001 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 _SYS_PROCFS_H +#define _SYS_PROCFS_H 1 + +/* This is somewhat modelled after the file of the same name on SVR4 + systems. It provides a definition of the core file format for ELF + used on Linux. It doesn't have anything to do with the /proc file + system, even though Linux has one. + + Anyway, the whole purpose of this file is for GDB and GDB only. + Don't read too much into it. Don't use it for anything other than + GDB unless you know what you are doing. */ + +#include <features.h> +#include <sys/time.h> +#include <sys/types.h> +#include <sys/user.h> +#include <sys/ucontext.h> + +__BEGIN_DECLS + +typedef greg_t elf_greg_t; +#define ELF_NGREG NGREG +typedef gregset_t elf_gregset_t; +typedef fpreg_t elf_fpreg_t; +typedef fpregset_t elf_fpregset_t; + +/* Signal info. */ +struct elf_siginfo + { + int si_signo; /* Signal number. */ + int si_code; /* Extra code. */ + int si_errno; /* Errno. */ + }; + + +/* Definitions to generate Intel SVR4-like core files. These mostly + have the same names as the SVR4 types with "elf_" tacked on the + front to prevent clashes with Linux definitions, and the typedef + forms have been avoided. This is mostly like the SVR4 structure, + but more Linuxy, with things that Linux does not support and which + GDB doesn't really use excluded. */ + +struct elf_prstatus + { + struct elf_siginfo pr_info; /* Info associated with signal. */ + short int pr_cursig; /* Current signal. */ + unsigned long int pr_sigpend; /* Set of pending signals. */ + unsigned long int pr_sighold; /* Set of held signals. */ + __pid_t pr_pid; + __pid_t pr_ppid; + __pid_t pr_pgrp; + __pid_t pr_sid; + struct timeval pr_utime; /* User time. */ + struct timeval pr_stime; /* System time. */ + struct timeval pr_cutime; /* Cumulative user time. */ + struct timeval pr_cstime; /* Cumulative system time. */ + elf_gregset_t pr_reg; /* GP registers. */ + int pr_fpvalid; /* True if math copro being used. */ + }; + + +#define ELF_PRARGSZ (80) /* Number of chars for args. */ + +struct elf_prpsinfo + { + char pr_state; /* Numeric process state. */ + char pr_sname; /* Char for pr_state. */ + char pr_zomb; /* Zombie. */ + char pr_nice; /* Nice val. */ + unsigned long int pr_flag; /* Flags. */ + unsigned int pr_uid; + unsigned int pr_gid; + int pr_pid, pr_ppid, pr_pgrp, pr_sid; + /* Lots missing */ + char pr_fname[16]; /* Filename of executable. */ + char pr_psargs[ELF_PRARGSZ]; /* Initial part of arg list. */ + }; + +/* The rest of this file provides the types for emulation of the + Solaris <proc_service.h> interfaces that should be implemented by + users of libthread_db. */ + +/* Addresses. */ +typedef void *psaddr_t; + +/* Register sets. Linux has different names. */ +typedef elf_gregset_t prgregset_t; +typedef elf_fpregset_t prfpregset_t; + +/* We don't have any differences between processes and threads, + therefore have only one PID type. */ +typedef __pid_t lwpid_t; + +/* Process status and info. In the end we do provide typedefs for them. */ +typedef struct elf_prstatus prstatus_t; +typedef struct elf_prpsinfo prpsinfo_t; + +__END_DECLS + +#endif /* sys/procfs.h */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h b/sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h new file mode 100644 index 0000000000..773841cf01 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h @@ -0,0 +1,77 @@ +/* Copyright (C) 2001 Free Software Foundation, Inc. + Contributed by Denis Joseph Barrow (djbarrow@de.ibm.com). + 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 _SYS_UCONTEXT_H +#define _SYS_UCONTEXT_H 1 +/* Forward definition to avoid parse errors */ +struct ucontext; +typedef struct ucontext ucontext_t; +#include <features.h> +#include <signal.h> + +/* We need the signal context definitions even if they are not used + included in <signal.h>. */ +#include <bits/sigcontext.h> + + +/* Type for a general-purpose register. */ +typedef unsigned long greg_t; + +/* And the whole bunch of them. We should have used `struct s390_regs', + but to avoid name space pollution and since the tradition says that + the register set is an array, we make gregset_t a simple array + that has the same size as s390_regs. */ +#define NGREG 27 +#define NUM_FPRS 16 +/* Must match kernels psw_t alignment */ +typedef greg_t gregset_t[NGREG] __attribute__ ((aligned(8))); + +typedef union +{ + double d; + float f; +} fpreg_t; + +/* Register set for the floating-point registers. */ +typedef struct { + unsigned int fpc; + fpreg_t fprs[NUM_FPRS]; +} fpregset_t; + +/* Context to describe whole processor state. */ +typedef struct + { + int version; + gregset_t gregs; + fpregset_t fpregs; + } mcontext_t; + +/* Userlevel context. */ +struct ucontext + { + unsigned long int uc_flags; + struct ucontext *uc_links; + __sigset_t uc_sigmask; + stack_t uc_stack; + mcontext_t uc_mcontext; + long int uc_filler[170]; + }; + + +#endif /* sys/ucontext.h */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S b/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S new file mode 100644 index 0000000000..b632ced19a --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S @@ -0,0 +1,52 @@ +/* Copyright (C) 2001 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + 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> + +/* Please consult the file sysdeps/unix/sysv/linux/s390/sysdep.h for + more information about the value -4095 used below.*/ + +ENTRY (syscall) + /* Save registers and setup stack. */ + stmg %r6,%r15,48(%r15) /* Save registers. */ + lgr %r1,%r15 + lg %r0,8(%r15) /* Load eos. */ + aghi %r15,-160 /* Buy stack space. */ + stg %r1,0(%r15) /* Store back chain. */ + stg %r0,8(%r15) /* Store eos. */ + + lgr %r1,%r2 /* Move syscall number. */ + lgr %r2,%r3 /* First parameter. */ + lgr %r3,%r4 /* Second parameter. */ + lgr %r4,%r5 /* Third parameter. */ + lgr %r5,%r6 /* Fourth parameter. */ + lg %r6,320(%r15) /* Fifth parameter. */ + basr %r7,0 +.L0: ex %r1,.L1-.L0(%r7) /* Lsb of R1 is subsituted as SVC number. */ + + lg %r15,0(%r15) /* Load back chain. */ + lmg %r6,15,48(%r15) /* Load registers. */ + + lghi %r0,-4095 + clgr %r2,%r0 /* Check R2 for error. */ + jnl SYSCALL_ERROR_LABEL + br %r14 /* Return to caller. */ +.L1: .word 0x0A00 /* Opcode for SVC 0. */ +PSEUDO_END (syscall) + diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list b/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list new file mode 100644 index 0000000000..0d72f06cf9 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list @@ -0,0 +1,55 @@ +# File name Caller Syscall name # args Strong name Weak names + +llseek EXTRA lseek 3 __libc_lseek64 __lseek llseek __lseek64 lseek64 +pread - pread 4 __libc_pread __libc_pread64 __pread pread __pread64 pread64 +pwrite - pwrite 4 __libc_pwrite __libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64 +fstatfs - fstatfs i:ip __fstatfs fstatfs fstatfs64 __fstatfs64 +statfs - statfs i:sp __statfs statfs statfs64 +getpeername - getpeername i:ipp __getpeername getpeername +getpriority - getpriority i:ii __getpriority getpriority +ftruncate - ftruncate 2 __ftruncate ftruncate ftruncate64 __ftruncate64 +truncate - truncate 2 truncate truncate64 +getrlimit - getrlimit 2 __getrlimit getrlimit getrlimit64 +setrlimit - setrlimit 2 __setrlimit setrlimit setrlimit64 + +# semaphore and shm system calls +msgctl - msgctl i:iip __msgctl msgctl +msgget - msgget i:ii __msgget msgget +msgrcv - msgrcv i:ibnii __msgrcv msgrcv +msgsnd - msgsnd i:ibni __msgsnd msgsnd +shmat - shmat i:ipi __shmat shmat +shmctl - shmctl i:iip __shmctl shmctl +shmdt - shmdt i:s __shmdt shmdt +shmget - shmget i:iii __shmget shmget +semop - semop i:ipi __semop semop +semget - semget i:iii __semget semget +semctl - semctl i:iiii __semctl semctl + +# proper socket implementations: +accept - accept i:iBN __libc_accept __accept accept +bind - bind i:ipi __bind bind +connect - connect i:ipi __libc_connect __connect connect +getpeername - getpeername i:ipp __getpeername getpeername +getsockname - getsockname i:ipp __getsockname getsockname +getsockopt - getsockopt i:iiiBN __getsockopt getsockopt +listen - listen i:ii __listen listen +recv - recv i:ibni __libc_recv __recv recv +recvfrom - recvfrom i:ibniBN __libc_recvfrom __recvfrom recvfrom +recvmsg - recvmsg i:ipi __libc_recvmsg recvmsg +send - send i:ibni __libc_send __send send +sendmsg - sendmsg i:ipi __libc_sendmsg sendmsg +sendto - sendto i:ibnibn __libc_sendto __sendto sendto +setsockopt - setsockopt i:iiibn __setsockopt setsockopt +shutdown - shutdown i:ii __shutdown shutdown +socket - socket i:iii __socket socket +socketpair - socketpair i:iiif __socketpair socketpair + +getresuid - getresuid i:ppp getresuid +getresgid - getresgid i:ppp getresgid + +rt_sigaction EXTRA rt_sigaction i:ippi __syscall_rt_sigaction rt_sigaction +rt_sigpending EXTRA rt_sigpending i:pi __syscall_rt_sigpending rt_sigpending +rt_sigprocmask EXTRA rt_sigprocmask i:ippi __syscall_rt_sigprocmask rt_sigprocmask +rt_sigqueueinfo EXTRA rt_sigqueueinfo i:iip __syscall_rt_sigqueueinfo rt_sigqueueinfo +rt_sigsuspend EXTRA rt_sigsuspend i:pi __syscall_rt_sigsuspend rt_sigsuspend +rt_sigtimedwait EXTRA rt_sigtimedwait i:pppi __syscall_rt_sigtimedwait rt_sigtimedwait diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S new file mode 100644 index 0000000000..7b216c8caf --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S @@ -0,0 +1,90 @@ +/* Copyright (C) 2001 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + 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> + +/* Because the Linux version is in fact m68k/ELF and the start.? file + for this system (sysdeps/m68k/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 place is here. */ + .bss + .globl errno + .type errno,@object + .size errno,4 +errno: + .space 4 +weak_alias (errno, _errno) + +/* The following code is only used in the shared library when we + compile the reentrant version. Otherwise each system call defines + each own version. */ + +/* The syscall stubs jump here when they detect an error. */ + +#undef CALL_MCOUNT +#define CALL_MCOUNT + + .text +ENTRY(__syscall_error) +#ifndef PIC +#ifndef _LIBC_REENTRANT + lcr %r2,%r2 + larl %r1,errno + st %r2,0(%r1) + lghi %r2,-1 + br %r14 +#else + stmg %r13,%r15,104(%r15) + lgr %r0,%r15 + aghi %r15,-160 + lcr %r13,%r2 + stg %r0,0(%r15) + brasl %r14,__errno_location + st %r13,0(%r2) + lmg %r13,%r15,264(%r15) + lghi %r2,-1 + br %r14 +#endif +#else +#ifndef _LIBC_REENTRANT + larl %r1,_GLOBAL_OFFSET_TABLE_ + lg %r1,errno@GOT(%r1) + lcr %r2,%r2 + st %r2,0(%r1) + lghi %r2,-1 + br %r14 +#else + stmg %r13,%r15,104(%r15) + lgr %r0,%r15 + aghi %r15,-160 + lcr %r13,%r2 + stg %r0,0(%r15) + brasl %r14,__errno_location@PLT + st %r13,0(%r2) + lmg %r13,%r15,264(%r15) + lghi %r2,-1 + br %r14 +#endif +#endif + +END (__syscall_error) + diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h new file mode 100644 index 0000000000..d52e623999 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h @@ -0,0 +1,164 @@ +/* Assembler macros for 64 bit S/390. + Copyright (C) 2001 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + 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 _LINUX_S390_SYSDEP_H +#define _LINUX_S390_SYSEDP_H + +#include <sysdeps/s390/s390-64/sysdep.h> +#include <sysdeps/unix/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. */ +/* In newer 2.1 kernels __NR_syscall is missing so we define it here. */ +#define __NR_syscall 0 + +#undef SYS_ify +#define SYS_ify(syscall_name) __NR_##syscall_name + +/* ELF-like local names start with `.L'. */ +#undef L +#define L(name) .L##name + +#ifdef __ASSEMBLER__ + +/* Linux uses a negative return value to indicate syscall errors, unlike + most Unices, which use the condition codes' carry flag. + + Since version 2.1 the return value of a system call might be negative + even if the call succeeded. E.g., the `lseek' system call might return + a large offset. Therefore we must not anymore test for < 0, but test + for a real error by making sure the value in gpr2 is a real error + number. Linus said he will make sure the no syscall returns a value + in -1 .. -4095 as a valid result so we can savely test with -4095. */ + +#define SYSCALL_ERROR_LABEL 0f + +#undef PSEUDO +#define PSEUDO(name, syscall_name, args) \ + .text; \ + ENTRY (name) \ + DO_CALL (args, syscall_name); \ + lghi %r4,-4095 ; \ + clgr %r2,%r4 ; \ + jnl SYSCALL_ERROR_LABEL ; \ + L(pseudo_end): + +#undef PSEUDO_END +#define PSEUDO_END(name) \ + SYSCALL_ERROR_HANDLER; \ + END (name) + +#ifndef _LIBC_REENTRANT +#ifndef PIC +#define SYSCALL_ERROR_HANDLER \ +0: lcr %r2,%r2 ; \ + larl %r1,errno ; \ + st %r2,0(%r1) ; \ + lghi %r2,-1 ; \ + br %r14 +#else +#define SYSCALL_ERROR_HANDLER \ +0: larl %r1,_GLOBAL_OFFSET_TABLE_ ; \ + lg %r1,errno@GOT(%r1) ; \ + lcr %r2,%r2 ; \ + st %r2,0(%r1) ; \ + lghi %r2,-1 ; \ + br %r14 +#endif /* PIC */ +#else +#define SYSCALL_ERROR_HANDLER \ +0: jg __syscall_error@PLT +#endif /* _LIBC_REENTRANT */ + +/* Linux takes system call arguments in registers: + + syscall number 1 call-clobbered + arg 1 2 call-clobbered + arg 2 3 call-clobbered + arg 3 4 call-clobbered + arg 4 5 call-clobbered + arg 5 6 call-saved + + (Of course a function with say 3 arguments does not have entries for + arguments 4 and 5.) + S390 does not need to do ANY stack operations to get its parameters + right. + */ + +#define DO_CALL(args, syscall) \ + svc SYS_ify (syscall) + +#define ret \ + br 14 + +#endif /* __ASSEMBLER__ */ + +#undef INLINE_SYSCALL +#define INLINE_SYSCALL(name, nr, args...) \ + ({ \ + DECLARGS_##nr(args) \ + int err; \ + asm volatile ( \ + LOADARGS_##nr \ + "svc %b1\n\t" \ + "lgr %0,%%r2\n\t" \ + : "=d" (err) \ + : "I" (__NR_##name) ASMFMT_##nr \ + : "memory", "cc", "2", "3", "4", "5", "6"); \ + if (err >= 0xfffff001) \ + { \ + __set_errno(-err); \ + err = -1; \ + } \ + (int) err; }) + +#define DECLARGS_0() +#define DECLARGS_1(arg1) \ + unsigned long gpr2 = (unsigned long) (arg1); +#define DECLARGS_2(arg1, arg2) \ + DECLARGS_1(arg1) \ + unsigned long gpr3 = (unsigned long) (arg2); +#define DECLARGS_3(arg1, arg2, arg3) \ + DECLARGS_2(arg1, arg2) \ + unsigned long gpr4 = (unsigned long) (arg3); +#define DECLARGS_4(arg1, arg2, arg3, arg4) \ + DECLARGS_3(arg1, arg2, arg3) \ + unsigned long gpr5 = (unsigned long) (arg4); +#define DECLARGS_5(arg1, arg2, arg3, arg4, arg5) \ + DECLARGS_4(arg1, arg2, arg3, arg4) \ + unsigned long gpr6 = (unsigned long) (arg5); + +#define LOADARGS_0 +#define LOADARGS_1 "LG 2,%2\n\t" +#define LOADARGS_2 LOADARGS_1 "LG 3,%3\n\t" +#define LOADARGS_3 LOADARGS_2 "LG 4,%4\n\t" +#define LOADARGS_4 LOADARGS_3 "LG 5,%5\n\t" +#define LOADARGS_5 LOADARGS_4 "LG 6,%6\n\t" + +#define ASMFMT_0 +#define ASMFMT_1 , "m" (gpr2) +#define ASMFMT_2 , "m" (gpr2), "m" (gpr3) +#define ASMFMT_3 , "m" (gpr2), "m" (gpr3), "m" (gpr4) +#define ASMFMT_4 , "m" (gpr2), "m" (gpr3), "m" (gpr4), "m" (gpr5) +#define ASMFMT_5 , "m" (gpr2), "m" (gpr3), "m" (gpr4), "m" (gpr5), "m" (gpr6) + +#endif /* _LINUX_S390_SYSDEP_H */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/truncate64.c b/sysdeps/unix/sysv/linux/s390/s390-64/truncate64.c new file mode 100644 index 0000000000..8999768874 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/truncate64.c @@ -0,0 +1 @@ +/* truncate64 is the same as truncate. */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/xstat.c b/sysdeps/unix/sysv/linux/s390/s390-64/xstat.c new file mode 100644 index 0000000000..788f785dcf --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/xstat.c @@ -0,0 +1,42 @@ +/* xstat using old-style Unix stat system call. 64 bit S/390 version. + Copyright (C) 2001 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. */ + +/* Ho hum, since xstat == xstat64 we must get rid of the prototype or gcc + will complain since they don't strictly match. */ +#define __xstat64 __xstat64_disable + +#include <errno.h> +#include <stddef.h> +#include <sys/stat.h> + +#include <sysdep.h> +#include <sys/syscall.h> + +extern int __syscall_stat (const char *, struct stat *); + +/* Get information about the file NAME in BUF. */ +int +__xstat (int vers, const char *name, struct stat *buf) +{ + return INLINE_SYSCALL (stat, 2, name, buf); +} + +weak_alias (__xstat, _xstat); +#undef __xstat64 +strong_alias (__xstat, __xstat64); diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/xstat64.c b/sysdeps/unix/sysv/linux/s390/s390-64/xstat64.c new file mode 100644 index 0000000000..e7acd3b45e --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/xstat64.c @@ -0,0 +1 @@ +/* xstat64 is in xstat.c */ |