diff options
| author | bors <bors@rust-lang.org> | 2021-07-13 12:25:10 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-07-13 12:25:10 +0000 |
| commit | ca99e3eb3adf61573b11d859ce2b9ff7db48ccd4 (patch) | |
| tree | 4358d504c5ce2e1fe670ae4d3bbebc74a03d5f48 /src | |
| parent | 5aff6dd07a562a2cba3c57fc3460a72acb6bef46 (diff) | |
| parent | c3fbafddc06fda5f282790c9c16378d7786cbe03 (diff) | |
Auto merge of #86922 - joshtriplett:target-abi, r=oli-obk
target abi Implement cfg(target_abi) (RFC 2992) Add an `abi` field to `TargetOptions`, defaulting to "". Support using `cfg(target_abi = "...")` for conditional compilation on that field. Gated by `feature(cfg_target_abi)`. Add a test for `target_abi`, and a test for the feature gate. Add `target_abi` to tidy as a platform-specific cfg. Update targets to use `target_abi` All eabi targets have `target_abi = "eabi".` All eabihf targets have `target_abi = "eabihf"`. `armv6_unknown_freebsd` and `armv7_unknown_freebsd` have `target_abi = "eabihf"`. All abi64 targets have `target_abi = "abi64"`. All ilp32 targets have `target_abi = "ilp32"`. All softfloat targets have `target_abi = "softfloat"`. All *-uwp-windows-* targets have `target_abi = "uwp"`. All spe targets have `target_abi = "spe"`. All macabi targets have `target_abi = "macabi"`. aarch64-apple-ios-sim has `target_abi = "sim"`. `x86_64-fortanix-unknown-sgx` has `target_abi = "fortanix"`. `x86_64-unknown-linux-gnux32` has `target_abi = "x32"`. Add FIXME entries for targets for which existing values need to change once `cfg_target_abi` becomes stable. (All of them are tier 3 targets.) Add a test for `target_abi` in `--print cfg`.
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/run-make-fulldeps/print-cfg/Makefile | 2 | ||||
| -rw-r--r-- | src/test/ui/cfg/cfg-target-abi.rs | 10 | ||||
| -rw-r--r-- | src/test/ui/feature-gates/feature-gate-cfg-target-abi.rs | 11 | ||||
| -rw-r--r-- | src/test/ui/feature-gates/feature-gate-cfg-target-abi.stderr | 39 | ||||
| -rw-r--r-- | src/tools/tidy/src/pal.rs | 1 |
5 files changed, 63 insertions, 0 deletions
diff --git a/src/test/run-make-fulldeps/print-cfg/Makefile b/src/test/run-make-fulldeps/print-cfg/Makefile index 08303a46d19..013bf3baca4 100644 --- a/src/test/run-make-fulldeps/print-cfg/Makefile +++ b/src/test/run-make-fulldeps/print-cfg/Makefile @@ -6,6 +6,8 @@ all: default $(RUSTC) --target i686-pc-windows-msvc --print cfg | $(CGREP) msvc $(RUSTC) --target i686-apple-darwin --print cfg | $(CGREP) macos $(RUSTC) --target i686-unknown-linux-gnu --print cfg | $(CGREP) gnu + $(RUSTC) --target arm-unknown-linux-gnueabihf --print cfg | $(CGREP) target_abi= + $(RUSTC) --target arm-unknown-linux-gnueabihf --print cfg | $(CGREP) eabihf ifdef IS_WINDOWS default: diff --git a/src/test/ui/cfg/cfg-target-abi.rs b/src/test/ui/cfg/cfg-target-abi.rs new file mode 100644 index 00000000000..acc570fc843 --- /dev/null +++ b/src/test/ui/cfg/cfg-target-abi.rs @@ -0,0 +1,10 @@ +// run-pass +#![feature(cfg_target_abi)] + +#[cfg(target_abi = "eabihf")] +pub fn main() { +} + +#[cfg(not(target_abi = "eabihf"))] +pub fn main() { +} diff --git a/src/test/ui/feature-gates/feature-gate-cfg-target-abi.rs b/src/test/ui/feature-gates/feature-gate-cfg-target-abi.rs new file mode 100644 index 00000000000..f2651493980 --- /dev/null +++ b/src/test/ui/feature-gates/feature-gate-cfg-target-abi.rs @@ -0,0 +1,11 @@ +#[cfg(target_abi = "x")] //~ ERROR `cfg(target_abi)` is experimental +#[cfg_attr(target_abi = "x", x)] //~ ERROR `cfg(target_abi)` is experimental +struct Foo(u64, u64); + +#[cfg(not(any(all(target_abi = "x"))))] //~ ERROR `cfg(target_abi)` is experimental +fn foo() {} + +fn main() { + cfg!(target_abi = "x"); + //~^ ERROR `cfg(target_abi)` is experimental and subject to change +} diff --git a/src/test/ui/feature-gates/feature-gate-cfg-target-abi.stderr b/src/test/ui/feature-gates/feature-gate-cfg-target-abi.stderr new file mode 100644 index 00000000000..ed8cbcbe4f0 --- /dev/null +++ b/src/test/ui/feature-gates/feature-gate-cfg-target-abi.stderr @@ -0,0 +1,39 @@ +error[E0658]: `cfg(target_abi)` is experimental and subject to change + --> $DIR/feature-gate-cfg-target-abi.rs:2:12 + | +LL | #[cfg_attr(target_abi = "x", x)] + | ^^^^^^^^^^^^^^^^ + | + = note: see issue #80970 <https://github.com/rust-lang/rust/issues/80970> for more information + = help: add `#![feature(cfg_target_abi)]` to the crate attributes to enable + +error[E0658]: `cfg(target_abi)` is experimental and subject to change + --> $DIR/feature-gate-cfg-target-abi.rs:1:7 + | +LL | #[cfg(target_abi = "x")] + | ^^^^^^^^^^^^^^^^ + | + = note: see issue #80970 <https://github.com/rust-lang/rust/issues/80970> for more information + = help: add `#![feature(cfg_target_abi)]` to the crate attributes to enable + +error[E0658]: `cfg(target_abi)` is experimental and subject to change + --> $DIR/feature-gate-cfg-target-abi.rs:5:19 + | +LL | #[cfg(not(any(all(target_abi = "x"))))] + | ^^^^^^^^^^^^^^^^ + | + = note: see issue #80970 <https://github.com/rust-lang/rust/issues/80970> for more information + = help: add `#![feature(cfg_target_abi)]` to the crate attributes to enable + +error[E0658]: `cfg(target_abi)` is experimental and subject to change + --> $DIR/feature-gate-cfg-target-abi.rs:9:10 + | +LL | cfg!(target_abi = "x"); + | ^^^^^^^^^^^^^^^^ + | + = note: see issue #80970 <https://github.com/rust-lang/rust/issues/80970> for more information + = help: add `#![feature(cfg_target_abi)]` to the crate attributes to enable + +error: aborting due to 4 previous errors + +For more information about this error, try `rustc --explain E0658`. diff --git a/src/tools/tidy/src/pal.rs b/src/tools/tidy/src/pal.rs index 31cdc6865a4..24a10018779 100644 --- a/src/tools/tidy/src/pal.rs +++ b/src/tools/tidy/src/pal.rs @@ -122,6 +122,7 @@ fn check_cfgs( let contains_platform_specific_cfg = cfg.contains("target_os") || cfg.contains("target_env") + || cfg.contains("target_abi") || cfg.contains("target_vendor") || cfg.contains("unix") || cfg.contains("windows"); |
