// The unstable flag `-Z export-executable-symbols` exports symbols from executables, as if // they were dynamic libraries. This test is a simple smoke test to check that this feature // works by using it in compilation, then checking that the output binary contains the exported // symbol. // See https://github.com/rust-lang/rust/pull/85673 //@ ignore-wasm //@ ignore-cross-compile use run_make_support::object::Object; use run_make_support::{bin_name, is_darwin, object, rustc}; fn main() { rustc() .arg("-Ctarget-feature=-crt-static") .arg("-Zexport-executable-symbols") .input("main.rs") .crate_type("bin") .run(); let name: &[u8] = if is_darwin() { b"_exported_symbol" } else { b"exported_symbol" }; let contents = std::fs::read(bin_name("main")).unwrap(); let object = object::File::parse(contents.as_slice()).unwrap(); let found = object.exports().unwrap().iter().any(|x| x.name() == name); assert!(found); }