add end-to-end test of custom target using rust-lld
starting from the x86_64-unknown-linux-gnu specs, we add the lld linker flavor and self-contained linker component
This commit is contained in:
parent
5f24e314ef
commit
fe7a843278
7
tests/run-make/rust-lld-custom-target/Makefile
Normal file
7
tests/run-make/rust-lld-custom-target/Makefile
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
include ../tools.mk
|
||||||
|
|
||||||
|
# needs-rust-lld
|
||||||
|
# only-x86_64-unknown-linux-gnu
|
||||||
|
all:
|
||||||
|
RUSTC_LOG=rustc_codegen_ssa::back::link=info $(RUSTC) --crate-type cdylib --target custom-target.json -Clink-args=-Wl,-v lib.rs 2> $(TMPDIR)/output.txt
|
||||||
|
$(CGREP) -e "^LLD [0-9]+\.[0-9]+\.[0-9]+" < $(TMPDIR)/output.txt
|
57
tests/run-make/rust-lld-custom-target/custom-target.json
Normal file
57
tests/run-make/rust-lld-custom-target/custom-target.json
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
{
|
||||||
|
"arch": "x86_64",
|
||||||
|
"cpu": "x86-64",
|
||||||
|
"crt-static-respected": true,
|
||||||
|
"data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128",
|
||||||
|
"dynamic-linking": true,
|
||||||
|
"env": "gnu",
|
||||||
|
"has-rpath": true,
|
||||||
|
"has-thread-local": true,
|
||||||
|
"link-self-contained": {
|
||||||
|
"components": [
|
||||||
|
"linker"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"linker-flavor": "gnu-lld-cc",
|
||||||
|
"llvm-target": "x86_64-unknown-linux-gnu",
|
||||||
|
"max-atomic-width": 64,
|
||||||
|
"os": "linux",
|
||||||
|
"plt-by-default": false,
|
||||||
|
"position-independent-executables": true,
|
||||||
|
"pre-link-args": {
|
||||||
|
"gnu-cc": [
|
||||||
|
"-m64"
|
||||||
|
],
|
||||||
|
"gnu-lld-cc": [
|
||||||
|
"-m64"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"relro-level": "full",
|
||||||
|
"stack-probes": {
|
||||||
|
"kind": "inline-or-call",
|
||||||
|
"min-llvm-version-for-inline": [
|
||||||
|
16,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"static-position-independent-executables": true,
|
||||||
|
"supported-sanitizers": [
|
||||||
|
"address",
|
||||||
|
"cfi",
|
||||||
|
"leak",
|
||||||
|
"memory",
|
||||||
|
"thread",
|
||||||
|
"safestack"
|
||||||
|
],
|
||||||
|
"supported-split-debuginfo": [
|
||||||
|
"packed",
|
||||||
|
"unpacked",
|
||||||
|
"off"
|
||||||
|
],
|
||||||
|
"supports-xray": true,
|
||||||
|
"target-family": [
|
||||||
|
"unix"
|
||||||
|
],
|
||||||
|
"target-pointer-width": "64"
|
||||||
|
}
|
9
tests/run-make/rust-lld-custom-target/lib.rs
Normal file
9
tests/run-make/rust-lld-custom-target/lib.rs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
// Test linking using `cc` with `rust-lld`, using a custom target with features described in MCP 510
|
||||||
|
// see https://github.com/rust-lang/compiler-team/issues/510 for more info:
|
||||||
|
//
|
||||||
|
// Starting from the `x86_64-unknown-linux-gnu` target spec, we add the following options:
|
||||||
|
// - a linker-flavor using lld via a C compiler
|
||||||
|
// - the self-contained linker component is enabled
|
||||||
|
|
||||||
|
#![feature(no_core)]
|
||||||
|
#![no_core]
|
Loading…
Reference in New Issue
Block a user