diff mbox

Mark __tunables_init hidden and avoid PLT

Message ID CAMe9rOqmHDXOP3fTTqY_gPqZsz+6MmcMK3r6hRv6Nh0ummrbrw@mail.gmail.com
State New
Headers show

Commit Message

H.J. Lu May 25, 2017, 12:33 p.m. UTC
On Wed, May 24, 2017 at 10:57 PM, Siddhesh Poyarekar
<siddhesh@gotplt.org> wrote:
> On Thursday 25 May 2017 12:47 AM, H.J. Lu wrote:
>> Since __tunables_init is internal to ld.so, we should mark it hidden
>> to avoid PLT.  We should also avoid PLT when calling __tunable_set_val
>> within ld.so.
>
> We don't export __tunables_init, so it shouldn't have a PLT anyway.  As
> for __tunable_set_val, I have it in my patch 3/5:
>
> https://sourceware.org/ml/libc-alpha/2017-05/msg00654.html
>
> which needs minor rework before pushing.
>

These can be in a simpler patch.  Here is the updated one.

OK for master?

Comments

Siddhesh Poyarekar May 25, 2017, 12:48 p.m. UTC | #1
On Thursday 25 May 2017 06:03 PM, H.J. Lu wrote:
> On Wed, May 24, 2017 at 10:57 PM, Siddhesh Poyarekar
> <siddhesh@gotplt.org> wrote:
>> On Thursday 25 May 2017 12:47 AM, H.J. Lu wrote:
>>> Since __tunables_init is internal to ld.so, we should mark it hidden
>>> to avoid PLT.  We should also avoid PLT when calling __tunable_set_val
>>> within ld.so.
>>
>> We don't export __tunables_init, so it shouldn't have a PLT anyway.  As
>> for __tunable_set_val, I have it in my patch 3/5:
>>
>> https://sourceware.org/ml/libc-alpha/2017-05/msg00654.html
>>
>> which needs minor rework before pushing.
>>
> 
> These can be in a simpler patch.  Here is the updated one.
> 
> OK for master?

OK.

Siddhesh
diff mbox

Patch

From ed8f688eeab70308af7240931861189d3f509e1c Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Wed, 24 May 2017 12:09:41 -0700
Subject: [PATCH] Make __tunables_init hidden and avoid PLT

Since __tunables_init is internal to ld.so, we should mark it hidden
to avoid PLT.  We should also avoid PLT when calling __tunable_set_val
within ld.so.

2017-05-25   Siddhesh Poyarekar  <siddhesh@sourceware.org>
	     H.J. Lu  <hongjiu.lu@intel.com>

	* elf/dl-tunables.c (__tunable_set_val): Make a hidden alias.
 	* elf/dl-tunables.h (__tunables_init): Mark it hidden in rtld.
	(__tunable_set_val): Likewise.
---
 elf/dl-tunables.c | 2 ++
 elf/dl-tunables.h | 3 +++
 2 files changed, 5 insertions(+)

diff --git a/elf/dl-tunables.c b/elf/dl-tunables.c
index 8d72e26..b6e6b3d 100644
--- a/elf/dl-tunables.c
+++ b/elf/dl-tunables.c
@@ -470,3 +470,5 @@  cb:
   if (callback)
     callback (&cur->val);
 }
+
+rtld_hidden_def (__tunable_set_val)
diff --git a/elf/dl-tunables.h b/elf/dl-tunables.h
index f33adfb..20ee512 100644
--- a/elf/dl-tunables.h
+++ b/elf/dl-tunables.h
@@ -69,6 +69,9 @@  typedef struct _tunable tunable_t;
 extern void __tunables_init (char **);
 extern void __tunable_set_val (tunable_id_t, void *, tunable_callback_t);
 
+rtld_hidden_proto (__tunables_init)
+rtld_hidden_proto (__tunable_set_val)
+
 /* Check if the tunable has been set to a non-default value and if it is, copy
    it over into __VAL.  */
 # define TUNABLE_SET_VAL(__id,__val) \
-- 
2.9.4