mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-01 13:18:54 +01:00
1a1cc050d8
add `aarch64_unknown_nto_qnx700` target - QNX 7.0 support for aarch64le This backports the QNX 7.1 aarch64 implementation to 7.0. * [x] required `-lregex` disabled, see https://github.com/rust-lang/libc/pull/3775 (released in libc 0.2.156) * [x] uses `libgcc.a` instead of `libgcc_s.so` (7.0 used ancient GCC 5.4 which didn't have gcc_s) * [x] a fix in `backtrace` crate to support stack traces https://github.com/rust-lang/backtrace-rs/pull/648 This PR bumps libc dependency to 0.2.158 CC: to the folks who did the [initial implementation](https://doc.rust-lang.org/rustc/platform-support/nto-qnx.html): `@flba-eb,` `@gh-tr,` `@jonathanpallant,` `@japaric` # Compile target ```bash # Configure qcc build environment source _path_/_to_/qnx7.0/qnxsdp-env.sh # Tell rust to use qcc when building QNX 7.0 targets export build_env=' CC_aarch64-unknown-nto-qnx700=qcc CFLAGS_aarch64-unknown-nto-qnx700=-Vgcc_ntoaarch64le_cxx CXX_aarch64-unknown-nto-qnx700=qcc AR_aarch64_unknown_nto_qnx700=ntoaarch64-ar' # Build rust compiler, libs, and the remote test server env $build_env ./x.py build \ --target x86_64-unknown-linux-gnu,aarch64-unknown-nto-qnx700 \ rustc library/core library/alloc library/std src/tools/remote-test-server rustup toolchain link stage1 build/host/stage1 ``` # Compile "hello world" ```bash source _path_/_to_/qnx7.0/qnxsdp-env.sh cargo new hello_world cd hello_world cargo +stage1 build --release --target aarch64-unknown-nto-qnx700 ``` # Configure a remote for testing Do this from a new shell - we will need to run more commands in the previous one. I ran into these two issues, and found some workarounds. * Temporary dir might not work properly * Default `remote-test-server` has issues binding to an address ``` # ./remote-test-server starting test server thread 'main' panicked at src/tools/remote-test-server/src/main.rs:175:29: called `Result::unwrap()` on an `Err` value: Os { code: 249, kind: AddrNotAvailable, message: "Can't assign requested address" } note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace ``` Specifying `--bind` param actually fixes that, and so does setting `TMPDIR` properly. ```bash # Copy remote-test-server to remote device. You may need to use sftp instead. # ATTENTION: Note that the path is different from the one in the remote testing documentation for some reason scp ./build/x86_64-unknown-linux-gnu/stage1-tools-bin/remote-test-server qnxdevice:/path/ # Run ssh with port forwarding - so that rust tester can connect to the local port instead ssh -L 12345:127.0.0.1:12345 qnxdevice # on the device, run rm -rf tmp && mkdir -p tmp && TMPDIR=$PWD/tmp ./remote-test-server --bind 0.0.0.0:12345 ``` # Run test suit Assume all previous environment variables are still set, or re-init them ```bash export TEST_DEVICE_ADDR="localhost:12345" # tidy needs to be skipped due to using un-published libc dependency export exclude_tests=' --exclude src/bootstrap --exclude src/tools/error_index_generator --exclude src/tools/linkchecker --exclude src/tools/tidy --exclude tests/ui-fulldeps --exclude rustc --exclude rustdoc --exclude tests/run-make-fulldeps' env $build_env ./x.py test $exclude_tests --stage 1 --target aarch64-unknown-nto-qnx700 ``` try-job: dist-x86_64-msvc
150 lines
5.0 KiB
TOML
150 lines
5.0 KiB
TOML
cargo-features = ["public-dependency"]
|
|
|
|
[package]
|
|
name = "std"
|
|
version = "0.0.0"
|
|
license = "MIT OR Apache-2.0"
|
|
repository = "https://github.com/rust-lang/rust.git"
|
|
description = "The Rust Standard Library"
|
|
edition = "2021"
|
|
|
|
[lib]
|
|
crate-type = ["dylib", "rlib"]
|
|
|
|
[dependencies]
|
|
alloc = { path = "../alloc", public = true }
|
|
cfg-if = { version = "1.0", features = ['rustc-dep-of-std'] }
|
|
panic_unwind = { path = "../panic_unwind", optional = true }
|
|
panic_abort = { path = "../panic_abort" }
|
|
core = { path = "../core", public = true }
|
|
compiler_builtins = { version = "0.1.123" }
|
|
profiler_builtins = { path = "../profiler_builtins", optional = true }
|
|
unwind = { path = "../unwind" }
|
|
hashbrown = { version = "0.14", default-features = false, features = [
|
|
'rustc-dep-of-std',
|
|
] }
|
|
std_detect = { path = "../stdarch/crates/std_detect", default-features = false, features = [
|
|
'rustc-dep-of-std',
|
|
] }
|
|
|
|
# Dependencies of the `backtrace` crate
|
|
rustc-demangle = { version = "0.1.24", features = ['rustc-dep-of-std'] }
|
|
|
|
[target.'cfg(not(all(windows, target_env = "msvc", not(target_vendor = "uwp"))))'.dependencies]
|
|
miniz_oxide = { version = "0.7.0", optional = true, default-features = false }
|
|
addr2line = { version = "0.22.0", optional = true, default-features = false }
|
|
|
|
[target.'cfg(not(all(windows, target_env = "msvc")))'.dependencies]
|
|
libc = { version = "0.2.156", default-features = false, features = [
|
|
'rustc-dep-of-std',
|
|
], public = true }
|
|
|
|
[target.'cfg(all(not(target_os = "aix"), not(all(windows, target_env = "msvc", not(target_vendor = "uwp")))))'.dependencies]
|
|
object = { version = "0.36.0", default-features = false, optional = true, features = [
|
|
'read_core',
|
|
'elf',
|
|
'macho',
|
|
'pe',
|
|
'unaligned',
|
|
'archive',
|
|
] }
|
|
|
|
[target.'cfg(target_os = "aix")'.dependencies]
|
|
object = { version = "0.36.0", default-features = false, optional = true, features = [
|
|
'read_core',
|
|
'xcoff',
|
|
'unaligned',
|
|
'archive',
|
|
] }
|
|
|
|
[target.'cfg(windows)'.dependencies.windows-targets]
|
|
path = "../windows_targets"
|
|
|
|
[dev-dependencies]
|
|
rand = { version = "0.8.5", default-features = false, features = ["alloc"] }
|
|
rand_xorshift = "0.3.0"
|
|
|
|
[target.'cfg(any(all(target_family = "wasm", target_os = "unknown"), target_os = "xous", all(target_vendor = "fortanix", target_env = "sgx")))'.dependencies]
|
|
dlmalloc = { version = "0.2.4", features = ['rustc-dep-of-std'] }
|
|
|
|
[target.x86_64-fortanix-unknown-sgx.dependencies]
|
|
fortanix-sgx-abi = { version = "0.5.0", features = [
|
|
'rustc-dep-of-std',
|
|
], public = true }
|
|
|
|
[target.'cfg(target_os = "hermit")'.dependencies]
|
|
hermit-abi = { version = "0.4.0", features = [
|
|
'rustc-dep-of-std',
|
|
], public = true }
|
|
|
|
[target.'cfg(target_os = "wasi")'.dependencies]
|
|
wasi = { version = "0.11.0", features = [
|
|
'rustc-dep-of-std',
|
|
], default-features = false }
|
|
|
|
[target.'cfg(target_os = "uefi")'.dependencies]
|
|
r-efi = { version = "4.5.0", features = ['rustc-dep-of-std'] }
|
|
r-efi-alloc = { version = "1.0.0", features = ['rustc-dep-of-std'] }
|
|
|
|
[features]
|
|
backtrace = [
|
|
'addr2line/rustc-dep-of-std',
|
|
'object/rustc-dep-of-std',
|
|
'miniz_oxide/rustc-dep-of-std',
|
|
]
|
|
|
|
panic-unwind = ["panic_unwind"]
|
|
profiler = ["profiler_builtins"]
|
|
compiler-builtins-c = ["alloc/compiler-builtins-c"]
|
|
compiler-builtins-mem = ["alloc/compiler-builtins-mem"]
|
|
compiler-builtins-no-asm = ["alloc/compiler-builtins-no-asm"]
|
|
compiler-builtins-no-f16-f128 = ["alloc/compiler-builtins-no-f16-f128"]
|
|
compiler-builtins-mangled-names = ["alloc/compiler-builtins-mangled-names"]
|
|
llvm-libunwind = ["unwind/llvm-libunwind"]
|
|
system-llvm-libunwind = ["unwind/system-llvm-libunwind"]
|
|
|
|
# Make panics and failed asserts immediately abort without formatting any message
|
|
panic_immediate_abort = [
|
|
"core/panic_immediate_abort",
|
|
"alloc/panic_immediate_abort",
|
|
]
|
|
# Choose algorithms that are optimized for binary size instead of runtime performance
|
|
optimize_for_size = ["core/optimize_for_size", "alloc/optimize_for_size"]
|
|
|
|
# Enable std_detect default features for stdarch/crates/std_detect:
|
|
# https://github.com/rust-lang/stdarch/blob/master/crates/std_detect/Cargo.toml
|
|
std_detect_file_io = ["std_detect/std_detect_file_io"]
|
|
std_detect_dlsym_getauxval = ["std_detect/std_detect_dlsym_getauxval"]
|
|
std_detect_env_override = ["std_detect/std_detect_env_override"]
|
|
|
|
# Enable using raw-dylib for Windows imports.
|
|
# This will eventually be the default.
|
|
windows_raw_dylib = ["windows-targets/windows_raw_dylib"]
|
|
|
|
[package.metadata.fortanix-sgx]
|
|
# Maximum possible number of threads when testing
|
|
threads = 125
|
|
# Maximum heap size
|
|
heap_size = 0x8000000
|
|
|
|
[[test]]
|
|
name = "pipe-subprocess"
|
|
path = "tests/pipe_subprocess.rs"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "stdbenches"
|
|
path = "benches/lib.rs"
|
|
test = true
|
|
|
|
[lints.rust.unexpected_cfgs]
|
|
level = "warn"
|
|
check-cfg = [
|
|
'cfg(bootstrap)',
|
|
'cfg(target_arch, values("xtensa"))',
|
|
# std use #[path] imports to portable-simd `std_float` crate
|
|
# and to the `backtrace` crate which messes-up with Cargo list
|
|
# of declared features, we therefor expect any feature cfg
|
|
'cfg(feature, values(any()))',
|
|
]
|