Weak symbols and inline
Marc Glisse
marc.glisse@inria.fr
Thu Feb 27 19:21:00 GMT 2014
On Thu, 27 Feb 2014, Paul Smith wrote:
> Hi all; I'm using C++ built with GCC 4.8.2 / binutils 2.23.2 on a
> GNU/Linux system.
>
> When I create a global function marked "inline" I see, using nm, that a
> weak symbol ("W") is added to the object file for that function.
>
> For link-order reasons, I would prefer that the inlined function not
> generate any (external) symbol; in particular I do NOT want this object
> to be pulled in from a static library just because it happens to appear
> first in the archive order. I have another object in the archive which
> declares a global symbol ("T" in nm) and I want that one linked instead.
>
>
> I don't see an __attribute__ setting that specifically controls this (I
> can force a symbol to be weak, but that's not what I want).
>
> I did discover that if I use __attribute__((always_inline)) then it does
> what I want and doesn't add a weak symbol into the object.
>
> Is that an approved usage of this attribute? It doesn't appear to be
> explicitly documented so I'm concerned that it's just a side-effect that
> can't be counted on going forward.
>
> Is there a better solution?
Did you try "static" or an anonymous namespace?
--
Marc Glisse
More information about the Gcc-help
mailing list