lkml.org 
[lkml]   [2014]   [Sep]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [REGRESSION] "efi: efistub: Convert into static library" and preparation patches
On 04/09/14 11:48, Maarten Lankhorst wrote:
>>> If not, Ard please go ahead with option #2 above. Overkill yes, but I've
>>> done the single __attribute__() hacks in other projects and someone
>>> (usually me) always eventually forgets to tag some instance.
>>>
>> It appears we just got lucky on arm64, since we don't have any global
>> variables, but the issue does exist there as well.
>>
> FWIW, visibility pushing doesn't seem to work for functions declared with extern.
> Following seems to get rid of all GOTPCREL:

Are you sure? The iPXE build process relies on this:

/* Force visibility of all symbols to "hidden", i.e. inform gcc that
* all symbol references resolve strictly within our final binary.
* This avoids unnecessary PLT/GOT entries on x86_64.
*
* This is a stronger claim than specifying "-fvisibility=hidden",
* since it also affects symbols marked with "extern".
*/
#ifndef ASSEMBLY
#if __GNUC__ >= 4
#pragma GCC visibility push(hidden)
#endif
#endif /* ASSEMBLY */

and https://gcc.gnu.org/wiki/Visibility states that

"#pragma GCC visibility is stronger than -fvisibility; it affects
extern declarations as well. -fvisibility only affects definitions, so
that existing code can be recompiled with minimal changes. This is more
true for C than C++; C++ interfaces tend use classes, which are affected
by -fvisibility."

Michael



\
 
 \ /
  Last update: 2014-09-04 15:21    [W:0.093 / U:0.036 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site