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: >>> >>> On Jul 26, 2017, at 7:37 AM, Daniel Ferreira (theiostream) wrote: >>> >>>> Also, the reason it just does not assign the same const string to the >>>> different constants is because the two consts should be the same pointer, >>>> and doing it explicitly seemed like a good way to make that intent clear >>>> and guarantee that would happen. >>> >>> >>> Changing the second string constant into a macro of the first would >>> guarantee they're the same pointer: >>> >>> APPKIT_EXPORT NSString *NSStringPboardType; >>> >>> ... >>> >>> #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 _______________________________________________ Gnustep-dev mailing list Gnustep-dev@gnu.org https://lists.gnu.org/mailman/listinfo/gnustep-dev