[PATCH] Enable hidden visibility in libc.a compiled with PIE

H.J. Lu hjl.tools@gmail.com
Mon Aug 21 17:33:00 GMT 2017


On Mon, Aug 21, 2017 at 9:50 AM, Szabolcs Nagy <szabolcs.nagy@arm.com> wrote:
> On 21/08/17 17:44, H.J. Lu wrote:
>> On Mon, Aug 21, 2017 at 9:31 AM, Szabolcs Nagy <szabolcs.nagy@arm.com> wrote:
>>> On 08/08/17 17:40, H.J. Lu wrote:
>>>> When building libc.a with PIE, enable hidden visibility to allow direct
>>>> access to definitions within libc.a without using GOT.
>>> ...
>>>> -#if defined SHARED || defined LIBC_NONSHARED
>>>> +#if defined SHARED || defined LIBC_NONSHARED \
>>>> +  || (BUILD_PIE_DEFAULT && IS_IN (libc))
>>>>  # define attribute_hidden __attribute__ ((visibility ("hidden")))
>>>
>>> btw what happens if this is enabled for non-pie libc.a ?
>>
>> It makes those symbols in libc.a hidden.
>>
>>> i'd expect that to work too (it prevents some symbol
>>> interpositions?)
>>>
>>
>> You can't interpose any symbols in libc.a, PIE or non-PIE.
>> What my patch does is to avoid GOT/PLT in PIE libc.a when
>> accessing them within libc.a.
>>
>
> yes, but my point is that the ifdef can be simplified
> if it's valid for the non-pie case too.

Here is the patch.   Tested with PIE and non-PIE libc.a.

Any comments?

-- 
H.J.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Always-hide-symbols-referenced-internally-within-lib.patch
Type: text/x-patch
Size: 1023 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20170821/1051ad70/attachment.bin>


More information about the Libc-alpha mailing list