-
Notifications
You must be signed in to change notification settings - Fork 120
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
#warning imp_implementationWithBlock() not implemented for your architecture #9
Comments
This all looks expected. The assembly paths are not provided for PPC (patches very welcome, but I have no knowledge of PPC assembly nor access to hardware to test), and the tests of functions that are implemented in assembly will not pass for the same reason. |
Thanks, @davidchisnall, I figured as much but wanted to offer up remote access to my hardware, if you have the time or inclination to poke at this. |
Closing - anyone who wants to write some PowerPC assembly can reopen... |
I've found this implementation of objc_msgSend for ppc on here: https://github.com/jackoalan/gnustep-libobjc2/blob/wiistep/objc_msgSend.ppc.S. Could this be used and imported here ? And if it could, would this work also on ppc64 ? |
Hi, if the author is willing to contribute it then it's probably a good starting point. I think it predates the change to the SpareArray structure though, so it probably won't work as-is. You'll need to tweak the logic a bit. |
It also looks as if that's 32-bit only. |
on ppc64, compiling libobjc2 fails during linking with "ManyManySelectors.m.o: In function
main': /home/cyrus/libobjc2/Test/ManyManySelectors.m:(.text+0x618): undefined reference to
objc_msgSend'"but I also see "#warning imp_implementationWithBlock() not implemented for your architecture"
`cyrus@cyrus:~/libobjc2/Build$ make
Scanning dependencies of target objc
[ 1%] Building C object CMakeFiles/objc.dir/abi_version.c.o
[ 2%] Building C object CMakeFiles/objc.dir/alias_table.c.o
[ 3%] Building C object CMakeFiles/objc.dir/block_to_imp.c.o
/home/cyrus/libobjc2/block_to_imp.c:59:19: warning: passing 'const char *' to
parameter of type 'char *' discards qualifiers
[-Wincompatible-pointer-types-discards-qualifiers]
int fd = mkstemp(pattern);
^~~~~~~
/usr/include/stdlib.h:619:27: note: passing argument to parameter '__template'
here
extern int mkstemp (char *__template) __nonnull ((1)) __wur;
^
/home/cyrus/libobjc2/block_to_imp.c:61:7: warning: passing 'const char *' to
parameter of type 'void *' discards qualifiers
[-Wincompatible-pointer-types-discards-qualifiers]
free(pattern);
^~~~~~~
/usr/include/stdlib.h:483:25: note: passing argument to parameter '__ptr' here
extern void free (void *__ptr) __THROW;
^
2 warnings generated.
[ 4%] Building C object CMakeFiles/objc.dir/caps.c.o
[ 5%] Building C object CMakeFiles/objc.dir/category_loader.c.o
[ 6%] Building C object CMakeFiles/objc.dir/class_table.c.o
[ 8%] Building C object CMakeFiles/objc.dir/dtable.c.o
[ 9%] Building C object CMakeFiles/objc.dir/eh_personality.c.o
[ 10%] Building C object CMakeFiles/objc.dir/encoding2.c.o
[ 11%] Building C object CMakeFiles/objc.dir/hash_table.c.o
[ 12%] Building C object CMakeFiles/objc.dir/hooks.c.o
[ 13%] Building C object CMakeFiles/objc.dir/ivar.c.o
[ 15%] Building C object CMakeFiles/objc.dir/legacy_malloc.c.o
[ 16%] Building C object CMakeFiles/objc.dir/loader.c.o
[ 17%] Building C object CMakeFiles/objc.dir/mutation.m.o
[ 18%] Building C object CMakeFiles/objc.dir/protocol.c.o
[ 19%] Building C object CMakeFiles/objc.dir/runtime.c.o
[ 20%] Building C object CMakeFiles/objc.dir/sarray2.c.o
[ 22%] Building C object CMakeFiles/objc.dir/selector_table.c.o
[ 23%] Building C object CMakeFiles/objc.dir/sendmsg2.c.o
[ 24%] Building C object CMakeFiles/objc.dir/statics_loader.c.o
[ 25%] Building C object CMakeFiles/objc.dir/toydispatch.c.o
[ 26%] Building ASM object CMakeFiles/objc.dir/block_trampolines.S.o
/home/cyrus/libobjc2/block_trampolines.S:106:2: warning:
imp_implementationWithBlock() not implemented for your architecture
[-W#warnings]
warning imp_implementationWithBlock() not implemented for your architecture
^
1 warning generated.
[ 27%] Building ASM object CMakeFiles/objc.dir/objc_msgSend.S.o
/home/cyrus/libobjc2/objc_msgSend.S:11:2: warning: objc_msgSend() not
implemented for your architecture [-W#warnings]
warning objc_msgSend() not implemented for your architecture
^
1 warning generated.
[ 29%] Building C object CMakeFiles/objc.dir/NSBlocks.m.o
[ 30%] Building C object CMakeFiles/objc.dir/Protocol2.m.o
[ 31%] Building C object CMakeFiles/objc.dir/arc.m.o
[ 32%] Building C object CMakeFiles/objc.dir/associate.m.o
[ 33%] Building C object CMakeFiles/objc.dir/blocks_runtime.m.o
[ 34%] Building C object CMakeFiles/objc.dir/properties.m.o
[ 36%] Building C object CMakeFiles/objc.dir/gc_none.c.o
Linking C shared library libobjc.so
[ 36%] Built target objc
Scanning dependencies of target objcxx
[ 37%] Building CXX object CMakeFiles/objcxx.dir/objcxx_eh.cc.o
Linking C shared library libobjcxx.so
[ 37%] Built target objcxx
Scanning dependencies of target AllocatePair
[ 38%] Building C object Test/CMakeFiles/AllocatePair.dir/AllocatePair.m.o
Linking C executable AllocatePair
[ 38%] Built target AllocatePair
Scanning dependencies of target AllocatePair_optimised
[ 39%] Building C object Test/CMakeFiles/AllocatePair_optimised.dir/AllocatePair.m.o
Linking C executable AllocatePair_optimised
[ 39%] Built target AllocatePair_optimised
Scanning dependencies of target AssociatedObject
[ 40%] Building C object Test/CMakeFiles/AssociatedObject.dir/AssociatedObject.m.o
Linking C executable AssociatedObject
[ 40%] Built target AssociatedObject
Scanning dependencies of target AssociatedObject2
[ 41%] Building C object Test/CMakeFiles/AssociatedObject2.dir/AssociatedObject2.m.o
Linking C executable AssociatedObject2
[ 41%] Built target AssociatedObject2
Scanning dependencies of target AssociatedObject2_optimised
[ 43%] Building C object Test/CMakeFiles/AssociatedObject2_optimised.dir/AssociatedObject2.m.o
Linking C executable AssociatedObject2_optimised
[ 43%] Built target AssociatedObject2_optimised
Scanning dependencies of target AssociatedObject_optimised
[ 44%] Building C object Test/CMakeFiles/AssociatedObject_optimised.dir/AssociatedObject.m.o
Linking C executable AssociatedObject_optimised
[ 44%] Built target AssociatedObject_optimised
Scanning dependencies of target BlockImpTest
[ 45%] Building C object Test/CMakeFiles/BlockImpTest.dir/BlockImpTest.m.o
Linking C executable BlockImpTest
[ 45%] Built target BlockImpTest
Scanning dependencies of target BlockImpTest_optimised
[ 46%] Building C object Test/CMakeFiles/BlockImpTest_optimised.dir/BlockImpTest.m.o
Linking C executable BlockImpTest_optimised
[ 46%] Built target BlockImpTest_optimised
Scanning dependencies of target BlockTest_arc
[ 47%] Building C object Test/CMakeFiles/BlockTest_arc.dir/BlockTest_arc.m.o
[ 48%] Building C object Test/CMakeFiles/BlockTest_arc.dir/Test.m.o
Linking C executable BlockTest_arc
[ 48%] Built target BlockTest_arc
Scanning dependencies of target BlockTest_arc_optimised
[ 50%] Building C object Test/CMakeFiles/BlockTest_arc_optimised.dir/BlockTest_arc.m.o
[ 51%] Building C object Test/CMakeFiles/BlockTest_arc_optimised.dir/Test.m.o
Linking C executable BlockTest_arc_optimised
[ 51%] Built target BlockTest_arc_optimised
Scanning dependencies of target BoxedForeignException
[ 52%] Building C object Test/CMakeFiles/BoxedForeignException.dir/BoxedForeignException.m.o
Linking C executable BoxedForeignException
[ 52%] Built target BoxedForeignException
Scanning dependencies of target BoxedForeignException_optimised
[ 53%] Building C object Test/CMakeFiles/BoxedForeignException_optimised.dir/BoxedForeignException.m.o
Linking C executable BoxedForeignException_optimised
[ 53%] Built target BoxedForeignException_optimised
Scanning dependencies of target CXXExceptions
[ 54%] Building C object Test/CMakeFiles/CXXExceptions.dir/CXXException.m.o
[ 55%] Building CXX object Test/CMakeFiles/CXXExceptions.dir/CXXException.cc.o
Linking C executable CXXExceptions
[ 55%] Built target CXXExceptions
Scanning dependencies of target CXXExceptions_optimised
[ 56%] Building C object Test/CMakeFiles/CXXExceptions_optimised.dir/CXXException.m.o
[ 58%] Building CXX object Test/CMakeFiles/CXXExceptions_optimised.dir/CXXException.cc.o
Linking C executable CXXExceptions_optimised
[ 58%] Built target CXXExceptions_optimised
Scanning dependencies of target ExceptionTest
[ 59%] Building C object Test/CMakeFiles/ExceptionTest.dir/ExceptionTest.m.o
Linking C executable ExceptionTest
[ 59%] Built target ExceptionTest
Scanning dependencies of target ExceptionTest_optimised
[ 60%] Building C object Test/CMakeFiles/ExceptionTest_optimised.dir/ExceptionTest.m.o
Linking C executable ExceptionTest_optimised
[ 60%] Built target ExceptionTest_optimised
Scanning dependencies of target ForeignException
[ 61%] Building C object Test/CMakeFiles/ForeignException.dir/ForeignException.m.o
Linking C executable ForeignException
[ 61%] Built target ForeignException
Scanning dependencies of target ForeignException_optimised
[ 62%] Building C object Test/CMakeFiles/ForeignException_optimised.dir/ForeignException.m.o
Linking C executable ForeignException_optimised
[ 62%] Built target ForeignException_optimised
Scanning dependencies of target Forward
[ 63%] Building C object Test/CMakeFiles/Forward.dir/Forward.m.o
Linking C executable Forward
[ 63%] Built target Forward
Scanning dependencies of target Forward_optimised
[ 65%] Building C object Test/CMakeFiles/Forward_optimised.dir/Forward.m.o
Linking C executable Forward_optimised
[ 65%] Built target Forward_optimised
Scanning dependencies of target ManyManySelectors
[ 66%] Building C object Test/CMakeFiles/ManyManySelectors.dir/ManyManySelectors.m.o
/home/cyrus/libobjc2/Test/ManyManySelectors.m:40:2: warning: implicitly
declaring library function 'objc_msgSend' with type 'id (id, SEL, ...)'
objc_msgSend([Test class], nextSel);
^
/home/cyrus/libobjc2/Test/ManyManySelectors.m:40:2: note: include the header
<objc/message.h> or explicitly provide a declaration for 'objc_msgSend'
1 warning generated.
Linking C executable ManyManySelectors
CMakeFiles/ManyManySelectors.dir/ManyManySelectors.m.o: In function
main': /home/cyrus/libobjc2/Test/ManyManySelectors.m:(.text+0x618): undefined reference to
objc_msgSend'clang: error: linker command failed with exit code 1 (use -v to see invocation)
Test/CMakeFiles/ManyManySelectors.dir/build.make:86: recipe for target 'Test/ManyManySelectors' failed
make[2]: *** [Test/ManyManySelectors] Error 1
CMakeFiles/Makefile2:981: recipe for target 'Test/CMakeFiles/ManyManySelectors.dir/all' failed
make[1]: *** [Test/CMakeFiles/ManyManySelectors.dir/all] Error 2
Makefile:146: recipe for target 'all' failed
make: *** [all] Error 2`
The text was updated successfully, but these errors were encountered: