mirror of https://github.com/rust-lang/rust.git
28 lines
853 B
Rust
28 lines
853 B
Rust
//@ run-pass
|
|
//@ ignore-windows-gnu: only statics marked with used can be GC-ed on windows-gnu
|
|
|
|
// Regression test for <https://github.com/rust-lang/rust/issues/139744>.
|
|
// Functions in the binary marked with no_mangle should be GC-ed if they
|
|
// are not indirectly referenced by main.
|
|
|
|
#![feature(used_with_arg)]
|
|
|
|
#[cfg_attr(windows, link(name = "this_lib_does_not_exist", kind = "raw-dylib"))]
|
|
unsafe extern "C" {
|
|
unsafe static THIS_SYMBOL_SHOULD_BE_UNDEFINED: usize;
|
|
}
|
|
|
|
#[unsafe(no_mangle)]
|
|
pub unsafe fn function_marked_with_no_mangle() {
|
|
println!("FUNCTION_MARKED_WITH_NO_MANGLE = {}", unsafe { THIS_SYMBOL_SHOULD_BE_UNDEFINED });
|
|
}
|
|
|
|
#[used(compiler)]
|
|
pub static FUNCTION_MARKED_WITH_USED: unsafe fn() = || {
|
|
println!("FUNCTION_MARKED_WITH_USED = {}", unsafe { THIS_SYMBOL_SHOULD_BE_UNDEFINED });
|
|
};
|
|
|
|
fn main() {
|
|
println!("MAIN");
|
|
}
|