Commit Graph

9 Commits

Author SHA1 Message Date
Zack Weinberg 4775578486 Installed header hygiene (BZ#20366): Test of installed headers.
This adds a test to ensure that the problems fixed in the last several
patches do not recur.  Each directory checks the headers that it
installs for two properties: first, each header must be compilable in
isolation, as both C and C++, under a representative combination of
language and library conformance levels; second, there is a blacklist
of identifiers that may not appear in any installed header, currently
consisting of the legacy BSD typedefs.  (There is an exemption for the
headers that define those typedefs, and for the RPC headers.  It may be
necessary to make this more sophisticated if we add more stuff to the
blacklist in the future.)

In order for this test to work correctly, every wrapper header
that actually defines something must guard those definitions with
 #ifndef _ISOMAC.  This is the existing mechanism used by the conform/
tests to tell wrapper headers not to define anything that the public
header wouldn't, and not to use anything from libc-symbols.h.  conform/
only cares for headers that we need to check for standards conformance,
whereas this test applies to *every* header.  (Headers in include/ that
are either installed directly, or are internal-use-only and do *not*
correspond to any installed header, are not affected.)

	* scripts/check-installed-headers.sh: New script.
	* Rules: In each directory that defines header files to be installed,
	run check-installed-headers.sh on them as a special test.
	* Makefile: Likewise for the headers installed at top level.

	* include/aliases.h, include/alloca.h, include/argz.h
	* include/arpa/nameser.h, include/arpa/nameser_compat.h
	* include/elf.h, include/envz.h, include/err.h
	* include/execinfo.h, include/fpu_control.h, include/getopt.h
	* include/gshadow.h, include/ifaddrs.h, include/libintl.h
	* include/link.h, include/malloc.h, include/mcheck.h
	* include/mntent.h, include/netinet/ether.h
	* include/nss.h, include/obstack.h, include/printf.h
	* include/pty.h, include/resolv.h, include/rpc/auth.h
	* include/rpc/auth_des.h, include/rpc/auth_unix.h
	* include/rpc/clnt.h, include/rpc/des_crypt.h
	* include/rpc/key_prot.h, include/rpc/netdb.h
	* include/rpc/pmap_clnt.h, include/rpc/pmap_prot.h
	* include/rpc/pmap_rmt.h, include/rpc/rpc.h
	* include/rpc/rpc_msg.h, include/rpc/svc.h
	* include/rpc/svc_auth.h, include/rpc/xdr.h
	* include/rpcsvc/nis_callback.h, include/rpcsvc/nislib.h
	* include/rpcsvc/yp.h, include/rpcsvc/ypclnt.h
	* include/rpcsvc/ypupd.h, include/shadow.h
	* include/stdio_ext.h, include/sys/epoll.h
	* include/sys/file.h, include/sys/gmon.h, include/sys/ioctl.h
	* include/sys/prctl.h, include/sys/profil.h
	* include/sys/statfs.h, include/sys/sysctl.h
	* include/sys/sysinfo.h, include/ttyent.h, include/utmp.h
	* sysdeps/arm/nacl/include/bits/setjmp.h
	* sysdeps/mips/include/sys/asm.h
	* sysdeps/unix/sysv/linux/include/sys/sysinfo.h
	* sysdeps/unix/sysv/linux/include/sys/timex.h
	* sysdeps/x86/fpu/include/bits/fenv.h:
	Add #ifndef _ISOMAC guard around internal declarations.
	Add multiple-inclusion guard if not already present.
2016-09-23 08:43:56 -04:00
Marek Polacek 3091725976 Remove use of INTUSE/INTDEF in misc. 2012-05-31 13:10:02 +02:00
Ulrich Drepper a784e50247 Remove pre-ISO C support
No more __const.
2012-01-07 23:57:22 -05:00
Ulrich Drepper 6b87a5642c Update.
* sysdeps/mach/hurd/chown.c: Use INTDEF for __chown.
	* sysdeps/unix/sysv/aix/chown.c: Likewise.
	* sysdeps/unix/grantpt.c: Use INTUSE for __chown calls.
	* sysdeps/unix/sysv/linux/m68k/chown.c: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/chown.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/chown.c: Use INTDEF2 to define
	__chown_internal.
	* sysdeps/unix/sysv/linux/s390/s390-32//chown.c: Likewise.

	* intl/dcngettext.c [_LIBC]: Use INTUSE for __dcngettext.
	* intl/dngettext.c [_LIBC] (DCNGETTEXT): Use INTUSE.
	* intl/ngettext.c: Likewise.

	* include/sys/socket.h: Declare __connect_internal and define
	__connect macro if not NOT_IN_libc.
	* sysdeps/mach/hurd/connect.c: Use INTDEF for __connect.
	* sysdeps/unix/sysv/aix/connect.c: Likewise.
	* sysdeps/unix/sysv/linux/connect.S: Add __connect_internal alias.

	* include/unistd.h: Declare __close_internal and define __close macro
	if not NOT_IN_libc.
	* libio/libioP.h (JUMO0, JUMP1, JUMP2, JUMP3, WJUMP0, WJUMP1, WJUMP2,
	WJUMP3): Add extra parenthesis to avoid expanding element names with
	macors like __close.
	* sysdeps/unix/syscalls.list: Add __close_internal alias.

	* include/unistd.h: Declare __dup2_internal and define __dup2 macro
	if not NOT_IN_libc.
	* sysdeps/mach/hurd/dup2.c: Use INTDEF for __dup2.
	* sysdeps/posix/dup2.c: Use INTDEF for __dup2.
	* sysdeps/unix/syscalls.list: Add __dup2_internal alias.

	* include/unistd.h: Declare __fork_internal and define __fork macro
	if not NOT_IN_libc.
	* sysdeps/mach/hurd/fork.c: Use INTDEF for __fork.
	* sysdeps/unix/sysv/aix/fork.c: Likewise.
	* sysdeps/unix/sysv/linux/syscalls.list: Add __fork_internal alias.

	* include/stdio_ext.h: Declare __fsetlocking_internal and define
	__fsetlocking macro to use it if not NOT_IN_libc.
	* libio/__fsetlocking.c: Use INTDEF for __fsetlocking.

	* libio/__fbufsize.c: Correct copyright.
	* libio/__flbf.c: Likewise.
	* libio/__fpending.c: Likewise.
	* libio/__fpurge.c: Likewise.
	* libio/__freadable.c: Likewise.
	* libio/__freading.c: Likewise.
	* libio/__fsetlocking.c: Likewise.
	* libio/__fwritable.c: Likewise.
	* libio/__fwriting.c: Likewise.

	* include/stdio.h: Declare __asprintf_internal and define __asprintf
	macro to use it if not NOT_IN_libc.
	* stdio-common/asprintf.c: Use INTDEF for __asprintf.

	* include/mntent.h: Declare __setmntent_internal,
	__getmntent_r_internal, __endmntent_internal.  Define __setmntent,
	__getmntent_r, and __endmntent macros to use these functions if not
	NOT_IN_libc.
	* misc/mntent_r.c: Use INTDEF for __setmntent, __getmntent_r, and
	__endmntent.

	* include/math.h: Declare __finite_internal, __finitef_internal, and
	__finitel_internal.  Redefine isfinite macro if in libc or libm using
	these functions.
	* sysdeps/generic/s_ldexp.c: Use INTUSE for __finite calls.
	* sysdeps/generic/s_ldexpf.c: Use INTUSE for __finitef calls.
	* sysdeps/generic/s_ldexpl.c: Use INTUSE for __finitel calls.
	* sysdeps/i386/fpu/s_finite.S: Define _internal alias.
	* sysdeps/i386/fpu/s_finitef.S: Likewise.
	* sysdeps/i386/fpu/s_finitel.S: Likewise.
	* sysdeps/ieee754/dbl-64/s_finite.c: Likewise.
	* sysdeps/ieee754/flt-32/s_finitef.c: Likewise.
	* sysdeps/ieee754/ldbl-128/s_finitel.c: Likewise.
	* sysdeps/ieee754/ldbl-96/s_finitel.c: Likewise.

	* include/fcntl.h: Declare __fcntl_internal.  Define __fcntl macro
	to use this function if not NOT_IN_libc.
	* libio/iofdopen.c (_IO_fcntl): Use INTUSE.
	* sysdeps/generic/fcntl.c: Use INTDEF for __fcntl.
	* sysdeps/mach/hurd/fcntl.c: Likewise.
	* sysdeps/unix/sysv/aix/fcntl.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise.

	* include/argz.h: Declare __argz_count_internal and
	__argz_stringify_internal.
	* intl/l10nflist.c [_LIBC]: Use INTUSE for __argz_count and
	__argz_stringify.
	* string/argz-count.c: Use INTDEF for __argz_count.
	* string/argz-stringify.c: Use INTDEF for __argz_stringify.

	* include/stdlib.h: Declare __cxa_atexit_internal and define
	__cxa_atexit macro if not NOT_IN_libc.
	* stdlib/cxa_atexit.c: Use INTDEF for __cxa_atexit.
	* dlfcn/Makefile: Define NOT_IN_libc when compiling modcxaatexit.c.

	* assert/assert.c: Use INTDEF for __assert_fail.
	* assert/__assert.c: Use INTUSE for call to __assert_fail.
	* include/assert.h: Declare __assert_fail_internal.
2002-04-09 20:36:24 +00:00
Ulrich Drepper c19559b0bc Update.
* include/aio.h: Remove __THROW from internal interfaces.  __THROW
	is only need in external header files that might be compiled by a
	C++ compiler.
	* include/alloca.h: Likewise.
	* include/db.h: Likewise.
	* include/dirent.h: Likewise.
	* include/execinfo.h: Likewise.
	* include/fpu_control.h: Likewise.
	* include/glob.h: Likewise.
	* include/grp.h: Likewise.
	* include/libintl.h: Likewise.
	* include/math.h: Likewise.
	* include/math.h: Likewise.
	* include/mntent.h: Likewise.
	* include/mntent.h: Likewise.
	* include/netdb.h: Likewise.
	* include/pwd.h: Likewise.
	* include/sched.h: Likewise.
	* include/shadow.h: Likewise.
	* include/stdlib.h: Likewise.
	* include/sys/file.h: Likewise.
	* include/sys/gmon.h: Likewise.
	* include/sys/ioctl.h: Likewise.
	* include/sys/socket.h: Likewise.
	* include/sys/stat.h: Likewise.
	* include/sys/sysinfo.h: Likewise.
	* include/sys/time.h: Likewise.
	* include/sys/times.h: Likewise.
	* include/sys/uio.h: Likewise.
	* include/sys/wait.h: Likewise.
	* include/termios.h: Likewise.
	* include/time.h: Likewise.
	* include/ulimit.h: Likewise.
	* include/utmp.h: Likewise.
	* include/wchar.h: Likewise.

1999-11-22  Andreas Jaeger  <aj@suse.de>

	* sunrpc/rpc_clntout.c (printbody): Fix -CLMNab output.
	Patch by Jerry Perkins 	<jrperkins@iname.com>, closes PR
	libc/1456+1457.

1999-11-22  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/generic/siglist.h: Avoid declaring the same field
	twice if SIGPWR is defined to SIGLOST.
	* sysdeps/sparc/sparc32/memcpy.S: bcopy takes size_t argument,
	not signed, so we should not special case it for negative args.
	* sysdeps/sparc/sparc32/sparcv9/memmove.c: Don't use generic
	memmove, use the one provided in memcpy.S.
	* sysdeps/sparc/sparc64/memcpy.S: bcopy should handle overlapping
	copies like memmove, while the previous version worked like memcpy.
	Implement optimized assembly memmove.
	* sysdeps/sparc/sparc64/memmove.c: New file.

1999-11-23  Ulrich Drepper  <drepper@cygnus.com>

	* po/cs.po: Update from translators.

1999-11-23  Andreas Jaeger  <aj@suse.de>
1999-11-23 17:22:17 +00:00
Ulrich Drepper fe559c5e1c Update.
1999-10-19  Andreas Jaeger  <aj@suse.de>

	* include/bits/ipc.h: Remove K&R compatibility.
	* include/libintl.h: Likewise.
	* include/math.h: Likewise.
	* include/mntent.h: Likewise
	* include/netdb.h: Likewise.
	* include/pwd.h: Likewise.
	* include/sched.h: Likewise.
	* include/shadow.h: Likewise
	* include/stdlib.h: Likewise.
	* include/sys/file.h: Likewise.
	* include/sys/gmon.h: Likewise.
	* include/sys/ioctl.h: Likewise.
	* include/sys/mman.h: Likewise.
	* include/sys/resource.h: Likewise.
	* include/sys/socket.h: Likewise.
	* include/sys/stat.h: Likewise.
	* include/sys/sysinfo.h: Likewise.
	* include/sys/time.h: Likewise.
	* include/sys/times.h: Likewise.
	* include/sys/uio.h: Likewise.
	* include/sys/wait.h: Likewise.
	* include/termios.h: Likewise.
	* include/time.h: Likewise.
	* include/ulimit.h: Likewise.
	* include/utmp.h: Likewise.
	* include/wchar.h: Likewise.
	* include/wctype.h: Likewise.

1999-10-19  Andreas Jaeger  <aj@suse.de>

	* math/libm-test.inc: Remove one K&R compatibility.
	(main): Enable nexttoward_test.

	* math/gen-libm-test.pl (output_ulps): Output name of Ulps file to
	libm-test-ulps.h; pretty print output a bit.

1999-10-19  Andreas Jaeger  <aj@suse.de>

	* iconv/iconv_prog.c (main): Set exit value in case that reading
	from stdin failed [PR libc/1404].
1999-10-19 13:53:34 +00:00
Ulrich Drepper 6796bc807a Update.
1998-09-06 09:53 -0400  Zack Weinberg  <zack@rabi.phys.columbia.edu>

	* Makeconfig (+gccwarn): Remove -Wno-parentheses.

	* elf/dl-open.c: Quiet -Wparentheses warnings.
	* iconvdata/johab.c: Likewise.
	* iconvdata/uhc.c: Likewise.
	* inet/inet_net.c: Likewise.
	* io/fts.c: Likewise.
	* locale/newlocale.c: Likewise.
	* misc/getttyent.c: Likewise.
	* misc/mntent_r.c: Likewise.
	* misc/ttyslot.c: Likewise.
	* nscd/nscd_conf.c: Likewise.
	* nss/nsswitch.c: Likewise.
	* resolv/gethnamaddr.c: Likewise.
	* resolv/nsap_addr.c: Likewise.
	* resolv/res_debug.c: Likewise.
	* stdio-common/_itoa.c: Likewise.
	* stdlib/strtod.c: Likewise.
	* string/strverscmp.c: Likewise.
	* sunrpc/svc.c: Likewise.
	* sysdeps/libm-ieee754/e_cosh.c: Likewise.
	* sysdeps/libm-ieee754/e_gamma_r.c: Likewise.
	* sysdeps/libm-ieee754/e_sinh.c: Likewise.
	* sysdeps/posix/getaddrinfo.c: Likewise.

	* include/dlfcn.h: Likewise.
	* elf/dlfcn.h: Declare dladdr only for __USE_GNU.
	Define RTLD_DEFAULT.
1998-09-06 23:45:24 +00:00
Ulrich Drepper bdbf022df8 Update.
1998-08-09 09:40  Ulrich Drepper  <drepper@cygnus.com>

	* nss/nss_files/files-XXX.c (internal_getent): In case of an read
	error do not trust errno value, set it to ENOENT.

	* db2/db_185.h: Move __ prototypes into include/* header.
	* dirent/dirent.h: Likewise.
	* elf/dlfcn.h: Likewise.
	* gmon/sys/gmon.h: Likewise.
	* grp/grp.h: Likewise.
	* intl/libintl.h: Likewise.
	* io/fcntl.h: Likewise.
	* io/sys/stat.h: Likewise.
	* io/sys/statfs.h: Likewise.
	* io/sys/statvfs.h: Likewise.
	* libio/stdio.h: Likewise.
	* login/utmp.h: Likewise.
	* misc/mntent.h: Likewise.
	* misc/search.h: Likewise.
	* misc/sys/file.h: Likewise.
	* misc/sys/ioctl.h: Likewise.
	* misc/sys/select.h: Likewise.
	* misc/sys/uio.h: Likewise.
	* misc/sys/ustat.h: Likewise.
	* posix/unistd.h: Likewise.
	* posix/sys/times.h: Likewise.
	* posix/sys/wait.h: Likewise.
	* pwd/pwd.h: Likewise.
	* resource/ulimit.h: Likewise.
	* resource/sys/resource.h: Likewise.
	* setjmp/setjmp.h: Likewise.
	* shadow/shadow.h: Likewise.
	* signal/signal.h: Likewise.
	* socket/sys/socket.h: Likewise.
	* stdlib/alloca.h: Likewise.
	* stdlib/stdlib.h: Likewise.
	* string/string.h: Likewise.
	* sysdeps/generic/sys/mman.h: Likewise.
	* sysdeps/unix/bsd/osf/sys/mman.h: Likewise.
	* sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Likewise.
	* sysdeps/unix/bsd/ultrix4/sys/mman.h: Likewise.
	* sysdeps/unix/sysv/irix4/sys/mman.h: Likewise.
	* sysdeps/unix/sysv/linux/bits/sched.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/mman.h: Likewise.
	* termios/termios.h: Likewise.
	* time/time.h: Likewise.
	* time/sys/time.h: Likewise.
	* wcsmbs/wchar.h: Likewise.

	* include/alloca.h: Add __ prototypes here.
	* include/db_185.h: Likewise.
	* include/dirent.h: Likewise.
	* include/dlfcn.h: Likewise.
	* include/fcntl.h: Likewise.
	* include/grp.h: Likewise.
	* include/libintl.h: Likewise.
	* include/mntent.h: Likewise.
	* include/pwd.h: Likewise.
	* include/sched.h: Likewise.
	* include/search.h: Likewise.
	* include/setjmp.h: Likewise.
	* include/shadow.h: Likewise.
	* include/signal.h: Likewise.
	* include/stdio.h: Likewise.
	* include/stdlib.h: Likewise.
	* include/string.h: Likewise.
	* include/termios.h: Likewise.
	* include/time.h: Likewise.
	* include/ulimit.h: Likewise.
	* include/unistd.h: Likewise.
	* include/utmp.h: Likewise.
	* include/wchar.h: Likewise.
	* include/sys/file.h: Likewise.
	* include/sys/gmon.h: Likewise.
	* include/sys/ioctl.h: Likewise.
	* include/sys/mman.h: Likewise.
	* include/sys/resource.h: Likewise.
	* include/sys/select.h: Likewise.
	* include/sys/socket.h: Likewise.
	* include/sys/stat.h: Likewise.
	* include/sys/statfs.h: Likewise.
	* include/sys/time.h: Likewise.
	* include/sys/times.h: Likewise.
	* include/sys/uio.h: Likewise.
	* include/sys/wait.h: Likewise.

	* Makeconfig (+includes): Search in $(..)include first.

	* io/fstat.c: Undefine __fstat.
	* io/lstat.c: Undefine __lstat.

	* wcsmbs/Versions: Add __mbrlen.
1998-08-09 17:39:48 +00:00
Ulrich Drepper 12264bd7fa Update.
1998-03-31 18:11  Ulrich Drepper  <drepper@cygnus.com>

	* include/mntent.h: New file.

	* elf/Makefile (trusted-dirs.h): Append slash to filename.
	* elf/dl-load.c: Rewrite search path handling.
	* elf/ldsodefs.h (struct r_search_path_elem): Change for rewrite.
	* elf/rtld.c (process_envvars): Recognize LD_HWCAP_MASK.
	* sysdeps/generic/dl-sysdep.h (_dl_important_hwcap): New function.
	* elf/ldsodefs.h: Add prototype.
1998-03-31 18:24:48 +00:00