https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=b32c5f35b8fb037bd54cde10bb14e6510171534a commit b32c5f35b8fb037bd54cde10bb14e6510171534a Author: Zack Weinberg Date: Tue May 21 19:05:39 2019 -0400 Don’t include sys/types.h or stdint.h from most public headers. Many public headers include sys/types.h and/or stdint.h when they only need and/or are supposed to define a small number of types from that header. This patch changes as many of them as practical to include only the single-type headers for the types they are actually specified to define, and use the impl-namespace aliases for any types they need but are not specified to define. In most cases, where a header has historically used uintN_t types, I changed it to use __uintN_t types; in a few cases I chose to have it continue to define the complete set of those types (using ). After this patch, the public headers that still include sys/types.h are: stdlib.h and sys/param.h, where removal would risk breaking far too much; the inclusion of sys/types.h; regex.h, which is taken verbatim from gnulib and can't include features.h directly (I'm open to better ideas); sys/bitypes.h, which is an alternative name for sys/types.h; and the networking headers, which will be dealt with separately. The headers that still include stdint.h are: inttypes.h, as required by ISO C; elf.h and thread_db.h, see discussion of debugger interface headers below; and, again, the networking headers will be dealt with separately. While I was at it, I moved headers out of sysdeps where possible: If we have only a sysdeps/generic/something.h or sysdeps/gnu/something.h, no other sysdeps variants, it is not really system-dependent and can be moved to the directory that installs it. If we have both sysdeps/generic/ and gnu/something.h, the generic version is never used (since we support only GNUish systems these days) and can be deleted, and the gnu-version can be moved to the directory that installs it. If the only copy of a bits header is in the top-level bits directory, it is not system-dependent. For utmp.h and utmpx.h, I think we might be able to fold their respective bits headers into the primary headers and make them not system-dependent at all. The remaining variation is between s390*-*-linux* and everything else, and it appears to me that the s390 versions of the bits headers are actually the headers that everyone should be using. The only difference is that the s390 headers unconditionally use 64-bit quantities for lastlog.ll_time, utmp{,x}.ut_tv, and utmp{,x}.ut_session, whereas the generic headers use either 64- or 32-bit quantities depending on __WORDSIZE_TIME64_COMPAT32. I could be wrong, but I don’t think it makes sense for programs with 64-bit and 32-bit time_t to have different ideas of the layout of a structures that are copied directly to and from a shared file on disk. But fixing that doesn’t belong in this patch series. The conform tests expect utmpx.h to define time_t and suseconds_t. These are the public names for the types of the fields of struct timeval, and utmpx.h is required to define struct timeval, so this is a reasonable expectation even though POSIX doesn't _explicitly_ say it's also required to define time_t and suseconds_t. utmp.h is not a standard header but it makes sense for it to be as consistent with utmpx.h as possible, especially in our implementation where /var/log/utmp and /var/log/utmpx have the same format. I thought I was going to need to change all of the arch-specific bits/epoll.h headers as well as sys/epoll.h, but it turned out not to be necessary. I still took the opportunity to give them all multiple inclusion guards. I suspect we do not need as many copies of bits/fcntl.h and bits/sem.h as we have, but that’s complicated enough that it deserves its own patchset. The debugger interface headers are a mess and I only have so much patience for them. This does the bare minimum required for thread_db.h, sys/procfs.h, and sys/user.h, which are at least nominally cross-platform interfaces, to avoid including sys/types.h, sys/time.h, and/or signal.h. Exposure of sys/ucontext.h is reduced but not eliminated. Cross-architecture consistency should be improved. It would be desirable to stop including stdint.h from elf.h and thread_db.h as well, but that would involve touching dozens more bits headers and I ran out of patience. Git does not understand “remove file X and then rename file Y over the top of it” very well, so the diff looks bigger than it should. This is another partial fix for Hurd-specific bug 23088. The headers that are still affected by that bug are aio.h, mqueue.h, regex.h, signal.h, stdlib.h, and sys/types.h. * io/ftw.h: Don't include sys/types.h. * misc/sys/uio.h: Don't include sys/types.h. Include bits/types.h, bits/types/size_t.h, and bits/types/ssize_t.h. * posix/spawn.h: Don't include sys/types.h. Include bits/types.h, bits/types/mode_t.h, and bits/types/pid_t.h. * rt/aio.h: Don't include sys/types.h. Include bits/types.h, bits/pthreadtypes.h, bits/types/size_t.h, and bits/types/ssize_t.h. * sysdeps/pthread/semaphore.h: Don't include sys/types.h. * sysdeps/unix/sysv/linux/bits/uio-ext.h: Use __pid_t, not pid_t. * sysdeps/generic/netinet/in_systm.h: Rename to inet/netinet/in_systm.h. Include bits/stdint-uintn.h, not sys/types.h or stdint.h. * sysdeps/generic/netinet/ip.h: Rename to inet/netinet/ip.h. Include bits/stdint-uintn.h and bits/endian.h, not sys/types.h. * sysdeps/gnu/netinet/tcp.h: Rename to inet/netinet/tcp.h. Include bits/stdint-uintn.h and bits/endian.h, not sys/types.h or stdint.h. * sydeps/gnu/net/if.h: Rename to socket/net/if.h. Don’t include sys/types.h. * include/net/if.h: Include socket/net/if.h, rather than whatever the next net/if.h on the include path is. * include/netinet/in_systm.h, include/netinet/ip.h * include/netinet/tcp.h: New trivial wrappers. * sysdeps/generic/net/if.h: Delete, never used. * sysdeps/generic/netinet/tcp.h: Delete, never used. * bits/utmp.h: Delete file. * sysdeps/gnu/bits/utmp.h: Move to bits/utmp.h. Add multiple include guard. Don’t include paths.h, sys/time.h, or sys/types.h. Don’t use struct timeval. Use __intN_t for consistency with bits/utmpx.h. * sysdeps/unix/sysv/linux/s390/bits/utmp.h: Add multiple include guard. Don’t include paths.h, sys/time.h, sys/types.h, or bits/wordsize.h. Don’t use struct timeval. Use __intN_t for consistency with bits/utmpx.h. Use __time64_t unconditionally for lastlog.ll_time. Use __int64_t unconditionally for utmp.ut_session. Adjust indentation and blank lines to match bits/utmp.h. * sysdeps/gnu/bits/utmpx.h: Move to bits/utmpx.h. Add multiple include guard. Don’t include paths.h, sys/time.h, bits/types.h, or bits/wordsize.h. Don’t define _PATH_UTMPX or _PATH_WTMPX. Don’t use struct timeval. Use pid_t for consistency with bits/utmp.h. * sysdeps/unix/sysv/linux/s390/bits/utmpx.h: Add multiple include guard. Don’t define _PATH_UTMPX or _PATH_WTMPX. Don’t include paths.h, sys/time.h, bits/types.h, or bits/wordsize.h. Don’t define _PATH_UTMPX or _PATH_WTMPX. Don’t use struct timeval. Use pid_t for consistency with bits/utmp.h. Use __int64_t unconditionally for utmpx.ut_session. * login/utmp.h: Don’t include sys/types.h. Do include paths.h, bits/types.h, bits/types/pid_t.h, bits/types/suseconds_t, bits/types/time_t.h, and bits/types/struct_timeval.h. Move __BEGIN_DECLS to enclose only prototypes. * sysdeps/gnu/utmpx.h: Move to login/utmpx.h. Don’t include sys/time.h. Do include bits/types.h, bits/types/suseconds_t, bits/types/time_t.h, and bits/types/struct_timeval.h. When __USE_GNU, include paths.h and define _PATH_UTMPX and _PATH_WTMPX. * login/Makefile (headers): Add utmpx.h and bits/utmpx.h. (routines): Add endutxent, getutmp, getutmpx, getutxent, getutxid, getutxline, pututxline, setutxent, updwtmpx, and utmpxname. Reorganize. * sysdeps/gnu/Makefile: Do not add anything to sysdep_routines or sysdep_headers when subdir == login. * sysdeps/gnu/sys/mtio.h: Move to misc/sys/mtio.h. Don't include sys/types.h. * sysdeps/gnu/Makefile: Don't add anything to sysdep_headers for the misc directory. * misc/Makefile (headers): Add sys/mtio.h. * include/sys/mtio.h: New wrapper. * elf/link.h, inet/aliases.h, misc/sys/xattr.h: Don't include sys/types.h. Include bits/types/size_t.h. * gmon/sys/gmon.h: Don't include sys/types.h. * gmon/sys/profil.h: Don't include sys/types.h. Include bits/types/size_t.h and bits/types/struct_timeval.h. * io/fts.h: Don't include sys/types.h. Include bits/types/dev_t.h, bits/types/ino_t.h, bits/types/ino64_t.h, and bits/types/nlink_t.h. * io/sys/sendfile.h: Don't include sys/types.h. Include bits/types.h, bits/types/off_t.h, bits/types/size_t.h, and bits/types/ssize_t.h. * stdlib/sys/random.h: Don't include sys/types.h. Include bits/types/size_t.h and bits/types/ssize_t.h. * gmon/tst-sprofil.h: Include sys/time.h. * sysdeps/mach/hurd/sendfile.c: Include sys/types.h. * sysdeps/unix/sysv/linux/sys/epoll.h: Don’t include stdint.h or sys/types.h. Do include features.h and bits/types.h. (union epoll_data, struct epoll_event): Use __uint32_t and __uint64_t for field types. * sysdeps/unix/sysv/linux/alpha/bits/epoll.h * sysdeps/unix/sysv/linux/bits/epoll.h * sysdeps/unix/sysv/linux/hppa/bits/epoll.h * sysdeps/unix/sysv/linux/mips/bits/epoll.h * sysdeps/unix/sysv/linux/sparc/bits/epoll.h * sysdeps/unix/sysv/linux/x86/bits/epoll.h: Add multiple inclusion guard. * sysdeps/unix/sysv/linux/alpha/sys/acct.h: Style fix. * sysdeps/unix/sysv/linux/sys/acct.h: Include features.h and bits/stdint-uintn.h. Don't include sys/types.h, stdint.h, or bits/types/time_t.h. * sysdeps/unix/sysv/linux/sys/fsuid.h * sysdeps/unix/sysv/linux/sys/quota.h Include bits/types.h, not sys/types.h. * sysdeps/nptl/sys/procfs.h: Include features.h and bits/types.h, not sys/types.h. * sysdeps/nptl/thread_db.h: Don’t include sys/types.h. * sysdeps/nptl/proc_service.h: Include bits/types/pid_t.h and bits/types/size_t.h. * sysdeps/unix/sysv/linux/sys/procfs.h: Include bits/types.h and bits/types/struct_timeval.h, not sys/time.h or sys/types.h. * sysdeps/unix/sysv/linux/aarch64/bits/procfs.h: Add multiple inclusion guard. Include bits/types.h. Correct a comment. * sysdeps/unix/sysv/linux/alpha/bits/procfs-prregset.h: Add multiple inclusion guard. Include sys/ucontext.h. * sysdeps/unix/sysv/linux/alpha/bits/procfs.h * sysdeps/unix/sysv/linux/sparc/bits/procfs.h Add multiple inclusion guard. Don’t include signal.h or sys/ucontext.h. * sysdeps/unix/sysv/linux/ia64/bits/procfs.h: Add multiple inclusion guard. Include sys/ucontext.h, not signal.h. * sysdeps/unix/sysv/linux/powerpc/bits/procfs.h: Add multiple inclusion guard. Don’t include signal.h or sys/ucontext.h. Include bits/wordsize.h and asm/elf.h. Adjust conditional for whether to provide various fallback definitions. * sysdeps/unix/sysv/linux/arm/bits/procfs.h * sysdeps/unix/sysv/linux/csky/bits/procfs.h * sysdeps/unix/sysv/linux/hppa/bits/procfs.h * sysdeps/unix/sysv/linux/m68k/bits/procfs.h * sysdeps/unix/sysv/linux/microblaze/bits/procfs.h * sysdeps/unix/sysv/linux/mips/bits/procfs.h * sysdeps/unix/sysv/linux/nios2/bits/procfs.h * sysdeps/unix/sysv/linux/riscv/bits/procfs.h * sysdeps/unix/sysv/linux/s390/bits/procfs.h * sysdeps/unix/sysv/linux/sh/bits/procfs.h * sysdeps/unix/sysv/linux/x86/bits/procfs.h: Add multiple inclusion guard. Improve commentary. * sysdeps/posix/dl-fileid.h (r_file_id): Use __dev_t and __ino64_t for field types. * nss/nss.h * sysdeps/powerpc/sys/platform/ppc.h * sysdeps/unix/sysv/linux/sys/eventfd.h * sysdeps/unix/sysv/linux/sys/fanotify.h * sysdeps/unix/sysv/linux/sys/inotify.h * sysdeps/unix/sysv/linux/sys/raw.h * sysdeps/unix/sysv/linux/sys/signalfd.h: Include bits/types.h, not stdint.h. Include features.h where not already doing so. Use __(u)intN_t types instead of (u)intN_t types in all declarations. * sysdeps/unix/sysv/linux/powerpc/bits/powerpc.h: Use __uint64_t instead of uint64_t. * nss/tst-nss-test4.c: Include stdint.h. * bits/fcntl.h: Add multiple include guard. Hoist inclusion of bits/types.h to top of file. * sysdeps/mach/hurd/bits/fcntl.h: Add multiple include guard. Include bits/types.h, not sys/types.h; remove redundant inclusion of bits/types.h in middle of file. * bits/sem.h: Add multiple include guard. Include bits/types.h, not sys/types.h. * sysdeps/gnu/bits/sem.h: Likewise. * sysdeps/unix/sysv/linux/bits/sem.h: Likewise. * sysdeps/unix/sysv/linux/ia64/bits/ipc.h: Likewise. * sysvipc/sys/sem.h: Include bits/types/pid_t.h and bits/types/time_t.h. * resolv/bits/types/res_state.h: Include bits/types.h, not sys/types.h. Use __uint32_t and __uint16_t, not uint32_t and uint16_t. * sysdeps/mach/hurd/bits/socket.h: Include bits/types.h, not sys/types.h. * sysdeps/unix/sysv/linux/bits/socket.h: Likewise. Use __pid_t, __uid_t, and __gid_t, not pid_t, uid_t, and gid_t. * socket/sys/socket.h: Include bits/types.h, bits/types/ssize_t.h, and bits/types/socklen_t.h. * inet/htonl.c, include/htons.c: Include endian.h. * include/netinet/ether.h: Include bits/types/size_t.h. * scripts/check-obsolete-constructs.py (HEADER_ALLOWED_INCLUDES, SYSDEP_ALLOWED_INCLUDES): Update. * sysdeps/mach/hurd/i386/Makefile: Update list of xfails for bug 23088. Diff: --- bits/fcntl.h | 9 +- bits/sem.h | 7 +- bits/utmp.h | 32 +++--- {sysdeps/gnu/bits => bits}/utmpx.h | 33 +++---- elf/link.h | 2 +- gmon/sys/gmon.h | 2 - gmon/sys/profil.h | 4 +- gmon/tst-sprofil.c | 1 + include/net/if.h | 2 +- include/netinet/ether.h | 1 + include/netinet/in_systm.h | 1 + include/netinet/ip.h | 1 + include/netinet/tcp.h | 1 + include/sys/mtio.h | 1 + include/utmpx.h | 1 + inet/aliases.h | 4 +- inet/htonl.c | 3 +- inet/htons.c | 2 + {sysdeps/generic => inet}/netinet/in_systm.h | 3 +- {sysdeps/generic => inet}/netinet/ip.h | 3 +- {sysdeps/gnu => inet}/netinet/tcp.h | 4 +- io/fts.h | 5 +- io/ftw.h | 1 - io/sys/sendfile.h | 6 +- login/Makefile | 15 +-- login/utmp.h | 15 ++- {sysdeps/gnu => login}/utmpx.h | 9 +- misc/Makefile | 6 +- {sysdeps/gnu => misc}/sys/mtio.h | 3 - misc/sys/uio.h | 5 +- misc/sys/xattr.h | 3 +- nss/nss.h | 6 +- nss/tst-nss-test4.c | 1 + posix/spawn.h | 5 +- resolv/bits/types/res_state.h | 12 +-- rt/aio.h | 7 +- rt/mqueue.h | 8 +- scripts/check-obsolete-constructs.py | 62 +++--------- {sysdeps/gnu => socket}/net/if.h | 8 +- socket/sys/socket.h | 3 + stdlib/sys/random.h | 4 +- sysdeps/generic/net/if.h | 49 ---------- sysdeps/generic/netinet/tcp.h | 107 --------------------- sysdeps/gnu/Makefile | 12 --- sysdeps/gnu/bits/sem.h | 7 +- sysdeps/mach/hurd/bits/fcntl.h | 11 ++- sysdeps/mach/hurd/bits/socket.h | 2 +- sysdeps/mach/hurd/i386/Makefile | 35 ------- sysdeps/mach/hurd/sendfile.c | 1 + sysdeps/nptl/proc_service.h | 3 + sysdeps/nptl/sys/procfs.h | 3 +- sysdeps/nptl/thread_db.h | 1 - sysdeps/posix/dl-fileid.h | 4 +- sysdeps/powerpc/sys/platform/ppc.h | 10 +- sysdeps/pthread/semaphore.h | 2 +- sysdeps/unix/sysv/linux/aarch64/bits/procfs.h | 13 ++- sysdeps/unix/sysv/linux/alpha/bits/epoll.h | 5 + .../unix/sysv/linux/alpha/bits/procfs-prregset.h | 9 ++ sysdeps/unix/sysv/linux/alpha/bits/procfs.h | 8 +- sysdeps/unix/sysv/linux/alpha/sys/acct.h | 2 +- sysdeps/unix/sysv/linux/arm/bits/procfs.h | 9 +- sysdeps/unix/sysv/linux/bits/epoll.h | 5 + sysdeps/unix/sysv/linux/bits/sem.h | 7 +- sysdeps/unix/sysv/linux/bits/socket.h | 8 +- sysdeps/unix/sysv/linux/bits/uio-ext.h | 4 +- sysdeps/unix/sysv/linux/csky/bits/procfs.h | 5 + sysdeps/unix/sysv/linux/hppa/bits/epoll.h | 5 + sysdeps/unix/sysv/linux/hppa/bits/procfs.h | 5 + sysdeps/unix/sysv/linux/ia64/bits/procfs.h | 8 +- sysdeps/unix/sysv/linux/m68k/bits/procfs.h | 9 +- sysdeps/unix/sysv/linux/microblaze/bits/procfs.h | 9 +- sysdeps/unix/sysv/linux/microblaze/sys/user.h | 4 +- sysdeps/unix/sysv/linux/mips/bits/epoll.h | 5 + sysdeps/unix/sysv/linux/mips/bits/procfs.h | 5 + sysdeps/unix/sysv/linux/nios2/bits/procfs.h | 5 + sysdeps/unix/sysv/linux/powerpc/bits/ppc.h | 2 +- sysdeps/unix/sysv/linux/powerpc/bits/procfs.h | 20 ++-- sysdeps/unix/sysv/linux/powerpc/sys/user.h | 1 + sysdeps/unix/sysv/linux/riscv/bits/procfs.h | 8 ++ sysdeps/unix/sysv/linux/s390/bits/procfs.h | 7 ++ sysdeps/unix/sysv/linux/s390/bits/utmp.h | 41 ++++---- sysdeps/unix/sysv/linux/s390/bits/utmpx.h | 32 +++--- sysdeps/unix/sysv/linux/sh/bits/procfs.h | 5 + sysdeps/unix/sysv/linux/sparc/bits/epoll.h | 5 + sysdeps/unix/sysv/linux/sparc/bits/procfs.h | 7 +- sysdeps/unix/sysv/linux/sys/acct.h | 6 +- sysdeps/unix/sysv/linux/sys/epoll.h | 10 +- sysdeps/unix/sysv/linux/sys/eventfd.h | 5 +- sysdeps/unix/sysv/linux/sys/fanotify.h | 6 +- sysdeps/unix/sysv/linux/sys/fsuid.h | 2 +- sysdeps/unix/sysv/linux/sys/inotify.h | 11 ++- sysdeps/unix/sysv/linux/sys/procfs.h | 6 +- sysdeps/unix/sysv/linux/sys/quota.h | 2 +- sysdeps/unix/sysv/linux/sys/raw.h | 7 +- sysdeps/unix/sysv/linux/sys/signalfd.h | 47 ++++----- sysdeps/unix/sysv/linux/x86/bits/epoll.h | 5 + sysdeps/unix/sysv/linux/x86/bits/procfs.h | 5 + sysvipc/sys/sem.h | 2 + 98 files changed, 443 insertions(+), 477 deletions(-) diff --git a/bits/fcntl.h b/bits/fcntl.h index a827824..ad1b58f 100644 --- a/bits/fcntl.h +++ b/bits/fcntl.h @@ -16,10 +16,14 @@ License along with the GNU C Library; if not, see . */ +#ifndef _BITS_FCNTL_H +#define _BITS_FCNTL_H 1 + #ifndef _FCNTL_H #error "Never use directly; include instead." #endif +#include /* File access modes for `open' and `fcntl'. */ #define O_RDONLY 0 /* Open read-only. */ @@ -104,9 +108,6 @@ /* File descriptor flags used with F_GETFD and F_SETFD. */ #define FD_CLOEXEC 1 /* Close on exec. */ - -#include - /* The structure describing an advisory lock. This is the type of the third argument to `fcntl' for the F_GETLK, F_SETLK, and F_SETLKW requests. */ struct flock @@ -144,3 +145,5 @@ struct flock64 # 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/bits/sem.h b/bits/sem.h index a84bfb1..80615e7 100644 --- a/bits/sem.h +++ b/bits/sem.h @@ -15,11 +15,14 @@ License along with the GNU C Library; if not, see . */ +#ifndef _BITS_SEM_H +#define _BITS_SEM_H 1 + #ifndef _SYS_SEM_H # error "Never include directly; use instead." #endif -#include +#include /* Flags for `semop'. */ #define SEM_UNDO 0x1000 /* undo the operation on exit */ @@ -58,3 +61,5 @@ struct semid_ds incorrect. One can test the macro _SEM_SEMUN_UNDEFINED to see whether one must define the union or not. */ #define _SEM_SEMUN_UNDEFINED 1 + +#endif /* bits/sem.h */ diff --git a/bits/utmp.h b/bits/utmp.h index b82d145..e8e88cc 100644 --- a/bits/utmp.h +++ b/bits/utmp.h @@ -16,13 +16,13 @@ License along with the GNU C Library; if not, see . */ +#ifndef _BITS_UTMP_H +#define _BITS_UTMP_H 1 + #ifndef _UTMP_H # error "Never include directly; use instead." #endif -#include -#include -#include #include @@ -36,7 +36,7 @@ struct lastlog { #if __WORDSIZE_TIME64_COMPAT32 - int32_t ll_time; + __int32_t ll_time; #else __time_t ll_time; #endif @@ -69,23 +69,29 @@ struct utmp __attribute_nonstring__; /* Hostname for remote login. */ struct exit_status ut_exit; /* Exit status of a process marked as DEAD_PROCESS. */ + /* The ut_session and ut_tv fields must be the same size when compiled 32- and 64-bit. This allows data files and shared memory to be - shared between 32- and 64-bit applications. */ + shared between 32- and 64-bit applications. Even on 64-bit systems, + struct timeval is not guaranteed to have both fields be 64 bits. */ #if __WORDSIZE_TIME64_COMPAT32 - int32_t ut_session; /* Session ID, used for windowing. */ + __int32_t ut_session; /* Session ID, used for windowing. */ struct { - int32_t tv_sec; /* Seconds. */ - int32_t tv_usec; /* Microseconds. */ + __int32_t tv_sec; /* Seconds. */ + __int32_t tv_usec; /* Microseconds. */ } ut_tv; /* Time entry was made. */ #else - long int ut_session; /* Session ID, used for windowing. */ - struct timeval ut_tv; /* Time entry was made. */ + __int64_t ut_session; /* Session ID, used for windowing. */ + struct + { + __int64_t tv_sec; /* Seconds. */ + __int64_t tv_usec; /* Microseconds. */ + } ut_tv; /* Time entry was made. */ #endif - int32_t ut_addr_v6[4]; /* Internet address of remote host. */ - char __glibc_reserved[20]; /* Reserved for future use. */ + __int32_t ut_addr_v6[4]; /* Internet address of remote host. */ + char __glibc_reserved[20]; /* Reserved for future use. */ }; /* Backwards compatibility hacks. */ @@ -125,3 +131,5 @@ struct utmp #define _HAVE_UT_ID 1 #define _HAVE_UT_TV 1 #define _HAVE_UT_HOST 1 + +#endif /* bits/utmp.h */ diff --git a/sysdeps/gnu/bits/utmpx.h b/bits/utmpx.h similarity index 84% rename from sysdeps/gnu/bits/utmpx.h rename to bits/utmpx.h index dfd55bf..b8f2e16 100644 --- a/sysdeps/gnu/bits/utmpx.h +++ b/bits/utmpx.h @@ -16,22 +16,13 @@ License along with the GNU C Library; if not, see . */ +#ifndef _BITS_UTMPX_H +#define _BITS_UTMPX_H 1 + #ifndef _UTMPX_H # error "Never include directly; use instead." #endif -#include -#include -#include - - -#ifdef __USE_GNU -# include -# define _PATH_UTMPX _PATH_UTMP -# define _PATH_WTMPX _PATH_WTMP -#endif - - #define __UT_LINESIZE 32 #define __UT_NAMESIZE 32 #define __UT_HOSTSIZE 256 @@ -67,9 +58,10 @@ struct utmpx struct __exit_status ut_exit; /* Exit status of a process marked as DEAD_PROCESS. */ -/* The fields ut_session and ut_tv must be the same size when compiled - 32- and 64-bit. This allows files and shared memory to be shared - between 32- and 64-bit applications. */ +/* The ut_session and ut_tv fields must be the same size when compiled + 32- and 64-bit. This allows data files and shared memory to be + shared between 32- and 64-bit applications. Even on 64-bit systems, + struct timeval is not guaranteed to have both fields be 64 bits. */ #if __WORDSIZE_TIME64_COMPAT32 __int32_t ut_session; /* Session ID, used for windowing. */ struct @@ -78,9 +70,14 @@ struct utmpx __int32_t tv_usec; /* Microseconds. */ } ut_tv; /* Time entry was made. */ #else - long int ut_session; /* Session ID, used for windowing. */ - struct timeval ut_tv; /* Time entry was made. */ + __int64_t ut_session; /* Session ID, used for windowing. */ + struct + { + __int64_t tv_sec; /* Seconds. */ + __int64_t tv_usec; /* Microseconds. */ + } ut_tv; /* Time entry was made. */ #endif + __int32_t ut_addr_v6[4]; /* Internet address of remote host. */ char __glibc_reserved[20]; /* Reserved for future use. */ }; @@ -104,3 +101,5 @@ struct utmpx #ifdef __USE_GNU # define ACCOUNTING 9 /* System accounting. */ #endif + +#endif /* bits/utmpx.h */ diff --git a/elf/link.h b/elf/link.h index 0048ad5..3f4c2cc 100644 --- a/elf/link.h +++ b/elf/link.h @@ -23,7 +23,6 @@ #include #include #include -#include /* We use this macro to refer to ELF types independent of the native wordsize. `ElfW(TYPE)' is used in place of `Elf32_TYPE' or `Elf64_TYPE'. */ @@ -31,6 +30,7 @@ #define _ElfW(e,w,t) _ElfW_1 (e, w, _##t) #define _ElfW_1(e,w,t) e##w##t +#include #include /* Defines __ELF_NATIVE_CLASS. */ #include diff --git a/gmon/sys/gmon.h b/gmon/sys/gmon.h index b4cc3b0..5d7de0f 100644 --- a/gmon/sys/gmon.h +++ b/gmon/sys/gmon.h @@ -34,8 +34,6 @@ #include -#include - /* * See gmon_out.h for gmon.out format. */ diff --git a/gmon/sys/profil.h b/gmon/sys/profil.h index 9f71e6d..5a1ce09 100644 --- a/gmon/sys/profil.h +++ b/gmon/sys/profil.h @@ -20,8 +20,8 @@ #include -#include -#include +#include +#include /* This interface is intended to follow the sprofil() system calls as described by the sprofil(2) man page of Irix v6.5, except that: diff --git a/gmon/tst-sprofil.c b/gmon/tst-sprofil.c index 6663a97..93de84b 100644 --- a/gmon/tst-sprofil.c +++ b/gmon/tst-sprofil.c @@ -20,6 +20,7 @@ #include #include #include +#include #include diff --git a/include/net/if.h b/include/net/if.h index 6c4cbc9..2e7af05 100644 --- a/include/net/if.h +++ b/include/net/if.h @@ -1,6 +1,6 @@ #ifndef _NET_IF_H -# include_next +#include #ifndef _ISOMAC libc_hidden_proto (if_nametoindex) diff --git a/include/netinet/ether.h b/include/netinet/ether.h index 8bfe7e0..a60aa27 100644 --- a/include/netinet/ether.h +++ b/include/netinet/ether.h @@ -2,6 +2,7 @@ #include # ifndef _ISOMAC +# include libc_hidden_proto (ether_aton_r) libc_hidden_proto (ether_ntoa_r) diff --git a/include/netinet/in_systm.h b/include/netinet/in_systm.h new file mode 100644 index 0000000..7634c9b --- /dev/null +++ b/include/netinet/in_systm.h @@ -0,0 +1 @@ +#include diff --git a/include/netinet/ip.h b/include/netinet/ip.h new file mode 100644 index 0000000..da55733 --- /dev/null +++ b/include/netinet/ip.h @@ -0,0 +1 @@ +#include diff --git a/include/netinet/tcp.h b/include/netinet/tcp.h new file mode 100644 index 0000000..edba529 --- /dev/null +++ b/include/netinet/tcp.h @@ -0,0 +1 @@ +#include diff --git a/include/sys/mtio.h b/include/sys/mtio.h new file mode 100644 index 0000000..f4861bd --- /dev/null +++ b/include/sys/mtio.h @@ -0,0 +1 @@ +#include diff --git a/include/utmpx.h b/include/utmpx.h new file mode 100644 index 0000000..cfe9b7c --- /dev/null +++ b/include/utmpx.h @@ -0,0 +1 @@ +#include diff --git a/inet/aliases.h b/inet/aliases.h index b22ed63..e868866 100644 --- a/inet/aliases.h +++ b/inet/aliases.h @@ -19,9 +19,7 @@ #define _ALIASES_H 1 #include - -#include - +#include __BEGIN_DECLS diff --git a/inet/htonl.c b/inet/htonl.c index e171273..3eb174f 100644 --- a/inet/htonl.c +++ b/inet/htonl.c @@ -15,8 +15,9 @@ License along with the GNU C Library; if not, see . */ -#include #include +#include +#include #undef htonl #undef ntohl diff --git a/inet/htons.c b/inet/htons.c index 9500e4c..71d4861 100644 --- a/inet/htons.c +++ b/inet/htons.c @@ -16,6 +16,8 @@ . */ #include +#include +#include #undef htons #undef ntohs diff --git a/sysdeps/generic/netinet/in_systm.h b/inet/netinet/in_systm.h similarity index 97% rename from sysdeps/generic/netinet/in_systm.h rename to inet/netinet/in_systm.h index b22b26f..960f2af 100644 --- a/sysdeps/generic/netinet/in_systm.h +++ b/inet/netinet/in_systm.h @@ -19,8 +19,7 @@ #ifndef _NETINET_IN_SYSTM_H #define _NETINET_IN_SYSTM_H 1 -#include -#include +#include __BEGIN_DECLS diff --git a/sysdeps/generic/netinet/ip.h b/inet/netinet/ip.h similarity index 99% rename from sysdeps/generic/netinet/ip.h rename to inet/netinet/ip.h index 8605193..8dd7f6a 100644 --- a/sysdeps/generic/netinet/ip.h +++ b/inet/netinet/ip.h @@ -19,9 +19,10 @@ #define __NETINET_IP_H 1 #include -#include #include +#include +#include __BEGIN_DECLS diff --git a/sysdeps/gnu/netinet/tcp.h b/inet/netinet/tcp.h similarity index 99% rename from sysdeps/gnu/netinet/tcp.h rename to inet/netinet/tcp.h index 41ca11b..243b55a 100644 --- a/sysdeps/gnu/netinet/tcp.h +++ b/inet/netinet/tcp.h @@ -86,9 +86,9 @@ #define TCP_REPAIR_OFF_NO_WP -1 #ifdef __USE_MISC -# include +# include +# include # include -# include typedef uint32_t tcp_seq; /* diff --git a/io/fts.h b/io/fts.h index 3e2d184..811ceff 100644 --- a/io/fts.h +++ b/io/fts.h @@ -51,8 +51,11 @@ #define _FTS_H 1 #include -#include +#include +#include +#include +#include typedef struct { struct _ftsent *fts_cur; /* current node */ diff --git a/io/ftw.h b/io/ftw.h index 8cf9df1..6e56129 100644 --- a/io/ftw.h +++ b/io/ftw.h @@ -24,7 +24,6 @@ #include -#include #include diff --git a/io/sys/sendfile.h b/io/sys/sendfile.h index e11cbc4..130a791 100644 --- a/io/sys/sendfile.h +++ b/io/sys/sendfile.h @@ -20,7 +20,11 @@ #define _SYS_SENDFILE_H 1 #include -#include + +#include +#include +#include +#include __BEGIN_DECLS diff --git a/login/Makefile b/login/Makefile index d897057..b4cc206 100644 --- a/login/Makefile +++ b/login/Makefile @@ -23,12 +23,15 @@ subdir := login include ../Makeconfig -headers := utmp.h bits/utmp.h lastlog.h pty.h - -routines := getlogin getlogin_r setlogin getlogin_r_chk \ - getutent getutent_r getutid getutline getutid_r getutline_r \ - utmp_file utmpname updwtmp getpt grantpt unlockpt ptsname \ - ptsname_r_chk +headers := utmp.h bits/utmp.h utmpx.h bits/utmpx.h lastlog.h pty.h + +routines := \ + getlogin getlogin_r getlogin_r_chk setlogin \ + getpt grantpt ptsname ptsname_r_chk unlockpt \ + getutent getutent_r getutid getutid_r getutline getutline_r \ + getutmp updwtmp utmp_file utmpname \ + endutxent getutmpx getutxent getutxid getutxline pututxline \ + setutxent updwtmpx utmpxname CFLAGS-grantpt.c += -DLIBEXECDIR='"$(libexecdir)"' diff --git a/login/utmp.h b/login/utmp.h index 3de2b85..fa473df 100644 --- a/login/utmp.h +++ b/login/utmp.h @@ -20,21 +20,26 @@ #include -#include - - -__BEGIN_DECLS +/* utmp.h is not standardized; utmpx.h is, and is required to define + pid_t and struct timeval. It makes sense for utmp.h to be + consistent. */ +#include +#include +#include +#include +#include /* Get system dependent values and data structures. */ #include /* Compatibility names for the strings of the canonical file names. */ +#include #define UTMP_FILE _PATH_UTMP #define UTMP_FILENAME _PATH_UTMP #define WTMP_FILE _PATH_WTMP #define WTMP_FILENAME _PATH_WTMP - +__BEGIN_DECLS /* Make FD be the controlling terminal, stdin, stdout, and stderr; then close FD. Returns 0 on success, nonzero on error. */ diff --git a/sysdeps/gnu/utmpx.h b/login/utmpx.h similarity index 94% rename from sysdeps/gnu/utmpx.h rename to login/utmpx.h index b1a82a4..6394138 100644 --- a/sysdeps/gnu/utmpx.h +++ b/login/utmpx.h @@ -19,15 +19,22 @@ #define _UTMPX_H 1 #include -#include /* Required according to Unix98. */ +#include #include +#include +#include +#include /* Get system dependent values and data structures. */ #include #ifdef __USE_GNU +# include +# define _PATH_UTMPX _PATH_UTMP +# define _PATH_WTMPX _PATH_WTMP + /* Compatibility names for the strings of the canonical file names. */ # define UTMPX_FILE _PATH_UTMPX # define UTMPX_FILENAME _PATH_UTMPX diff --git a/misc/Makefile b/misc/Makefile index a25146d..3edb93e 100644 --- a/misc/Makefile +++ b/misc/Makefile @@ -36,9 +36,9 @@ headers := \ bits/uio-ext.h bits/uio_lim.h bits/xopen_lim.h \ gnu/libc-version.h \ sys/auxv.h sys/cdefs.h sys/dir.h sys/file.h sys/ioctl.h \ - sys/mman.h sys/param.h sys/ptrace.h sys/queue.h sys/reboot.h \ - sys/select.h sys/swap.h sys/syscall.h sys/sysinfo.h \ - sys/syslog.h sys/sysmacros.h sys/uio.h sys/xattr.h + sys/mman.h sys/mtio.h sys/param.h sys/ptrace.h sys/queue.h \ + sys/reboot.h sys/select.h sys/swap.h sys/syscall.h \ + sys/sysinfo.h sys/syslog.h sys/sysmacros.h sys/uio.h sys/xattr.h routines := brk sbrk sstk ioctl \ readv writev preadv preadv64 pwritev pwritev64 \ diff --git a/sysdeps/gnu/sys/mtio.h b/misc/sys/mtio.h similarity index 99% rename from sysdeps/gnu/sys/mtio.h rename to misc/sys/mtio.h index 17a9b21..a36a256 100644 --- a/sysdeps/gnu/sys/mtio.h +++ b/misc/sys/mtio.h @@ -21,11 +21,8 @@ #ifndef _SYS_MTIO_H #define _SYS_MTIO_H 1 -/* Get necessary definitions from system and kernel headers. */ -#include #include - /* Structure for MTIOCTOP - magnetic tape operation command. */ struct mtop { diff --git a/misc/sys/uio.h b/misc/sys/uio.h index 26d87c9..6847998 100644 --- a/misc/sys/uio.h +++ b/misc/sys/uio.h @@ -19,7 +19,10 @@ #define _SYS_UIO_H 1 #include -#include + +#include +#include +#include #include #include #ifdef __IOV_MAX diff --git a/misc/sys/xattr.h b/misc/sys/xattr.h index e3a43c1..8061587 100644 --- a/misc/sys/xattr.h +++ b/misc/sys/xattr.h @@ -19,8 +19,9 @@ #define _SYS_XATTR_H 1 #include -#include +#include +#include __BEGIN_DECLS diff --git a/nss/nss.h b/nss/nss.h index 390ea34..a024fd7 100644 --- a/nss/nss.h +++ b/nss/nss.h @@ -22,7 +22,7 @@ #define _NSS_H 1 #include -#include +#include __BEGIN_DECLS @@ -44,8 +44,8 @@ struct gaih_addrtuple struct gaih_addrtuple *next; char *name; int family; - uint32_t addr[4]; - uint32_t scopeid; + __uint32_t addr[4]; + __uint32_t scopeid; }; diff --git a/nss/tst-nss-test4.c b/nss/tst-nss-test4.c index e9062ee..45581fc 100644 --- a/nss/tst-nss-test4.c +++ b/nss/tst-nss-test4.c @@ -20,6 +20,7 @@ #include #include #include +#include #include diff --git a/posix/spawn.h b/posix/spawn.h index be6bd59..a515419 100644 --- a/posix/spawn.h +++ b/posix/spawn.h @@ -21,7 +21,10 @@ #include #include -#include + +#include +#include +#include #include diff --git a/resolv/bits/types/res_state.h b/resolv/bits/types/res_state.h index 2544a62..81febe1 100644 --- a/resolv/bits/types/res_state.h +++ b/resolv/bits/types/res_state.h @@ -1,7 +1,7 @@ #ifndef __res_state_defined #define __res_state_defined 1 -#include +#include #include /* res_state: the global state used by the resolver stub. */ @@ -28,7 +28,7 @@ struct __res_state { unsigned unused:23; struct { struct in_addr addr; - uint32_t mask; + __uint32_t mask; } sort_list[MAXRESOLVSORT]; /* 4 byte hole here on 64-bit architectures. */ void * __glibc_unused_qhook; @@ -40,11 +40,11 @@ struct __res_state { union { char pad[52]; /* On an i386 this means 512b total. */ struct { - uint16_t nscount; - uint16_t nsmap[MAXNS]; + __uint16_t nscount; + __uint16_t nsmap[MAXNS]; int nssocks[MAXNS]; - uint16_t nscount6; - uint16_t nsinit; + __uint16_t nscount6; + __uint16_t nsinit; struct sockaddr_in6 *nsaddrs[MAXNS]; #ifdef _LIBC unsigned long long int __glibc_extension_index diff --git a/rt/aio.h b/rt/aio.h index 2bbcc6a..87827f1 100644 --- a/rt/aio.h +++ b/rt/aio.h @@ -23,7 +23,12 @@ #define _AIO_H 1 #include -#include + +#include +#include +#include +#include +#include #include #include #include diff --git a/rt/mqueue.h b/rt/mqueue.h index a2a2aa1..b96a2ab 100644 --- a/rt/mqueue.h +++ b/rt/mqueue.h @@ -19,13 +19,19 @@ #define _MQUEUE_H 1 #include -#include #include + +#include +#include #include +#include +#include #include + /* Get the definition of mqd_t and struct mq_attr. */ #include + __BEGIN_DECLS /* Establish connection between a process and a message queue NAME and diff --git a/scripts/check-obsolete-constructs.py b/scripts/check-obsolete-constructs.py index 511c13d..1a0e91c 100755 --- a/scripts/check-obsolete-constructs.py +++ b/scripts/check-obsolete-constructs.py @@ -515,16 +515,15 @@ HEADER_ALLOWED_INCLUDES = { # mqueue.h -> fcntl.h # sched.h -> time.h # spawn.h -> sched.h - "aio.h": [ "sys/types.h" ], - "ftw.h": [ "sys/stat.h", "sys/types.h" ], + "ftw.h": [ "sys/stat.h" ], "langinfo.h": [ "nl_types.h" ], - "mqueue.h": [ "fcntl.h", "sys/types.h" ], + "mqueue.h": [ "fcntl.h" ], "pthread.h": [ "sched.h", "time.h" ], "regex.h": [ "limits.h", "sys/types.h" ], "sched.h": [ "time.h" ], - "semaphore.h": [ "sys/types.h" ], - "spawn.h": [ "sched.h", "sys/types.h" ], + "spawn.h": [ "sched.h" ], "termios.h": [ "sys/ttydefaults.h" ], + "utmpx.h": [ "paths.h" ], # POSIX sys/ headers # mandated: sys/msg.h -> sys/ipc.h @@ -538,77 +537,54 @@ HEADER_ALLOWED_INCLUDES = { # necessary for backward compatibility with BSD "sys/types.h": [ "endian.h" ], - "sys/uio.h": [ "sys/types.h" ], - # POSIX networking headers # allowed: netdb.h -> netinet/in.h # arpa/inet.h -> netinet/in.h "netdb.h": [ "netinet/in.h", "rpc/netdb.h" ], "arpa/inet.h": [ "netinet/in.h" ], - "net/if.h": [ "sys/socket.h", "sys/types.h" ], + "net/if.h": [ "sys/socket.h" ], "netinet/in.h": [ "sys/socket.h" ], - "netinet/tcp.h": [ "stdint.h", "sys/socket.h", - "sys/types.h" ], + "netinet/tcp.h": [ "sys/socket.h" ], # Nonstandardized top-level headers - "aliases.h": [ "sys/types.h" ], "argp.h": [ "ctype.h", "errno.h", "getopt.h", "limits.h", "stdio.h" ], "argz.h": [ "errno.h", "string.h" ], "elf.h": [ "stdint.h" ], "envz.h": [ "argz.h", "errno.h" ], - "fts.h": [ "sys/types.h" ], "gshadow.h": [ "paths.h" ], "ieee754.h": [ "float.h" ], "lastlog.h": [ "utmp.h" ], "libintl.h": [ "locale.h" ], - "link.h": [ "dlfcn.h", "elf.h", "sys/types.h" ], + "link.h": [ "dlfcn.h", "elf.h" ], "mntent.h": [ "paths.h" ], - "nss.h": [ "stdint.h" ], "obstack.h": [ "stddef.h", "string.h" ], "proc_service.h": [ "sys/procfs.h" ], "pty.h": [ "sys/ioctl.h", "termios.h" ], "sgtty.h": [ "sys/ioctl.h" ], "shadow.h": [ "paths.h" ], "stdio_ext.h": [ "stdio.h" ], - "thread_db.h": [ "pthread.h", "stdint.h", "sys/procfs.h", - "sys/types.h" ], + "thread_db.h": [ "pthread.h", "stdint.h", "sys/procfs.h" ], "ucontext.h": [ "sys/ucontext.h" ], - "utmp.h": [ "sys/types.h" ], - "utmpx.h": [ "sys/time.h" ], + "utmp.h": [ "paths.h" ], "values.h": [ "float.h", "limits.h" ], # Nonstandardized sys/ headers - "sys/acct.h": [ "endian.h", "stdint.h", "sys/types.h" ], "sys/auxv.h": [ "elf.h" ], "sys/elf.h": [ "sys/procfs.h" ], - "sys/epoll.h": [ "stdint.h", "sys/types.h" ], - "sys/eventfd.h": [ "stdint.h" ], - "sys/fanotify.h": [ "stdint.h" ], "sys/file.h": [ "fcntl.h" ], - "sys/fsuid.h": [ "sys/types.h" ], - "sys/gmon.h": [ "sys/types.h" ], - "sys/inotify.h": [ "stdint.h" ], "sys/ioctl.h": [ "sys/ttydefaults.h" ], "sys/mount.h": [ "sys/ioctl.h" ], - "sys/mtio.h": [ "sys/ioctl.h", "sys/types.h" ], + "sys/mtio.h": [ "sys/ioctl.h" ], "sys/param.h": [ "endian.h", "limits.h", "sys/types.h" ], - "sys/platform/ppc.h": [ "stdint.h" ], - "sys/procfs.h": [ "sys/time.h", "sys/types.h", - "sys/user.h" ], - "sys/profil.h": [ "sys/time.h", "sys/types.h" ], + "sys/procfs.h": [ "sys/ucontext.h", "sys/user.h" ], "sys/ptrace.h": [ "sys/ucontext.h" ], - "sys/quota.h": [ "sys/types.h" ], - "sys/random.h": [ "sys/types.h" ], - "sys/raw.h": [ "stdint.h", "sys/ioctl.h" ], - "sys/sendfile.h": [ "sys/types.h" ], - "sys/signalfd.h": [ "stdint.h" ], + "sys/raw.h": [ "sys/ioctl.h" ], "sys/socketvar.h": [ "sys/socket.h" ], "sys/timerfd.h": [ "time.h" ], "sys/ttychars.h": [ "sys/ttydefaults.h" ], "sys/ucontext.h": [ "sys/procfs.h" ], "sys/vfs.h": [ "sys/statfs.h" ], - "sys/xattr.h": [ "sys/types.h" ], # Nonstandardized headers that do nothing but include some other # header(s). These exist for compatibility with old systems where @@ -656,8 +632,7 @@ HEADER_ALLOWED_INCLUDES = { "netinet/if_fddi.h": [ "stdint.h", "sys/types.h" ], "netinet/if_tr.h": [ "stdint.h", "sys/types.h" ], "netinet/igmp.h": [ "netinet/in.h", "sys/types.h" ], - "netinet/in_systm.h": [ "stdint.h", "sys/types.h" ], - "netinet/ip.h": [ "netinet/in.h", "sys/types.h" ], + "netinet/ip.h": [ "netinet/in.h" ], "netinet/ip6.h": [ "inttypes.h", "netinet/in.h" ], "netinet/ip_icmp.h": [ "netinet/in.h", "netinet/ip.h", "stdint.h", "sys/types.h" ], @@ -675,14 +650,8 @@ HEADER_ALLOWED_INCLUDES = { "features.h": [ "gnu/stubs.h", "stdc-predef.h", "sys/cdefs.h" ], - "bits/fcntl.h": [ "sys/types.h" ], - "bits/ipc.h": [ "sys/types.h" ], "bits/procfs.h": [ "signal.h", "sys/ucontext.h" ], - "bits/sem.h": [ "sys/types.h" ], - "bits/socket.h": [ "sys/types.h" ], - "bits/types/res_state.h": [ "netinet/in.h", "sys/types.h" ], - "bits/utmp.h": [ "paths.h", "sys/time.h", "sys/types.h" ], - "bits/utmpx.h": [ "paths.h", "sys/time.h" ], + "bits/types/res_state.h": [ "netinet/in.h" ], "bits/types/__va_list.h": [ "stdarg.h" ], "bits/types/ptrdiff_t.h": [ "stddef.h" ], @@ -730,7 +699,8 @@ SYSDEP_ALLOWED_INCLUDES = { "bits/ioctls.h": [ "asm/ioctls.h", "linux/sockios.h" ], "bits/local_lim.h": [ "linux/limits.h" ], "bits/param.h": [ "linux/limits.h", "linux/param.h" ], - "bits/procfs.h": [ "asm/ptrace.h" ], + "bits/procfs.h": [ "asm/elf.h", "asm/ptrace.h" ], + "bits/procfs-prregset.h": [ "sys/ucontext.h" ], "bits/sigcontext.h": [ "asm/sigcontext.h" ], "bits/socket.h": [ "asm/socket.h" ], }, diff --git a/sysdeps/gnu/net/if.h b/socket/net/if.h similarity index 98% rename from sysdeps/gnu/net/if.h rename to socket/net/if.h index 8ab14d0..8431e00 100644 --- a/sysdeps/gnu/net/if.h +++ b/socket/net/if.h @@ -21,12 +21,6 @@ #include -#ifdef __USE_MISC -# include -# include -#endif - - /* Length of interface name. */ #define IF_NAMESIZE 16 @@ -38,6 +32,8 @@ struct if_nameindex #ifdef __USE_MISC +# include /* for struct sockaddr */ + /* Standard interface flags. */ enum { diff --git a/socket/sys/socket.h b/socket/sys/socket.h index 305e620..6a68164 100644 --- a/socket/sys/socket.h +++ b/socket/sys/socket.h @@ -23,7 +23,10 @@ __BEGIN_DECLS +#include #include +#include +#include #include /* This operating system-specific header file defines the SOCK_*, PF_*, diff --git a/stdlib/sys/random.h b/stdlib/sys/random.h index b351ef5..5edef78 100644 --- a/stdlib/sys/random.h +++ b/stdlib/sys/random.h @@ -20,7 +20,9 @@ #define _SYS_RANDOM_H 1 #include -#include + +#include +#include /* Flags for use with getrandom. */ #define GRND_NONBLOCK 0x01 diff --git a/sysdeps/generic/net/if.h b/sysdeps/generic/net/if.h deleted file mode 100644 index 38238d7..0000000 --- a/sysdeps/generic/net/if.h +++ /dev/null @@ -1,49 +0,0 @@ -/* net/if.h -- declarations for inquiring about network interfaces - Copyright (C) 2000-2020 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, see - . */ - -#ifndef _NET_IF_H - -#define _NET_IF_H 1 -#include - - -__BEGIN_DECLS - -/* Convert an interface name to an index, and vice versa. */ - -extern unsigned int if_nametoindex (const char *__ifname) __THROW; -extern char *if_indextoname (unsigned int __ifindex, char *__ifname) __THROW; - -/* Return a list of all interfaces and their indices. */ - -struct if_nameindex - { - unsigned int if_index; /* 1, 2, ... */ - char *if_name; /* null terminated name: "eth0", ... */ - }; - -extern struct if_nameindex *if_nameindex (void) __THROW; - -/* Free the data returned from if_nameindex. */ - -extern void if_freenameindex (struct if_nameindex *__ptr) __THROW; - -__END_DECLS - - -#endif /* net/if.h */ diff --git a/sysdeps/generic/netinet/tcp.h b/sysdeps/generic/netinet/tcp.h deleted file mode 100644 index 3b59e94..0000000 --- a/sysdeps/generic/netinet/tcp.h +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright (c) 1982, 1986, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)tcp.h 8.1 (Berkeley) 6/10/93 - */ - -#ifndef _NETINET_TCP_H -#define _NETINET_TCP_H 1 - -#include - -__BEGIN_DECLS - -typedef unsigned int tcp_seq; -/* - * TCP header. - * Per RFC 793, September, 1981. - */ -struct tcphdr { - unsigned short th_sport; /* source port */ - unsigned short th_dport; /* destination port */ - tcp_seq th_seq; /* sequence number */ - tcp_seq th_ack; /* acknowledgement number */ -#if __BYTE_ORDER == __LITTLE_ENDIAN - unsigned char th_x2:4, /* (unused) */ - th_off:4; /* data offset */ -#endif -#if __BYTE_ORDER == __BIG_ENDIAN - unsigned char th_off:4, /* data offset */ - th_x2:4; /* (unused) */ -#endif - unsigned char th_flags; -#define TH_FIN 0x01 -#define TH_SYN 0x02 -#define TH_RST 0x04 -#define TH_PUSH 0x08 -#define TH_ACK 0x10 -#define TH_URG 0x20 - unsigned short th_win; /* window */ - unsigned short th_sum; /* checksum */ - unsigned short th_urp; /* urgent pointer */ -}; - -#define TCPOPT_EOL 0 -#define TCPOPT_NOP 1 -#define TCPOPT_MAXSEG 2 -#define TCPOLEN_MAXSEG 4 -#define TCPOPT_WINDOW 3 -#define TCPOLEN_WINDOW 3 -#define TCPOPT_SACK_PERMITTED 4 /* Experimental */ -#define TCPOLEN_SACK_PERMITTED 2 -#define TCPOPT_SACK 5 /* Experimental */ -#define TCPOPT_TIMESTAMP 8 -#define TCPOLEN_TIMESTAMP 10 -#define TCPOLEN_TSTAMP_APPA (TCPOLEN_TIMESTAMP+2) /* appendix A */ - -#define TCPOPT_TSTAMP_HDR \ - (TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_TIMESTAMP<<8|TCPOLEN_TIMESTAMP) - -/* - * Default maximum segment size for TCP. - * With an IP MSS of 576, this is 536, - * but 512 is probably more convenient. - * This should be defined as MIN(512, IP_MSS - sizeof (struct tcpiphdr)). - */ -#define TCP_MSS 512 - -#define TCP_MAXWIN 65535 /* largest value for (unscaled) window */ - -#define TCP_MAX_WINSHIFT 14 /* maximum window shift */ - -/* - * User-settable options (used with setsockopt). - */ -#define TCP_NODELAY 0x01 /* don't delay send to coalesce packets */ -#define TCP_MAXSEG 0x02 /* set maximum segment size */ - -#define SOL_TCP 6 /* TCP level */ - -__END_DECLS - -#endif /* netinet/tcp.h */ diff --git a/sysdeps/gnu/Makefile b/sysdeps/gnu/Makefile index 97fcb6f..37b47c8 100644 --- a/sysdeps/gnu/Makefile +++ b/sysdeps/gnu/Makefile @@ -58,24 +58,12 @@ $(foreach o,$(object-suffixes) $(object-suffixes:=.d),\ $(objpfx)errlist$o): $(objpfx)errlist-compat.h endif -ifeq ($(subdir),login) -sysdep_routines += setutxent getutxent endutxent getutxid getutxline \ - pututxline utmpxname updwtmpx getutmpx getutmp - -sysdep_headers += utmpx.h bits/utmpx.h -endif - ifeq ($(subdir),inet) sysdep_headers += netinet/udp.h netinet/ip_icmp.h endif -ifeq ($(subdir),misc) -sysdep_headers += sys/mtio.h -endif - - ifeq ($(subdir),csu) routines += unwind-resume shared-only-routines += unwind-resume diff --git a/sysdeps/gnu/bits/sem.h b/sysdeps/gnu/bits/sem.h index c2914d3..02e2491 100644 --- a/sysdeps/gnu/bits/sem.h +++ b/sysdeps/gnu/bits/sem.h @@ -15,11 +15,14 @@ License along with the GNU C Library; if not, see . */ +#ifndef _BITS_SEM_H +#define _BITS_SEM_H 1 + #ifndef _SYS_SEM_H # error "Never include directly; use instead." #endif -#include +#include /* Flags for `semop'. */ #define SEM_UNDO 0x1000 /* undo the operation on exit */ @@ -85,3 +88,5 @@ struct seminfo }; #endif /* __USE_MISC */ + +#endif /* bits/sem.h */ diff --git a/sysdeps/mach/hurd/bits/fcntl.h b/sysdeps/mach/hurd/bits/fcntl.h index 6678033..ad6b1f9 100644 --- a/sysdeps/mach/hurd/bits/fcntl.h +++ b/sysdeps/mach/hurd/bits/fcntl.h @@ -16,11 +16,14 @@ License along with the GNU C Library; if not, see . */ +#ifndef _BITS_FCNTL_H +#define _BITS_FCNTL_H 1 + #ifndef _FCNTL_H # error "Never use directly; include instead." #endif -#include +#include /* File access modes. These are understood by io servers; they can be passed in `dir_lookup', and are returned by `io_get_openmodes'. @@ -180,13 +183,9 @@ # define F_DUPFD_CLOEXEC 1030 /* Duplicate, set FD_CLOEXEC on new one. */ #endif - /* File descriptor flags used with F_GETFD and F_SETFD. */ #define FD_CLOEXEC 1 /* Close on exec. */ - -#include - /* The structure describing an advisory lock. This is the type of the third argument to `fcntl' for the F_GETLK, F_SETLK, and F_SETLKW requests. */ struct flock @@ -228,3 +227,5 @@ struct flock64 # define POSIX_FADV_DONTNEED 4 /* Don't need these pages. */ # define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */ #endif + +#endif /* bits/fcntl.h */ diff --git a/sysdeps/mach/hurd/bits/socket.h b/sysdeps/mach/hurd/bits/socket.h index f7c6f56..828a8ef 100644 --- a/sysdeps/mach/hurd/bits/socket.h +++ b/sysdeps/mach/hurd/bits/socket.h @@ -25,7 +25,7 @@ #endif -#include +#include #include #include #include diff --git a/sysdeps/mach/hurd/i386/Makefile b/sysdeps/mach/hurd/i386/Makefile index aa23a4b..50ce563 100644 --- a/sysdeps/mach/hurd/i386/Makefile +++ b/sysdeps/mach/hurd/i386/Makefile @@ -20,69 +20,34 @@ ifeq ($(subdir),conform) conformtest-xfail-conds += i386-gnu # For bug 23088 -test-xfail-POSIX/fcntl.h/conform = yes test-xfail-POSIX/signal.h/conform = yes -test-xfail-POSIX/semaphore.h/conform = yes test-xfail-POSIX/regex.h/conform = yes test-xfail-POSIX/aio.h/conform = yes test-xfail-POSIX/mqueue.h/conform = yes test-xfail-POSIX/sys/types.h/conform = yes -test-xfail-UNIX98/fcntl.h/conform = yes -test-xfail-UNIX98/netdb.h/conform = yes test-xfail-UNIX98/signal.h/conform = yes -test-xfail-UNIX98/semaphore.h/conform = yes test-xfail-UNIX98/regex.h/conform = yes test-xfail-UNIX98/aio.h/conform = yes -test-xfail-UNIX98/ftw.h/conform = yes test-xfail-UNIX98/mqueue.h/conform = yes -test-xfail-UNIX98/netinet/in.h/conform = yes -test-xfail-UNIX98/sys/sem.h/conform = yes -test-xfail-UNIX98/sys/uio.h/conform = yes -test-xfail-UNIX98/sys/socket.h/conform = yes test-xfail-UNIX98/sys/types.h/conform = yes test-xfail-UNIX98/stdlib.h/conform = yes -test-xfail-UNIX98/arpa/inet.h/conform = yes -test-xfail-POSIX2008/fcntl.h/conform = yes -test-xfail-POSIX2008/netdb.h/conform = yes test-xfail-POSIX2008/signal.h/conform = yes -test-xfail-POSIX2008/semaphore.h/conform = yes test-xfail-POSIX2008/regex.h/conform = yes test-xfail-POSIX2008/aio.h/conform = yes test-xfail-POSIX2008/mqueue.h/conform = yes -test-xfail-POSIX2008/netinet/in.h/conform = yes -test-xfail-POSIX2008/sys/socket.h/conform = yes test-xfail-POSIX2008/sys/types.h/conform = yes -test-xfail-POSIX2008/arpa/inet.h/conform = yes -test-xfail-XOPEN2K/fcntl.h/conform = yes -test-xfail-XOPEN2K/netdb.h/conform = yes test-xfail-XOPEN2K/signal.h/conform = yes -test-xfail-XOPEN2K/semaphore.h/conform = yes test-xfail-XOPEN2K/regex.h/conform = yes test-xfail-XOPEN2K/aio.h/conform = yes -test-xfail-XOPEN2K/ftw.h/conform = yes test-xfail-XOPEN2K/mqueue.h/conform = yes -test-xfail-XOPEN2K/netinet/in.h/conform = yes -test-xfail-XOPEN2K/sys/sem.h/conform = yes -test-xfail-XOPEN2K/sys/uio.h/conform = yes -test-xfail-XOPEN2K/sys/socket.h/conform = yes test-xfail-XOPEN2K/sys/types.h/conform = yes test-xfail-XOPEN2K/stdlib.h/conform = yes -test-xfail-XOPEN2K/arpa/inet.h/conform = yes -test-xfail-XOPEN2K8/fcntl.h/conform = yes -test-xfail-XOPEN2K8/netdb.h/conform = yes test-xfail-XOPEN2K8/signal.h/conform = yes -test-xfail-XOPEN2K8/semaphore.h/conform = yes test-xfail-XOPEN2K8/regex.h/conform = yes test-xfail-XOPEN2K8/aio.h/conform = yes -test-xfail-XOPEN2K8/ftw.h/conform = yes test-xfail-XOPEN2K8/mqueue.h/conform = yes -test-xfail-XOPEN2K8/netinet/in.h/conform = yes -test-xfail-XOPEN2K8/sys/sem.h/conform = yes -test-xfail-XOPEN2K8/sys/uio.h/conform = yes -test-xfail-XOPEN2K8/sys/socket.h/conform = yes test-xfail-XOPEN2K8/sys/types.h/conform = yes test-xfail-XOPEN2K8/stdlib.h/conform = yes -test-xfail-XOPEN2K8/arpa/inet.h/conform = yes # For bug 23819 test-xfail-ISO11/threads.h/linknamespace = yes diff --git a/sysdeps/mach/hurd/sendfile.c b/sysdeps/mach/hurd/sendfile.c index 1a03dd3..b68cfca 100644 --- a/sysdeps/mach/hurd/sendfile.c +++ b/sysdeps/mach/hurd/sendfile.c @@ -17,6 +17,7 @@ . */ #include +#include #include /* Send COUNT bytes from file associated with IN_FD starting at OFFSET to diff --git a/sysdeps/nptl/proc_service.h b/sysdeps/nptl/proc_service.h index afb27b5..6022ef1 100644 --- a/sysdeps/nptl/proc_service.h +++ b/sysdeps/nptl/proc_service.h @@ -22,6 +22,9 @@ /* The definitions in this file must correspond to those in the debugger. */ #include +#include +#include + __BEGIN_DECLS /* Functions in this interface return one of these status codes. */ diff --git a/sysdeps/nptl/sys/procfs.h b/sysdeps/nptl/sys/procfs.h index d0e0dc4..67e33c4 100644 --- a/sysdeps/nptl/sys/procfs.h +++ b/sysdeps/nptl/sys/procfs.h @@ -19,7 +19,8 @@ #ifndef _SYS_PROCFS_H #define _SYS_PROCFS_H 1 -#include +#include +#include /* The rest of this file provides the types for emulation of the Solaris interfaces that should be implemented by diff --git a/sysdeps/nptl/thread_db.h b/sysdeps/nptl/thread_db.h index bf073b7..da5f2cd 100644 --- a/sysdeps/nptl/thread_db.h +++ b/sysdeps/nptl/thread_db.h @@ -24,7 +24,6 @@ with the goal to share the same code in the debugger. */ #include #include -#include #include #include diff --git a/sysdeps/posix/dl-fileid.h b/sysdeps/posix/dl-fileid.h index 7d1e9e4..39a4bff 100644 --- a/sysdeps/posix/dl-fileid.h +++ b/sysdeps/posix/dl-fileid.h @@ -23,8 +23,8 @@ a unique identifier for a file. */ struct r_file_id { - dev_t dev; - ino64_t ino; + __dev_t dev; + __ino64_t ino; }; /* Sample FD to fill in *ID. Returns true on success. diff --git a/sysdeps/powerpc/sys/platform/ppc.h b/sysdeps/powerpc/sys/platform/ppc.h index 335868c..8314190 100644 --- a/sysdeps/powerpc/sys/platform/ppc.h +++ b/sysdeps/powerpc/sys/platform/ppc.h @@ -20,24 +20,24 @@ #define _SYS_PLATFORM_PPC_H 1 #include -#include +#include #include /* Read the Time Base Register. */ -static __inline__ uint64_t +static __inline__ __uint64_t __ppc_get_timebase (void) { #if __GNUC_PREREQ (4, 8) return __builtin_ppc_get_timebase (); #else # ifdef __powerpc64__ - uint64_t __tb; + __uint64_t __tb; /* "volatile" is necessary here, because the user expects this assembly isn't moved after an optimization. */ __asm__ volatile ("mfspr %0, 268" : "=r" (__tb)); return __tb; # else /* not __powerpc64__ */ - uint32_t __tbu, __tbl, __tmp; \ + __uint32_t __tbu, __tbl, __tmp; __asm__ volatile ("0:\n\t" "mftbu %0\n\t" "mftbl %1\n\t" @@ -45,7 +45,7 @@ __ppc_get_timebase (void) "cmpw %0, %2\n\t" "bne- 0b" : "=r" (__tbu), "=r" (__tbl), "=r" (__tmp)); - return (((uint64_t) __tbu << 32) | __tbl); + return (((__uint64_t) __tbu << 32) | __tbl); # endif /* not __powerpc64__ */ #endif } diff --git a/sysdeps/pthread/semaphore.h b/sysdeps/pthread/semaphore.h index 436d21c..2532cc9 100644 --- a/sysdeps/pthread/semaphore.h +++ b/sysdeps/pthread/semaphore.h @@ -19,7 +19,7 @@ #define _SEMAPHORE_H 1 #include -#include + #ifdef __USE_XOPEN2K # include #endif diff --git a/sysdeps/unix/sysv/linux/aarch64/bits/procfs.h b/sysdeps/unix/sysv/linux/aarch64/bits/procfs.h index e0afc7a..51571cd 100644 --- a/sysdeps/unix/sysv/linux/aarch64/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/aarch64/bits/procfs.h @@ -17,19 +17,28 @@ License along with the GNU C Library; if not, see . */ +#ifndef _BITS_PROCFS_H +#define _BITS_PROCFS_H 1 + #ifndef _SYS_PROCFS_H # error "Never include directly; use instead." #endif +#include + /* Type for a general-purpose register. */ typedef __uint64_t elf_greg_t; /* And the whole bunch of them. We could have used `struct - pt_regs' directly in the typedef, but tradition says that + user_regs_struct' directly in the typedef, but tradition says that the register set is an array, which does have some peculiar - semantics, so leave it that way. */ + semantics, so leave it that way. + + struct user_regs_struct is defined in sys/user.h. */ #define ELF_NGREG (sizeof (struct user_regs_struct) / sizeof (elf_greg_t)) typedef elf_greg_t elf_gregset_t[ELF_NGREG]; /* Register set for the floating-point registers. */ typedef struct user_fpsimd_struct elf_fpregset_t; + +#endif /* bits/procfs.h */ diff --git a/sysdeps/unix/sysv/linux/alpha/bits/epoll.h b/sysdeps/unix/sysv/linux/alpha/bits/epoll.h index b9d0539..7769b6d 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/epoll.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/epoll.h @@ -15,6 +15,9 @@ License along with the GNU C Library; if not, see . */ +#ifndef _BITS_EPOLL_H +#define _BITS_EPOLL_H 1 + #ifndef _SYS_EPOLL_H # error "Never use directly; include instead." #endif @@ -25,3 +28,5 @@ enum EPOLL_CLOEXEC = 010000000 #define EPOLL_CLOEXEC EPOLL_CLOEXEC }; + +#endif /* bits/epoll.h */ diff --git a/sysdeps/unix/sysv/linux/alpha/bits/procfs-prregset.h b/sysdeps/unix/sysv/linux/alpha/bits/procfs-prregset.h index a5baf13..cc74865 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/procfs-prregset.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/procfs-prregset.h @@ -17,9 +17,18 @@ License along with the GNU C Library; if not, see . */ +#ifndef _BITS_PROCFS_PRREGSET_H +#define _BITS_PROCFS_PRREGSET_H 1 + #ifndef _SYS_PROCFS_H # error "Never include directly; use instead." #endif +/* For gregset_t and fpregset_t. FIXME: sys/procfs.h should not + expose all of sys/ucontext.h. */ +#include + typedef gregset_t __prgregset_t; typedef fpregset_t __prfpregset_t; + +#endif diff --git a/sysdeps/unix/sysv/linux/alpha/bits/procfs.h b/sysdeps/unix/sysv/linux/alpha/bits/procfs.h index 9d25006..9d546a4 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/procfs.h @@ -16,13 +16,13 @@ License along with the GNU C Library. If not, see . */ +#ifndef _BITS_PROCFS_H +#define _BITS_PROCFS_H 1 + #ifndef _SYS_PROCFS_H # error "Never include directly; use instead." #endif -#include -#include - /* * The OSF/1 version of makes gregset_t 46 entries long. * I have no idea why that is so. For now, we just leave it at 33 @@ -36,3 +36,5 @@ typedef elf_greg_t elf_gregset_t[ELF_NGREG]; typedef double elf_fpreg_t; typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; + +#endif /* bits/procfs.h */ diff --git a/sysdeps/unix/sysv/linux/alpha/sys/acct.h b/sysdeps/unix/sysv/linux/alpha/sys/acct.h index defa3ba..6ae4638 100644 --- a/sysdeps/unix/sysv/linux/alpha/sys/acct.h +++ b/sysdeps/unix/sysv/linux/alpha/sys/acct.h @@ -16,8 +16,8 @@ . */ #ifndef _SYS_ACCT_H - #define _SYS_ACCT_H 1 + #include #include diff --git a/sysdeps/unix/sysv/linux/arm/bits/procfs.h b/sysdeps/unix/sysv/linux/arm/bits/procfs.h index 7d0b308..da703d9 100644 --- a/sysdeps/unix/sysv/linux/arm/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/arm/bits/procfs.h @@ -16,6 +16,9 @@ License along with the GNU C Library. If not, see . */ +#ifndef _BITS_PROCFS_H +#define _BITS_PROCFS_H 1 + #ifndef _SYS_PROCFS_H # error "Never include directly; use instead." #endif @@ -26,9 +29,13 @@ typedef unsigned long elf_greg_t; /* And the whole bunch of them. We could have used `struct user_regs' directly in the typedef, but tradition says that the register set is an array, which does have some peculiar - semantics, so leave it that way. */ + semantics, so leave it that way. + + struct user_regs is defined in sys/user.h. */ #define ELF_NGREG (sizeof (struct user_regs) / sizeof (elf_greg_t)) typedef elf_greg_t elf_gregset_t[ELF_NGREG]; /* Register set for the floating-point registers. */ typedef struct user_fpregs elf_fpregset_t; + +#endif /* bits/procfs.h */ diff --git a/sysdeps/unix/sysv/linux/bits/epoll.h b/sysdeps/unix/sysv/linux/bits/epoll.h index 164b464..1202412 100644 --- a/sysdeps/unix/sysv/linux/bits/epoll.h +++ b/sysdeps/unix/sysv/linux/bits/epoll.h @@ -15,6 +15,9 @@ License along with the GNU C Library; if not, see . */ +#ifndef _BITS_EPOLL_H +#define _BITS_EPOLL_H 1 + #ifndef _SYS_EPOLL_H # error "Never use directly; include instead." #endif @@ -25,3 +28,5 @@ enum EPOLL_CLOEXEC = 02000000 #define EPOLL_CLOEXEC EPOLL_CLOEXEC }; + +#endif /* bits/epoll.h */ diff --git a/sysdeps/unix/sysv/linux/bits/sem.h b/sysdeps/unix/sysv/linux/bits/sem.h index e0f4155..7bbc7aa 100644 --- a/sysdeps/unix/sysv/linux/bits/sem.h +++ b/sysdeps/unix/sysv/linux/bits/sem.h @@ -15,11 +15,14 @@ License along with the GNU C Library; if not, see . */ +#ifndef _BITS_SEM_H +#define _BITS_SEM_H 1 + #ifndef _SYS_SEM_H # error "Never include directly; use instead." #endif -#include +#include #include /* Flags for `semop'. */ @@ -95,3 +98,5 @@ struct seminfo }; #endif /* __USE_MISC */ + +#endif /* bits/sem.h */ diff --git a/sysdeps/unix/sysv/linux/bits/socket.h b/sysdeps/unix/sysv/linux/bits/socket.h index 65c7219..e85fb58 100644 --- a/sysdeps/unix/sysv/linux/bits/socket.h +++ b/sysdeps/unix/sysv/linux/bits/socket.h @@ -24,7 +24,7 @@ #endif -#include +#include #include #include @@ -337,9 +337,9 @@ enum /* User visible structure for SCM_CREDENTIALS message */ struct ucred { - pid_t pid; /* PID of sending process. */ - uid_t uid; /* UID of sending process. */ - gid_t gid; /* GID of sending process. */ + __pid_t pid; /* PID of sending process. */ + __uid_t uid; /* UID of sending process. */ + __gid_t gid; /* GID of sending process. */ }; #endif diff --git a/sysdeps/unix/sysv/linux/bits/uio-ext.h b/sysdeps/unix/sysv/linux/bits/uio-ext.h index 85ceacd..ca27ffa 100644 --- a/sysdeps/unix/sysv/linux/bits/uio-ext.h +++ b/sysdeps/unix/sysv/linux/bits/uio-ext.h @@ -26,7 +26,7 @@ __BEGIN_DECLS /* Read from another process' address space. */ -extern ssize_t process_vm_readv (pid_t __pid, const struct iovec *__lvec, +extern ssize_t process_vm_readv (__pid_t __pid, const struct iovec *__lvec, unsigned long int __liovcnt, const struct iovec *__rvec, unsigned long int __riovcnt, @@ -34,7 +34,7 @@ extern ssize_t process_vm_readv (pid_t __pid, const struct iovec *__lvec, __THROW; /* Write to another process' address space. */ -extern ssize_t process_vm_writev (pid_t __pid, const struct iovec *__lvec, +extern ssize_t process_vm_writev (__pid_t __pid, const struct iovec *__lvec, unsigned long int __liovcnt, const struct iovec *__rvec, unsigned long int __riovcnt, diff --git a/sysdeps/unix/sysv/linux/csky/bits/procfs.h b/sysdeps/unix/sysv/linux/csky/bits/procfs.h index 2be553e..ed084e4 100644 --- a/sysdeps/unix/sysv/linux/csky/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/csky/bits/procfs.h @@ -16,6 +16,9 @@ License along with the GNU C Library. If not, see . */ +#ifndef _BITS_PROCFS_H +#define _BITS_PROCFS_H 1 + #ifndef _SYS_PROCFS_H # error "Never include directly; use instead." #endif @@ -35,3 +38,5 @@ typedef elf_greg_t elf_gregset_t[ELF_NGREG]; #define ELF_NFPREG (sizeof (struct user_fp) / sizeof (elf_fpreg_t)) typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; + +#endif /* bits/procfs.h */ diff --git a/sysdeps/unix/sysv/linux/hppa/bits/epoll.h b/sysdeps/unix/sysv/linux/hppa/bits/epoll.h index 85fb0a9..1ba8cdf 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/epoll.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/epoll.h @@ -15,6 +15,9 @@ License along with the GNU C Library; if not, see . */ +#ifndef _BITS_EPOLL_H +#define _BITS_EPOLL_H 1 + #ifndef _SYS_EPOLL_H # error "Never use directly; include instead." #endif @@ -25,3 +28,5 @@ enum EPOLL_CLOEXEC = 010000000 #define EPOLL_CLOEXEC EPOLL_CLOEXEC }; + +#endif /* bits/epoll.h */ diff --git a/sysdeps/unix/sysv/linux/hppa/bits/procfs.h b/sysdeps/unix/sysv/linux/hppa/bits/procfs.h index 5de27f5..97d8e93 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/procfs.h @@ -16,6 +16,9 @@ License along with the GNU C Library. If not, see . */ +#ifndef _BITS_PROCFS_H +#define _BITS_PROCFS_H 1 + #ifndef _SYS_PROCFS_H # error "Never include directly; use instead." #endif @@ -28,3 +31,5 @@ typedef elf_greg_t elf_gregset_t[ELF_NGREG]; #define ELF_NFPREG 32 typedef double elf_fpreg_t; typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; + +#endif /* bits/procfs.h */ diff --git a/sysdeps/unix/sysv/linux/ia64/bits/procfs.h b/sysdeps/unix/sysv/linux/ia64/bits/procfs.h index 6c22aef..45d553c 100644 --- a/sysdeps/unix/sysv/linux/ia64/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/ia64/bits/procfs.h @@ -16,11 +16,15 @@ License along with the GNU C Library; if not, see . */ +#ifndef _BITS_PROCFS_H +#define _BITS_PROCFS_H 1 + #ifndef _SYS_PROCFS_H # error "Never include directly; use instead." #endif -#include +/* For struct __ia64_fpreg. FIXME: sys/procfs.h should not expose all + of sys/ucontext.h. */ #include #include @@ -39,3 +43,5 @@ typedef elf_greg_t greg_t; typedef elf_gregset_t gregset_t; typedef elf_fpregset_t fpregset_t; #define NGREG ELF_NGREG + +#endif /* bits/procfs.h */ diff --git a/sysdeps/unix/sysv/linux/m68k/bits/procfs.h b/sysdeps/unix/sysv/linux/m68k/bits/procfs.h index d0c06a1..ff53e73 100644 --- a/sysdeps/unix/sysv/linux/m68k/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/m68k/bits/procfs.h @@ -16,6 +16,9 @@ License along with the GNU C Library. If not, see . */ +#ifndef _BITS_PROCFS_H +#define _BITS_PROCFS_H 1 + #ifndef _SYS_PROCFS_H # error "Never include directly; use instead." #endif @@ -26,9 +29,13 @@ typedef unsigned long elf_greg_t; /* And the whole bunch of them. We could have used `struct user_regs_struct' directly in the typedef, but tradition says that the register set is an array, which does have some peculiar - semantics, so leave it that way. */ + semantics, so leave it that way. + + struct user_regs_struct is defined by sys/user.h. */ #define ELF_NGREG (sizeof (struct user_regs_struct) / sizeof (elf_greg_t)) typedef elf_greg_t elf_gregset_t[ELF_NGREG]; /* Register set for the floating-point registers. */ typedef struct user_m68kfp_struct elf_fpregset_t; + +#endif /* bits/procfs.h */ diff --git a/sysdeps/unix/sysv/linux/microblaze/bits/procfs.h b/sysdeps/unix/sysv/linux/microblaze/bits/procfs.h index a7ba7a3..acee07f 100644 --- a/sysdeps/unix/sysv/linux/microblaze/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/microblaze/bits/procfs.h @@ -17,6 +17,9 @@ License along with the GNU C Library; if not, see . */ +#ifndef _BITS_PROCFS_H +#define _BITS_PROCFS_H 1 + #ifndef _SYS_PROCFS_H # error "Never include directly; use instead." #endif @@ -27,9 +30,13 @@ typedef unsigned long elf_greg_t; /* And the whole bunch of them. We could have used `struct user_regs_struct' directly in the typedef, but tradition says that the register set is an array, which does have some peculiar - semantics, so leave it that way. */ + semantics, so leave it that way. + + struct user_regs_struct is defined by sys/user.h. */ #define ELF_NGREG (sizeof (struct user_regs_struct) / sizeof (elf_greg_t)) typedef elf_greg_t elf_gregset_t[ELF_NGREG]; /* Register set for the floating-point registers. */ typedef struct user_fpregs_struct elf_fpregset_t; + +#endif /* bits/procfs.h */ diff --git a/sysdeps/unix/sysv/linux/microblaze/sys/user.h b/sysdeps/unix/sysv/linux/microblaze/sys/user.h index 1ab0bb3..550ef47 100644 --- a/sysdeps/unix/sysv/linux/microblaze/sys/user.h +++ b/sysdeps/unix/sysv/linux/microblaze/sys/user.h @@ -17,7 +17,9 @@ . */ #ifndef _SYS_USER_H -# define _SYS_USER_H 1 +#define _SYS_USER_H 1 + +#include #include diff --git a/sysdeps/unix/sysv/linux/mips/bits/epoll.h b/sysdeps/unix/sysv/linux/mips/bits/epoll.h index 164b464..1202412 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/epoll.h +++ b/sysdeps/unix/sysv/linux/mips/bits/epoll.h @@ -15,6 +15,9 @@ License along with the GNU C Library; if not, see . */ +#ifndef _BITS_EPOLL_H +#define _BITS_EPOLL_H 1 + #ifndef _SYS_EPOLL_H # error "Never use directly; include instead." #endif @@ -25,3 +28,5 @@ enum EPOLL_CLOEXEC = 02000000 #define EPOLL_CLOEXEC EPOLL_CLOEXEC }; + +#endif /* bits/epoll.h */ diff --git a/sysdeps/unix/sysv/linux/mips/bits/procfs.h b/sysdeps/unix/sysv/linux/mips/bits/procfs.h index 86229f6..aa9090c 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/mips/bits/procfs.h @@ -16,6 +16,9 @@ License along with the GNU C Library. If not, see . */ +#ifndef _BITS_PROCFS_H +#define _BITS_PROCFS_H 1 + #ifndef _SYS_PROCFS_H # error "Never include directly; use instead." #endif @@ -35,3 +38,5 @@ typedef elf_greg_t elf_gregset_t[ELF_NGREG]; typedef double elf_fpreg_t; typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; + +#endif /* bits/procfs.h */ diff --git a/sysdeps/unix/sysv/linux/nios2/bits/procfs.h b/sysdeps/unix/sysv/linux/nios2/bits/procfs.h index ad776a8..7d0f5eb 100644 --- a/sysdeps/unix/sysv/linux/nios2/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/nios2/bits/procfs.h @@ -16,6 +16,9 @@ License along with the GNU C Library; if not, see . */ +#ifndef _BITS_PROCFS_H +#define _BITS_PROCFS_H 1 + #ifndef _SYS_PROCFS_H # error "Never include directly; use instead." #endif @@ -32,3 +35,5 @@ typedef elf_greg_t elf_gregset_t[ELF_NGREG]; /* Register set for the floating-point registers. */ typedef struct user_fpregs elf_fpregset_t; + +#endif /* bits/procfs.h */ diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/ppc.h b/sysdeps/unix/sysv/linux/powerpc/bits/ppc.h index 07c03c9..cc0e810 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/ppc.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/ppc.h @@ -26,7 +26,7 @@ __BEGIN_DECLS /* Read the time base frequency. */ -extern uint64_t __ppc_get_timebase_freq (void); +extern __uint64_t __ppc_get_timebase_freq (void); __END_DECLS diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/procfs.h b/sysdeps/unix/sysv/linux/powerpc/bits/procfs.h index 5c73b39..88b795b 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/procfs.h @@ -16,17 +16,20 @@ License along with the GNU C Library; if not, see . */ +#ifndef _BITS_PROCFS_H +#define _BITS_PROCFS_H 1 + #ifndef _SYS_PROCFS_H # error "Never include directly; use instead." #endif -#include -#include +#include +#include + +/* These definitions may have been provided by asm/elf.h. Otherwise + we define them here. */ +#ifndef ELF_NGREG -/* These definitions are normally provided by ucontext.h via - asm/sigcontext.h, asm/ptrace.h, and asm/elf.h. Otherwise we define - them here. */ -#if !defined __PPC64_ELF_H && !defined _ASM_POWERPC_ELF_H #define ELF_NGREG 48 /* includes nip, msr, lr, etc. */ #define ELF_NFPREG 33 /* includes fpscr */ #if __WORDSIZE == 32 @@ -46,4 +49,7 @@ typedef struct { unsigned int u[4]; } __attribute__ ((__aligned__ (16))) elf_vrreg_t; typedef elf_vrreg_t elf_vrregset_t[ELF_NVRREG]; -#endif + +#endif /* ifndef ELF_NGREG */ + +#endif /* bits/procfs.h */ diff --git a/sysdeps/unix/sysv/linux/powerpc/sys/user.h b/sysdeps/unix/sysv/linux/powerpc/sys/user.h index d22634e..2833a06 100644 --- a/sysdeps/unix/sysv/linux/powerpc/sys/user.h +++ b/sysdeps/unix/sysv/linux/powerpc/sys/user.h @@ -22,6 +22,7 @@ #include #include +#include struct user { struct pt_regs regs; /* entire machine state */ diff --git a/sysdeps/unix/sysv/linux/riscv/bits/procfs.h b/sysdeps/unix/sysv/linux/riscv/bits/procfs.h index 7e5b115..167991f 100644 --- a/sysdeps/unix/sysv/linux/riscv/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/riscv/bits/procfs.h @@ -16,10 +16,16 @@ License along with the GNU C Library. If not, see . */ +#ifndef _BITS_PROCFS_H +#define _BITS_PROCFS_H 1 + #ifndef _SYS_PROCFS_H # error "Never include directly; use instead." #endif +/* FIXME: sys/ucontext.h does not define NGREG or NFPREG unless + __USE_MISC is active, and sys/procfs.h should not expose all of + sys/ucontext.h. */ #include /* ELF register definitions */ @@ -29,3 +35,5 @@ typedef unsigned long int elf_greg_t; typedef unsigned long int elf_gregset_t[32]; typedef union __riscv_mc_fp_state elf_fpregset_t; + +#endif /* bits/procfs.h */ diff --git a/sysdeps/unix/sysv/linux/s390/bits/procfs.h b/sysdeps/unix/sysv/linux/s390/bits/procfs.h index 4d765aa..633b8f6 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/s390/bits/procfs.h @@ -16,10 +16,15 @@ License along with the GNU C Library; if not, see . */ +#ifndef _BITS_PROCFS_H +#define _BITS_PROCFS_H 1 + #ifndef _SYS_PROCFS_H # error "Never include directly; use instead." #endif +/* FIXME: sys/ucontext.h does not define NGREG unless __USE_MISC is + active, and sys/procfs.h should not expose all of sys/ucontext.h. */ #include typedef greg_t elf_greg_t; @@ -27,3 +32,5 @@ typedef greg_t elf_greg_t; typedef gregset_t elf_gregset_t; typedef fpreg_t elf_fpreg_t; typedef fpregset_t elf_fpregset_t; + +#endif /* bits/procfs.h */ diff --git a/sysdeps/unix/sysv/linux/s390/bits/utmp.h b/sysdeps/unix/sysv/linux/s390/bits/utmp.h index ec0ee02..ffe5a24 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/utmp.h +++ b/sysdeps/unix/sysv/linux/s390/bits/utmp.h @@ -1,4 +1,4 @@ -/* The `struct utmp' type, describing entries in the utmp file. GNU version. +/* The `struct utmp' type, describing entries in the utmp file. S/390 version. Copyright (C) 1993-2020 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -16,15 +16,13 @@ License along with the GNU C Library; if not, see . */ +#ifndef _BITS_UTMP_H +#define _BITS_UTMP_H 1 + #ifndef _UTMP_H # error "Never include directly; use instead." #endif -#include -#include -#include -#include - #define UT_LINESIZE 32 #define UT_NAMESIZE 32 @@ -35,11 +33,7 @@ previous logins. */ struct lastlog { -#if __WORDSIZE == 32 - int64_t ll_time; -#else - __time_t ll_time; -#endif + __time64_t ll_time; char ll_line[UT_LINESIZE]; char ll_host[UT_HOSTSIZE]; }; @@ -64,28 +58,25 @@ struct utmp char ut_id[4] __attribute_nonstring__; /* Inittab ID. */ char ut_user[UT_NAMESIZE] - __attribute_nonstring__; /* Username. */ + __attribute_nonstring__; /* Username. */ char ut_host[UT_HOSTSIZE] - __attribute_nonstring__; /* Hostname for remote login. */ + __attribute_nonstring__; /* Hostname for remote login. */ struct exit_status ut_exit; /* Exit status of a process marked as DEAD_PROCESS. */ + /* The ut_session and ut_tv fields must be the same size when compiled 32- and 64-bit. This allows data files and shared memory to be - shared between 32- and 64-bit applications. */ -#if __WORDSIZE == 32 - int64_t ut_session; /* Session ID, used for windowing. */ + shared between 32- and 64-bit applications. Even on 64-bit systems, + struct timeval is not guaranteed to have both fields be 64 bits. */ + __int64_t ut_session; /* Session ID, used for windowing. */ struct { - int64_t tv_sec; /* Seconds. */ - int64_t tv_usec; /* Microseconds. */ + __int64_t tv_sec; /* Seconds. */ + __int64_t tv_usec; /* Microseconds. */ } ut_tv; /* Time entry was made. */ -#else - long int ut_session; /* Session ID, used for windowing. */ - struct timeval ut_tv; /* Time entry was made. */ -#endif - int32_t ut_addr_v6[4]; /* Internet address of remote host. */ - char __glibc_reserved[20]; /* Reserved for future use. */ + __int32_t ut_addr_v6[4]; /* Internet address of remote host. */ + char __glibc_reserved[20]; /* Reserved for future use. */ }; /* Backwards compatibility hacks. */ @@ -125,3 +116,5 @@ struct utmp #define _HAVE_UT_ID 1 #define _HAVE_UT_TV 1 #define _HAVE_UT_HOST 1 + +#endif /* bits/utmp.h */ diff --git a/sysdeps/unix/sysv/linux/s390/bits/utmpx.h b/sysdeps/unix/sysv/linux/s390/bits/utmpx.h index d68df97..3321a29 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/utmpx.h +++ b/sysdeps/unix/sysv/linux/s390/bits/utmpx.h @@ -1,4 +1,4 @@ -/* Structures and definitions for the user accounting database. GNU version. +/* Structures and definitions for the user accounting database. S/390 version. Copyright (C) 1997-2020 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -16,22 +16,13 @@ License along with the GNU C Library; if not, see . */ +#ifndef _BITS_UTMPX_H +#define _BITS_UTMPX_H 1 + #ifndef _UTMPX_H # error "Never include directly; use instead." #endif -#include -#include -#include - - -#ifdef __USE_GNU -# include -# define _PATH_UTMPX _PATH_UTMP -# define _PATH_WTMPX _PATH_WTMP -#endif - - #define __UT_LINESIZE 32 #define __UT_NAMESIZE 32 #define __UT_HOSTSIZE 256 @@ -67,20 +58,17 @@ struct utmpx struct __exit_status ut_exit; /* Exit status of a process marked as DEAD_PROCESS. */ -/* The fields ut_session and ut_tv must be the same size when compiled - 32- and 64-bit. This allows files and shared memory to be shared - between 32- and 64-bit applications. */ -#if __WORDSIZE == 32 +/* The ut_session and ut_tv fields must be the same size when compiled + 32- and 64-bit. This allows data files and shared memory to be + shared between 32- and 64-bit applications. Even on 64-bit systems, + struct timeval is not guaranteed to have both fields be 64 bits. */ __int64_t ut_session; /* Session ID, used for windowing. */ struct { __int64_t tv_sec; /* Seconds. */ __int64_t tv_usec; /* Microseconds. */ } ut_tv; /* Time entry was made. */ -#else - long int ut_session; /* Session ID, used for windowing. */ - struct timeval ut_tv; /* Time entry was made. */ -#endif + __int32_t ut_addr_v6[4]; /* Internet address of remote host. */ char __glibc_reserved[20]; /* Reserved for future use. */ }; @@ -104,3 +92,5 @@ struct utmpx #ifdef __USE_GNU # define ACCOUNTING 9 /* System accounting. */ #endif + +#endif /* bits/utmpx.h */ diff --git a/sysdeps/unix/sysv/linux/sh/bits/procfs.h b/sysdeps/unix/sysv/linux/sh/bits/procfs.h index 6b34f0a..09f6518 100644 --- a/sysdeps/unix/sysv/linux/sh/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/sh/bits/procfs.h @@ -16,9 +16,14 @@ License along with the GNU C Library; if not, see . */ +#ifndef _BITS_PROCFS_H +#define _BITS_PROCFS_H 1 + #ifndef _SYS_PROCFS_H # error "Never include directly; use instead." #endif /* elf_gregset_t and elf_fpregset_t are defined by sys/user.h for SH. */ + +#endif /* bits/procfs.h */ diff --git a/sysdeps/unix/sysv/linux/sparc/bits/epoll.h b/sysdeps/unix/sysv/linux/sparc/bits/epoll.h index 3c4abb9..228cce6 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/epoll.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/epoll.h @@ -15,6 +15,9 @@ License along with the GNU C Library; if not, see . */ +#ifndef _BITS_EPOLL_H +#define _BITS_EPOLL_H 1 + #ifndef _SYS_EPOLL_H # error "Never use directly; include instead." #endif @@ -25,3 +28,5 @@ enum EPOLL_CLOEXEC = 0x400000 #define EPOLL_CLOEXEC EPOLL_CLOEXEC }; + +#endif /* bits/epoll.h */ diff --git a/sysdeps/unix/sysv/linux/sparc/bits/procfs.h b/sysdeps/unix/sysv/linux/sparc/bits/procfs.h index ee81313..018671b 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/procfs.h @@ -16,12 +16,13 @@ License along with the GNU C Library; if not, see . */ +#ifndef _BITS_PROCFS_H +#define _BITS_PROCFS_H 1 + #ifndef _SYS_PROCFS_H # error "Never include directly; use instead." #endif -#include -#include #include #if __WORDSIZE == 64 @@ -59,3 +60,5 @@ typedef struct typedef unsigned long elf_greg_t; typedef elf_greg_t elf_gregset_t[ELF_NGREG]; + +#endif /* bits/procfs.h */ diff --git a/sysdeps/unix/sysv/linux/sys/acct.h b/sysdeps/unix/sysv/linux/sys/acct.h index 2cae51b..057fd47 100644 --- a/sysdeps/unix/sysv/linux/sys/acct.h +++ b/sysdeps/unix/sysv/linux/sys/acct.h @@ -18,10 +18,10 @@ #ifndef _SYS_ACCT_H #define _SYS_ACCT_H 1 -#include -#include +#include + #include -#include +#include __BEGIN_DECLS diff --git a/sysdeps/unix/sysv/linux/sys/epoll.h b/sysdeps/unix/sysv/linux/sys/epoll.h index 3ca6d48..2f55076 100644 --- a/sysdeps/unix/sysv/linux/sys/epoll.h +++ b/sysdeps/unix/sysv/linux/sys/epoll.h @@ -18,9 +18,9 @@ #ifndef _SYS_EPOLL_H #define _SYS_EPOLL_H 1 -#include -#include +#include +#include #include /* Get the platform-dependent flags. */ @@ -76,13 +76,13 @@ typedef union epoll_data { void *ptr; int fd; - uint32_t u32; - uint64_t u64; + __uint32_t u32; + __uint64_t u64; } epoll_data_t; struct epoll_event { - uint32_t events; /* Epoll events */ + __uint32_t events; /* Epoll events */ epoll_data_t data; /* User data variable */ } __EPOLL_PACKED; diff --git a/sysdeps/unix/sysv/linux/sys/eventfd.h b/sysdeps/unix/sysv/linux/sys/eventfd.h index 10515b2..fdd46e1 100644 --- a/sysdeps/unix/sysv/linux/sys/eventfd.h +++ b/sysdeps/unix/sysv/linux/sys/eventfd.h @@ -18,13 +18,14 @@ #ifndef _SYS_EVENTFD_H #define _SYS_EVENTFD_H 1 -#include +#include +#include /* Get the platform-dependent flags. */ #include /* Type for event counter. */ -typedef uint64_t eventfd_t; +typedef __uint64_t eventfd_t; __BEGIN_DECLS diff --git a/sysdeps/unix/sysv/linux/sys/fanotify.h b/sysdeps/unix/sysv/linux/sys/fanotify.h index 84c0a8b..678064f 100644 --- a/sysdeps/unix/sysv/linux/sys/fanotify.h +++ b/sysdeps/unix/sysv/linux/sys/fanotify.h @@ -18,10 +18,10 @@ #ifndef _SYS_FANOTIFY_H #define _SYS_FANOTIFY_H 1 -#include +#include +#include #include - __BEGIN_DECLS /* Create and initialize fanotify group. */ @@ -30,7 +30,7 @@ extern int fanotify_init (unsigned int __flags, unsigned int __event_f_flags) /* Add, remove, or modify an fanotify mark on a filesystem object. */ extern int fanotify_mark (int __fanotify_fd, unsigned int __flags, - uint64_t __mask, int __dfd, const char *__pathname) + __uint64_t __mask, int __dfd, const char *__pathname) __THROW; __END_DECLS diff --git a/sysdeps/unix/sysv/linux/sys/fsuid.h b/sysdeps/unix/sysv/linux/sys/fsuid.h index c3977b0..bb798b7 100644 --- a/sysdeps/unix/sysv/linux/sys/fsuid.h +++ b/sysdeps/unix/sysv/linux/sys/fsuid.h @@ -19,7 +19,7 @@ #define _SYS_FSUID_H 1 #include -#include +#include __BEGIN_DECLS diff --git a/sysdeps/unix/sysv/linux/sys/inotify.h b/sysdeps/unix/sysv/linux/sys/inotify.h index b57ab82..c22c4e6 100644 --- a/sysdeps/unix/sysv/linux/sys/inotify.h +++ b/sysdeps/unix/sysv/linux/sys/inotify.h @@ -18,7 +18,8 @@ #ifndef _SYS_INOTIFY_H #define _SYS_INOTIFY_H 1 -#include +#include +#include /* Get the platform-dependent flags. */ #include @@ -28,9 +29,9 @@ struct inotify_event { int wd; /* Watch descriptor. */ - uint32_t mask; /* Watch mask. */ - uint32_t cookie; /* Cookie to synchronize two events. */ - uint32_t len; /* Length (including NULs) of name. */ + __uint32_t mask; /* Watch mask. */ + __uint32_t cookie; /* Cookie to synchronize two events. */ + __uint32_t len; /* Length (including NULs) of name. */ char name __flexarr; /* Name. */ }; @@ -89,7 +90,7 @@ extern int inotify_init1 (int __flags) __THROW; /* Add watch of object NAME to inotify instance FD. Notify about events specified by MASK. */ -extern int inotify_add_watch (int __fd, const char *__name, uint32_t __mask) +extern int inotify_add_watch (int __fd, const char *__name, __uint32_t __mask) __THROW; /* Remove the watch specified by WD from the inotify instance FD. */ diff --git a/sysdeps/unix/sysv/linux/sys/procfs.h b/sysdeps/unix/sysv/linux/sys/procfs.h index e432bbf..2d28399 100644 --- a/sysdeps/unix/sysv/linux/sys/procfs.h +++ b/sysdeps/unix/sysv/linux/sys/procfs.h @@ -30,8 +30,10 @@ GDB unless you know what you are doing. */ #include -#include -#include + +#include +#include + #include /* bits/procfs.h, provided by each architecture, must define diff --git a/sysdeps/unix/sysv/linux/sys/quota.h b/sysdeps/unix/sysv/linux/sys/quota.h index 23f0068..b972d3f 100644 --- a/sysdeps/unix/sysv/linux/sys/quota.h +++ b/sysdeps/unix/sysv/linux/sys/quota.h @@ -52,8 +52,8 @@ #define _SYS_QUOTA_H 1 #include -#include +#include #include /* diff --git a/sysdeps/unix/sysv/linux/sys/raw.h b/sysdeps/unix/sysv/linux/sys/raw.h index 1bb47a3..0966d9a 100644 --- a/sysdeps/unix/sysv/linux/sys/raw.h +++ b/sysdeps/unix/sysv/linux/sys/raw.h @@ -18,7 +18,8 @@ #ifndef _SYS_RAW_H #define _SYS_RAW_H 1 -#include +#include +#include #include /* The major device number for raw devices. */ @@ -31,8 +32,8 @@ struct raw_config_request { int raw_minor; - uint64_t block_major; - uint64_t block_minor; + __uint64_t block_major; + __uint64_t block_minor; }; #endif /* sys/raw.h */ diff --git a/sysdeps/unix/sysv/linux/sys/signalfd.h b/sysdeps/unix/sysv/linux/sys/signalfd.h index bbaac7b..e8fa358 100644 --- a/sysdeps/unix/sysv/linux/sys/signalfd.h +++ b/sysdeps/unix/sysv/linux/sys/signalfd.h @@ -18,7 +18,8 @@ #ifndef _SYS_SIGNALFD_H #define _SYS_SIGNALFD_H 1 -#include +#include +#include #include /* Get the platform-dependent flags. */ @@ -26,28 +27,28 @@ struct signalfd_siginfo { - uint32_t ssi_signo; - int32_t ssi_errno; - int32_t ssi_code; - uint32_t ssi_pid; - uint32_t ssi_uid; - int32_t ssi_fd; - uint32_t ssi_tid; - uint32_t ssi_band; - uint32_t ssi_overrun; - uint32_t ssi_trapno; - int32_t ssi_status; - int32_t ssi_int; - uint64_t ssi_ptr; - uint64_t ssi_utime; - uint64_t ssi_stime; - uint64_t ssi_addr; - uint16_t ssi_addr_lsb; - uint16_t __pad2; - int32_t ssi_syscall; - uint64_t ssi_call_addr; - uint32_t ssi_arch; - uint8_t __pad[28]; + __uint32_t ssi_signo; + __int32_t ssi_errno; + __int32_t ssi_code; + __uint32_t ssi_pid; + __uint32_t ssi_uid; + __int32_t ssi_fd; + __uint32_t ssi_tid; + __uint32_t ssi_band; + __uint32_t ssi_overrun; + __uint32_t ssi_trapno; + __int32_t ssi_status; + __int32_t ssi_int; + __uint64_t ssi_ptr; + __uint64_t ssi_utime; + __uint64_t ssi_stime; + __uint64_t ssi_addr; + __uint16_t ssi_addr_lsb; + __uint16_t __pad2; + __int32_t ssi_syscall; + __uint64_t ssi_call_addr; + __uint32_t ssi_arch; + __uint8_t __pad[28]; }; __BEGIN_DECLS diff --git a/sysdeps/unix/sysv/linux/x86/bits/epoll.h b/sysdeps/unix/sysv/linux/x86/bits/epoll.h index 0b34b3d..079cbf1 100644 --- a/sysdeps/unix/sysv/linux/x86/bits/epoll.h +++ b/sysdeps/unix/sysv/linux/x86/bits/epoll.h @@ -15,6 +15,9 @@ License along with the GNU C Library; if not, see . */ +#ifndef _BITS_EPOLL_H +#define _BITS_EPOLL_H 1 + #ifndef _SYS_EPOLL_H # error "Never use directly; include instead." #endif @@ -27,3 +30,5 @@ enum }; #define __EPOLL_PACKED __attribute__ ((__packed__)) + +#endif /* bits/epoll.h */ diff --git a/sysdeps/unix/sysv/linux/x86/bits/procfs.h b/sysdeps/unix/sysv/linux/x86/bits/procfs.h index 2301230..19c045d 100644 --- a/sysdeps/unix/sysv/linux/x86/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/x86/bits/procfs.h @@ -16,6 +16,9 @@ License along with the GNU C Library; if not, see . */ +#ifndef _BITS_PROCFS_H +#define _BITS_PROCFS_H 1 + #ifndef _SYS_PROCFS_H # error "Never include directly; use instead." #endif @@ -48,3 +51,5 @@ typedef struct user_fpxregs_struct elf_fpxregset_t; floating-point stuff. */ typedef struct user_fpregs_struct elf_fpregset_t; #endif + +#endif /* bits/procfs.h */ diff --git a/sysvipc/sys/sem.h b/sysvipc/sys/sem.h index 852c8a0..519a78a 100644 --- a/sysvipc/sys/sem.h +++ b/sysvipc/sys/sem.h @@ -25,6 +25,8 @@ /* Define types required by the standard. */ #include +#include +#include #ifdef __USE_GNU # include #endif