about summary refs log tree commit diff
path: root/compiler/rustc_target/src/spec/android_base.rs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_target/src/spec/android_base.rs')
-rw-r--r--compiler/rustc_target/src/spec/android_base.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/compiler/rustc_target/src/spec/android_base.rs b/compiler/rustc_target/src/spec/android_base.rs
new file mode 100644
index 00000000000..0ea99af83a1
--- /dev/null
+++ b/compiler/rustc_target/src/spec/android_base.rs
@@ -0,0 +1,16 @@
+use crate::spec::{LinkerFlavor, TargetOptions};
+
+pub fn opts() -> TargetOptions {
+    let mut base = super::linux_base::opts();
+    // Many of the symbols defined in compiler-rt are also defined in libgcc.
+    // Android's linker doesn't like that by default.
+    base.pre_link_args
+        .get_mut(&LinkerFlavor::Gcc)
+        .unwrap()
+        .push("-Wl,--allow-multiple-definition".to_string());
+    base.is_like_android = true;
+    base.position_independent_executables = true;
+    base.has_elf_tls = false;
+    base.requires_uwtable = true;
+    base
+}