// Checks debuginfo compression both for the always-enabled zlib, and when the optional zstd is // enabled: // - via rustc's `debuginfo-compression`, // - and via rust-lld's `compress-debug-sections` //@ needs-llvm-zstd: we want LLVM/LLD to be built with zstd support //@ needs-rust-lld: the system linker will most likely not support zstd //@ only-linux //@ ignore-cross-compile use run_make_support::{Rustc, llvm_readobj, run_in_tmpdir}; fn check_compression(compression: &str, to_find: &str) { // check compressed debug sections via rustc flag prepare_and_check(to_find, |rustc| { rustc.arg(&format!("-Zdebuginfo-compression={compression}")) }); // check compressed debug sections via rust-lld flag prepare_and_check(to_find, |rustc| { rustc.link_arg(&format!("-Wl,--compress-debug-sections={compression}")) }); } fn prepare_and_check &mut Rustc>(to_find: &str, prepare_rustc: F) { run_in_tmpdir(|| { let mut rustc = Rustc::new(); rustc .arg("-Zlinker-features=+lld") .arg("-Clink-self-contained=+linker") .arg("-Zunstable-options") .arg("-Cdebuginfo=full") .input("main.rs"); prepare_rustc(&mut rustc).run(); llvm_readobj().arg("-t").arg("main").run().assert_stdout_contains(to_find); }); } fn main() { check_compression("zlib", "ZLIB"); check_compression("zstd", "ZSTD"); }