discuss-gnustep
[Top][All Lists]
Advanced

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

Re: Porting to 64Bit -descriptionForInstanceMethod:


From: Andreas Höschler
Subject: Re: Porting to 64Bit -descriptionForInstanceMethod:
Date: Tue, 18 Jun 2019 17:25:54 +0200

Hi David,

I checked 

make messages=yes

and found that

gcc SRProxy.m -c -MMD -MP -DNeXT_Foundation_LIBRARY=1 -DNeXT_GUI_LIBRARY=1 -DNeXT_RUNTIME=1 -dynamic -fno-common -Wall -DGSWARN -DGSDIAGNOSE -Wno-import -g -O2 -fno-strict-aliasing -fnext-runtime -m32 -Wno-deprecated-declarations -Wno-deprecated -Wno-format-security -Wno-parentheses -Wno-import -I /usr/local/ssl/include -I/Build/SRFoundation/derived_src -I. -I/usr/local/include/ -F/Library/Frameworks/ -o /Build/SRFoundation/obj/SRFoundation.obj/SRProxy.m.o

succeeds but 

gcc SRProxy.m -c -MMD -MP -DNeXT_Foundation_LIBRARY=1 -DNeXT_GUI_LIBRARY=1 -DNeXT_RUNTIME=1 -dynamic -fno-common -Wall -DGSWARN -DGSDIAGNOSE -Wno-import -g -O2 -fno-strict-aliasing -fnext-runtime -m64 -Wno-deprecated-declarations -Wno-deprecated -Wno-format-security -Wno-parentheses -Wno-import -I /usr/local/ssl/include -I/Build/SRFoundation/derived_src -I. -I/usr/local/include/ -F/Library/Frameworks/ -o /Build/SRFoundation/obj/SRFoundation.obj/SRProxy.m.o

produces the below reported error!? :-(

Andreas


- descriptionForInstanceMethod: is gone.  Don't use it, use the runtime functions instead.

Thanks for the hint. 

Where would I find a list (the declaration) of these runtime functions on MacOSX and GNUstep? Are they even identically named? I guess no!?


Here is the top hit for a DDG search for ‘Objective-C Runtime’:

https://developer.apple.com/documentation/objectivec/objective-c_runtime?language=objc

It provides you with the Objective-C Runtime API Reference.  The GNUstep runtime also implements this interface and is source compatible

That’s great! 

(it also implements some non-portable functions, which I would suggest that you avoid).  You can find these all in objc/runtime.h.  

The method that you are probably looking for is protocol_getMethodDescription.

I wonder why I haven’t found that. Thanks!

         struct objc_method_description methodDesc = protocol_getMethodDescription(_protocol, aSelector, YES, YES);
         types = methodDesc.types;            

 This works great as long as I build with -m32. But as soon as I switch to 

...
ADDITIONAL_OBJCFLAGS += -m64 -Wno-deprecated-declarations -Wno-deprecated -Wno-format-security
ADDITIONAL_CFLAGS += -m64
ADDITIONAL_LDFLAGS += -m64

in GNUmakefile I get

 Compiling file SRProxy.m ...                                                    ~~                                         ^~~~~~~~~~~~~
                                                    %lu                                        (unsigned long)
SRProxy.m:425:54: warning: implicit declaration of function 'protocol_getMethodDescription' is invalid in C99 [-Wimplicit-function-declaration]
         struct objc_method_description methodDesc = protocol_getMethodDescription(_protocol, aSelector, YES, YES);
                                                     ^
SRProxy.m:425:41: error: variable has incomplete type 'struct objc_method_description'
         struct objc_method_description methodDesc = protocol_getMethodDescription(_protocol, aSelector, YES, YES);
                                        ^
SRProxy.m:425:17: note: forward declaration of 'struct objc_method_description'
         struct objc_method_description methodDesc = protocol_getMethodDescription(_protocol, aSelector, YES, YES);
                ^
Any idea why this works for 32bit code only. I am currently trying to build this on MacOSX 10.10. MacOSX 10.12 gave the same error!? :-(

Thanks so much,

 Andreas




reply via email to

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