]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
ld.so: Add architecture specific fields
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 13 Nov 2017 16:02:39 +0000 (08:02 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 13 Nov 2017 16:02:52 +0000 (08:02 -0800)
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.

ChangeLog
elf/dl-support.c
include/link.h
sysdeps/generic/dl-procruntime.c [new file with mode: 0644]
sysdeps/generic/ldsodefs.h
sysdeps/generic/link_map.h [new file with mode: 0644]

index fad2bd0d1c0e2694e1351af1ddf5e25f53498fca..8f5de79bbb3652fbf4dc257100d7c2cf86285d39 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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>
 
        timezone: pacify GCC -Wstringop-truncation
index 5e3de90598a855b3ed1595163d937e93bbaaafa1..235d3a7f4635b60457ea37959e1ca8515505b7b8 100644 (file)
@@ -126,6 +126,7 @@ int _dl_starting_up = 1;
 void *_dl_random;
 
 /* Get architecture specific initializer.  */
+#include <dl-procruntime.c>
 #include <dl-procinfo.c>
 
 /* Initial value of the CPU clock.  */
index 3e1b2aefb7844b873aadf0c14b7cf4c5372fabe1..82b77a6b41de981f581e060a3382b49612d00d3c 100644 (file)
@@ -203,6 +203,8 @@ struct link_map
                                       freed, ie. not allocated with
                                       the dummy malloc in ld.so.  */
 
+#include <link_map.h>
+
     /* Collected information about own RPATH directories.  */
     struct r_search_path_struct l_rpath_dirs;
 
diff --git a/sysdeps/generic/dl-procruntime.c b/sysdeps/generic/dl-procruntime.c
new file mode 100644 (file)
index 0000000..a056184
--- /dev/null
@@ -0,0 +1 @@
+/* No architecture specific definitions.  */
index 5efae2d96dc9901094c2cecb05651515ab71e65b..52a792a597b53eea73b7d5a225b31ba25e1f3f33 100644 (file)
@@ -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 <dl-procruntime.c>
+
   /* 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 <dl-procinfo.c>
 
   /* 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 (file)
index 0000000..a056184
--- /dev/null
@@ -0,0 +1 @@
+/* No architecture specific definitions.  */