Skip to content

Commit 49ded7e

Browse files
committed
Auto merge of #43639 - TobiasSchaffner:master, r=alexcrichton
Add L4Re Support in librustc_back Add experimental support for x86_64-unknown-l4re-uclibc target, which covers the L4 Runtime Environment. This pull request contains the changes that have to be made to librustc_back. It follows the changes humenda made in pull request rust-lang/libc#591 to libc. Next steps will be the modifications to the needed libraries. (libstd, liballoc_system, libpanic_abort, libunwind) Thanks to humenda for reviewing.
2 parents 9b6c238 + c151220 commit 49ded7e

File tree

3 files changed

+66
-0
lines changed

3 files changed

+66
-0
lines changed

src/librustc_back/target/l4re_base.rs

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
use PanicStrategy;
12+
use LinkerFlavor;
13+
use target::{LinkArgs, TargetOptions};
14+
use std::default::Default;
15+
16+
pub fn opts() -> TargetOptions {
17+
let mut pre_link_args = LinkArgs::new();
18+
pre_link_args.insert(LinkerFlavor::Ld, vec![
19+
"-nostdlib".to_string(),
20+
]);
21+
22+
TargetOptions {
23+
executables: true,
24+
has_elf_tls: false,
25+
exe_allocation_crate: Some("alloc_system".to_string()),
26+
panic_strategy: PanicStrategy::Abort,
27+
linker: "ld".to_string(),
28+
pre_link_args: pre_link_args,
29+
target_family: Some("unix".to_string()),
30+
.. Default::default()
31+
}
32+
}

src/librustc_back/target/mod.rs

+3
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ mod solaris_base;
6969
mod windows_base;
7070
mod windows_msvc_base;
7171
mod thumb_base;
72+
mod l4re_base;
7273
mod fuchsia_base;
7374
mod redox_base;
7475

@@ -193,6 +194,8 @@ supported_targets! {
193194
("aarch64-unknown-fuchsia", aarch64_unknown_fuchsia),
194195
("x86_64-unknown-fuchsia", x86_64_unknown_fuchsia),
195196

197+
("x86_64-unknown-l4re-uclibc", x86_64_unknown_l4re_uclibc),
198+
196199
("x86_64-unknown-redox", x86_64_unknown_redox),
197200

198201
("i386-apple-ios", i386_apple_ios),
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
use LinkerFlavor;
12+
use target::{Target, TargetResult};
13+
14+
pub fn target() -> TargetResult {
15+
let mut base = super::l4re_base::opts();
16+
base.cpu = "x86-64".to_string();
17+
base.max_atomic_width = Some(64);
18+
19+
Ok(Target {
20+
llvm_target: "x86_64-unknown-l4re-uclibc".to_string(),
21+
target_endian: "little".to_string(),
22+
target_pointer_width: "64".to_string(),
23+
data_layout: "e-m:e-i64:64-f80:128-n8:16:32:64-S128".to_string(),
24+
arch: "x86_64".to_string(),
25+
target_os: "l4re".to_string(),
26+
target_env: "uclibc".to_string(),
27+
target_vendor: "unknown".to_string(),
28+
linker_flavor: LinkerFlavor::Ld,
29+
options: base,
30+
})
31+
}

0 commit comments

Comments
 (0)