| // Checks that produced dylibs have a relative SONAME set, so they don't put "unmovable" full paths |
| // into DT_NEEDED when used by a full path. |
| |
| //@ only-linux |
| //@ ignore-cross-compile |
| |
| use run_make_support::{cmd, run_in_tmpdir, rustc}; |
| |
| fn main() { |
| let check = |ty: &str| { |
| rustc().crate_name("foo").crate_type(ty).input("foo.rs").run(); |
| cmd("readelf").arg("-d").arg("libfoo.so").run() |
| }; |
| run_in_tmpdir(|| { |
| // Rust dylibs should get a relative SONAME |
| check("dylib").assert_stdout_contains("Library soname: [libfoo.so]"); |
| }); |
| run_in_tmpdir(|| { |
| // C dylibs should not implicitly get any SONAME |
| check("cdylib").assert_stdout_not_contains("Library soname:"); |
| }); |
| } |