-
Notifications
You must be signed in to change notification settings - Fork 13.3k
unwinding problem on android #11147
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
Comments
Hm, I find it odd that error 9 is getting returned, because I find any coorespondance to an error higher than 8... If you take a look for definitions of |
In ARM EABI there's also Hmm, also, looks like on ARM, _Unwind_Exception needs more room for private unwinder data. The total size of the struct should be 88 bytes on ARM. At the moment I am not set up to test on Android (can this even be done without a real device?), |
@vadimcn using the android emulator might be an option you can try. |
Changing private to |
I'm trying to see if it otherwise works just using C++ throw but keeping all our other new machinery. Maybe __cxa_throw is doing something special on android. |
trying to build android cross-compiler on windows, but no luck so far... |
I think the problem I was seeing is not that the tests are failing to terminate, but adb_run_wrapper.sh not coping with the following error, which itself is very peculiar:
|
Hm, I just did a successful test run on Android. I think something was causing my libstd on the emu to be stale. |
This branch makes unwinding work on android by using a C++ try function and using the g++ personality fn: https://github.com/brson/rust/tree/androidwip. I don't know why. |
I thought you said you've got it working... Or was that using C++ throw? |
I'm not sure. I'm having a hard time understanding which configurations work. I believe it works when android just uses C++ for everything, plus the g++ personality function. I'll probably try committing a patch that uses C++ for just android until we figure something else out. |
No, I have a patch that just completely uses the C++ unwinder for Android. I'll probably try to clean it up and get it merged and leave fixing the underlying problem for later. |
@brson: I think I have a fix for Android. I still need to clean-up the patch, make sure tests still pass of other platforms and whatnot Do you want to hold off your C++ unwinding patch? |
For some reason using libunwind directly is not working.
[`arithmetic_side_effect`]: allow different types on the right hand side for `Wrapping<T>` Fixes rust-lang#11145 This lint has a list of allowed types, one of which is `Wrapping<T>`, but it was only actually allowed if the type on the right hand side was also `Wrapping<T>`, which meant that, for example, `Wrapping<u32> += u32` would still lint. It now allows binary ops involving `Wrapping<T>` regardless of the type on the rhs. These impls have only existed since Rust 1.60.0, so that is probably why the lint was previously not handling this correctly changelog: [`arithmetic_side_effect`]: allow different types on the right hand side for `Wrapping<T>` (e.g. `Wrapping<T> += T`)
last
make check-stage2-T-arm-linux-androideabi-H-x86_64-unknown-linux-gnu
onf74b8f0d
has same result
The text was updated successfully, but these errors were encountered: