Rollup merge of #119235 - Urgau:missing-feature-gate-sanitizer-cfi-cfgs, r=Nilstrieb

Add missing feature gate for sanitizer CFI cfgs

Found during the review of https://github.com/rust-lang/rust/pull/118494 in https://github.com/rust-lang/rust/pull/118494#discussion_r1416079288.

cc `@rcvalle`
This commit is contained in:
Michael Goulet 2023-12-26 13:29:13 -05:00 committed by GitHub
commit 50e380c8f3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 41 additions and 1 deletions

View File

@ -36,6 +36,8 @@ const GATED_CFGS: &[GatedCfg] = &[
(sym::sanitize, sym::cfg_sanitize, cfg_fn!(cfg_sanitize)), (sym::sanitize, sym::cfg_sanitize, cfg_fn!(cfg_sanitize)),
(sym::version, sym::cfg_version, cfg_fn!(cfg_version)), (sym::version, sym::cfg_version, cfg_fn!(cfg_version)),
(sym::relocation_model, sym::cfg_relocation_model, cfg_fn!(cfg_relocation_model)), (sym::relocation_model, sym::cfg_relocation_model, cfg_fn!(cfg_relocation_model)),
(sym::sanitizer_cfi_generalize_pointers, sym::cfg_sanitizer_cfi, cfg_fn!(cfg_sanitizer_cfi)),
(sym::sanitizer_cfi_normalize_integers, sym::cfg_sanitizer_cfi, cfg_fn!(cfg_sanitizer_cfi)),
]; ];
/// Find a gated cfg determined by the `pred`icate which is given the cfg's name. /// Find a gated cfg determined by the `pred`icate which is given the cfg's name.

View File

@ -371,6 +371,8 @@ declare_features! (
(unstable, cfg_relocation_model, "1.73.0", Some(114929)), (unstable, cfg_relocation_model, "1.73.0", Some(114929)),
/// Allows the use of `#[cfg(sanitize = "option")]`; set when -Zsanitizer is used. /// Allows the use of `#[cfg(sanitize = "option")]`; set when -Zsanitizer is used.
(unstable, cfg_sanitize, "1.41.0", Some(39699)), (unstable, cfg_sanitize, "1.41.0", Some(39699)),
/// Allows `cfg(sanitizer_cfi_generalize_pointers)` and `cfg(sanitizer_cfi_normalize_integers)`.
(unstable, cfg_sanitizer_cfi, "CURRENT_RUSTC_VERSION", Some(89653)),
/// Allows `cfg(target_abi = "...")`. /// Allows `cfg(target_abi = "...")`.
(unstable, cfg_target_abi, "1.55.0", Some(80970)), (unstable, cfg_target_abi, "1.55.0", Some(80970)),
/// Allows `cfg(target(abi = "..."))`. /// Allows `cfg(target(abi = "..."))`.

View File

@ -498,6 +498,7 @@ symbols! {
cfg_panic, cfg_panic,
cfg_relocation_model, cfg_relocation_model,
cfg_sanitize, cfg_sanitize,
cfg_sanitizer_cfi,
cfg_target_abi, cfg_target_abi,
cfg_target_compact, cfg_target_compact,
cfg_target_feature, cfg_target_feature,

View File

@ -265,6 +265,7 @@
// //
// Language features: // Language features:
// tidy-alphabetical-start // tidy-alphabetical-start
#![cfg_attr(not(bootstrap), feature(cfg_sanitizer_cfi))]
#![feature(alloc_error_handler)] #![feature(alloc_error_handler)]
#![feature(allocator_internals)] #![feature(allocator_internals)]
#![feature(allow_internal_unsafe)] #![feature(allow_internal_unsafe)]

View File

@ -11,7 +11,7 @@
// Note, however, that we run on lots older linuxes, as well as cross // Note, however, that we run on lots older linuxes, as well as cross
// compiling from a newer linux to an older linux, so we also have a // compiling from a newer linux to an older linux, so we also have a
// fallback implementation to use as well. // fallback implementation to use as well.
#[allow(unexpected_cfgs)] #[cfg_attr(bootstrap, allow(unexpected_cfgs))]
#[cfg(any( #[cfg(any(
target_os = "linux", target_os = "linux",
target_os = "android", target_os = "android",

View File

@ -0,0 +1,9 @@
#[cfg(sanitizer_cfi_generalize_pointers)]
//~^ `cfg(sanitizer_cfi_generalize_pointers)` is experimental
fn foo() {}
#[cfg(sanitizer_cfi_normalize_integers)]
//~^ `cfg(sanitizer_cfi_normalize_integers)` is experimental
fn bar() {}
fn main() {}

View File

@ -0,0 +1,21 @@
error[E0658]: `cfg(sanitizer_cfi_generalize_pointers)` is experimental and subject to change
--> $DIR/feature-gate-cfg-sanitizer_cfi.rs:1:7
|
LL | #[cfg(sanitizer_cfi_generalize_pointers)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #89653 <https://github.com/rust-lang/rust/issues/89653> for more information
= help: add `#![feature(cfg_sanitizer_cfi)]` to the crate attributes to enable
error[E0658]: `cfg(sanitizer_cfi_normalize_integers)` is experimental and subject to change
--> $DIR/feature-gate-cfg-sanitizer_cfi.rs:5:7
|
LL | #[cfg(sanitizer_cfi_normalize_integers)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #89653 <https://github.com/rust-lang/rust/issues/89653> for more information
= help: add `#![feature(cfg_sanitizer_cfi)]` to the crate attributes to enable
error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0658`.

View File

@ -5,5 +5,7 @@
// check-pass // check-pass
// compile-flags: -Clto -Cno-prepopulate-passes -Ctarget-feature=-crt-static -Zsanitizer=cfi -Zsanitizer-cfi-generalize-pointers // compile-flags: -Clto -Cno-prepopulate-passes -Ctarget-feature=-crt-static -Zsanitizer=cfi -Zsanitizer-cfi-generalize-pointers
#![feature(cfg_sanitizer_cfi)]
#[cfg(sanitizer_cfi_generalize_pointers)] #[cfg(sanitizer_cfi_generalize_pointers)]
fn main() {} fn main() {}

View File

@ -5,5 +5,7 @@
// check-pass // check-pass
// compile-flags: -Clto -Cno-prepopulate-passes -Ctarget-feature=-crt-static -Zsanitizer=cfi -Zsanitizer-cfi-normalize-integers // compile-flags: -Clto -Cno-prepopulate-passes -Ctarget-feature=-crt-static -Zsanitizer=cfi -Zsanitizer-cfi-normalize-integers
#![feature(cfg_sanitizer_cfi)]
#[cfg(sanitizer_cfi_normalize_integers)] #[cfg(sanitizer_cfi_normalize_integers)]
fn main() {} fn main() {}