]>
Commit | Line | Data |
---|---|---|
5869c6ff | 1 | use crate::spec::{LinkerFlavor, StackProbeType, Target}; |
7453a54e | 2 | |
29967ef6 | 3 | pub fn target() -> Target { |
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()); | |
5869c6ff XL |
9 | // don't use probe-stack=inline-asm until rust-lang/rust#83139 is resolved. |
10 | base.stack_probes = StackProbeType::Call; | |
7453a54e | 11 | |
32a655c1 SL |
12 | // The unwinder used by i686-unknown-linux-musl, the LLVM libunwind |
13 | // implementation, apparently relies on frame pointers existing... somehow. | |
14 | // It's not clear to me why nor where this dependency is introduced, but the | |
15 | // test suite does not pass with frame pointers eliminated and it passes | |
16 | // with frame pointers present. | |
17 | // | |
18 | // If you think that this is no longer necessary, then please feel free to | |
19 | // ignore! If it still passes the test suite and the bots then sounds good | |
20 | // to me. | |
21 | // | |
22 | // This may or may not be related to this bug: | |
23 | // https://llvm.org/bugs/show_bug.cgi?id=30879 | |
24 | base.eliminate_frame_pointer = false; | |
25 | ||
29967ef6 | 26 | Target { |
7453a54e | 27 | llvm_target: "i686-unknown-linux-musl".to_string(), |
29967ef6 | 28 | pointer_width: 32, |
dfeec247 XL |
29 | data_layout: "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-\ |
30 | f64:32:64-f80:32-n8:16:32-S128" | |
31 | .to_string(), | |
7453a54e | 32 | arch: "x86".to_string(), |
7453a54e | 33 | options: base, |
29967ef6 | 34 | } |
7453a54e | 35 | } |