From: Andre Richter Date: Fri, 1 Feb 2019 21:11:40 +0000 (+0100) Subject: targets: aarch64-unknown-none: Add +strict-align X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=c4e46140f6a295d2d668ccc5bf25858233b11cbb;p=rust.git targets: aarch64-unknown-none: Add +strict-align On AArch64, an unaligned access causes a synchronous exception. In the current state of the target, the compiler might generate unaligned accesses, see https://github.com/rust-embedded/rust-raspi3-tutorial/issues/10. Since this is a bare-metal target, it is possible that there is no exception handling in place (yet) to recover from this case, causing a binary to just silently fail. Add `+strict-align` to avoid this case. --- diff --git a/src/librustc_target/spec/aarch64_unknown_none.rs b/src/librustc_target/spec/aarch64_unknown_none.rs index 3440a4f8752..8c02bc61088 100644 --- a/src/librustc_target/spec/aarch64_unknown_none.rs +++ b/src/librustc_target/spec/aarch64_unknown_none.rs @@ -11,6 +11,7 @@ pub fn target() -> Result { let opts = TargetOptions { linker: Some("rust-lld".to_owned()), + features: "+strict-align".to_string(), executables: true, relocation_model: "static".to_string(), disable_redzone: true,