
AddressSanitizer adds instrumentation to global variables unless the [`no_sanitize_address`](https://llvm.org/docs/LangRef.html#global-attributes) attribute is set on them. This commit extends the existing `#[no_sanitize(address)]` attribute to set this; previously it only had the desired effect on functions.
40 lines
1 KiB
Rust
40 lines
1 KiB
Rust
#![feature(no_sanitize)]
|
|
#![feature(stmt_expr_attributes)]
|
|
#![deny(unused_attributes)]
|
|
#![allow(dead_code)]
|
|
|
|
fn invalid() {
|
|
#[no_sanitize(memory)] //~ ERROR `#[no_sanitize(memory)]` should be applied to a function
|
|
{
|
|
1
|
|
};
|
|
}
|
|
|
|
#[no_sanitize(memory)] //~ ERROR `#[no_sanitize(memory)]` should be applied to a function
|
|
type InvalidTy = ();
|
|
|
|
#[no_sanitize(memory)] //~ ERROR `#[no_sanitize(memory)]` should be applied to a function
|
|
mod invalid_module {}
|
|
|
|
fn main() {
|
|
let _ = #[no_sanitize(memory)] //~ ERROR `#[no_sanitize(memory)]` should be applied to a function
|
|
(|| 1);
|
|
}
|
|
|
|
#[no_sanitize(memory)] //~ ERROR `#[no_sanitize(memory)]` should be applied to a function
|
|
struct F;
|
|
|
|
#[no_sanitize(memory)] //~ ERROR `#[no_sanitize(memory)]` should be applied to a function
|
|
impl F {
|
|
#[no_sanitize(memory)]
|
|
fn valid(&self) {}
|
|
}
|
|
|
|
#[no_sanitize(address, memory)] //~ ERROR `#[no_sanitize(memory)]` should be applied to a function
|
|
static INVALID : i32 = 0;
|
|
|
|
#[no_sanitize(memory)]
|
|
fn valid() {}
|
|
|
|
#[no_sanitize(address)]
|
|
static VALID : i32 = 0;
|