mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-11-03 22:49:17 +00:00 
			
		
		
		
	This stabilizes a subset of the `-Clinker-features` components on x64 linux: the lld opt-out. The opt-in is not stabilized, as interactions with other stable flags require more internal work, but are not needed for stabilizing using rust-lld by default. Similarly, since we only switch to rust-lld on x64 linux, the opt-out is only stabilized there. Other targets still require `-Zunstable-options` to use it.
		
			
				
	
	
		
			43 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
// 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<F: FnOnce(&mut Rustc) -> &mut Rustc>(to_find: &str, prepare_rustc: F) {
 | 
						|
    run_in_tmpdir(|| {
 | 
						|
        let mut rustc = Rustc::new();
 | 
						|
        rustc
 | 
						|
            .arg("-Clinker-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");
 | 
						|
}
 |