|
Message-ID: <alpine.LNX.2.11.1505010949180.22867@monopod.intra.ispras.ru> Date: Fri, 1 May 2015 09:57:08 +0300 (MSK) From: Alexander Monakov <amonakov@...ras.ru> To: musl@...ts.openwall.com Subject: Re: Re: building musl libc.so with gcc -flto > > Wouldn't adding __attribute__((externally_visible)) to the relevant > > symbols be more appropriate? It's intended to solve exactly this > > problem. > > I'm not clear whether it would be reliable to use this or not. > Semantically externally_visible and visibility=hidden are > contradictory. Even if we weren't trying to avoid relying on > additional GNU C features, I think it would be a bad idea to rely on > this working since the behavior under such contradictory annotations > could potentially vary widely between compilers. The attribute that's suitable for this case is "used", not "externally_visible" (um, I already mentioned that in the other thread where I explained why the reference from the asm is 'ignored'). Andy is not correct in saying that "it's intended to solve exactly this problem". To quote GCC manual, externally_visible This attribute, attached to a global variable or function, nullifies the effect of the -fwhole-program command-line option, so the object remains visible outside the current compilation unit. used This attribute, attached to a function, means that code must be emitted for the function even if it appears that the function is not referenced. This is useful, for example, when the function is referenced only in inline assembly. ( https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html ) Alexander
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.