Skip to content

Commit 4fdf2c4

Browse files
committed
Auto merge of #33500 - Nercury:update-aarch64-android-target-to-match-abi, r=alexcrichton
Update aarch64-linux-android target to match android abi. - Changed `target_env` to "gnu" to empty "" for all android targets because it does not matter for android. - The PR #33048 added "max_atomic_width" for arm-android but missed recently added armv7-android. Add it there too. - Added features `+neon,+fp-armv8` because they [must exist on `aarch64` android](http://developer.android.com/ndk/guides/cpu-features.html). - Update libc to include rust-lang/libc#282 so that rust's std lib works on android's aarch64 (the main issue there was incorrect structure alignment on 64-bit arm). r? @alexcrichton
2 parents 8310de8 + e512abd commit 4fdf2c4

5 files changed

+8
-4
lines changed

src/librustc_back/target/aarch64_linux_android.rs

+3
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ use target::Target;
1313
pub fn target() -> Target {
1414
let mut base = super::android_base::opts();
1515
base.max_atomic_width = 128;
16+
// As documented in http://developer.android.com/ndk/guides/cpu-features.html
17+
// the neon (ASIMD) and FP must exist on all android aarch64 targets.
18+
base.features = "+neon,+fp-armv8".to_string();
1619
Target {
1720
llvm_target: "aarch64-linux-android".to_string(),
1821
target_endian: "little".to_string(),

src/librustc_back/target/arm_linux_androideabi.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ pub fn target() -> Target {
2222
data_layout: "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
2323
arch: "arm".to_string(),
2424
target_os: "android".to_string(),
25-
target_env: "gnu".to_string(),
25+
target_env: "".to_string(),
2626
target_vendor: "unknown".to_string(),
2727
options: base,
2828
}

src/librustc_back/target/armv7_linux_androideabi.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ use target::Target;
1313
pub fn target() -> Target {
1414
let mut base = super::android_base::opts();
1515
base.features = "+v7,+thumb2,+vfp3,+d16".to_string();
16+
base.max_atomic_width = 64;
1617

1718
Target {
1819
llvm_target: "armv7-none-linux-android".to_string(),
@@ -21,7 +22,7 @@ pub fn target() -> Target {
2122
data_layout: "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
2223
arch: "arm".to_string(),
2324
target_os: "android".to_string(),
24-
target_env: "gnu".to_string(),
25+
target_env: "".to_string(),
2526
target_vendor: "unknown".to_string(),
2627
options: base,
2728
}

src/librustc_back/target/i686_linux_android.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ pub fn target() -> Target {
2222
data_layout: "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128".to_string(),
2323
arch: "x86".to_string(),
2424
target_os: "android".to_string(),
25-
target_env: "gnu".to_string(),
25+
target_env: "".to_string(),
2626
target_vendor: "unknown".to_string(),
2727
options: base,
2828
}

0 commit comments

Comments
 (0)