#[link(name = "foo", kind = "static")] extern "C" { fn test_start(f: extern "C" fn()); fn test_end(); } fn main() { unsafe { test_start(test_middle); } } struct A; impl Drop for A { fn drop(&mut self) {} } extern "C" fn test_middle() { let _a = A; foo(); } fn foo() { let _a = A; unsafe { test_end(); } }