1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-28 00:21:52 +03:00

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 <dl-procruntime.c>.
	* include/link.h: Include <link_map.h>.
	* sysdeps/generic/dl-procruntime.c: New file.
	* sysdeps/generic/link_map.h: Likewise.
	* sysdeps/generic/ldsodefs.h: Include <dl-procruntime.c> in
	the writable ld.so namespace.
This commit is contained in:
H.J. Lu
2017-11-13 08:02:39 -08:00
parent e69897bf20
commit 4a306ef1c8
6 changed files with 21 additions and 4 deletions

View File

@ -1,3 +1,12 @@
2017-11-13 H.J. Lu <hongjiu.lu@intel.com>
* elf/dl-support.c: Include <dl-procruntime.c>.
* include/link.h: Include <link_map.h>.
* sysdeps/generic/dl-procruntime.c: New file.
* sysdeps/generic/link_map.h: Likewise.
* sysdeps/generic/ldsodefs.h: Include <dl-procruntime.c> in
the writable ld.so namespace.
2017-11-12 Paul Eggert <eggert@cs.ucla.edu> 2017-11-12 Paul Eggert <eggert@cs.ucla.edu>
timezone: pacify GCC -Wstringop-truncation timezone: pacify GCC -Wstringop-truncation

View File

@ -126,6 +126,7 @@ int _dl_starting_up = 1;
void *_dl_random; void *_dl_random;
/* Get architecture specific initializer. */ /* Get architecture specific initializer. */
#include <dl-procruntime.c>
#include <dl-procinfo.c> #include <dl-procinfo.c>
/* Initial value of the CPU clock. */ /* Initial value of the CPU clock. */

View File

@ -203,6 +203,8 @@ struct link_map
freed, ie. not allocated with freed, ie. not allocated with
the dummy malloc in ld.so. */ the dummy malloc in ld.so. */
#include <link_map.h>
/* Collected information about own RPATH directories. */ /* Collected information about own RPATH directories. */
struct r_search_path_struct l_rpath_dirs; struct r_search_path_struct l_rpath_dirs;

View File

@ -0,0 +1 @@
/* No architecture specific definitions. */

View File

@ -373,6 +373,13 @@ struct rtld_global
EXTERN void (*_dl_rtld_unlock_recursive) (void *); EXTERN void (*_dl_rtld_unlock_recursive) (void *);
#endif #endif
/* Get architecture specific definitions. */
#define PROCINFO_DECL
#ifndef PROCINFO_CLASS
# define PROCINFO_CLASS EXTERN
#endif
#include <dl-procruntime.c>
/* If loading a shared object requires that we make the stack executable /* If loading a shared object requires that we make the stack executable
when it was not, we do it by calling this function. when it was not, we do it by calling this function.
It returns an errno code or zero on success. */ It returns an errno code or zero on success. */
@ -529,10 +536,6 @@ struct rtld_global_ro
#endif #endif
/* Get architecture specific definitions. */ /* Get architecture specific definitions. */
#define PROCINFO_DECL
#ifndef PROCINFO_CLASS
# define PROCINFO_CLASS EXTERN
#endif
#include <dl-procinfo.c> #include <dl-procinfo.c>
/* Names of shared object for which the RPATH should be ignored. */ /* Names of shared object for which the RPATH should be ignored. */

View File

@ -0,0 +1 @@
/* No architecture specific definitions. */