gnustep-dev
[Top][All Lists]
Advanced

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

Re: undefined reference to __gnustep_objcxx_personality_v0


From: Dmitry Moskalchuk
Subject: Re: undefined reference to __gnustep_objcxx_personality_v0
Date: Sun, 7 Feb 2016 12:46:43 +0300
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:38.0) Gecko/20100101 Thunderbird/38.5.1

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


Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

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