This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] ld.so: Add architecture specific fields
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: GNU C Library <libc-alpha at sourceware dot org>
- Date: Mon, 13 Nov 2017 08:01:04 -0800
- Subject: Re: [PATCH] ld.so: Add architecture specific fields
- Authentication-results: sourceware.org; auth=none
- References: <20171031163712.GA10434@gmail.com> <CAMe9rOpp4UJWockS7hOAsCwC1-5UudqsT0OpbhyRq18aT99Y9A@mail.gmail.com>
On Wed, Nov 8, 2017 at 3:03 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Tue, Oct 31, 2017 at 9:37 AM, H.J. Lu <hongjiu.lu@intel.com> wrote:
>> 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 on x86-64.
>>
>> Any comments?
>>
>> H.J.
>> --
>> * 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.
>> ---
>> elf/dl-support.c | 1 +
>> include/link.h | 2 ++
>> sysdeps/generic/dl-procruntime.c | 1 +
>> sysdeps/generic/ldsodefs.h | 11 +++++++----
>> sysdeps/generic/link_map.h | 1 +
>> 5 files changed, 12 insertions(+), 4 deletions(-)
>> create mode 100644 sysdeps/generic/dl-procruntime.c
>> create mode 100644 sysdeps/generic/link_map.h
>>
>> diff --git a/elf/dl-support.c b/elf/dl-support.c
>> index 5e3de90598..235d3a7f46 100644
>> --- a/elf/dl-support.c
>> +++ b/elf/dl-support.c
>> @@ -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. */
>> diff --git a/include/link.h b/include/link.h
>> index 3e1b2aefb7..82b77a6b41 100644
>> --- a/include/link.h
>> +++ b/include/link.h
>> @@ -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
>> 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 <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
>> index 0000000000..a056184690
>> --- /dev/null
>> +++ b/sysdeps/generic/link_map.h
>> @@ -0,0 +1 @@
>> +/* No architecture specific definitions. */
>> --
>> 2.13.6
>>
>
> I tested it with build-many-glibcs.py. If there are no objections, I will
> check it next week.
>
>
I am checking it in.
--
H.J.