On Fri, Jul 28, 2017 at 10:26 AM, David Chisnall <thera...@sucs.org> wrote:

> On 27 Jul 2017, at 17:06, Fred Kiefer <fredkie...@gmx.de> wrote:
> >
> >>
> >> Am 27.07.2017 um 10:26 schrieb David Chisnall <thera...@sucs.org>:
> >>
> >> On 26 Jul 2017, at 14:58, Josh Freeman <gnustep_li...@twilightedge.com>
> wrote:
> >>> #if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST)
> >>> #    define NSPasteboardTypeString NSStringPboardType
> >>> #endif
> >>
> >> Am I missing something?  Why not simply make the first symbol an alias
> for the second?
> >
> >
> > David, what do you mean by alias?
>
> I thought that GCC had an attribute for it, but apparently not.  The
> following works on ELF platforms, at least, and there are equivalents for
> Mach-O:
>
>         #include <stdio.h>
>         int x;
>
>         extern int y;
>         asm (".weakref y, x");
>
>         int main(void)
>         {
>                 y = 0;
>                 x = 42;
>                 // Prints 42
>                 printf(“%d\n”, y);
>         }
>
> So this would work for our use:
>
>         extern NSPasteboardTypeString;
>         asm(".weakref NSPasteboardTypeString NSStringPboardType");
>
> We’d end up in the linked binary with a single location with two symbol
> names.
>
> David
>

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.
====

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)?
_______________________________________________
Gnustep-dev mailing list
Gnustep-dev@gnu.org
https://lists.gnu.org/mailman/listinfo/gnustep-dev

Reply via email to