From 7bf75551f0e18568435901a4362466a08646aca2 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Thu, 11 Jul 2002 21:44:15 +0000 Subject: [PATCH] Update. 2002-07-09 Martin Schwidefsky * sysdeps/s390/bits/byteswap.h: Unified 31/64 bit byteswap.h. * sysdeps/s390/s390-32/bits/byteswap.h: Remove. * sysdeps/s390/s390-64/bits/byteswap.h: Remove. * sysdeps/s390/bits/link.h: Unified 31/64 bit link.h. * sysdeps/s390/s390-32/bits/link.h: Remove. * sysdeps/s390/s390-64/bits/link.h: Remove. * sysdeps/s390/bits/setjmp.h: Unified 31/64 bit setjmp.h. * sysdeps/s390/s390-32/bits/setjmp.h: Remove. * sysdeps/s390/s390-64/bits/setjmp.h: Remove. * sysdeps/s390/bits/wordsize.h: New file. * sysdeps/unix/sysv/linux/s390/bits/elfclass.h: Unified 31/64 bit elfclass.h. * sysdeps/unix/sysv/linux/s390/s390-64/bits/elfclass.h: Remove. * sysdeps/unix/sysv/linux/s390/bits/fcntl.h: Unified 31/64 bit fcntl.h. * sysdeps/unix/sysv/linux/s390/s390-32/bits/fcntl.h: Remove. * sysdeps/unix/sysv/linux/s390/s390-64/bits/fcntl.h: Remove. * sysdeps/unix/sysv/linux/s390/bits/ipc.h: Unified 31/64 bit ipc.h. * sysdeps/unix/sysv/linux/s390/s390-64/bits/ipc.h: Remove. * sysdeps/unix/sysv/linux/s390/bits/mman.h: Unified 31/64 bit mman.h. * sysdeps/unix/sysv/linux/s390/s390-32/bits/mman.h: Remove. * sysdeps/unix/sysv/linux/s390/s390-64/bits/mman.h: Remove. * sysdeps/unix/sysv/linux/s390/bits/msq.h: Unified 31/64 bit msq.h. * ysdeps/unix/sysv/linux/s390/s390-64/bits/msq.h: Remove. * sysdeps/unix/sysv/linux/s390/bits/resource.h: Unified 31/64 bit resource.h. * sysdeps/unix/sysv/linux/s390/s390-32/bits/resource.h: Remove. * sysdeps/unix/sysv/linux/s390/s390-64/bits/resource.h: Remove. * sysdeps/unix/sysv/linux/s390/bits/sem.h: Unified 31/64 bit sem.h. * sysdeps/unix/sysv/linux/s390/s390-64/bits/sem.h: Remove. * sysdeps/unix/sysv/linux/s390/bits/shm.h: Unified 31/64 bit shm.h. * sysdeps/unix/sysv/linux/s390/s390-64/bits/shm.h: Remove. * sysdeps/unix/sysv/linux/s390/bits/sigaction.h: Unified 31/64 bit sigaction.h. * sysdeps/unix/sysv/linux/s390/s390-64/bits/sigaction.h: Remove. * sysdeps/unix/sysv/linux/s390/bits/siginfo.h: Unified 31/64 bit siginfo.h. * sysdeps/unix/sysv/linux/s390/s390-64/bits/siginfo.h: Remove. * sysdeps/unix/sysv/linux/s390/s390-64/bits/sigstack.h: Remove. * sysdeps/unix/sysv/linux/s390/bits/socket.h: Unified 31/64 bit socket.h. * sysdeps/unix/sysv/linux/s390/s390-64/bits/socket.h: Remove. * sysdeps/unix/sysv/linux/s390/bits/stat.h: Unified 31/64 bit stat.h. * sysdeps/unix/sysv/linux/s390/s390-32/bits/stat.h: Remove. * sysdeps/unix/sysv/linux/s390/s390-64/bits/stat.h: Remove. * sysdeps/unix/sysv/linux/s390/bits/types.h: Unified 31/64 bit types.h. * sysdeps/unix/sysv/linux/s390/s390-64/bits/types.h: Remove. * sysdeps/unix/sysv/linux/s390/net/route.h: New file. * sysdeps/unix/sysv/linux/s390/sys/procfs.h: Unified 31/64 bit procfs.h. * sysdeps/unix/sysv/linux/s390/s390-32/sys/procfs.h: Remove. * sysdeps/unix/sysv/linux/s390/s390-64/sys/procfs.h: Remove. * sysdeps/unix/sysv/linux/s390/sys/ucontext.h: Unified 31/64 bit ucontext.h. * sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h: Remove. * sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h: Remove. --- ChangeLog | 58 ++++++ sysdeps/s390/{s390-64 => }/bits/byteswap.h | 56 +++++- sysdeps/s390/bits/link.h | 13 ++ sysdeps/s390/{s390-32 => }/bits/setjmp.h | 9 +- sysdeps/s390/bits/wordsize.h | 7 + sysdeps/s390/s390-32/bits/byteswap.h | 91 ---------- sysdeps/s390/s390-32/bits/link.h | 5 - sysdeps/s390/s390-64/bits/link.h | 5 - sysdeps/s390/s390-64/bits/setjmp.h | 52 ------ .../sysv/linux/s390/{s390-64 => }/bits/elfclass.h | 7 +- .../sysv/linux/s390/{s390-32 => }/bits/fcntl.h | 60 ++++-- .../unix/sysv/linux/s390/{s390-64 => }/bits/ipc.h | 35 +--- .../unix/sysv/linux/s390/{s390-32 => }/bits/mman.h | 3 +- .../unix/sysv/linux/s390/{s390-64 => }/bits/msq.h | 38 ++-- .../sysv/linux/s390/{s390-32 => }/bits/resource.h | 36 ++-- .../unix/sysv/linux/s390/{s390-64 => }/bits/sem.h | 15 +- .../unix/sysv/linux/s390/{s390-64 => }/bits/shm.h | 23 ++- .../sysv/linux/s390/{s390-64 => }/bits/sigaction.h | 57 ++++-- .../sysv/linux/s390/{s390-64 => }/bits/siginfo.h | 19 +- .../sysv/linux/s390/{s390-64 => }/bits/socket.h | 16 +- .../unix/sysv/linux/s390/{s390-32 => }/bits/stat.h | 104 ++++++++--- .../sysv/linux/s390/{s390-64 => }/bits/types.h | 110 +++++++---- sysdeps/unix/sysv/linux/s390/s390-64/bits/fcntl.h | 174 ------------------ sysdeps/unix/sysv/linux/s390/s390-64/bits/mman.h | 94 ---------- .../unix/sysv/linux/s390/s390-64/bits/resource.h | 201 --------------------- .../unix/sysv/linux/s390/s390-64/bits/sigstack.h | 59 ------ sysdeps/unix/sysv/linux/s390/s390-64/bits/stat.h | 107 ----------- sysdeps/unix/sysv/linux/s390/s390-64/sys/procfs.h | 118 ------------ .../unix/sysv/linux/s390/s390-64/sys/ucontext.h | 84 --------- .../sysv/linux/s390/{s390-32 => }/sys/procfs.h | 7 +- .../sysv/linux/s390/{s390-32 => }/sys/ucontext.h | 8 +- 31 files changed, 521 insertions(+), 1150 deletions(-) rename sysdeps/s390/{s390-64 => }/bits/byteswap.h (61%) create mode 100644 sysdeps/s390/bits/link.h rename sysdeps/s390/{s390-32 => }/bits/setjmp.h (88%) create mode 100644 sysdeps/s390/bits/wordsize.h delete mode 100644 sysdeps/s390/s390-32/bits/byteswap.h delete mode 100644 sysdeps/s390/s390-32/bits/link.h delete mode 100644 sysdeps/s390/s390-64/bits/link.h delete mode 100644 sysdeps/s390/s390-64/bits/setjmp.h rename sysdeps/unix/sysv/linux/s390/{s390-64 => }/bits/elfclass.h (86%) rename sysdeps/unix/sysv/linux/s390/{s390-32 => }/bits/fcntl.h (77%) rename sysdeps/unix/sysv/linux/s390/{s390-64 => }/bits/ipc.h (76%) rename sysdeps/unix/sysv/linux/s390/{s390-32 => }/bits/mman.h (96%) rename sysdeps/unix/sysv/linux/s390/{s390-64 => }/bits/msq.h (66%) rename sysdeps/unix/sysv/linux/s390/{s390-32 => }/bits/resource.h (94%) rename sysdeps/unix/sysv/linux/s390/{s390-64 => }/bits/sem.h (91%) rename sysdeps/unix/sysv/linux/s390/{s390-64 => }/bits/shm.h (84%) rename sysdeps/unix/sysv/linux/s390/{s390-64 => }/bits/sigaction.h (60%) rename sysdeps/unix/sysv/linux/s390/{s390-64 => }/bits/siginfo.h (94%) rename sysdeps/unix/sysv/linux/s390/{s390-64 => }/bits/socket.h (96%) rename sysdeps/unix/sysv/linux/s390/{s390-32 => }/bits/stat.h (61%) rename sysdeps/unix/sysv/linux/s390/{s390-64 => }/bits/types.h (51%) delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/bits/fcntl.h delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/bits/mman.h delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/bits/resource.h delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/bits/sigstack.h delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/bits/stat.h delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/sys/procfs.h delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h rename sysdeps/unix/sysv/linux/s390/{s390-32 => }/sys/procfs.h (96%) rename sysdeps/unix/sysv/linux/s390/{s390-32 => }/sys/ucontext.h (94%) diff --git a/ChangeLog b/ChangeLog index c399d99..8a65319 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,61 @@ +2002-07-09 Martin Schwidefsky + + * sysdeps/s390/bits/byteswap.h: Unified 31/64 bit byteswap.h. + * sysdeps/s390/s390-32/bits/byteswap.h: Remove. + * sysdeps/s390/s390-64/bits/byteswap.h: Remove. + * sysdeps/s390/bits/link.h: Unified 31/64 bit link.h. + * sysdeps/s390/s390-32/bits/link.h: Remove. + * sysdeps/s390/s390-64/bits/link.h: Remove. + * sysdeps/s390/bits/setjmp.h: Unified 31/64 bit setjmp.h. + * sysdeps/s390/s390-32/bits/setjmp.h: Remove. + * sysdeps/s390/s390-64/bits/setjmp.h: Remove. + * sysdeps/s390/bits/wordsize.h: New file. + * sysdeps/unix/sysv/linux/s390/bits/elfclass.h: Unified 31/64 bit + elfclass.h. + * sysdeps/unix/sysv/linux/s390/s390-64/bits/elfclass.h: Remove. + * sysdeps/unix/sysv/linux/s390/bits/fcntl.h: Unified 31/64 bit fcntl.h. + * sysdeps/unix/sysv/linux/s390/s390-32/bits/fcntl.h: Remove. + * sysdeps/unix/sysv/linux/s390/s390-64/bits/fcntl.h: Remove. + * sysdeps/unix/sysv/linux/s390/bits/ipc.h: Unified 31/64 bit ipc.h. + * sysdeps/unix/sysv/linux/s390/s390-64/bits/ipc.h: Remove. + * sysdeps/unix/sysv/linux/s390/bits/mman.h: Unified 31/64 bit mman.h. + * sysdeps/unix/sysv/linux/s390/s390-32/bits/mman.h: Remove. + * sysdeps/unix/sysv/linux/s390/s390-64/bits/mman.h: Remove. + * sysdeps/unix/sysv/linux/s390/bits/msq.h: Unified 31/64 bit msq.h. + * ysdeps/unix/sysv/linux/s390/s390-64/bits/msq.h: Remove. + * sysdeps/unix/sysv/linux/s390/bits/resource.h: Unified 31/64 bit + resource.h. + * sysdeps/unix/sysv/linux/s390/s390-32/bits/resource.h: Remove. + * sysdeps/unix/sysv/linux/s390/s390-64/bits/resource.h: Remove. + * sysdeps/unix/sysv/linux/s390/bits/sem.h: Unified 31/64 bit sem.h. + * sysdeps/unix/sysv/linux/s390/s390-64/bits/sem.h: Remove. + * sysdeps/unix/sysv/linux/s390/bits/shm.h: Unified 31/64 bit shm.h. + * sysdeps/unix/sysv/linux/s390/s390-64/bits/shm.h: Remove. + * sysdeps/unix/sysv/linux/s390/bits/sigaction.h: Unified 31/64 bit + sigaction.h. + * sysdeps/unix/sysv/linux/s390/s390-64/bits/sigaction.h: Remove. + * sysdeps/unix/sysv/linux/s390/bits/siginfo.h: Unified 31/64 bit + siginfo.h. + * sysdeps/unix/sysv/linux/s390/s390-64/bits/siginfo.h: Remove. + * sysdeps/unix/sysv/linux/s390/s390-64/bits/sigstack.h: Remove. + * sysdeps/unix/sysv/linux/s390/bits/socket.h: Unified 31/64 bit + socket.h. + * sysdeps/unix/sysv/linux/s390/s390-64/bits/socket.h: Remove. + * sysdeps/unix/sysv/linux/s390/bits/stat.h: Unified 31/64 bit stat.h. + * sysdeps/unix/sysv/linux/s390/s390-32/bits/stat.h: Remove. + * sysdeps/unix/sysv/linux/s390/s390-64/bits/stat.h: Remove. + * sysdeps/unix/sysv/linux/s390/bits/types.h: Unified 31/64 bit types.h. + * sysdeps/unix/sysv/linux/s390/s390-64/bits/types.h: Remove. + * sysdeps/unix/sysv/linux/s390/net/route.h: New file. + * sysdeps/unix/sysv/linux/s390/sys/procfs.h: Unified 31/64 bit + procfs.h. + * sysdeps/unix/sysv/linux/s390/s390-32/sys/procfs.h: Remove. + * sysdeps/unix/sysv/linux/s390/s390-64/sys/procfs.h: Remove. + * sysdeps/unix/sysv/linux/s390/sys/ucontext.h: Unified 31/64 bit + ucontext.h. + * sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h: Remove. + * sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h: Remove. + 2002-07-11 Ulrich Drepper * Versions.def (libc): Add GLIBC_2.3. diff --git a/sysdeps/s390/s390-64/bits/byteswap.h b/sysdeps/s390/bits/byteswap.h similarity index 61% rename from sysdeps/s390/s390-64/bits/byteswap.h rename to sysdeps/s390/bits/byteswap.h index b8cfdb2..6a4b4ae 100644 --- a/sysdeps/s390/s390-64/bits/byteswap.h +++ b/sysdeps/s390/bits/byteswap.h @@ -1,5 +1,5 @@ -/* Macros to swap the order of bytes in integer values. 64 bit S/390 version. - Copyright (C) 2001, 2002 Free Software Foundation, Inc. +/* Macros to swap the order of bytes in integer values. s390 version. + Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). This file is part of the GNU C Library. @@ -22,6 +22,8 @@ # error "Never use directly; include instead." #endif +#include + #ifndef _BITS_BYTESWAP_H #define _BITS_BYTESWAP_H 1 @@ -30,7 +32,8 @@ /* Swap bytes in 16 bit value. */ #if defined __GNUC__ && __GNUC__ >= 2 -# define __bswap_16(x) \ +# if __WORDSIZE == 64 +# define __bswap_16(x) \ (__extension__ \ ({ unsigned short int __v; \ if (__builtin_constant_p (x)) \ @@ -42,6 +45,23 @@ : "=&d" (__v) : "m" (__tmp) ); \ } \ __v; })) +# else +# define __bswap_16(x) \ + (__extension__ \ + ({ unsigned short int __v; \ + if (__builtin_constant_p (x)) \ + __v = __bswap_constant_16 (x); \ + else { \ + unsigned short int __tmp = (unsigned short int) (x); \ + __asm__ __volatile__ ( \ + "sr %0,%0\n" \ + "la 1,%1\n" \ + "icm %0,2,1(1)\n" \ + "ic %0,0(1)" \ + : "=&d" (__v) : "m" (__tmp) : "1"); \ + } \ + __v; })) +# endif #else /* This is better than nothing. */ #define __bswap_16(x) __bswap_constant_16 (x) @@ -53,6 +73,7 @@ (((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24)) #if defined __GNUC__ && __GNUC__ >= 2 +# if __WORDSIZE == 64 # define __bswap_32(x) \ (__extension__ \ ({ unsigned int __v; \ @@ -65,6 +86,24 @@ : "=&d" (__v) : "m" (__tmp)); \ } \ __v; })) +# else +# define __bswap_32(x) \ + (__extension__ \ + ({ unsigned int __v; \ + if (__builtin_constant_p (x)) \ + __v = __bswap_constant_32 (x); \ + else { \ + unsigned int __tmp = (unsigned int) (x); \ + __asm__ __volatile__ ( \ + "la 1,%1\n" \ + "icm %0,8,3(1)\n" \ + "icm %0,4,2(1)\n" \ + "icm %0,2,1(1)\n" \ + "ic %0,0(1)" \ + : "=&d" (__v) : "m" (__tmp) : "1"); \ + } \ + __v; })) +# endif #else # define __bswap_32(x) __bswap_constant_32 (x) #endif @@ -77,6 +116,7 @@ (((x)&0x000000000000ff00) << 40) | (((x)&0x00000000000000ff) << 56)) #if defined __GNUC__ && __GNUC__ >= 2 +# if __WORDSIZE == 64 # define __bswap_64(x) \ (__extension__ \ ({ unsigned long __w; \ @@ -89,6 +129,16 @@ : "=&d" (__w) : "m" (__tmp)); \ } \ __w; })) +# else +# define __bswap_64(x) \ + __extension__ \ + ({ union { unsigned long long int __ll; \ + unsigned long int __l[2]; } __w, __r; \ + __w.__ll = (x); \ + __r.__l[0] = __bswap_32 (__w.__l[1]); \ + __r.__l[1] = __bswap_32 (__w.__l[0]); \ + __r.__ll; }) +# endif #else # define __bswap_64(x) __bswap_constant_64 (x) #endif diff --git a/sysdeps/s390/bits/link.h b/sysdeps/s390/bits/link.h new file mode 100644 index 0000000..fc1fba3 --- /dev/null +++ b/sysdeps/s390/bits/link.h @@ -0,0 +1,13 @@ +#if __WORDSIZE == 64 +struct link_map_machine + { + Elf64_Addr plt; /* Address of .plt + 0x2e */ + Elf64_Addr gotplt; /* Address of .got + 0x18 */ + }; +#else +struct link_map_machine + { + Elf32_Addr plt; /* Address of .plt + 0x2c */ + Elf32_Addr gotplt; /* Address of .got + 0x0c */ + }; +#endif diff --git a/sysdeps/s390/s390-32/bits/setjmp.h b/sysdeps/s390/bits/setjmp.h similarity index 88% rename from sysdeps/s390/s390-32/bits/setjmp.h rename to sysdeps/s390/bits/setjmp.h index 607cdaf..35bc9a5 100644 --- a/sysdeps/s390/s390-32/bits/setjmp.h +++ b/sysdeps/s390/bits/setjmp.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2000, 2001 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2001, 2002 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 @@ -21,6 +21,8 @@ #ifndef __S390_SETJMP_H__ #define __S390_SETJMP_H__ +#include + #define __JB_GPR6 0 #define __JB_GPR7 1 #define __JB_GPR8 2 @@ -38,8 +40,13 @@ typedef struct { /* We save registers 6-15. */ long int __gregs[10]; +#if __WORDSIZE == 64 + /* We save fpu registers 1, 3, 5 and 7. */ + long __fpregs[8]; +#else /* We save fpu registers 4 and 6. */ long __fpregs[4]; +#endif } __jmp_buf[1]; #endif diff --git a/sysdeps/s390/bits/wordsize.h b/sysdeps/s390/bits/wordsize.h new file mode 100644 index 0000000..4f50d85 --- /dev/null +++ b/sysdeps/s390/bits/wordsize.h @@ -0,0 +1,7 @@ +/* Determine the wordsize from the preprocessor defines. */ + +#if defined __s390x__ +# define __WORDSIZE 64 +#else +# define __WORDSIZE 32 +#endif diff --git a/sysdeps/s390/s390-32/bits/byteswap.h b/sysdeps/s390/s390-32/bits/byteswap.h deleted file mode 100644 index ae12804..0000000 --- a/sysdeps/s390/s390-32/bits/byteswap.h +++ /dev/null @@ -1,91 +0,0 @@ -/* Macros to swap the order of bytes in integer values. s390 version. - Copyright (C) 2000, 2001, 2002 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 Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#if !defined _BYTESWAP_H && !defined _NETINET_IN_H -# error "Never use directly; include instead." -#endif - -#ifndef _BITS_BYTESWAP_H -#define _BITS_BYTESWAP_H 1 - -#define __bswap_constant_16(x) \ - ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)) - -/* Swap bytes in 16 bit value. */ -#if defined __GNUC__ && __GNUC__ >= 2 -# define __bswap_16(x) \ - (__extension__ \ - ({ unsigned short int __v; \ - if (__builtin_constant_p (x)) \ - __v = __bswap_constant_16 (x); \ - else { \ - unsigned short int __tmp = (unsigned short int) (x); \ - __asm__ __volatile__ ( \ - "sr %0,%0\n" \ - "la 1,%1\n" \ - "icm %0,2,1(1)\n" \ - "ic %0,0(1)" \ - : "=&d" (__v) : "m" (__tmp) : "1"); \ - } \ - __v; })) -#else -/* This is better than nothing. */ -#define __bswap_16(x) __bswap_constant_16 (x) -#endif - -/* Swap bytes in 32 bit value. */ -#define __bswap_constant_32(x) \ - ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \ - (((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24)) - -#if defined __GNUC__ && __GNUC__ >= 2 -# define __bswap_32(x) \ - (__extension__ \ - ({ unsigned int __v; \ - if (__builtin_constant_p (x)) \ - __v = __bswap_constant_32 (x); \ - else { \ - unsigned int __tmp = (unsigned int) (x); \ - __asm__ __volatile__ ( \ - "la 1,%1\n" \ - "icm %0,8,3(1)\n" \ - "icm %0,4,2(1)\n" \ - "icm %0,2,1(1)\n" \ - "ic %0,0(1)" \ - : "=&d" (__v) : "m" (__tmp) : "1"); \ - } \ - __v; })) -#else -# define __bswap_32(x) __bswap_constant_32 (x) -#endif - -#if defined __GNUC__ && __GNUC__ >= 2 -/* Swap bytes in 64 bit value. */ -# define __bswap_64(x) \ - __extension__ \ - ({ union { unsigned long long int __ll; \ - unsigned long int __l[2]; } __w, __r; \ - __w.__ll = (x); \ - __r.__l[0] = __bswap_32 (__w.__l[1]); \ - __r.__l[1] = __bswap_32 (__w.__l[0]); \ - __r.__ll; }) -#endif - -#endif /* _BITS_BYTESWAP_H */ diff --git a/sysdeps/s390/s390-32/bits/link.h b/sysdeps/s390/s390-32/bits/link.h deleted file mode 100644 index 962cf56..0000000 --- a/sysdeps/s390/s390-32/bits/link.h +++ /dev/null @@ -1,5 +0,0 @@ -struct link_map_machine - { - Elf32_Addr plt; /* Address of .plt + 0x2c */ - Elf32_Addr gotplt; /* Address of .got + 0x0c */ - }; diff --git a/sysdeps/s390/s390-64/bits/link.h b/sysdeps/s390/s390-64/bits/link.h deleted file mode 100644 index 34add4f..0000000 --- a/sysdeps/s390/s390-64/bits/link.h +++ /dev/null @@ -1,5 +0,0 @@ -struct link_map_machine - { - Elf64_Addr plt; /* Address of .plt + 0x2e */ - Elf64_Addr gotplt; /* Address of .got + 0x18 */ - }; diff --git a/sysdeps/s390/s390-64/bits/setjmp.h b/sysdeps/s390/s390-64/bits/setjmp.h deleted file mode 100644 index 1bb3645..0000000 --- a/sysdeps/s390/s390-64/bits/setjmp.h +++ /dev/null @@ -1,52 +0,0 @@ -/* 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 Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -/* Define the machine-dependent type `jmp_buf'. 64 bit S/390 version. */ - -#ifndef __S390_SETJMP_H__ -#define __S390_SETJMP_H__ - -#define __JB_GPR6 0 -#define __JB_GPR7 1 -#define __JB_GPR8 2 -#define __JB_GPR9 3 -#define __JB_GPR10 4 -#define __JB_GPR11 5 -#define __JB_GPR12 6 -#define __JB_GPR13 7 -#define __JB_GPR14 8 -#define __JB_GPR15 9 - -#ifndef _ASM - -typedef struct { - /* We save registers 6-15. */ - long int __gregs[10]; - - /* We save fpu registers 4 and 6. */ - long __fpregs[8]; -} __jmp_buf[1]; - -#endif - -/* Test if longjmp to JMPBUF would unwind the frame - containing a local variable at ADDRESS. */ -#define _JMPBUF_UNWINDS(jmpbuf, address) \ - ((void *) (address) < (void *) (jmpbuf)->__gregs[__JB_GPR15]) - -#endif /* __S390_SETJMP_H__ */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/bits/elfclass.h b/sysdeps/unix/sysv/linux/s390/bits/elfclass.h similarity index 86% rename from sysdeps/unix/sysv/linux/s390/s390-64/bits/elfclass.h rename to sysdeps/unix/sysv/linux/s390/bits/elfclass.h index e78ba82..dd3d028 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/bits/elfclass.h +++ b/sysdeps/unix/sysv/linux/s390/bits/elfclass.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2001 Free Software Foundation, Inc. +/* Copyright (C) 2001, 2002 Free Software Foundation, Inc. Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). This file is part of the GNU C Library. @@ -29,6 +29,11 @@ #define __ELF_NATIVE_CLASS __WORDSIZE +#if __WORDSIZE == 64 /* 64 bit Linux for S/390 is exceptional as it has .hash section with 64 bit entries. */ typedef uint64_t Elf_Symndx; +#else +/* 32 bit Linux for S/390 has normal .hash section entries with 32 bits. */ +typedef uint32_t Elf_Symndx; +#endif diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/bits/fcntl.h b/sysdeps/unix/sysv/linux/s390/bits/fcntl.h similarity index 77% rename from sysdeps/unix/sysv/linux/s390/s390-32/bits/fcntl.h rename to sysdeps/unix/sysv/linux/s390/bits/fcntl.h index 240a3dc..3fd044a 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/s390/bits/fcntl.h @@ -1,5 +1,5 @@ /* O_*, F_*, FD_* bit values for Linux. - Copyright (C) 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 2000, 2001, 2002 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 @@ -21,8 +21,8 @@ # error "Never use directly; include instead." #endif - #include +#include /* open/fcntl - O_SYNC is only implemented on blocks devices and on files located on an ext2 file system */ @@ -47,6 +47,15 @@ # define O_NOFOLLOW 0400000 /* Do not follow links. */ #endif +#ifdef __USE_LARGEFILE64 +# if __WORDSIZE == 64 +/* Not necessary, files are always with 64bit off_t. */ +# define O_LARGEFILE 0 +# else +# define O_LARGEFILE 0100000 +# endif +#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. */ @@ -55,28 +64,34 @@ # define O_RSYNC O_SYNC /* Synchronize read operations. */ #endif -#ifdef __USE_LARGEFILE64 -# define O_LARGEFILE 0100000 -#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. */ -#ifndef __USE_FILE_OFFSET64 -#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). */ +#if __WORDSIZE == 64 +# 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). */ #else -# define F_GETLK F_GETLK64 /* Get record locking info. */ -# define F_SETLK F_SETLK64 /* Set record locking info (non-blocking).*/ -# define F_SETLKW F_SETLKW64 /* Set record locking info (blocking). */ +# ifndef __USE_FILE_OFFSET64 +# 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). */ +# else +# define F_GETLK F_GETLK64 /* Get record locking info. */ +# define F_SETLK F_SETLK64 /* Set record locking info (non-blocking).*/ +# define F_SETLKW F_SETLKW64 /* Set record locking info (blocking). */ +# endif +# define F_GETLK64 12 /* Get record locking info. */ +# define F_SETLK64 13 /* Set record locking info (non-blocking). */ +# define F_SETLKW64 14 /* Set record locking info (blocking). */ #endif -#define F_GETLK64 12 /* Get record locking info. */ -#define F_SETLK64 13 /* Set record locking info (non-blocking). */ -#define F_SETLKW64 14 /* Set record locking info (blocking). */ #if defined __USE_BSD || defined __USE_XOPEN2K # define F_SETOWN 8 /* Get owner of socket (receiver of SIGIO). */ @@ -107,7 +122,7 @@ #define F_SHLCK 8 /* or 4 */ #ifdef __USE_BSD -/* operations for bsd flock(), also used by the kernel implementation */ +/* 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 @@ -137,7 +152,7 @@ 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'). */ -#ifndef __USE_FILE_OFFSET64 +#if __WORDSIZE == 64 || !defined __USE_FILE_OFFSET64 __off_t l_start; /* Offset where the lock begins. */ __off_t l_len; /* Size of the locked area; zero means until EOF. */ #else @@ -174,6 +189,11 @@ struct flock64 # 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 4 /* Don't need these pages. */ -# define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */ +# if __WORDSIZE == 64 +# define POSIX_FADV_DONTNEED 6 /* Don't need these pages. */ +# define POSIX_FADV_NOREUSE 7 /* Data will be accessed once. */ +# else +# define POSIX_FADV_DONTNEED 4 /* Don't need these pages. */ +# define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */ +# endif #endif diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/bits/ipc.h b/sysdeps/unix/sysv/linux/s390/bits/ipc.h similarity index 76% rename from sysdeps/unix/sysv/linux/s390/s390-64/bits/ipc.h rename to sysdeps/unix/sysv/linux/s390/bits/ipc.h index 0b1bc7e..e3a82d0 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/bits/ipc.h +++ b/sysdeps/unix/sysv/linux/s390/bits/ipc.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2001 Free Software Foundation, Inc. +/* Copyright (C) 2001, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -20,7 +20,8 @@ # error "Never use directly; include instead." #endif -#include +#include +#include /* Mode bits for `msgget', `semget', and `shmget'. */ #define IPC_CREAT 01000 /* Create key if key does not exist. */ @@ -47,32 +48,14 @@ struct ipc_perm __gid_t gid; /* Owner's group ID. */ __uid_t cuid; /* Creator's user ID. */ __gid_t cgid; /* Creator's group ID. */ +#if __WORDSIZE == 64 __mode_t mode; /* Read/write permission. */ - unsigned short int __seq; /* Sequence number. */ +#else + unsigned short int mode; /* Read/write permission. */ unsigned short int __pad1; +#endif + unsigned short int __seq; /* Sequence number. */ + unsigned short int __pad2; 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-32/bits/mman.h b/sysdeps/unix/sysv/linux/s390/bits/mman.h similarity index 96% rename from sysdeps/unix/sysv/linux/s390/s390-32/bits/mman.h rename to sysdeps/unix/sysv/linux/s390/bits/mman.h index 2926b04..35a8d18 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/bits/mman.h +++ b/sysdeps/unix/sysv/linux/s390/bits/mman.h @@ -1,5 +1,5 @@ /* Definitions for POSIX memory map interface. Linux/s390 version. - Copyright (C) 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 2000, 2001, 2002 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 @@ -53,6 +53,7 @@ /* 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. */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/bits/msq.h b/sysdeps/unix/sysv/linux/s390/bits/msq.h similarity index 66% rename from sysdeps/unix/sysv/linux/s390/s390-64/bits/msq.h rename to sysdeps/unix/sysv/linux/s390/bits/msq.h index 6643c83..ecdd03e 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/bits/msq.h +++ b/sysdeps/unix/sysv/linux/s390/bits/msq.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2001 Free Software Foundation, Inc. +/* Copyright (C) 2001, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -17,31 +17,47 @@ 02111-1307 USA. */ #ifndef _SYS_MSG_H -#error "Never use directly; include instead." +# error "Never use directly; include instead." #endif -#include +#include +#include -/* Define options for message queue functions. */ +/* 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 */ +#ifdef __USE_GNU +# define MSG_EXCEPT 020000 /* recv any msg except of specified type */ +#endif + +/* Types used in the structure definition. */ +typedef unsigned long int msgqnum_t; +typedef unsigned long int msglen_t; /* Structure of record for one message inside the kernel. - The type `struct __msg' is opaque. */ + 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 */ +#if __WORDSIZE != 64 + unsigned long int __unused1; +#endif __time_t msg_rtime; /* time of last msgrcv command */ +#if __WORDSIZE != 64 + unsigned long int __unused2; +#endif __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 */ +#if __WORDSIZE != 64 + unsigned long int __unused3; +#endif + unsigned long int __msg_cbytes; /* current number of bytes on queue */ + msgqnum_t msg_qnum; /* number of messages currently on queue */ + msglen_t 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; + unsigned long int __unused4; + unsigned long int __unused5; }; #ifdef __USE_MISC diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/bits/resource.h b/sysdeps/unix/sysv/linux/s390/bits/resource.h similarity index 94% rename from sysdeps/unix/sysv/linux/s390/s390-32/bits/resource.h rename to sysdeps/unix/sysv/linux/s390/bits/resource.h index 204c293..dd0f463 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/bits/resource.h +++ b/sysdeps/unix/sysv/linux/s390/bits/resource.h @@ -22,6 +22,7 @@ #endif #include +#include /* Transmute defines to enumerations. The macro re-definitions are necessary because some programs want to test for operating system @@ -58,24 +59,24 @@ enum __rlimit_resource 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 - /* Address space limit. */ - RLIMIT_AS = 9, -#define RLIMIT_AS RLIMIT_AS - - /* Number of processes. */ - RLIMIT_NPROC = 6, -#define RLIMIT_NPROC RLIMIT_NPROC - /* Locked-in-memory address space. */ RLIMIT_MEMLOCK = 8, #define RLIMIT_MEMLOCK RLIMIT_MEMLOCK + /* Address space limit. */ + RLIMIT_AS = 9, +#define RLIMIT_AS RLIMIT_AS + /* Maximum number of file locks. */ RLIMIT_LOCKS = 10, #define RLIMIT_LOCKS RLIMIT_LOCKS @@ -87,14 +88,22 @@ enum __rlimit_resource }; /* Value to indicate that there is no limit. */ -#ifndef __USE_FILE_OFFSET64 -# define RLIM_INFINITY ((unsigned long int) (~0UL)) +#if __WORDSIZE == 64 +# define RLIM_INFINITY ~0UL #else -# define RLIM_INFINITY 0xffffffffffffffffuLL +# ifndef __USE_FILE_OFFSET64 +# define RLIM_INFINITY ((unsigned long int) (~0UL)) +# else +# define RLIM_INFINITY 0xffffffffffffffffuLL +# endif #endif #ifdef __USE_LARGEFILE64 -# define RLIM64_INFINITY 0xffffffffffffffffuLL +# if __WORDSIZE == 64 +# define RLIM64_INFINITY ~0UL +# else +# define RLIM64_INFINITY 0xffffffffffffffffuLL +# endif #endif /* We can represent all limits. */ @@ -103,11 +112,12 @@ enum __rlimit_resource /* Type for resource quantity measurement. */ -#ifndef __USE_FILE_OFFSET64 +#if __WORDSIZE != 64 && !defined(__USE_FILE_OFFSET64) typedef __rlim_t rlim_t; #else typedef __rlim64_t rlim_t; #endif + #ifdef __USE_LARGEFILE64 typedef __rlim64_t rlim64_t; #endif diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/bits/sem.h b/sysdeps/unix/sysv/linux/s390/bits/sem.h similarity index 91% rename from sysdeps/unix/sysv/linux/s390/s390-64/bits/sem.h rename to sysdeps/unix/sysv/linux/s390/bits/sem.h index 1ab1c85..1fb152c 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/bits/sem.h +++ b/sysdeps/unix/sysv/linux/s390/bits/sem.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2001 Free Software Foundation, Inc. +/* Copyright (C) 2001, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -20,7 +20,8 @@ # error "Never include directly; use instead." #endif -#include +#include +#include /* Flags for `semop'. */ #define SEM_UNDO 0x1000 /* undo the operation on exit */ @@ -40,10 +41,16 @@ 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 */ +#if __WORDSIZE != 64 unsigned long int __unused1; +#endif + __time_t sem_ctime; /* last time changed by semctl() */ +#if __WORDSIZE != 64 unsigned long int __unused2; +#endif + unsigned long int sem_nsems; /* number of semaphores in set */ + unsigned long int __unused3; + unsigned long int __unused4; }; /* The user should define a union like the following to use it for arguments diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/bits/shm.h b/sysdeps/unix/sysv/linux/s390/bits/shm.h similarity index 84% rename from sysdeps/unix/sysv/linux/s390/s390-64/bits/shm.h rename to sysdeps/unix/sysv/linux/s390/bits/shm.h index fa8aa25..38e0e92 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/bits/shm.h +++ b/sysdeps/unix/sysv/linux/s390/bits/shm.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2001 Free Software Foundation, Inc. +/* Copyright (C) 2001, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -20,7 +20,8 @@ # error "Never include directly; use instead." #endif -#include +#include +#include /* Permission flag for shmget. */ #define SHM_R 0400 /* or S_IRUGO from */ @@ -36,19 +37,31 @@ #define SHM_UNLOCK 12 /* unlock segment (root only) */ +/* Type to count number of attaches. */ +typedef unsigned long int shmatt_t; + /* 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() */ +#if __WORDSIZE != 64 + unsigned long int __unused1; +#endif __time_t shm_dtime; /* time of last shmdt() */ +#if __WORDSIZE != 64 + unsigned long int __unused2; +#endif __time_t shm_ctime; /* time of last change by shmctl() */ +#if __WORDSIZE != 64 + unsigned long int __unused3; +#endif __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; + shmatt_t shm_nattch; /* number of current attaches */ + unsigned long int __unused4; + unsigned long int __unused5; }; #ifdef __USE_MISC diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/bits/sigaction.h b/sysdeps/unix/sysv/linux/s390/bits/sigaction.h similarity index 60% rename from sysdeps/unix/sysv/linux/s390/s390-64/bits/sigaction.h rename to sysdeps/unix/sysv/linux/s390/bits/sigaction.h index 38af8d8..308cb5b 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/bits/sigaction.h +++ b/sysdeps/unix/sysv/linux/s390/bits/sigaction.h @@ -1,5 +1,5 @@ -/* Definitions for 64 bit S/390 sigaction. 64 bit S/390 version. - Copyright (C) 2001 Free Software Foundation, Inc. +/* Definitions for 31 & 64 bit S/390 sigaction. + Copyright (C) 2001, 2002 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 @@ -21,6 +21,9 @@ # error "Never include directly; use instead." #endif +#include + +#if __WORDSIZE == 64 /* Structure describing the action to be taken when a signal arrives. */ struct sigaction { @@ -49,19 +52,51 @@ struct sigaction /* Additional set of signals to be blocked. */ __sigset_t sa_mask; }; +#else +/* 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 + + /* Additional set of signals to be blocked. */ + __sigset_t sa_mask; + + /* Special flags. */ + int sa_flags; + + /* Restore handler. */ + void (*sa_restorer) (void); + }; +#endif -/* Bits in `sa_flags'. */ -#define SA_NOCLDSTOP 0x00000001 /* Don't send SIGCHLD when children stop. */ -#define SA_SIGINFO 0x00000004 +/* Bits in `sa_flags'. */ +#define SA_NOCLDSTOP 1 /* Don't send SIGCHLD when children stop. */ +#define SA_NOCLDWAIT 2 /* Don't create zombie on child death. */ +#define SA_SIGINFO 4 /* Invoke signal-catching function with + three arguments instead of one. */ #if defined __USE_UNIX98 || defined __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_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. */ +# define SA_INTERRUPT 0x20000000 /* Historical no-op. */ /* Some aliases for the SA_ constants. */ # define SA_NOMASK SA_NODEFER @@ -70,6 +105,6 @@ struct sigaction #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 */ +#define SIG_BLOCK 0 /* Block signals. */ +#define SIG_UNBLOCK 1 /* Unblock signals. */ +#define SIG_SETMASK 2 /* Set the set of blocked signals. */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/bits/siginfo.h b/sysdeps/unix/sysv/linux/s390/bits/siginfo.h similarity index 94% rename from sysdeps/unix/sysv/linux/s390/s390-64/bits/siginfo.h rename to sysdeps/unix/sysv/linux/s390/bits/siginfo.h index eb69c68..1df3732 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/bits/siginfo.h +++ b/sysdeps/unix/sysv/linux/s390/bits/siginfo.h @@ -1,5 +1,5 @@ -/* siginfo_t, sigevent and constants. 64 bit S/390 version. - Copyright (C) 2001 Free Software Foundation, Inc. +/* siginfo_t, sigevent and constants. S/390 version. + Copyright (C) 2001, 2002 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 @@ -22,6 +22,8 @@ # error "Never include this file directly. Use instead" #endif +#include + #if (!defined __have_sigval_t \ && (defined _SIGNAL_H || defined __need_siginfo_t \ || defined __need_sigevent_t)) @@ -40,7 +42,11 @@ typedef union sigval # define __have_siginfo_t 1 # define __SI_MAX_SIZE 128 -# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4) +# if __WORDSIZE == 64 +# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4) +# else +# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3) +# endif typedef struct siginfo { @@ -118,6 +124,7 @@ typedef struct siginfo # 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 @@ -256,7 +263,11 @@ enum /* Structure to transport application-defined values with signals. */ # define __SIGEV_MAX_SIZE 64 -# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4) +# if __WORDSIZE == 64 +# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4) +# else +# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3) +# endif /* Forward declaration of the `pthread_attr_t' type. */ struct __pthread_attr_s; diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/bits/socket.h b/sysdeps/unix/sysv/linux/s390/bits/socket.h similarity index 96% rename from sysdeps/unix/sysv/linux/s390/s390-64/bits/socket.h rename to sysdeps/unix/sysv/linux/s390/bits/socket.h index 3b68956..0bdd8db 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/bits/socket.h +++ b/sysdeps/unix/sysv/linux/s390/bits/socket.h @@ -1,5 +1,5 @@ /* System-specific socket constants and types. Linux/s390 version. - Copyright (C) 2001 Free Software Foundation, Inc. + Copyright (C) 2001, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -18,12 +18,14 @@ 02111-1307 USA. */ #ifndef __BITS_SOCKET_H -#define __BITS_SOCKET_H 1 +#define __BITS_SOCKET_H #if !defined _SYS_SOCKET_H && !defined _NETINET_IN_H # error "Never include directly; use instead." #endif +#include + #define __need_size_t #define __need_NULL #include @@ -218,10 +220,18 @@ struct msghdr socklen_t msg_namelen; /* Length of address data. */ struct iovec *msg_iov; /* Vector of data to send/receive into. */ +#if __WORDSIZE == 64 size_t msg_iovlen; /* Number of elements in the vector. */ +#else + int msg_iovlen; /* Number of elements in the vector. */ +#endif void *msg_control; /* Ancillary data (eg BSD filedesc passing). */ +#if __WORDSIZE == 64 size_t msg_controllen; /* Ancillary data buffer length. */ +#else + socklen_t msg_controllen; /* Ancillary data buffer length. */ +#endif int msg_flags; /* Flags on received message. */ }; @@ -269,7 +279,7 @@ __cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg) __THROW __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len)); - if ((unsigned char *) (__cmsg + 1) >= ((unsigned char *) __mhdr->msg_control + if ((unsigned char *) (__cmsg + 1) > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen) || ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len) > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen))) diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/bits/stat.h b/sysdeps/unix/sysv/linux/s390/bits/stat.h similarity index 61% rename from sysdeps/unix/sysv/linux/s390/s390-32/bits/stat.h rename to sysdeps/unix/sysv/linux/s390/bits/stat.h index 4e06b05..419a415 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/bits/stat.h +++ b/sysdeps/unix/sysv/linux/s390/bits/stat.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1992,95,96,97,98,99,2000,2001 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -20,61 +20,120 @@ # error "Never include directly; use instead." #endif +#include + +#if __WORDSIZE == 64 /* Versions of the `struct stat' data structure. */ -#define _STAT_VER_LINUX_OLD 1 -#define _STAT_VER_KERNEL 1 -#define _STAT_VER_SVR4 2 -#define _STAT_VER_LINUX 3 -#define _STAT_VER _STAT_VER_LINUX /* The one defined below. */ +# 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 1 -#define _MKNOD_VER_SVR4 2 -#define _MKNOD_VER _MKNOD_VER_LINUX /* The bits defined below. */ +/* Versions of the `xmknod' interface. */ +#define _MKNOD_VER_LINUX 0 +#else +/* Versions of the `struct stat' data structure. */ +# define _STAT_VER_LINUX_OLD 1 +# define _STAT_VER_KERNEL 1 +# define _STAT_VER_SVR4 2 +# define _STAT_VER_LINUX 3 +# define _STAT_VER _STAT_VER_LINUX +/* Versions of the `xmknod' interface. */ +# define _MKNOD_VER_LINUX 1 +# define _MKNOD_VER_SVR4 2 +# define _MKNOD_VER _MKNOD_VER_LINUX +#endif +#if __WORDSIZE == 64 +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]; + }; +#else struct stat { __dev_t st_dev; /* Device. */ unsigned int __pad1; -#ifndef __USE_FILE_OFFSET64 +# ifndef __USE_FILE_OFFSET64 __ino_t st_ino; /* File serial number. */ -#else +# else __ino_t __st_ino; /* 32bit file serial number. */ -#endif +# endif __mode_t st_mode; /* File mode. */ __nlink_t st_nlink; /* Link count. */ __uid_t st_uid; /* User ID of the file's owner. */ __gid_t st_gid; /* Group ID of the file's group.*/ __dev_t st_rdev; /* Device number, if device. */ unsigned int __pad2; -#ifndef __USE_FILE_OFFSET64 +# ifndef __USE_FILE_OFFSET64 __off_t st_size; /* Size of file, in bytes. */ -#else +# else __off64_t st_size; /* Size of file, in bytes. */ -#endif +# endif __blksize_t st_blksize; /* Optimal block size for I/O. */ -#ifndef __USE_FILE_OFFSET64 +# ifndef __USE_FILE_OFFSET64 __blkcnt_t st_blocks; /* Number 512-byte blocks allocated. */ -#else +# else __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */ -#endif +# endif __time_t st_atime; /* Time of last access. */ unsigned long int __unused1; __time_t st_mtime; /* Time of last modification. */ unsigned long int __unused2; __time_t st_ctime; /* Time of last status change. */ unsigned long int __unused3; -#ifndef __USE_FILE_OFFSET64 +# ifndef __USE_FILE_OFFSET64 unsigned long int __unused4; unsigned long int __unused5; -#else +# else __ino64_t st_ino; /* File serial number. */ -#endif +# endif }; +#endif #ifdef __USE_LARGEFILE64 +# if __WORDSIZE == 64 +/* 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]; + }; +# else struct stat64 { __dev_t st_dev; /* Device. */ @@ -99,6 +158,7 @@ struct stat64 unsigned long int __unused3; __ino64_t st_ino; /* File serial number. */ }; +# endif #endif /* Tell code we have these members. */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/bits/types.h b/sysdeps/unix/sysv/linux/s390/bits/types.h similarity index 51% rename from sysdeps/unix/sysv/linux/s390/s390-64/bits/types.h rename to sysdeps/unix/sysv/linux/s390/bits/types.h index cb40434..693fcee 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/bits/types.h +++ b/sysdeps/unix/sysv/linux/s390/bits/types.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2001 Free Software Foundation, Inc. +/* Copyright (C) 2001, 2002 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 @@ -28,44 +28,61 @@ #define __need_size_t #include +#include + /* Convenience types. */ typedef unsigned char __u_char; -typedef unsigned short int __u_short; +typedef unsigned short __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 unsigned long __u_long; +#if __WORDSIZE == 64 +typedef unsigned long __u_quad_t; +typedef long __quad_t; +#else +# ifdef __GLIBC_HAVE_LONG_LONG +__extension__ typedef unsigned long long int __u_quad_t; +__extension__ typedef long long int __quad_t; +# else +typedef struct + { + long int __val[2]; + } __quad_t; +typedef struct + { + __u_long __val[2]; + } __u_quad_t; +# endif +#endif 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; +#if __WORDSIZE == 64 typedef signed long int __int64_t; typedef unsigned long int __uint64_t; +#else +# ifdef __GLIBC_HAVE_LONG_LONG +__extension__ typedef signed long long int __int64_t; +__extension__ typedef unsigned long long int __uint64_t; +# endif +#endif 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 __u_quad_t __dev_t; /* Type of device numbers. */ +typedef __u_int __uid_t; /* Type of user identifications. */ +typedef __u_int __gid_t; /* Type of group identifications. */ +typedef __u_long __ino_t; /* Type of file serial numbers. */ +typedef __u_int __mode_t; /* Type of file attribute bitmasks. */ +typedef __u_long __nlink_t; /* Type of file link counts. */ +typedef long int __off_t; /* Type of file sizes and offsets. */ +typedef __quad_t __loff_t; /* Type of file sizes and offsets. */ +typedef int __pid_t; /* Type of process identifications. */ +typedef long __ssize_t; /* Type of a byte count, or error. */ +typedef __u_long __rlim_t; /* Type of resource counts. */ +typedef __u_quad_t __rlim64_t; /* Type of resource counts (LFS). */ +typedef __u_int __id_t; /* General type for ID. */ typedef struct { @@ -73,14 +90,14 @@ typedef struct } __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 int __daddr_t; /* The type of a disk address. */ +typedef char *__caddr_t; 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; @@ -88,14 +105,42 @@ typedef int __clockid_t; /* Timer ID returned by `timer_create'. */ typedef int __timer_t; + +/* Number of descriptors that can fit in an `fd_set'. */ +#define __FD_SETSIZE 1024 + + +typedef int __key_t; + /* Used in `struct shmid_ds'. */ +#if __WORDSIZE == 64 typedef int __ipc_pid_t; +#else +typedef unsigned short int __ipc_pid_t; +#endif -/* type to represent block size. */ +/* Type to represent block size. */ typedef long int __blksize_t; -/* Number of descriptors that can fit in an `fd_set'. */ -#define __FD_SETSIZE 1024 +/* Types from the Large File Support interface. */ + +/* Type to count number os disk blocks. */ +typedef long int __blkcnt_t; +typedef __quad_t __blkcnt64_t; + +/* Type to count file system blocks. */ +typedef __u_long __fsblkcnt_t; +typedef __u_quad_t __fsblkcnt64_t; + +/* Type to count file system inodes. */ +typedef __u_long __fsfilcnt_t; +typedef __u_quad_t __fsfilcnt64_t; + +/* Type of file serial numbers. */ +typedef __u_quad_t __ino64_t; + +/* Type of file sizes and offsets. */ +typedef __loff_t __off64_t; /* Used in XTI. */ typedef int __t_scalar_t; @@ -107,6 +152,7 @@ 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 diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/bits/fcntl.h b/sysdeps/unix/sysv/linux/s390/s390-64/bits/fcntl.h deleted file mode 100644 index 87605f9..0000000 --- a/sysdeps/unix/sysv/linux/s390/s390-64/bits/fcntl.h +++ /dev/null @@ -1,174 +0,0 @@ -/* 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 Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; 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 directly; include instead." -#endif - - -#include - -/* 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/mman.h b/sysdeps/unix/sysv/linux/s390/s390-64/bits/mman.h deleted file mode 100644 index 2da4914..0000000 --- a/sysdeps/unix/sysv/linux/s390/s390-64/bits/mman.h +++ /dev/null @@ -1,94 +0,0 @@ -/* 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 Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; 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 directly; include 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/resource.h b/sysdeps/unix/sysv/linux/s390/s390-64/bits/resource.h deleted file mode 100644 index 1df6871..0000000 --- a/sysdeps/unix/sysv/linux/s390/s390-64/bits/resource.h +++ /dev/null @@ -1,201 +0,0 @@ -/* Bit values & structures for resource limits. 64 bit S/390 version. - Copyright (C) 2001, 2002 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 Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; 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 directly; include instead." -#endif - -#include - -/* 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 - - /* Maximum number of file locks. */ - RLIMIT_LOCKS = 10, -#define RLIMIT_LOCKS RLIMIT_LOCKS - - RLIMIT_NLIMITS = 11, - RLIM_NLIMITS = RLIMIT_NLIMITS -#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 /* 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/sigstack.h b/sysdeps/unix/sysv/linux/s390/s390-64/bits/sigstack.h deleted file mode 100644 index e19549a..0000000 --- a/sysdeps/unix/sysv/linux/s390/s390-64/bits/sigstack.h +++ /dev/null @@ -1,59 +0,0 @@ -/* 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 Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; 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 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 deleted file mode 100644 index 50ad1b1..0000000 --- a/sysdeps/unix/sysv/linux/s390/s390-64/bits/stat.h +++ /dev/null @@ -1,107 +0,0 @@ -/* 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 Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; 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 directly; use 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/sys/procfs.h b/sysdeps/unix/sysv/linux/s390/s390-64/sys/procfs.h deleted file mode 100644 index 492b1aa..0000000 --- a/sysdeps/unix/sysv/linux/s390/s390-64/sys/procfs.h +++ /dev/null @@ -1,118 +0,0 @@ -/* 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 Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; 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 -#include -#include -#include -#include - -__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 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 deleted file mode 100644 index 336178e..0000000 --- a/sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h +++ /dev/null @@ -1,84 +0,0 @@ -/* 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 Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; 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 -#include - -/* We need the signal context definitions even if they are not used - included in . */ -#include - -/* Type for a program status word. */ -typedef struct -{ - unsigned long mask; - unsigned long addr; -} __attribute__ ((aligned(8))) __psw_t; - -/* 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. This is needed for the - elf_prstatus structure. */ -#define NGREG 27 -/* 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[16]; - } fpregset_t; - -/* Context to describe whole processor state. */ -typedef struct - { - __psw_t psw; - unsigned long gregs[16]; - unsigned int aregs[16]; - fpregset_t fpregs; - } mcontext_t; - -/* Userlevel context. */ -struct ucontext - { - unsigned long int uc_flags; - struct ucontext *uc_link; - stack_t uc_stack; - mcontext_t uc_mcontext; - __sigset_t uc_sigmask; - }; - - -#endif /* sys/ucontext.h */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/sys/procfs.h b/sysdeps/unix/sysv/linux/s390/sys/procfs.h similarity index 96% rename from sysdeps/unix/sysv/linux/s390/s390-32/sys/procfs.h rename to sysdeps/unix/sysv/linux/s390/sys/procfs.h index 112d86d..e4aaa39 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/sys/procfs.h +++ b/sysdeps/unix/sysv/linux/s390/sys/procfs.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2000, 2001 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2001, 2002 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 @@ -86,8 +86,13 @@ struct elf_prpsinfo char pr_zomb; /* Zombie. */ char pr_nice; /* Nice val. */ unsigned long int pr_flag; /* Flags. */ +#if __WORDSIZE == 64 + unsigned int pr_uid; + unsigned int pr_gid; +#else unsigned short int pr_uid; unsigned short int pr_gid; +#endif int pr_pid, pr_ppid, pr_pgrp, pr_sid; /* Lots missing */ char pr_fname[16]; /* Filename of executable. */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h b/sysdeps/unix/sysv/linux/s390/sys/ucontext.h similarity index 94% rename from sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h rename to sysdeps/unix/sysv/linux/s390/sys/ucontext.h index dfc7968..4e32361 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/s390/sys/ucontext.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2000, 2001 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. Contributed by Denis Joseph Barrow (djbarrow@de.ibm.com). This file is part of the GNU C Library. @@ -44,7 +44,11 @@ typedef unsigned long greg_t; the register set is an array, we make gregset_t a simple array that has the same size as s390_regs. This is needed for the elf_prstatus structure. */ -#define NGREG 36 +#if __WORDSIZE == 64 +# define NGREG 27 +#else +# define NGREG 36 +#endif /* Must match kernels psw_t alignment. */ typedef greg_t gregset_t[NGREG] __attribute__ ((aligned(8))); -- 2.7.4