//@ needs-sanitizer-kcfi //@ no-prefer-dynamic //@ compile-flags: -Zsanitizer=kcfi -Cpanic=abort -Cunsafe-allow-abi-mismatch=sanitizer //@ ignore-backends: gcc //@ run-pass #![feature(c_variadic)] trait Trait { unsafe extern "C" fn foo(x: i32, y: i32, mut ap: ...) -> i32 { x + y + ap.arg::() + ap.arg::() } } impl Trait for i32 {} fn main() { let f = i32::foo as unsafe extern "C" fn(i32, i32, ...) -> i32; assert_eq!(unsafe { f(1, 2, 3, 4) }, 1 + 2 + 3 + 4); }