[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: libobjc2 still failing tests
From: |
David Chisnall |
Subject: |
Re: libobjc2 still failing tests |
Date: |
Sat, 26 Jan 2019 11:47:14 +0000 |
On 25 Jan 2019, at 22:16, Jordan Schidlowsky <jordan@noodlecake.com> wrote:
>
> Actually both armv7-a (vfpv3-d16 no neon, and softfp) and yes AArch64
> (arm64-v8a).
>
> armv7-a is working great for us on android with current stock Google NDK
> which is using clang-8... but we seem to be experiencing an ivar alignment
> or offset bug on arm64-v8a.
Is it fixed in the latest head (including my fix from yesterday)? If you’re
compiling in a release build, that would explain it. Note that this code path
should only have been an issue using the 1.x ABI. If you’re compiling with
-fobjc-runtime=gnustep-2.0 (which should give you 5-10% smaller binaries, so
might be a good idea on Android…) then you won’t have hit that bug.
Note that the new ABI absolutely depends on the small object support, because
the compiler will emit tiny strings for short ASCII constant strings.
It would be great to see test results for vfp / neon. Looking at the
objc_msgSend code, I *think* we may be missing .save directives for the
floating-point register saves, so hitting the C path may cause corruption in
the case where the +initialize method throws an exception. There’s a test for
this case in the test suite, but I don’t know if it’s ever been run on a
hard-float ARM platform…
Are you still using the ARMv5 stuff? That’s there for some Chinese Android
devices, but I don’t know if anyone still cares about it.
> We had to rework SmallObjectClasses assembly reference because android will
> not load any library that has any text relocations in a library. (I believe
> we can probably get around that by using the GOT to get to
> SmallObjectClassess but we have just removed for now).
Does this patch fix it for you?
--- a/objc_msgSend.aarch64.S
+++ b/objc_msgSend.aarch64.S
@@ -79,7 +79,8 @@
ldp \receiver, x8, [sp], #16
br x9
6:
- adr x10, SmallObjectClasses
+ adrp x10, :got:SmallObjectClasses
+ ldr x10, [x10, :got_lo12:SmallObjectClasses]
ldr x9, [x10, x9, lsl #3]
b 1b
.cfi_endproc
I don’t have an AArch64 environment that I can test very easily at the moment,
but I believe this should fix it. Patches very welcome!
> But ya, Ideally I want to run the test suite on an actual android device to
> figure out this ivar issue on AArch64. So, hmmmmmm, I guess I'll try and
> think of some way to get the test executable main()s onto an actual android
> device for testing…
I’d be very happy to accept patches to ease testing / building for Android (or
cross-build in general).
David
- Re: libobjc2 still failing tests, (continued)
- Re: libobjc2 still failing tests, Andreas Fink, 2019/01/25
- Re: libobjc2 still failing tests, Andreas Fink, 2019/01/25
- Re: libobjc2 still failing tests, David Chisnall, 2019/01/25
- Re: libobjc2 still failing tests, Andreas Fink, 2019/01/25
- Re: libobjc2 still failing tests, David Chisnall, 2019/01/25
- Re: libobjc2 still failing tests, Andreas Fink, 2019/01/25
- Re: libobjc2 still failing tests, David Chisnall, 2019/01/25
- Re: libobjc2 still failing tests, Jordan Schidlowsky, 2019/01/25
- Re: libobjc2 still failing tests, David Chisnall, 2019/01/25
- Re: libobjc2 still failing tests, Jordan Schidlowsky, 2019/01/25
- Re: libobjc2 still failing tests,
David Chisnall <=
- libobjc2 AArch64, Jordan Schidlowsky, 2019/01/26
- Re: libobjc2 still failing tests, Andreas Fink, 2019/01/26
- Re: libobjc2 still failing tests, David Chisnall, 2019/01/26
- Re: libobjc2 still failing tests, Andreas Fink, 2019/01/26
- Re: libobjc2 still failing tests, David Chisnall, 2019/01/26
- Re: libobjc2 still failing tests, Andreas Fink, 2019/01/26
- Re: libobjc2 still failing tests, Andreas Fink, 2019/01/26
- Re: libobjc2 still failing tests, David Chisnall, 2019/01/26
- Re: libobjc2 still failing tests, Andreas Fink, 2019/01/26
- Re: libobjc2 still failing tests, Andreas Fink, 2019/01/25