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 <bits/stdint-uintn.h>).
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.
---
bits/fcntl.h | 9 +-
bits/sem.h | 7 +-
{sysdeps/gnu/bits => bits}/utmp.h | 32 ++++--
{sysdeps/gnu/bits => bits}/utmpx.h | 35 +++---
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 | 13 ++-
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 +
.../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/ipc.h | 2 +-
sysdeps/unix/sysv/linux/ia64/bits/procfs.h | 8 +-
sysdeps/unix/sysv/linux/m68k/bits/procfs.h | 9 +-
.../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 ++
.../{gnu => unix/sysv/linux/s390}/bits/utmp.h | 37 +++---
sysdeps/unix/sysv/linux/s390/bits/utmpx.h | 34 ++----
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 +
99 files changed, 443 insertions(+), 477 deletions(-)
copy {sysdeps/gnu/bits => bits}/utmp.h (83%)
rename {sysdeps/gnu/bits => bits}/utmpx.h (82%)
create mode 100644 include/netinet/in_systm.h
create mode 100644 include/netinet/ip.h
create mode 100644 include/netinet/tcp.h
create mode 100644 include/sys/mtio.h
create mode 100644 include/utmpx.h
rename {sysdeps/generic => inet}/netinet/in_systm.h (97%)
rename {sysdeps/generic => inet}/netinet/ip.h (99%)
rename {sysdeps/gnu => inet}/netinet/tcp.h (99%)
rename {sysdeps/gnu => login}/utmpx.h (94%)
rename {sysdeps/gnu => misc}/sys/mtio.h (99%)
rename {sysdeps/gnu => socket}/net/if.h (98%)
delete mode 100644 sysdeps/generic/net/if.h
delete mode 100644 sysdeps/generic/netinet/tcp.h
rename sysdeps/{gnu => unix/sysv/linux/s390}/bits/utmp.h (83%)
@@ -16,10 +16,14 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_FCNTL_H
+#define _BITS_FCNTL_H 1
+
#ifndef _FCNTL_H
#error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
#endif
+#include <bits/types.h>
/* 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 <bits/types.h>
-
/* 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
@@ -15,11 +15,14 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_SEM_H
+#define _BITS_SEM_H 1
+
#ifndef _SYS_SEM_H
# error "Never include <bits/sem.h> directly; use <sys/sem.h> instead."
#endif
-#include <sys/types.h>
+#include <bits/types.h>
/* 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 */
similarity index 83%
copy from sysdeps/gnu/bits/utmp.h
copy to bits/utmp.h
@@ -16,13 +16,13 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_UTMP_H
+#define _BITS_UTMP_H 1
+
#ifndef _UTMP_H
# error "Never include <bits/utmp.h> directly; use <utmp.h> instead."
#endif
-#include <paths.h>
-#include <sys/time.h>
-#include <sys/types.h>
#include <bits/wordsize.h>
@@ -36,7 +36,7 @@
struct lastlog
{
#if __WORDSIZE_TIME64_COMPAT32
- int32_t ll_time;
+ __int32_t ll_time;
#else
__time_t ll_time;
#endif
@@ -68,23 +68,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. */
@@ -124,3 +130,5 @@ struct utmp
#define _HAVE_UT_ID 1
#define _HAVE_UT_TV 1
#define _HAVE_UT_HOST 1
+
+#endif /* bits/utmp.h */
similarity index 82%
rename from sysdeps/gnu/bits/utmpx.h
rename to bits/utmpx.h
@@ -16,22 +16,13 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_UTMPX_H
+#define _BITS_UTMPX_H 1
+
#ifndef _UTMPX_H
# error "Never include <bits/utmpx.h> directly; use <utmpx.h> instead."
#endif
-#include <bits/types.h>
-#include <sys/time.h>
-#include <bits/wordsize.h>
-
-
-#ifdef __USE_GNU
-# include <paths.h>
-# define _PATH_UTMPX _PATH_UTMP
-# define _PATH_WTMPX _PATH_WTMP
-#endif
-
-
#define __UT_LINESIZE 32
#define __UT_NAMESIZE 32
#define __UT_HOSTSIZE 256
@@ -55,7 +46,7 @@ struct __exit_status
struct utmpx
{
short int ut_type; /* Type of login. */
- __pid_t ut_pid; /* Process ID of login process. */
+ pid_t ut_pid; /* Process ID of login process. */
char ut_line[__UT_LINESIZE]; /* Devicename. */
char ut_id[4]; /* Inittab ID. */
char ut_user[__UT_NAMESIZE]; /* Username. */
@@ -63,9 +54,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
@@ -74,9 +66,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. */
};
@@ -100,3 +97,5 @@ struct utmpx
#ifdef __USE_GNU
# define ACCOUNTING 9 /* System accounting. */
#endif
+
+#endif /* bits/utmpx.h */
@@ -23,7 +23,6 @@
#include <features.h>
#include <elf.h>
#include <dlfcn.h>
-#include <sys/types.h>
/* 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 <bits/types/size_t.h>
#include <bits/elfclass.h> /* Defines __ELF_NATIVE_CLASS. */
#include <bits/link.h>
@@ -34,8 +34,6 @@
#include <features.h>
-#include <sys/types.h>
-
/*
* See gmon_out.h for gmon.out format.
*/
@@ -20,8 +20,8 @@
#include <features.h>
-#include <sys/time.h>
-#include <sys/types.h>
+#include <bits/types/size_t.h>
+#include <bits/types/struct_timeval.h>
/* This interface is intended to follow the sprofil() system calls as
described by the sprofil(2) man page of Irix v6.5, except that:
@@ -20,6 +20,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <sys/profil.h>
+#include <sys/time.h>
#include <bits/wordsize.h>
@@ -1,6 +1,6 @@
#ifndef _NET_IF_H
-# include_next <net/if.h>
+#include <socket/net/if.h>
#ifndef _ISOMAC
libc_hidden_proto (if_nametoindex)
@@ -2,6 +2,7 @@
#include <inet/netinet/ether.h>
# ifndef _ISOMAC
+# include <bits/types/size_t.h>
libc_hidden_proto (ether_aton_r)
libc_hidden_proto (ether_ntoa_r)
new file mode 100644
@@ -0,0 +1 @@
+#include <inet/netinet/in_systm.h>
new file mode 100644
@@ -0,0 +1 @@
+#include <inet/netinet/ip.h>
new file mode 100644
@@ -0,0 +1 @@
+#include <inet/netinet/tcp.h>
new file mode 100644
@@ -0,0 +1 @@
+#include <misc/sys/mtio.h>
new file mode 100644
@@ -0,0 +1 @@
+#include <login/utmpx.h>
@@ -19,9 +19,7 @@
#define _ALIASES_H 1
#include <features.h>
-
-#include <sys/types.h>
-
+#include <bits/types/size_t.h>
__BEGIN_DECLS
@@ -15,8 +15,9 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#include <stdint.h>
#include <netinet/in.h>
+#include <endian.h>
+#include <stdint.h>
#undef htonl
#undef ntohl
@@ -16,6 +16,8 @@
<http://www.gnu.org/licenses/>. */
#include <netinet/in.h>
+#include <endian.h>
+#include <stdint.h>
#undef htons
#undef ntohs
similarity index 97%
rename from sysdeps/generic/netinet/in_systm.h
rename to inet/netinet/in_systm.h
@@ -19,8 +19,7 @@
#ifndef _NETINET_IN_SYSTM_H
#define _NETINET_IN_SYSTM_H 1
-#include <sys/types.h>
-#include <stdint.h>
+#include <bits/stdint-uintn.h>
__BEGIN_DECLS
similarity index 99%
rename from sysdeps/generic/netinet/ip.h
rename to inet/netinet/ip.h
@@ -19,9 +19,10 @@
#define __NETINET_IP_H 1
#include <features.h>
-#include <sys/types.h>
#include <netinet/in.h>
+#include <bits/endian.h>
+#include <bits/stdint-uintn.h>
__BEGIN_DECLS
similarity index 99%
rename from sysdeps/gnu/netinet/tcp.h
rename to inet/netinet/tcp.h
@@ -85,9 +85,9 @@
#define TCP_REPAIR_OFF_NO_WP -1
#ifdef __USE_MISC
-# include <sys/types.h>
+# include <bits/stdint-uintn.h>
+# include <bits/endian.h>
# include <sys/socket.h>
-# include <stdint.h>
typedef uint32_t tcp_seq;
/*
@@ -51,8 +51,11 @@
#define _FTS_H 1
#include <features.h>
-#include <sys/types.h>
+#include <bits/types/dev_t.h>
+#include <bits/types/ino_t.h>
+#include <bits/types/ino64_t.h>
+#include <bits/types/nlink_t.h>
typedef struct {
struct _ftsent *fts_cur; /* current node */
@@ -24,7 +24,6 @@
#include <features.h>
-#include <sys/types.h>
#include <sys/stat.h>
@@ -20,7 +20,11 @@
#define _SYS_SENDFILE_H 1
#include <features.h>
-#include <sys/types.h>
+
+#include <bits/types.h>
+#include <bits/types/off_t.h>
+#include <bits/types/size_t.h>
+#include <bits/types/ssize_t.h>
__BEGIN_DECLS
@@ -23,12 +23,15 @@ subdir := login
include ../Makeconfig
-headers := utmp.h bits/utmp.h lastlog.h pty.h
+headers := utmp.h bits/utmp.h utmpx.h bits/utmpx.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
+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)"'
@@ -20,21 +20,26 @@
#include <features.h>
-#include <sys/types.h>
-
-
-__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 <bits/types.h>
+#include <bits/types/pid_t.h>
+#include <bits/types/suseconds_t.h>
+#include <bits/types/time_t.h>
+#include <bits/types/struct_timeval.h>
/* Get system dependent values and data structures. */
#include <bits/utmp.h>
/* Compatibility names for the strings of the canonical file names. */
+#include <paths.h>
#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. */
similarity index 94%
rename from sysdeps/gnu/utmpx.h
rename to login/utmpx.h
@@ -19,15 +19,22 @@
#define _UTMPX_H 1
#include <features.h>
-#include <sys/time.h>
/* Required according to Unix98. */
+#include <bits/types.h>
#include <bits/types/pid_t.h>
+#include <bits/types/suseconds_t.h>
+#include <bits/types/time_t.h>
+#include <bits/types/struct_timeval.h>
/* Get system dependent values and data structures. */
#include <bits/utmpx.h>
#ifdef __USE_GNU
+# include <paths.h>
+# 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
@@ -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 \
similarity index 99%
rename from sysdeps/gnu/sys/mtio.h
rename to 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 <sys/types.h>
#include <sys/ioctl.h>
-
/* Structure for MTIOCTOP - magnetic tape operation command. */
struct mtop
{
@@ -19,7 +19,10 @@
#define _SYS_UIO_H 1
#include <features.h>
-#include <sys/types.h>
+
+#include <bits/types.h>
+#include <bits/types/size_t.h>
+#include <bits/types/ssize_t.h>
#include <bits/types/struct_iovec.h>
#include <bits/uio_lim.h>
#ifdef __IOV_MAX
@@ -19,8 +19,9 @@
#define _SYS_XATTR_H 1
#include <features.h>
-#include <sys/types.h>
+#include <bits/types/size_t.h>
+#include <bits/types/ssize_t.h>
__BEGIN_DECLS
@@ -22,7 +22,7 @@
#define _NSS_H 1
#include <features.h>
-#include <stdint.h>
+#include <bits/types.h>
__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;
};
@@ -20,6 +20,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <stdint.h>
#include <support/support.h>
@@ -21,7 +21,10 @@
#include <features.h>
#include <sched.h>
-#include <sys/types.h>
+
+#include <bits/types.h>
+#include <bits/types/mode_t.h>
+#include <bits/types/pid_t.h>
#include <bits/types/sigset_t.h>
@@ -1,7 +1,7 @@
#ifndef __res_state_defined
#define __res_state_defined 1
-#include <sys/types.h>
+#include <bits/types.h>
#include <netinet/in.h>
/* 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
@@ -23,7 +23,12 @@
#define _AIO_H 1
#include <features.h>
-#include <sys/types.h>
+
+#include <bits/types.h>
+#include <bits/pthreadtypes.h>
+#include <bits/types/off_t.h>
+#include <bits/types/size_t.h>
+#include <bits/types/ssize_t.h>
#include <bits/types/sigevent_t.h>
#include <bits/sigevent-consts.h>
#include <bits/types/struct_timespec.h>
@@ -19,13 +19,19 @@
#define _MQUEUE_H 1
#include <features.h>
-#include <sys/types.h>
#include <fcntl.h>
+
+#include <bits/types.h>
+#include <bits/pthreadtypes.h>
#include <bits/types/sigevent_t.h>
+#include <bits/types/size_t.h>
+#include <bits/types/ssize_t.h>
#include <bits/types/struct_timespec.h>
+
/* Get the definition of mqd_t and struct mq_attr. */
#include <bits/mqueue.h>
+
__BEGIN_DECLS
/* Establish connection between a process and a message queue NAME and
@@ -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" ],
},
similarity index 98%
rename from sysdeps/gnu/net/if.h
rename to socket/net/if.h
@@ -21,12 +21,6 @@
#include <features.h>
-#ifdef __USE_MISC
-# include <sys/types.h>
-# include <sys/socket.h>
-#endif
-
-
/* Length of interface name. */
#define IF_NAMESIZE 16
@@ -38,6 +32,8 @@ struct if_nameindex
#ifdef __USE_MISC
+# include <sys/socket.h> /* for struct sockaddr */
+
/* Standard interface flags. */
enum
{
@@ -23,7 +23,10 @@
__BEGIN_DECLS
+#include <bits/types.h>
#include <bits/types/size_t.h>
+#include <bits/types/ssize_t.h>
+#include <bits/types/socklen_t.h>
#include <bits/types/struct_iovec.h>
/* This operating system-specific header file defines the SOCK_*, PF_*,
@@ -20,7 +20,9 @@
#define _SYS_RANDOM_H 1
#include <features.h>
-#include <sys/types.h>
+
+#include <bits/types/size_t.h>
+#include <bits/types/ssize_t.h>
/* Flags for use with getrandom. */
#define GRND_NONBLOCK 0x01
deleted file mode 100644
deleted file mode 100644
@@ -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
@@ -15,11 +15,14 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_SEM_H
+#define _BITS_SEM_H 1
+
#ifndef _SYS_SEM_H
# error "Never include <bits/sem.h> directly; use <sys/sem.h> instead."
#endif
-#include <sys/types.h>
+#include <bits/types.h>
/* 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 */
@@ -16,11 +16,14 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_FCNTL_H
+#define _BITS_FCNTL_H 1
+
#ifndef _FCNTL_H
# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
#endif
-#include <sys/types.h>
+#include <bits/types.h>
/* 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 <bits/types.h>
-
/* 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 */
@@ -25,7 +25,7 @@
#endif
-#include <sys/types.h>
+#include <bits/types.h>
#include <bits/types/size_t.h>
#include <bits/types/socklen_t.h>
#include <bits/wordsize.h>
@@ -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
@@ -17,6 +17,7 @@
<http://www.gnu.org/licenses/>. */
#include <sys/sendfile.h>
+#include <sys/types.h>
#include <stddef.h>
/* Send COUNT bytes from file associated with IN_FD starting at OFFSET to
@@ -22,6 +22,9 @@
/* The definitions in this file must correspond to those in the debugger. */
#include <sys/procfs.h>
+#include <bits/types/size_t.h>
+#include <bits/types/pid_t.h>
+
__BEGIN_DECLS
/* Functions in this interface return one of these status codes. */
@@ -19,7 +19,8 @@
#ifndef _SYS_PROCFS_H
#define _SYS_PROCFS_H 1
-#include <sys/types.h>
+#include <features.h>
+#include <bits/types.h>
/* The rest of this file provides the types for emulation of the
Solaris <proc_service.h> interfaces that should be implemented by
@@ -24,7 +24,6 @@
with the goal to share the same code in the debugger. */
#include <pthread.h>
#include <stdint.h>
-#include <sys/types.h>
#include <sys/procfs.h>
#include <bits/types/sigset_t.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.
@@ -20,24 +20,24 @@
#define _SYS_PLATFORM_PPC_H 1
#include <features.h>
-#include <stdint.h>
+#include <bits/types.h>
#include <bits/ppc.h>
/* 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
}
@@ -19,7 +19,7 @@
#define _SEMAPHORE_H 1
#include <features.h>
-#include <sys/types.h>
+
#ifdef __USE_XOPEN2K
# include <bits/types/struct_timespec.h>
#endif
@@ -17,19 +17,28 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_PROCFS_H
+#define _BITS_PROCFS_H 1
+
#ifndef _SYS_PROCFS_H
# error "Never include <bits/procfs.h> directly; use <sys/procfs.h> instead."
#endif
+#include <bits/types.h>
+
/* 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 */
@@ -15,6 +15,9 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_EPOLL_H
+#define _BITS_EPOLL_H 1
+
#ifndef _SYS_EPOLL_H
# error "Never use <bits/epoll.h> directly; include <sys/epoll.h> instead."
#endif
@@ -25,3 +28,5 @@ enum
EPOLL_CLOEXEC = 010000000
#define EPOLL_CLOEXEC EPOLL_CLOEXEC
};
+
+#endif /* bits/epoll.h */
@@ -17,9 +17,18 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_PROCFS_PRREGSET_H
+#define _BITS_PROCFS_PRREGSET_H 1
+
#ifndef _SYS_PROCFS_H
# error "Never include <bits/procfs-prregset.h> directly; use <sys/procfs.h> instead."
#endif
+/* For gregset_t and fpregset_t. FIXME: sys/procfs.h should not
+ expose all of sys/ucontext.h. */
+#include <sys/ucontext.h>
+
typedef gregset_t __prgregset_t;
typedef fpregset_t __prfpregset_t;
+
+#endif
@@ -16,13 +16,13 @@
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_PROCFS_H
+#define _BITS_PROCFS_H 1
+
#ifndef _SYS_PROCFS_H
# error "Never include <bits/procfs.h> directly; use <sys/procfs.h> instead."
#endif
-#include <signal.h>
-#include <sys/ucontext.h>
-
/*
* The OSF/1 version of <sys/procfs.h> 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 */
@@ -16,8 +16,8 @@
<http://www.gnu.org/licenses/>. */
#ifndef _SYS_ACCT_H
-
#define _SYS_ACCT_H 1
+
#include <features.h>
#include <bits/types/time_t.h>
@@ -16,6 +16,9 @@
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_PROCFS_H
+#define _BITS_PROCFS_H 1
+
#ifndef _SYS_PROCFS_H
# error "Never include <bits/procfs.h> directly; use <sys/procfs.h> 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 */
@@ -15,6 +15,9 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_EPOLL_H
+#define _BITS_EPOLL_H 1
+
#ifndef _SYS_EPOLL_H
# error "Never use <bits/epoll.h> directly; include <sys/epoll.h> instead."
#endif
@@ -25,3 +28,5 @@ enum
EPOLL_CLOEXEC = 02000000
#define EPOLL_CLOEXEC EPOLL_CLOEXEC
};
+
+#endif /* bits/epoll.h */
@@ -15,11 +15,14 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_SEM_H
+#define _BITS_SEM_H 1
+
#ifndef _SYS_SEM_H
# error "Never include <bits/sem.h> directly; use <sys/sem.h> instead."
#endif
-#include <sys/types.h>
+#include <bits/types.h>
#include <bits/sem-pad.h>
/* Flags for `semop'. */
@@ -95,3 +98,5 @@ struct seminfo
};
#endif /* __USE_MISC */
+
+#endif /* bits/sem.h */
@@ -24,7 +24,7 @@
#endif
-#include <sys/types.h>
+#include <bits/types.h>
#include <bits/types/size_t.h>
#include <bits/types/socklen_t.h>
@@ -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
@@ -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,
@@ -16,6 +16,9 @@
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_PROCFS_H
+#define _BITS_PROCFS_H 1
+
#ifndef _SYS_PROCFS_H
# error "Never include <bits/procfs.h> directly; use <sys/procfs.h> 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 */
@@ -15,6 +15,9 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_EPOLL_H
+#define _BITS_EPOLL_H 1
+
#ifndef _SYS_EPOLL_H
# error "Never use <bits/epoll.h> directly; include <sys/epoll.h> instead."
#endif
@@ -25,3 +28,5 @@ enum
EPOLL_CLOEXEC = 010000000
#define EPOLL_CLOEXEC EPOLL_CLOEXEC
};
+
+#endif /* bits/epoll.h */
@@ -16,6 +16,9 @@
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_PROCFS_H
+#define _BITS_PROCFS_H 1
+
#ifndef _SYS_PROCFS_H
# error "Never include <bits/procfs.h> directly; use <sys/procfs.h> 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 */
@@ -20,7 +20,7 @@
# error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
#endif
-#include <sys/types.h>
+#include <bits/types.h>
/* Mode bits for `msgget', `semget', and `shmget'. */
#define IPC_CREAT 01000 /* Create key if key does not exist. */
@@ -16,11 +16,15 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_PROCFS_H
+#define _BITS_PROCFS_H 1
+
#ifndef _SYS_PROCFS_H
# error "Never include <bits/procfs.h> directly; use <sys/procfs.h> instead."
#endif
-#include <signal.h>
+/* For struct __ia64_fpreg. FIXME: sys/procfs.h should not expose all
+ of sys/ucontext.h. */
#include <sys/ucontext.h>
#include <bits/sigcontext.h>
@@ -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 */
@@ -16,6 +16,9 @@
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_PROCFS_H
+#define _BITS_PROCFS_H 1
+
#ifndef _SYS_PROCFS_H
# error "Never include <bits/procfs.h> directly; use <sys/procfs.h> 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 */
@@ -17,6 +17,9 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_PROCFS_H
+#define _BITS_PROCFS_H 1
+
#ifndef _SYS_PROCFS_H
# error "Never include <bits/procfs.h> directly; use <sys/procfs.h> 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 */
@@ -17,7 +17,9 @@
<http://www.gnu.org/licenses/>. */
#ifndef _SYS_USER_H
-# define _SYS_USER_H 1
+#define _SYS_USER_H 1
+
+#include <features.h>
#include <features.h>
@@ -15,6 +15,9 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_EPOLL_H
+#define _BITS_EPOLL_H 1
+
#ifndef _SYS_EPOLL_H
# error "Never use <bits/epoll.h> directly; include <sys/epoll.h> instead."
#endif
@@ -25,3 +28,5 @@ enum
EPOLL_CLOEXEC = 02000000
#define EPOLL_CLOEXEC EPOLL_CLOEXEC
};
+
+#endif /* bits/epoll.h */
@@ -16,6 +16,9 @@
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_PROCFS_H
+#define _BITS_PROCFS_H 1
+
#ifndef _SYS_PROCFS_H
# error "Never include <bits/procfs.h> directly; use <sys/procfs.h> 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 */
@@ -16,6 +16,9 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_PROCFS_H
+#define _BITS_PROCFS_H 1
+
#ifndef _SYS_PROCFS_H
# error "Never include <bits/procfs.h> directly; use <sys/procfs.h> 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 */
@@ -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
@@ -16,17 +16,20 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_PROCFS_H
+#define _BITS_PROCFS_H 1
+
#ifndef _SYS_PROCFS_H
# error "Never include <bits/procfs.h> directly; use <sys/procfs.h> instead."
#endif
-#include <signal.h>
-#include <sys/ucontext.h>
+#include <bits/wordsize.h>
+#include <asm/elf.h>
+
+/* 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 */
@@ -22,6 +22,7 @@
#include <bits/types/size_t.h>
#include <asm/ptrace.h>
+#include <bits/types/size_t.h>
struct user {
struct pt_regs regs; /* entire machine state */
@@ -16,10 +16,16 @@
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_PROCFS_H
+#define _BITS_PROCFS_H 1
+
#ifndef _SYS_PROCFS_H
# error "Never include <bits/procfs.h> directly; use <sys/procfs.h> 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 <sys/ucontext.h>
/* 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 */
@@ -16,10 +16,15 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_PROCFS_H
+#define _BITS_PROCFS_H 1
+
#ifndef _SYS_PROCFS_H
# error "Never include <bits/procfs.h> directly; use <sys/procfs.h> 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 <sys/ucontext.h>
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 */
similarity index 83%
rename from sysdeps/gnu/bits/utmp.h
rename to 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-2019 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
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_UTMP_H
+#define _BITS_UTMP_H 1
+
#ifndef _UTMP_H
# error "Never include <bits/utmp.h> directly; use <utmp.h> instead."
#endif
-#include <paths.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <bits/wordsize.h>
-
#define UT_LINESIZE 32
#define UT_NAMESIZE 32
@@ -35,11 +33,7 @@
previous logins. */
struct lastlog
{
-#if __WORDSIZE_TIME64_COMPAT32
- int32_t ll_time;
-#else
- __time_t ll_time;
-#endif
+ __time64_t ll_time;
char ll_line[UT_LINESIZE];
char ll_host[UT_HOSTSIZE];
};
@@ -68,23 +62,20 @@ 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. */
-#if __WORDSIZE_TIME64_COMPAT32
- int32_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
{
- int32_t tv_sec; /* Seconds. */
- int32_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. */
@@ -124,3 +115,5 @@ struct utmp
#define _HAVE_UT_ID 1
#define _HAVE_UT_TV 1
#define _HAVE_UT_HOST 1
+
+#endif /* bits/utmp.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-2019 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
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_UTMPX_H
+#define _BITS_UTMPX_H 1
+
#ifndef _UTMPX_H
# error "Never include <bits/utmpx.h> directly; use <utmpx.h> instead."
#endif
-#include <bits/types.h>
-#include <sys/time.h>
-#include <bits/wordsize.h>
-
-
-#ifdef __USE_GNU
-# include <paths.h>
-# define _PATH_UTMPX _PATH_UTMP
-# define _PATH_WTMPX _PATH_WTMP
-#endif
-
-
#define __UT_LINESIZE 32
#define __UT_NAMESIZE 32
#define __UT_HOSTSIZE 256
@@ -55,7 +46,7 @@ struct __exit_status
struct utmpx
{
short int ut_type; /* Type of login. */
- __pid_t ut_pid; /* Process ID of login process. */
+ pid_t ut_pid; /* Process ID of login process. */
char ut_line[__UT_LINESIZE]; /* Devicename. */
char ut_id[4]; /* Inittab ID. */
char ut_user[__UT_NAMESIZE]; /* Username. */
@@ -63,20 +54,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. */
};
@@ -100,3 +88,5 @@ struct utmpx
#ifdef __USE_GNU
# define ACCOUNTING 9 /* System accounting. */
#endif
+
+#endif /* bits/utmpx.h */
@@ -16,9 +16,14 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_PROCFS_H
+#define _BITS_PROCFS_H 1
+
#ifndef _SYS_PROCFS_H
# error "Never include <bits/procfs.h> directly; use <sys/procfs.h> instead."
#endif
/* elf_gregset_t and elf_fpregset_t are defined by sys/user.h for
SH. */
+
+#endif /* bits/procfs.h */
@@ -15,6 +15,9 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_EPOLL_H
+#define _BITS_EPOLL_H 1
+
#ifndef _SYS_EPOLL_H
# error "Never use <bits/epoll.h> directly; include <sys/epoll.h> instead."
#endif
@@ -25,3 +28,5 @@ enum
EPOLL_CLOEXEC = 0x400000
#define EPOLL_CLOEXEC EPOLL_CLOEXEC
};
+
+#endif /* bits/epoll.h */
@@ -16,12 +16,13 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_PROCFS_H
+#define _BITS_PROCFS_H 1
+
#ifndef _SYS_PROCFS_H
# error "Never include <bits/procfs.h> directly; use <sys/procfs.h> instead."
#endif
-#include <signal.h>
-#include <sys/ucontext.h>
#include <bits/wordsize.h>
#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 */
@@ -18,10 +18,10 @@
#ifndef _SYS_ACCT_H
#define _SYS_ACCT_H 1
-#include <sys/types.h>
-#include <stdint.h>
+#include <features.h>
+
#include <bits/endian.h>
-#include <bits/types/time_t.h>
+#include <bits/stdint-uintn.h>
__BEGIN_DECLS
@@ -18,9 +18,9 @@
#ifndef _SYS_EPOLL_H
#define _SYS_EPOLL_H 1
-#include <stdint.h>
-#include <sys/types.h>
+#include <features.h>
+#include <bits/types.h>
#include <bits/types/sigset_t.h>
/* 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;
@@ -18,13 +18,14 @@
#ifndef _SYS_EVENTFD_H
#define _SYS_EVENTFD_H 1
-#include <stdint.h>
+#include <features.h>
+#include <bits/types.h>
/* Get the platform-dependent flags. */
#include <bits/eventfd.h>
/* Type for event counter. */
-typedef uint64_t eventfd_t;
+typedef __uint64_t eventfd_t;
__BEGIN_DECLS
@@ -18,10 +18,10 @@
#ifndef _SYS_FANOTIFY_H
#define _SYS_FANOTIFY_H 1
-#include <stdint.h>
+#include <features.h>
+#include <bits/types.h>
#include <linux/fanotify.h>
-
__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
@@ -19,7 +19,7 @@
#define _SYS_FSUID_H 1
#include <features.h>
-#include <sys/types.h>
+#include <bits/types.h>
__BEGIN_DECLS
@@ -18,7 +18,8 @@
#ifndef _SYS_INOTIFY_H
#define _SYS_INOTIFY_H 1
-#include <stdint.h>
+#include <features.h>
+#include <bits/types.h>
/* Get the platform-dependent flags. */
#include <bits/inotify.h>
@@ -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. */
@@ -30,8 +30,10 @@
GDB unless you know what you are doing. */
#include <features.h>
-#include <sys/time.h>
-#include <sys/types.h>
+
+#include <bits/types.h>
+#include <bits/types/struct_timeval.h>
+
#include <sys/user.h>
/* bits/procfs.h, provided by each architecture, must define
@@ -52,8 +52,8 @@
#define _SYS_QUOTA_H 1
#include <features.h>
-#include <sys/types.h>
+#include <bits/types.h>
#include <linux/quota.h>
/*
@@ -18,7 +18,8 @@
#ifndef _SYS_RAW_H
#define _SYS_RAW_H 1
-#include <stdint.h>
+#include <features.h>
+#include <bits/types.h>
#include <sys/ioctl.h>
/* 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 */
@@ -18,7 +18,8 @@
#ifndef _SYS_SIGNALFD_H
#define _SYS_SIGNALFD_H 1
-#include <stdint.h>
+#include <features.h>
+#include <bits/types.h>
#include <bits/types/sigset_t.h>
/* 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
@@ -15,6 +15,9 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_EPOLL_H
+#define _BITS_EPOLL_H 1
+
#ifndef _SYS_EPOLL_H
# error "Never use <bits/epoll.h> directly; include <sys/epoll.h> instead."
#endif
@@ -27,3 +30,5 @@ enum
};
#define __EPOLL_PACKED __attribute__ ((__packed__))
+
+#endif /* bits/epoll.h */
@@ -16,6 +16,9 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#ifndef _BITS_PROCFS_H
+#define _BITS_PROCFS_H 1
+
#ifndef _SYS_PROCFS_H
# error "Never include <bits/procfs.h> directly; use <sys/procfs.h> 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 */
@@ -25,6 +25,8 @@
/* Define types required by the standard. */
#include <bits/types/size_t.h>
+#include <bits/types/pid_t.h>
+#include <bits/types/time_t.h>
#ifdef __USE_GNU
# include <bits/types/struct_timespec.h>
#endif