[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 13:42:36 +0100 |
Thanks!
> On 18 Jun 2020, at 12:52, Riccardo Mottola <riccardo.mottola@libero.it> wrote:
>
> you guessed correctly and the protocol is also a very common one, NSCopying
So, part of the question is whether this is the first time we’re seeing this or
not. Can you stick a watchpoint on the isa pointer and restart it, see if it’s
modified before here?
> (gdb) p *protocols
> $4 = {next = 0x0, count = 2, list = 0x7b8aa32ea1c0 <objc_protocol_list+16>}
>
> (gdb) p i
> $1 = 0
> (gdb) p aProto
> $2 = (struct objc_protocol *) 0x7b8aa39138b8 <._OBJC_PROTOCOL_NSCopying>
>
>
> version is small:
> (gdb) p version
> $3 = 0
That’s very odd. Here’s the definition of the enum:
https://github.com/gnustep/libobjc2/blob/369c84db35a6a1e94f8a4689a695fabdac056166/protocol.h#L26
The isa pointer for each protocol is initially set to one of those enum values
(2, 3, or 4) by the compiler and is then set to a proper Objective-C class. It
should never end up 0. It’s possible that something has corrupted memory or
that we’ve just read the low 32 bits this has been set to a 64-bit address that
happens to have nothing in the low 32 bits, but it seems quite unlikely.
>> 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.
>
> I confirm OLDABI_COMPAT is on. I did not touch it. LEGACY_COMPAT is off.
>
> I only changed the linker option and then the build type.
>
> Further question: this is a from-scratch install, all compiled with the same
> version of clang, can I assume that all libraryes have the same ABI or not?
> maybe there is a makefile issue somewhere?
Should be. You can see if __objc_exec_class is called - that’s the entry point
used by old ABI code.
David
- libobjc2-clang, Riccardo Mottola, 2020/06/10
- Re: libobjc2-clang, David Chisnall, 2020/06/11
- Re: libobjc2-clang, Riccardo Mottola, 2020/06/12
- Re: libobjc2-clang, Wolfgang Lux, 2020/06/12
- Re: libobjc2-clang, Riccardo Mottola, 2020/06/17
- Re: libobjc2-clang, Wolfgang Lux, 2020/06/17
- Re: libobjc2-clang, David Chisnall, 2020/06/18
- Re: libobjc2-clang, Riccardo Mottola, 2020/06/18
- Re: libobjc2-clang,
David Chisnall <=
- Re: libobjc2-clang, Riccardo Mottola, 2020/06/18
- Re: libobjc2-clang, Wolfgang Lux, 2020/06/28
- Re: libobjc2-clang, Wolfgang Lux, 2020/06/28
- Re: libobjc2-clang, Riccardo Mottola, 2020/06/29
- Re: libobjc2-clang, Wolfgang Lux, 2020/06/30
- Re: libobjc2-clang, Riccardo Mottola, 2020/06/30