D/Objective-C 64bit

Jacob Carlborg doob at me.com
Wed Mar 12 12:29:11 PDT 2014


On 2014-03-12 20:02, Iain Buclaw wrote:

> gobjc supports both, there's two ABI's for the NeXT - which I take to
> mean the difference between the difference between 32bit and 64bit.

You previously listed three ABI's. It's the modern runtime for 64bit and 
the traditional for 32bit with with properties that are interesting. I 
don't know how much difference these properties do.

> It seems that (now I read up on it) the GNU runtime came about from
> decades back when NeXT was not open sourced by Apple.  From what I can
> gather, a move towards the modern ABI is the direction, but not
> considered production ready.
>
>>From my POV, I wouldn't want to support the ABI of a language that GCC
> itself doesn't support.  So code compiled by GNU ObjC should be
> compatible with extern(ObjC) code generated by GDC - even if it isn't
> compatible with Clang ObjC.  But then, I'd be surprised if it wasn't
> compatible.

I'm not sure I understand. Do you want to support the NeXT or GNU runtime?

Clang is at least compatible with the Apple GCC. I don't know about FSF GCC.

> That's hard to say at an initial glance.  There's a handy hook system
> into each ABI to allow you to switch between versions easily.  The
> common differences I do however see are:
>
> NeXT:
> NSConstantString
> objc_getClass
> objc_getMetaClass
> objc_msgSend
> objc_msgSendSuper
>
> GNU:
> NXConstantString
> objc_get_class
> objc_get_meta_class
> objc_msg_lookup
> objc_msg_lookup_super
>
> Some which greps for s(n)printf also show:
>
> NeXT:
> ".objc_class_name_%s"
> ".objc_category_name_%s_%s"
>
> GNU:
> "__objc_class_name_%s"
> "__objc_category_name_%s_%s"
>
>
> Most others look the same?  Maybe you'll be able to find out more with
> this information.

One basically need to look at each single feature and see what differs.

-- 
/Jacob Carlborg


More information about the Digitalmars-d-announce mailing list