rust/tests/run-make
bors 31ffe48723 Auto merge of #116035 - lqd:mcp-510-target-specs, r=petrochenkov
Allow target specs to use an LLD flavor, and self-contained linking components

This PR allows:
- target specs to use an LLD linker-flavor: this is needed to switch `x86_64-unknown-linux-gnu` to using LLD, and is currently not possible because the current flavor json serialization fails to roundtrip on the modern linker-flavors. This can e.g. be seen in https://github.com/rust-lang/rust/pull/115622#discussion_r1321312880 which explains where an `Lld::Yes` is ultimately deserialized into an `Lld::No`.
- target specs to declare self-contained linking components: this is needed to switch `x86_64-unknown-linux-gnu` to using `rust-lld`
- adds an end-to-end test of a custom target json simulating `x86_64-unknown-linux-gnu` being switched to using `rust-lld`
- disables codegen backends from participating because they don't support `-Zgcc-ld=lld` which is the basis of mcp510.

r? `@petrochenkov:` if the approach discussed https://github.com/rust-lang/rust/pull/115622#discussion_r1329403467 and on zulip would work for you: basically, see if we can emit only modern linker flavors in the json specs, but accept both old and new flavors while reading them, to fix the roundtrip issue.

The backwards compatible `LinkSelfContainedDefault` variants are still serialized and deserialized in `crt-objects-fallback`, while the spec equivalent of e.g. `-Clink-self-contained=+linker` is serialized into a different json object (with future-proofing to incorporate `crt-objects-fallback`  in the future).

---

