]> git.proxmox.com Git - rustc.git/blame - compiler/rustc_target/src/spec/i686_unknown_linux_musl.rs
New upstream version 1.48.0+dfsg1
[rustc.git] / compiler / rustc_target / src / spec / i686_unknown_linux_musl.rs
CommitLineData
9fa01778 1use crate::spec::{LinkerFlavor, Target, TargetResult};
7453a54e 2
5bcae85e 3pub fn target() -> TargetResult {
a7813a04 4 let mut base = super::linux_musl_base::opts();
7453a54e 5 base.cpu = "pentium4".to_string();
c30ab7b3 6 base.max_atomic_width = Some(64);
cc61c64b
XL
7 base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-m32".to_string());
8 base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-Wl,-melf_i386".to_string());
041b39d2 9 base.stack_probes = true;
7453a54e 10
32a655c1
SL
11 // The unwinder used by i686-unknown-linux-musl, the LLVM libunwind
12 // implementation, apparently relies on frame pointers existing... somehow.
13 // It's not clear to me why nor where this dependency is introduced, but the
14 // test suite does not pass with frame pointers eliminated and it passes
15 // with frame pointers present.
16 //
17 // If you think that this is no longer necessary, then please feel free to
18 // ignore! If it still passes the test suite and the bots then sounds good
19 // to me.
20 //
21 // This may or may not be related to this bug:
22 // https://llvm.org/bugs/show_bug.cgi?id=30879
23 base.eliminate_frame_pointer = false;
24
5bcae85e 25 Ok(Target {
7453a54e
SL
26 llvm_target: "i686-unknown-linux-musl".to_string(),
27 target_endian: "little".to_string(),
28 target_pointer_width: "32".to_string(),
ea8adc8c 29 target_c_int_width: "32".to_string(),
dfeec247
XL
30 data_layout: "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-\
31 f64:32:64-f80:32-n8:16:32-S128"
32 .to_string(),
7453a54e
SL
33 arch: "x86".to_string(),
34 target_os: "linux".to_string(),
35 target_env: "musl".to_string(),
36 target_vendor: "unknown".to_string(),
cc61c64b 37 linker_flavor: LinkerFlavor::Gcc,
7453a54e 38 options: base,
5bcae85e 39 })
7453a54e 40}