[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: GUI test with -fobjc-arc yields ABI Error
From: |
David Chisnall |
Subject: |
Re: GUI test with -fobjc-arc yields ABI Error |
Date: |
Sat, 28 Dec 2013 10:27:31 +0000 |
On 27 Dec 2013, at 23:15, Patryk Laurent <plaurent@me.com> wrote:
> David,
>
> I had already specified -fobjc-runtime=gnustep-1.7 when I got the ABI Error.
> (See below)
I mean you'll need to specify it for everything. If you look at how the
FreeBSD GNUstep ports are set up, they pass the correct arguments to the
various configure things to make this Just Workâ˘. It sounds like you didn't
specify it for base / gui. The easiest thing to do is make -make add the flag
for you.
> (If I try -fobjc-nonfragile-abi I get: clang-3.5: warning: argument unused
> during compilation: '-fobjc-nonfragile-abi')
Yes, if you also specify -fobjc-runtime then it's redundant.
David
>
> Thanks,
> Patryk
>
>
> On Dec 27, 2013, at 01:11 PM, David Chisnall <theraven@sucs.org> wrote:
>
>> If you want to use ARC, then you must use the new ABI. Either specify
>> -fobjc-runtime=gnustep-1.7, or -fobjc-nonfragile-abi.
>>
>> David
>>
>> On 27 Dec 2013, at 20:04, Patryk Laurent <plaurent@me.com> wrote:
>>
>>> David,
>>> Another oddity that maybe will help diagnose the issue: If I compile a GUI
>>> test program without -fobjc-arc, everything works fine. However, if I
>>> include -fobjc-arc, compilation is successful but running is not, see below:
>>> patryk@paklbox:~$ clang `gnustep-config --objc-flags` `gnustep-config
>>> --objc-libs` -fobjc-runtime=gnustep-1.7 -fblocks -fobjc-arc -lobjc
>>> -ldispatch -lgnustep-base -lgnustep-gui guitest.m
>>> patryk@paklbox:~$ ./a.out
>>> Objective-C ABI Error: Loading modules from incompatible ABIs while loading
>>> ./GSBackend.m
>>> a.out: /home/patryk/libobjc2/loader.c:53: void __objc_exec_class(struct
>>> objc_module_abi_8 *): Assertion `objc_check_abi_version(module)' failed.
>>> Aborted (core dumped)
>>> (This is under Ubuntu 13.10 Desktop, following the instructions here:
>>> http://wiki.gnustep.org/index.php/GNUstep_under_Ubuntu_Linux)
>>> Patryk
>>> Here is the source to guitest.m:
>>> patryk@paklbox:~$ cat guitest.m
>>> #import <AppKit/AppKit.h>
>>> int main()
>>> {
>>> NSApplication *app; // Without these 2 lines, seg fault may occur
>>> app = [NSApplication sharedApplication];
>>> NSAlert * alert = [[NSAlert alloc] init];
>>> [alert setMessageText:@"Hello alert"];
>>> [alert addButtonWithTitle:@"All done"];
>>> [alert runModal];
>>> }
>>> Compiling it without -fobjc-arc works fine:
>>> patryk@paklbox:~$ clang `gnustep-config --objc-flags` `gnustep-config
>>> --objc-libs` -fobjc-runtime=gnustep-1.7 -fblocks -lobjc -ldispatch
>>> -lgnustep-base -lgnustep-gui guitest.m # NSAlert test works fine without
>>> -fobjc-arc.
>>
>>
>> -- Sent from my Difference Engine
>>
>>
>>
-- Sent from my Cray X1