I've been test-driving this in https://github.com/rust-lang/rust/pull/113382 to test actually switching `x86_64-unknown-linux-gnu`  to `rust-lld` (and fix what needs to be fixed in CI, bootstrap, etc), and it seems to work fine.
2023-10-27 02:11:36 +00:00
..
a-b-a-linker-guard
alloc-no-oom-handling
alloc-no-rc
alloc-no-sync
allocator-shim-circular-deps
allow-non-lint-warnings-cmdline
allow-warnings-cmdline-stability
archive-duplicate-names
arguments-non-c-like-enum
atomic-lock-free
bare-outfile
branch-protection-check-IBT
c-dynamic-dylib
c-dynamic-rlib
c-link-to-rust-dylib
c-link-to-rust-staticlib
c-link-to-rust-va-list-fn
c-static-dylib
c-static-rlib
c-unwind-abi-catch-lib-panic
c-unwind-abi-catch-panic
cat-and-grep-sanity-check
cdylib
cdylib-dylib-linkage
cdylib-fewer-symbols
codegen-options-parsing
comment-section Support .comment section like GCC/Clang (!llvm.ident) 2023-07-21 22:01:50 +02:00
compile-stdin
compiler-lookup-paths
compiler-lookup-paths-2
compiler-rt-works-on-mingw
compressed-debuginfo tests: use warning output from rustc to catch missing compression 2023-09-08 11:30:24 -04:00
const_fn_mir tests/run-make: Use RUSTC_TEST_OP in more places 2023-10-07 08:30:40 +02:00
const-prop-lint
core-no-fp-fmt-parse
core-no-oom-handling
coverage-llvmir coverage: Emit the filenames section before encoding per-function mappings 2023-10-22 23:17:15 +11:00
crate-data-smoke
crate-hash-rustc-version
crate-name-priority
cross-lang-lto
cross-lang-lto-clang
cross-lang-lto-pgo-smoketest
cross-lang-lto-upstream-rlibs
CURRENT_RUSTC_VERSION
debug-assertions
debugger-visualizer-dep-info
dep-graph
dep-info
dep-info-doesnt-run-much
dep-info-spaces
doctests-keep-binaries
doctests-runtool
dump-ice-to-disk Use YYYY-MM-DDTHH_MM_SS as datetime format for ICE dump files 2023-10-17 17:31:47 +00:00
dump-mono-stats
duplicate-output-flavors
dylib-chain
emit
emit-named-files
emit-path-unhashed Fix tests 2023-09-10 15:50:48 +00:00
emit-shared-files
emit-stack-sizes Automatically enable cross-crate inlining for small functions 2023-10-17 19:53:51 -04:00
emit-to-stdout
env-dep-info
error-found-staticlib-instead-crate
error-writing-dependencies
exit-code On nightly, dump ICE backtraces to disk 2023-07-19 14:10:07 +00:00
export-executable-symbols
extern-diff-internal-name
extern-flag-disambiguates
extern-flag-fun
extern-flag-pathless Verify that all crate sources are in sync 2023-07-19 14:47:05 +00:00
extern-flag-rename-transitive
extern-fn-explicit-align extern-fn-explicit-align test: remove unnecessary derives 2023-07-14 16:22:29 -04:00
extern-fn-generic
extern-fn-mangle
extern-fn-reachable
extern-fn-struct-passing-abi
extern-fn-with-extern-types
extern-fn-with-packed-struct
extern-fn-with-union
extern-multiple-copies
extern-multiple-copies2
extern-overrides-distribution
extra-filename-with-temp-outputs
fmt-write-bloat
forced-unwind-terminate-pof
foreign-double-unwind
foreign-exceptions
foreign-rust-exceptions
fpic
glibc-staticlib-args
hir-tree
inaccessible-temp-dir
include_bytes_deps
incr-add-rust-src-component
incr-foreign-head-span Validate crate name in CLI option --extern 2023-09-20 18:50:40 +02:00
incr-prev-body-beyond-eof
incremental-debugger-visualizer
incremental-session-fail
inline-always-many-cgu
interdependent-c-libraries
intrinsic-unreachable Automatically enable cross-crate inlining for small functions 2023-10-17 19:53:51 -04:00
invalid-library
invalid-so
invalid-staticlib
issue64319
issue-7349
issue-10971-temps-dir
issue-11908
issue-14500
issue-14698
issue-15460
issue-18943
issue-20626
issue-22131
issue-24445
issue-25581
issue-26006
issue-26092
issue-28595
issue-28766
issue-30063
issue-33329
issue-35164
issue-36710
issue-37839
issue-37893
issue-38237
issue-40535
issue-46239
issue-47384
issue-47551
issue-51671
issue-53964
issue-64153
issue-68794-textrel-on-minimal-lib
issue-69368
issue-83045
issue-83112-incr-test-moved-file
issue-84395-lto-embed-bitcode
issue-85019-moved-src-dir
issue-85401-static-mir
issue-85441
issue-88756-default-output Delete obsolete --disable-per-crate-search rustdoc flag 2023-09-20 22:09:48 -07:00
issue-97463-abi-param-passing
issue-107094
issue-109934-lto-debuginfo
jobserver-error
libs-through-symlinks
libtest-json Change default panic handler message format. 2023-07-29 11:42:50 +02:00
libtest-junit Change default panic handler message format. 2023-07-29 11:42:50 +02:00
libtest-thread-limit
link-arg
link-args-order
link-cfg
link-dedup
link-path-order
linkage-attr-on-static
llvm-ident Support .comment section like GCC/Clang (!llvm.ident) 2023-07-21 22:01:50 +02:00
llvm-outputs
long-linker-command-lines
long-linker-command-lines-cmd-exe
longjmp-across-rust
ls-metadata Fix tests 2023-09-10 15:50:48 +00:00
lto-dylib-dep
lto-empty
lto-linkage-used-attr Add a test for #108030 2023-09-11 22:01:55 +08:00
lto-no-link-whole-rlib
lto-readonly-lib
lto-smoke
lto-smoke-c
macos-deployment-target Raise minimum supported macOS to 10.12 2023-09-23 19:14:25 -05:00
macos-fat-archive
manual-crate-name
manual-link
many-crates-but-no-match
metadata-dep-info tests/run-make: Move RUSTC_TEST_OP to tools.mk 2023-10-07 08:30:40 +02:00
metadata-flag-frobs-symbols
min-global-align
mingw-export-call-convention
mismatching-target-triples
missing-crate-dependency
mixing-deps
mixing-formats
mixing-libs Verify that all crate sources are in sync 2023-07-19 14:47:05 +00:00
msvc-opt-minsize
multiple-emits
native-link-modifier-bundle
native-link-modifier-verbatim-linker
native-link-modifier-verbatim-rustc
native-link-modifier-whole-archive
no-alloc-shim
no-builtins-attribute Add the no-builtins attribute to functions when no_builtins is applied at the crate level. 2023-07-18 22:15:47 +08:00
no-builtins-lto
no-cdylib-as-rdylib Verify that all crate sources are in sync 2023-07-19 14:47:05 +00:00
no-duplicate-libs
no-input-file
no-intermediate-extras
obey-crate-type-flag
optimization-remarks-dir
optimization-remarks-dir-pgo ignore-cross-compile on optimization-remarks-dir-pgo test 2023-08-18 09:41:08 +02:00
output-filename-conflicts-with-directory
output-filename-overwrites-input Fix tests 2023-09-10 15:50:48 +00:00
output-type-permutations
output-with-hyphens
override-aliased-flags
overwrite-input tests/run-make: Use RUSTC_TEST_OP in more places 2023-10-07 08:30:40 +02:00
panic-abort-eh_frame Run AbortUnwindingCalls after generator transform 2023-08-18 13:51:42 +01:00
panic-impl-transitive
pass-linker-flags
pass-linker-flags-from-dep
pass-non-c-like-enum-to-c
pdb-buildinfo-cl-cmd Add missing Debuginfo to PDB debug file on windows. 2023-09-08 00:28:40 +02:00
pgo-branch-weights ignore-cross-compile remaining tests that run binaries 2023-08-30 13:45:57 +02:00
pgo-gen ignore-cross-compile remaining tests that run binaries 2023-08-30 13:45:57 +02:00
pgo-gen-lto ignore-cross-compile remaining tests that run binaries 2023-08-30 13:45:57 +02:00
pgo-gen-no-imp-symbols
pgo-indirect-call-promotion ignore-cross-compile remaining tests that run binaries 2023-08-30 13:45:57 +02:00
pgo-use ignore-cross-compile remaining tests that run binaries 2023-08-30 13:45:57 +02:00
pointer-auth-link-with-c ignore-cross-compile remaining tests that run binaries 2023-08-30 13:45:57 +02:00
prefer-dylib
prefer-rlib
pretty-print-to-file
pretty-print-with-dep-file Fix missing dependency file with -Zunpretty 2023-08-04 20:13:40 +02:00
print-calling-conventions
print-cfg Stabilize PATH option for --print KIND=PATH 2023-09-07 15:07:30 +02:00
print-native-static-libs
print-target-list
profile ignore-cross-compile remaining tests that run binaries 2023-08-30 13:45:57 +02:00
prune-link-args
raw-dylib-alt-calling-convention tests/run-make: Use RUSTC_TEST_OP in more places 2023-10-07 08:30:40 +02:00
raw-dylib-c
raw-dylib-cross-compilation
raw-dylib-custom-dlltool
raw-dylib-import-name-type tests/run-make: Use RUSTC_TEST_OP in more places 2023-10-07 08:30:40 +02:00
raw-dylib-inline-cross-dylib tests/run-make: Use RUSTC_TEST_OP in more places 2023-10-07 08:30:40 +02:00
raw-dylib-link-ordinal tests/run-make: Use RUSTC_TEST_OP in more places 2023-10-07 08:30:40 +02:00
raw-dylib-stdcall-ordinal tests/run-make: Use RUSTC_TEST_OP in more places 2023-10-07 08:30:40 +02:00
redundant-libs
relocation-model
relro-levels
remap-path-prefix Test -Zremap-path-scope=split-debuginfo with -Csplit-debuginfo=packed 2023-10-17 10:11:31 +02:00
remap-path-prefix-dwarf Adjust tests for MacOS having different -Csplit-debuginfo default 2023-10-17 10:11:31 +02:00
repr128-dwarf
reproducible-build
reproducible-build-2
resolve-rename
return-non-c-like-enum
return-non-c-like-enum-from-c
rlib-chain
rlib-format-packed-bundled-libs
rlib-format-packed-bundled-libs-2
rlib-format-packed-bundled-libs-3 stabilize combining +bundle and +whole-archive link modifiers 2023-08-15 15:51:18 -05:00
rmeta-preferred Rewrite rmeta-rpass test to work with the new check for all crate sources being in sync 2023-07-19 14:47:06 +00:00
rust-lld
rust-lld-custom-target add end-to-end test of custom target using rust-lld 2023-10-18 11:33:40 +00:00
rustc-macro-dep-files
rustdoc-determinism
rustdoc-error-lines
rustdoc-io-error
rustdoc-map-file
rustdoc-output-path
rustdoc-scrape-examples-invalid-expr
rustdoc-scrape-examples-macros
rustdoc-scrape-examples-multiple
rustdoc-scrape-examples-ordering
rustdoc-scrape-examples-remap
rustdoc-scrape-examples-test
rustdoc-scrape-examples-whitespace
rustdoc-shared-flags
rustdoc-target-spec-json-path
rustdoc-themes rustdoc: merge theme css into rustdoc.css 2023-09-15 07:40:17 -07:00
rustdoc-verify-output-files
rustdoc-with-out-dir-option
rustdoc-with-output-option
rustdoc-with-short-out-dir-option
sanitizer-cdylib-link
sanitizer-dylib-link
sanitizer-staticlib-link
separate-link
separate-link-fail
sepcomp-cci-copies
sepcomp-inlining
sepcomp-separate
share-generics-dylib
short-ice Fix dump-ice-to-disk and short-ice tests when librustc-driver is dynamically linked 2023-07-20 14:31:56 +02:00
silly-file-names tests/run-make: Move RUSTC_TEST_OP to tools.mk 2023-10-07 08:30:40 +02:00
simd-ffi
simple-dylib
simple-rlib
split-debuginfo [RFC 3127 - Trim Paths]: Adjust tests for -Zremap-path-scope 2023-10-17 10:11:31 +02:00
stable-symbol-names
static-dylib-by-default
static-extern-type
static-pie
static-unwinding
staticlib-blank-lib
staticlib-dylib-linkage
std-core-cycle
stdin-non-utf8
suspicious-library
symbol-visibility
symbols-include-type-name
symlinked-extern
symlinked-libraries
symlinked-rlib
sysroot-crates-are-unstable
target-cpu-native
target-specs
target-without-atomic-cas
test-benches
test-harness
thumb-none-cortex-m
thumb-none-qemu
track-path-dep-info
track-pgo-dep-info
translation
type-mismatch-same-crate-name
unknown-mod-stdin Mention the syntax for use on mod foo; if foo doesn't exist 2023-10-21 15:56:01 +00:00
unstable-flag-required
use-extern-for-plugins
use-suggestions-rust-2018
used
used-cdylib-macos
valid-print-requests
version
volatile-intrinsics
wasm-abi
wasm-custom-section
wasm-custom-sections-opt
wasm-exceptions-nostd
wasm-export-all-symbols
wasm-import-module
wasm-override-linker add test for wasm linker override=clang 2023-10-09 11:42:23 +09:00
wasm-panic-small
wasm-spurious-import
wasm-stringify-ints-small
wasm-symbols-different-module
wasm-symbols-not-exported
wasm-symbols-not-imported
weird-output-filenames
windows-binary-no-external-deps
windows-safeseh Mark .rmeta files as /SAFESEH on x86 Windows. 2023-10-24 13:42:28 -07:00
windows-spawn
windows-subsystem
x86_64-fortanix-unknown-sgx-lvi
git_clone_sha1.sh
tools.mk tests/run-make: Move RUSTC_TEST_OP to tools.mk 2023-10-07 08:30:40 +02:00