Hi David, > Of those, MIPS is the only one likely to cause issues. I committed AArch64 > code paths last night. For MIPS, n64 works well, n32 probably works but is > untested, o32 is currently not working at all. Adding o32 support is > probably not too hard - my guess is that it will only require small tweaks to > the argument register save set, because I think that all of the temporary > registers that we use in n64 are also temporary registers on o32.
Finally, I've added support of CMake to the CrystaX NDK and was able to build GNUstep libobjc2 for Android with minimal tweaks. My changes are pushed to the https://github.com/crystax/android-vendor-libobjc2. In fact, it's current 'master' of https://github.com/gnustep/libobjc2 plus three additional commits. However, doing that, I've bumped with several issues I'd like to report. The most important issue is that Aarch64 objc_msgSend implementation is broken. It doesn't even compile. I've seen https://github.com/gnustep/libobjc2/issues/14, but that clang's bug was fixed in the CrystaX NDK several months ago (https://github.com/crystax/android-toolchain-clang-3-7/commit/1a4b73f3828569eadb0395b693275b1e6532d5c0). Now, when I build libobjc2 for Aarch64, it reports the following: /Volumes/android/ndk/vendor/libobjc2/objc_msgSend.aarch64.S: Assembler messages: /Volumes/android/ndk/vendor/libobjc2/objc_msgSend.aarch64.S:97: Error: operand 1 should be an integer register -- `br lr' /Volumes/android/ndk/vendor/libobjc2/objc_msgSend.aarch64.S:97: Error: operand 1 should be a floating-point register -- `stp fp,lr,[sp,#192]' /Volumes/android/ndk/vendor/libobjc2/objc_msgSend.aarch64.S:97: Error: operand 1 should be an integer or stack pointer register -- `add fp,sp,192' /Volumes/android/ndk/vendor/libobjc2/objc_msgSend.aarch64.S:97: Error: bad register expression /Volumes/android/ndk/vendor/libobjc2/objc_msgSend.aarch64.S:97: Error: bad register expression /Volumes/android/ndk/vendor/libobjc2/objc_msgSend.aarch64.S:97: Error: bad register expression /Volumes/android/ndk/vendor/libobjc2/objc_msgSend.aarch64.S:97: Error: operand 1 should be a floating-point register -- `ldp fp,lr,[sp,#208]' CMakeFiles/objc.dir/build.make:606: recipe for target 'CMakeFiles/objc.dir/objc_msgSend.S.o' failed Should I report new issue for this? I realize that it's hard for you to test since clang's Aarch64 objc support is broken on GNU/Linux, but it can be tested targeting Android with CrystaX NDK, so if needed, I can provide instructions how to do that. -- Dmitry Moskalchuk
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Gnustep-dev mailing list [email protected] https://lists.gnu.org/mailman/listinfo/gnustep-dev
