[PATCH 0/6] Installed-header hygiene (final, hopefully)

Zack Weinberg zackw@panix.com
Thu Sep 22 13:31:00 GMT 2016


I have made all the changes requested on previous iterations of the
patch series.  I have also reorganized it to indicate which groups of
patches I propose to squash together for landing: 1[abcd], 2[abc], and
3[abc].

I believe that the only change not yet approved is the test script in
patch 6, which Carlos wanted Joseph to look at in detail.

Each complete squash group builds and passes the test suite on
x86_64-pc-linux-gnu, and after stripping debug information there are
no changes to any files outside of /usr/include (except for nscd,
which embeds the build time, blech).  Builds used gcc 6.2.0 (current
default for Debian unstable) and kernel headers from Linux 4.7.4
(ditto), and were configured with --prefix=/usr --enable-obsolete-rpc.

zw

Zack Weinberg (13):
  Installed-header hygiene (BZ#20366) 1a: Missing inclusions.
  Installed header hygiene (BZ#20366) 1b: BYTE_ORDER macros.
  Installed header hygiene (BZ#20366) 1c: _LIBC and __STDC_VERSION__ are
    not always defined.
  Installed-header hygiene (BZ#20366) 1d: Miscellaneous small changes.

  Installed-header hygiene (BZ#20366) 2a: obsolete BSD u_* types.
  Installed-header hygiene (BZ#20366) 2b: manual corrections after
    mechanical change.
  Installed-header hygiene (BZ#20366) 2c: New dependencies on stdint.h
    after mechanical change.

  Installed-header hygiene (BZ#20366) 3a: struct ifreq.
  Installed-header hygiene (BZ#20366) 3b: struct ether_addr.
  Installed-header hygiene (BZ#20366) 3c: struct osockaddr.

  Installed-header hygiene (BZ#20366) 4: stack_t.
  Installed-header hygiene (BZ#20366) 5: time.h types.
  Installed header hygiene (BZ#20366) 6: Test of installed headers.

 Rules                                           |  25 +++
 argp/argp.h                                     |   4 +-
 bits/in.h                                       |   4 +-
 bits/resource.h                                 |   3 +-
 bits/sigcontext.h                               |   7 +-
 bits/sigstack.h                                 |   7 +-
 bits/socket.h                                   |   4 +-
 bits/time.h                                     |  72 +++----
 gmon/sys/gmon.h                                 |  30 +--
 include/aliases.h                               |   3 +
 include/alloca.h                                |   4 +
 include/argz.h                                  |   3 +
 include/arpa/nameser.h                          |   7 +-
 include/arpa/nameser_compat.h                   |   3 +
 include/bits/types/clock_t.h                    |   1 +
 include/bits/types/clockid_t.h                  |   1 +
 include/bits/types/struct_itimerspec.h          |   1 +
 include/bits/types/struct_osockaddr.h           |   1 +
 include/bits/types/struct_timespec.h            |   1 +
 include/bits/types/struct_timeval.h             |   1 +
 include/bits/types/struct_tm.h                  |   1 +
 include/bits/types/time_t.h                     |   1 +
 include/bits/types/timer_t.h                    |   1 +
 include/elf.h                                   |   9 +-
 include/envz.h                                  |   3 +
 include/err.h                                   |   6 +
 include/execinfo.h                              |   3 +
 include/fpu_control.h                           |   6 +
 include/getopt.h                                |   5 +-
 include/gshadow.h                               |   3 +
 include/ifaddrs.h                               |   4 +
 include/libintl.h                               |   4 +
 include/link.h                                  |  11 +-
 include/malloc.h                                |   2 +
 include/mcheck.h                                |   3 +
 include/mntent.h                                |   3 +
 include/netinet/ether.h                         |   3 +
 include/nss.h                                   |   3 +
 include/obstack.h                               |   6 +
 include/printf.h                                |   4 +
 include/pty.h                                   |   3 +
 include/resolv.h                                |  35 ++--
 include/rpc/auth.h                              |   3 +
 include/rpc/auth_des.h                          |   3 +
 include/rpc/auth_unix.h                         |   6 +
 include/rpc/clnt.h                              |   3 +
 include/rpc/des_crypt.h                         |   3 +
 include/rpc/key_prot.h                          |   6 +
 include/rpc/netdb.h                             |   3 +
 include/rpc/pmap_clnt.h                         |   7 +-
 include/rpc/pmap_prot.h                         |   6 +
 include/rpc/pmap_rmt.h                          |   6 +
 include/rpc/rpc.h                               |   4 +
 include/rpc/rpc_msg.h                           |   3 +
 include/rpc/svc.h                               |   3 +
 include/rpc/svc_auth.h                          |   3 +
 include/rpc/xdr.h                               |   6 +
 include/rpcsvc/nis_callback.h                   |   3 +
 include/rpcsvc/nislib.h                         |   3 +
 include/rpcsvc/yp.h                             |   3 +
 include/rpcsvc/ypclnt.h                         |   3 +
 include/rpcsvc/ypupd.h                          |   3 +
 include/shadow.h                                |   3 +
 include/stdio_ext.h                             |   7 +-
 include/sys/epoll.h                             |   3 +
 include/sys/file.h                              |   4 +
 include/sys/gmon.h                              |   4 +
 include/sys/ioctl.h                             |   4 +
 include/sys/prctl.h                             |   3 +
 include/sys/profil.h                            |   3 +
 include/sys/statfs.h                            |   4 +
 include/sys/sysctl.h                            |   3 +
 include/sys/sysinfo.h                           |   3 +
 include/time.h                                  |   7 +-
 include/ttyent.h                                |   7 +-
 include/utmp.h                                  |   3 +
 inet/netinet/ether.h                            |   2 +
 inet/netinet/icmp6.h                            |  12 +-
 inet/netinet/igmp.h                             |   8 +-
 inet/netinet/ip6.h                              |   8 +-
 inet/protocols/routed.h                         |   6 +-
 inet/protocols/talkd.h                          |  22 ++-
 inet/protocols/timed.h                          |   6 +-
 io/fcntl.h                                      |   3 +-
 io/fts.h                                        |  20 +-
 io/sys/poll.h                                   |   3 +-
 io/sys/stat.h                                   |  13 +-
 io/utime.h                                      |   3 +-
 misc/sys/cdefs.h                                |  30 +--
 misc/sys/select.h                               |   8 +-
 nis/rpcsvc/nislib.h                             |   2 +-
 nptl_db/thread_db.h                             |   2 +-
 posix/glob.h                                    |   2 +-
 posix/sched.h                                   |   9 +-
 posix/sys/times.h                               |   4 +-
 posix/sys/types.h                               |   9 +-
 resolv/arpa/nameser.h                           | 120 ++++++------
 resolv/arpa/nameser_compat.h                    |   4 +-
 resolv/netdb.h                                  |   3 +-
 resolv/resolv.h                                 | 117 ++++++------
 rt/aio.h                                        |   3 +-
 rt/mqueue.h                                     |   3 +-
 scripts/check-installed-headers.sh              | 146 +++++++++++++++
 signal/signal.h                                 |   3 +-
 socket/Makefile                                 |   3 +-
 socket/bits/types/struct_osockaddr.h            |  12 ++
 socket/sys/socket.h                             |   8 +-
 sunrpc/rpc/rpc_des.h                            |   8 +-
 sysdeps/arm/nacl/include/bits/setjmp.h          |   3 +
 sysdeps/arm/sys/ucontext.h                      |   6 +
 sysdeps/generic/netinet/if_ether.h              |   2 +-
 sysdeps/generic/netinet/in_systm.h              |   8 +-
 sysdeps/generic/netinet/ip.h                    |  46 ++---
 sysdeps/generic/netinet/tcp.h                   |  34 ++--
 sysdeps/generic/sys/ucontext.h                  |   6 +-
 sysdeps/gnu/netinet/ip_icmp.h                   |  56 +++---
 sysdeps/gnu/netinet/tcp.h                       | 159 ++++++++--------
 sysdeps/gnu/netinet/udp.h                       |  19 +-
 sysdeps/i386/sys/ucontext.h                     |   6 +
 sysdeps/m68k/sys/ucontext.h                     |   6 +
 sysdeps/mach/hurd/bits/socket.h                 |   4 +-
 sysdeps/mach/hurd/i386/bits/sigcontext.h        |   7 +-
 sysdeps/mach/hurd/net/ethernet.h                |   8 +-
 sysdeps/mach/hurd/net/if_arp.h                  |   2 +-
 sysdeps/mach/hurd/net/if_ppp.h                  |   7 +-
 sysdeps/mach/hurd/net/route.h                   |  12 +-
 sysdeps/mach/sys/reboot.h                       |   6 +-
 sysdeps/mips/include/sys/asm.h                  |   6 +-
 sysdeps/mips/sys/ucontext.h                     |   9 +-
 sysdeps/nptl/pthread.h                          |   1 +
 sysdeps/pthread/semaphore.h                     |   3 +-
 sysdeps/unix/sysv/linux/aarch64/bits/sigstack.h |  25 ++-
 sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h  |   9 +-
 sysdeps/unix/sysv/linux/alpha/bits/resource.h   |   3 +-
 sysdeps/unix/sysv/linux/alpha/bits/sigstack.h   |  25 ++-
 sysdeps/unix/sysv/linux/alpha/sys/acct.h        |   4 +-
 sysdeps/unix/sysv/linux/alpha/sys/ucontext.h    |   3 +
 sysdeps/unix/sysv/linux/arm/sys/ucontext.h      |   6 +-
 sysdeps/unix/sysv/linux/bits/in.h               |   4 +-
 sysdeps/unix/sysv/linux/bits/resource.h         |   3 +-
 sysdeps/unix/sysv/linux/bits/sigcontext.h       |   5 +
 sysdeps/unix/sysv/linux/bits/sigstack.h         |  25 ++-
 sysdeps/unix/sysv/linux/bits/socket.h           |   4 +-
 sysdeps/unix/sysv/linux/bits/time.h             |  68 +++----
 sysdeps/unix/sysv/linux/bits/timex.h            |   1 +
 sysdeps/unix/sysv/linux/hppa/sys/ucontext.h     |   5 +-
 sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h  |   6 +-
 sysdeps/unix/sysv/linux/ia64/bits/sigstack.h    |  29 +--
 sysdeps/unix/sysv/linux/ia64/sys/ucontext.h     |   4 +
 sysdeps/unix/sysv/linux/include/sys/sysinfo.h   |   3 +
 sysdeps/unix/sysv/linux/include/sys/timex.h     |   3 +
 sysdeps/unix/sysv/linux/m68k/sys/ucontext.h     |   6 +
 sysdeps/unix/sysv/linux/mips/bits/resource.h    |   3 +-
 sysdeps/unix/sysv/linux/mips/bits/sigstack.h    |  25 ++-
 sysdeps/unix/sysv/linux/mips/sys/ucontext.h     |   9 +-
 sysdeps/unix/sysv/linux/net/ethernet.h          |  11 +-
 sysdeps/unix/sysv/linux/net/if_arp.h            |   5 +-
 sysdeps/unix/sysv/linux/net/if_ppp.h            |  12 +-
 sysdeps/unix/sysv/linux/net/if_shaper.h         |   6 +-
 sysdeps/unix/sysv/linux/net/ppp_defs.h          |   4 +-
 sysdeps/unix/sysv/linux/net/route.h             |  12 +-
 sysdeps/unix/sysv/linux/netinet/if_ether.h      |  16 +-
 sysdeps/unix/sysv/linux/netinet/if_fddi.h       |  10 +-
 sysdeps/unix/sysv/linux/netinet/if_tr.h         |  36 ++--
 sysdeps/unix/sysv/linux/netipx/ipx.h            |   9 +-
 sysdeps/unix/sysv/linux/netrose/rose.h          |   3 +
 sysdeps/unix/sysv/linux/nios2/sys/ucontext.h    |   6 +
 sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h |  25 ++-
 sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h  |   6 +-
 sysdeps/unix/sysv/linux/s390/sys/ucontext.h     |  10 +-
 sysdeps/unix/sysv/linux/sh/sys/ucontext.h       |   5 +-
 sysdeps/unix/sysv/linux/sparc/bits/resource.h   |   3 +-
 sysdeps/unix/sysv/linux/sparc/bits/sigcontext.h |   5 +
 sysdeps/unix/sysv/linux/sparc/bits/sigstack.h   |  25 ++-
 sysdeps/unix/sysv/linux/sparc/sys/ucontext.h    |   7 +
 sysdeps/unix/sysv/linux/sys/acct.h              |  34 ++--
 sysdeps/unix/sysv/linux/sys/quota.h             |   2 +-
 sysdeps/unix/sysv/linux/sys/timerfd.h           |   3 +-
 sysdeps/unix/sysv/linux/tile/sys/ucontext.h     |   6 +-
 sysdeps/unix/sysv/linux/x86/sys/ucontext.h      |   6 +-
 sysdeps/x86/fpu/include/bits/fenv.h             |   6 +
 sysvipc/sys/ipc.h                               |   4 -
 sysvipc/sys/msg.h                               |   3 +-
 sysvipc/sys/sem.h                               |   3 +-
 sysvipc/sys/shm.h                               |   3 +-
 time/Makefile                                   |   7 +-
 time/bits/types/clock_t.h                       |  15 ++
 time/bits/types/clockid_t.h                     |   9 +
 time/bits/types/struct_itimerspec.h             |  14 ++
 time/bits/types/struct_timespec.h               |  14 ++
 time/bits/types/struct_timeval.h                |  13 ++
 time/bits/types/struct_tm.h                     |  33 ++++
 time/bits/types/time_t.h                        |  14 ++
 time/bits/types/timer_t.h                       |   9 +
 time/sys/time.h                                 |   9 +-
 time/sys/timeb.h                                |   4 +-
 time/time.h                                     | 237 ++++++------------------
 197 files changed, 1451 insertions(+), 948 deletions(-)
 create mode 100644 include/bits/types/clock_t.h
 create mode 100644 include/bits/types/clockid_t.h
 create mode 100644 include/bits/types/struct_itimerspec.h
 create mode 100644 include/bits/types/struct_osockaddr.h
 create mode 100644 include/bits/types/struct_timespec.h
 create mode 100644 include/bits/types/struct_timeval.h
 create mode 100644 include/bits/types/struct_tm.h
 create mode 100644 include/bits/types/time_t.h
 create mode 100644 include/bits/types/timer_t.h
 create mode 100644 scripts/check-installed-headers.sh
 create mode 100644 socket/bits/types/struct_osockaddr.h
 create mode 100644 time/bits/types/clock_t.h
 create mode 100644 time/bits/types/clockid_t.h
 create mode 100644 time/bits/types/struct_itimerspec.h
 create mode 100644 time/bits/types/struct_timespec.h
 create mode 100644 time/bits/types/struct_timeval.h
 create mode 100644 time/bits/types/struct_tm.h
 create mode 100644 time/bits/types/time_t.h
 create mode 100644 time/bits/types/timer_t.h

-- 
2.9.3



More information about the Libc-alpha mailing list