From 4a306ef1c8ff1cac292c2fd56a3b91d7bfdecefc Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Mon, 13 Nov 2017 08:02:39 -0800 Subject: ld.so: Add architecture specific fields To support Intel Control-flow Enforcement Technology (CET) run-time control: 1. An architecture specific field in the writable ld.so namespace is needed to indicate if CET features are enabled at run-time. 2. An architecture specific field in struct link_map is needed if CET features are enabled in an ELF module. This patch adds dl-procruntime.c to the writable ld.so namespace and link_map.h to struct link_map. Tested with build-many-glibcs.py. * elf/dl-support.c: Include . * include/link.h: Include . * sysdeps/generic/dl-procruntime.c: New file. * sysdeps/generic/link_map.h: Likewise. * sysdeps/generic/ldsodefs.h: Include in the writable ld.so namespace. --- sysdeps/generic/dl-procruntime.c | 1 + sysdeps/generic/ldsodefs.h | 11 +++++++---- sysdeps/generic/link_map.h | 1 + 3 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 sysdeps/generic/dl-procruntime.c create mode 100644 sysdeps/generic/link_map.h (limited to 'sysdeps/generic') diff --git a/sysdeps/generic/dl-procruntime.c b/sysdeps/generic/dl-procruntime.c new file mode 100644 index 0000000000..a056184690 --- /dev/null +++ b/sysdeps/generic/dl-procruntime.c @@ -0,0 +1 @@ +/* No architecture specific definitions. */ diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h index 5efae2d96d..52a792a597 100644 --- a/sysdeps/generic/ldsodefs.h +++ b/sysdeps/generic/ldsodefs.h @@ -373,6 +373,13 @@ struct rtld_global EXTERN void (*_dl_rtld_unlock_recursive) (void *); #endif + /* Get architecture specific definitions. */ +#define PROCINFO_DECL +#ifndef PROCINFO_CLASS +# define PROCINFO_CLASS EXTERN +#endif +#include + /* If loading a shared object requires that we make the stack executable when it was not, we do it by calling this function. It returns an errno code or zero on success. */ @@ -529,10 +536,6 @@ struct rtld_global_ro #endif /* Get architecture specific definitions. */ -#define PROCINFO_DECL -#ifndef PROCINFO_CLASS -# define PROCINFO_CLASS EXTERN -#endif #include /* Names of shared object for which the RPATH should be ignored. */ diff --git a/sysdeps/generic/link_map.h b/sysdeps/generic/link_map.h new file mode 100644 index 0000000000..a056184690 --- /dev/null +++ b/sysdeps/generic/link_map.h @@ -0,0 +1 @@ +/* No architecture specific definitions. */ -- cgit v1.2.3-70-g09d2