Description
Currently, a blocker in a project of mine - Crabapple - is the lack of native arm64e support in Rust.
The aarch64-apple-ios
target only emits arm64 (ARMv8) code, which will not work within an arm64e (ARMv8.3+) environment due to it's lack of awareness of Pointer Authentication, leading to segfaults when trying to access a signed pointer.
It is currently possible to work around this, by using a backtrace=false rustc, compiling with --emit=llvm-ir -Clto
, and running the resulting IR through an arm64e-aware LLVM (such as apple/llvm-project). Pointer authentication may be worked around by linking to an FFI function that runs ptrauth_strip.
This may require LLVM changes if done, and quite possibly a new target (arm64e-apple-ios
, aarch64-apple-ios-armv83
, etc)
Activity