rust/tests/ui/sanitizer/kcfi-mangling.rs
Matthew Maurer 233d94e72f KCFI: Use legal charset in shim encoding
To separate `ReifyReason::FnPtr` from `ReifyReason::VTable`, we
hyphenated the shims. Hyphens are not actually legal, but underscores
are, so use those instead.
2024-04-08 21:21:38 +00:00

30 lines
568 B
Rust

// Check KCFI extra mangling works correctly on v0
//@ needs-sanitizer-kcfi
//@ no-prefer-dynamic
//@ compile-flags: -C panic=abort -Zsanitizer=kcfi -C symbol-mangling-version=v0
//@ build-pass
trait Foo {
fn foo(&self);
}
struct Bar;
impl Foo for Bar {
fn foo(&self) {}
}
struct Baz;
impl Foo for Baz {
#[track_caller]
fn foo(&self) {}
}
fn main() {
// Produces `ReifyShim(_, ReifyReason::FnPtr)`
let f: fn(&Bar) = Bar::foo;
f(&Bar);
// Produces `ReifyShim(_, ReifyReason::Vtable)`
let v: &dyn Foo = &Baz as _;
v.foo();
}