gnustep-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: libobjc2-clang


From: David Chisnall
Subject: Re: libobjc2-clang
Date: Thu, 18 Jun 2020 09:42:18 +0100

Wow, I ignored email for a week and there are 50 unread emails in my GNUstep 
folder!  Great to see some renewed interest and activity in the project!

> On 17 Jun 2020, at 12:28, Riccardo Mottola <riccardo.mottola@libero.it> wrote:
> 
> Hi,
> 
> Wolfgang Lux wrote:
>>> Perhaps libobjc? how can I compile libobic2 in debug? I think I need to 
>>> activate  CMAKE_ASM_FLAGS_DEBUG somehow
>> No. But you want to reconfigure libobjc2 with 
>> CMAKE_BUILD_TYPE=RelWithDebInfo (or, if you absolutely insist on turning off 
>> optimization, CMAKE_BUILD_TYPE=Debug).
> 
> thank you. I used "Debug" to be most extreme (and also to exclude issues with 
> optimizations, which never hurts).

Debug doesn’t make actually much of a difference to overall performance.  The 
most performance critical bits are hand-coded assembly.

> It still crashes and so:
> 
> 0x0000753c801678aa in _lwp_kill () from /usr/lib/libc.so.12
> (gdb) bt
> #0  0x0000753c801678aa in _lwp_kill () from /usr/lib/libc.so.12
> #1  0x0000753c8016715a in abort () from /usr/lib/libc.so.12
> #2  0x0000753c80a18d56 in init_protocols (protocols=0x753c816c91b0 
> <objc_protocol_list>)
>     at /home/multix/code/gnustep-vcs/libobjc2/protocol.c:225
> #3  0x0000753c80a18b0d in objc_init_protocols (protocols=0x753c816c91b0 
> <objc_protocol_list>)
>     at /home/multix/code/gnustep-vcs/libobjc2/protocol.c:258
> #4  0x0000753c80a12647 in objc_load_class (class=0x753c816c91d0 
> <._OBJC_CLASS_NSAffineTransform>)
>     at /home/multix/code/gnustep-vcs/libobjc2/class_table.c:465
> #5  0x0000753c80a18235 in __objc_load (init=0x753c816ba9a0 <objc_init>)
>     at /home/multix/code/gnustep-vcs/libobjc2/loader.c:268
> #6  0x0000753c812baced in objcv2_load_function () from 
> /System/Library/Libraries/libgnustep-base.so.1.27.0
> #7  0x0000753c812b9ab4 in ?? () from 
> /System/Library/Libraries/libgnustep-base.so.1.27.0
> #8  0x0000753c81cf7c00 in ?? ()
> #9  0x0000753c812b6749 in _init () from 
> /System/Library/Libraries/libgnustep-base.so.1.27.0
> #10 0x0000000000000000 in ?? ()
> 
> how can I print out this?
> (gdb) p protocols
> $4 = (struct objc_protocol_list *) 0x753c816c91b0 <objc_protocol_list>
> 
> just to know which "list" and what should be loaded, I suppose there is an 
> error here.

This is the protocol list that is currently being initialised.  It would be 
interesting to see what `i` is (I guess 0), because they tells us if we’re 
failing on the first protocol in a class or a subsequent one.  Then look at 
`version`, which should be a protocol version number.  If it isn’t a small 
value (<16), look at `aProto->isa`.

Can you also confirm whether you’ve built with OLDABI_COMPAT enabled?  If you 
didn’t, then you’ll see this message if you try to load any code that isn’t 
compiled with the v2 ABI.

David




reply via email to

[Prev in Thread] Current Thread [Next in Thread]