On 28 Jul 2017, at 13:16, Ivan Vučica <i...@vucica.net> wrote:
> 
> Isn't it this? I'm intentionally grabbing an older version - I'm not sure 
> which is the oldest GCC we support, but 3.4.5 documents alias:
> 
> https://gcc.gnu.org/onlinedocs/gcc-3.4.5/gcc/Function-Attributes.html
> 
> Quoting:
> 
> =====
> alias ("target")
> The alias attribute causes the declaration to be emitted as an alias for 
> another symbol, which must be specified. For instance,
>           void __f () { /* Do something.
>  */; }
>           void f () __attribute__ ((weak, alias ("__f")));
>      
> 
> declares `f' to be a weak alias for `__f'. In C++, the mangled name for the 
> target must be used.
> 
> Not all target machines support this attribute. 
> 
> ====

It’s documented as a function attribute.  It kind-of works as a variable 
attribute, but probably doesn’t.

> Though, again, as I asked before: why do we want this?
> 
> I'm not sure we *need* anything more than the macro. Wouldn't we need this 
> extra symbol only if we care about better binary compat (maybe for Darling's 
> sake)?

It also helps bridging from other languages.  Macros as a colossal pain to 
expose over FFIs, public symbols are trivial.  dlsym works if it’s an alias, 
doesn’t work if it’s a macro.

David


_______________________________________________
Gnustep-dev mailing list
Gnustep-dev@gnu.org
https://lists.gnu.org/mailman/listinfo/gnustep-dev

Reply via email to