summaryrefslogtreecommitdiff
path: root/include/link.h
diff options
context:
space:
mode:
authorZack Weinberg <zackw@panix.com>2016-08-23 21:19:17 -0400
committerZack Weinberg <zackw@panix.com>2016-08-29 19:47:33 -0400
commit15f55c639c257ca218b3c9156c43c1eb91993620 (patch)
treeaf87b2b8e8311d3fcc9bc249d20a85f15e7a55cc /include/link.h
parenta16d5c43fddeff66b36cdd9a115c849e053abd42 (diff)
downloadglibc-zack/installed-header-hygiene.tar.gz
Installed header hygiene (BZ#20366): Test of installed headers.zack/installed-header-hygiene
As the final act in this patchset, this test validates the properties I have been ensuring that all of the headers have. Each subdirectory checks the headers that it installs. 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.) The wrapper header adjustments were semi-mechanically generated, but I had to correct enough problems by hand that I don't think posting the script is worth it. * 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. * 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/gmp.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.
Diffstat (limited to 'include/link.h')
-rw-r--r--include/link.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/include/link.h b/include/link.h
index 32a7392f38..055844285c 100644
--- a/include/link.h
+++ b/include/link.h
@@ -24,12 +24,18 @@
# error this should be impossible
#endif
+# ifndef _ISOMAC
/* Get most of the contents from the public header, but we define a
different `struct link_map' type for private use. The la_objopen
prototype uses the type, so we have to declare it separately. */
-#define link_map link_map_public
-#define la_objopen la_objopen_wrongproto
+# define link_map link_map_public
+# define la_objopen la_objopen_wrongproto
+# endif
+
#include <elf/link.h>
+
+# ifndef _ISOMAC
+
#undef link_map
#undef la_objopen
@@ -341,4 +347,5 @@ extern int __dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info,
`ELF64_R_TYPE'. */
#define ELFW(type) _ElfW (ELF, __ELF_NATIVE_CLASS, type)
+# endif /* !_ISOMAC */
#endif /* include/link.h */