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