Skip to content

Commit 194d96e

Browse files
committed
Lower the default dwarf version for android
1 parent 4f14111 commit 194d96e

File tree

4 files changed

+9
-1
lines changed

4 files changed

+9
-1
lines changed

src/librustc_back/target/aarch64_linux_android.rs

+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::linux_base::opts();
1515
base.pre_link_args.push("-Wl,--allow-multiple-definition".to_string());
16+
base.is_like_android = true;
1617
base.position_independent_executables = true;
1718
Target {
1819
data_layout: "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-\

src/librustc_back/target/arm_linux_androideabi.rs

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ pub fn target() -> Target {
1616
// Many of the symbols defined in compiler-rt are also defined in libgcc. Android
1717
// linker doesn't like that by default.
1818
base.pre_link_args.push("-Wl,--allow-multiple-definition".to_string());
19+
base.is_like_android = true;
1920
// FIXME #17437 (and #17448): Android doesn't support position dependent executables anymore.
2021
base.position_independent_executables = false;
2122

src/librustc_back/target/mod.rs

+4
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,9 @@ pub struct TargetOptions {
158158
/// only realy used for figuring out how to find libraries, since Windows uses its own
159159
/// library naming convention. Defaults to false.
160160
pub is_like_windows: bool,
161+
/// Whether the target toolchain is like Android's. Only useful for compiling against Android.
162+
/// Defaults to false.
163+
pub is_like_android: bool,
161164
/// Whether the linker support GNU-like arguments such as -O. Defaults to false.
162165
pub linker_is_gnu: bool,
163166
/// Whether the linker support rpaths or not. Defaults to false.
@@ -197,6 +200,7 @@ impl Default for TargetOptions {
197200
staticlib_suffix: ".a".to_string(),
198201
is_like_osx: false,
199202
is_like_windows: false,
203+
is_like_android: false,
200204
linker_is_gnu: false,
201205
has_rpath: false,
202206
no_compiler_rt: false,

src/librustc_trans/trans/debuginfo.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -736,7 +736,9 @@ pub fn finalize(cx: &CrateContext) {
736736
// instruct LLVM to emit an older version of dwarf, however,
737737
// for OS X to understand. For more info see #11352
738738
// This can be overridden using --llvm-opts -dwarf-version,N.
739-
if cx.sess().target.target.options.is_like_osx {
739+
// Android has the same issue (#22398)
740+
if cx.sess().target.target.options.is_like_osx ||
741+
cx.sess().target.target.options.is_like_android {
740742
llvm::LLVMRustAddModuleFlag(cx.llmod(),
741743
"Dwarf Version\0".as_ptr() as *const _,
742744
2)

0 commit comments

Comments
 (0)