| //@ only-elf |
| //@ ignore-cross-compile: Runs a binary. |
| //@ needs-dynamic-linking |
| // FIXME(raw_dylib_elf): Debug the failures on other targets. |
| //@ only-gnu |
| //@ only-x86_64 |
| |
| //! Ensure ELF raw-dylib is able to link the binary without having the library present, |
| //! and then successfully run against the real library. |
| |
| use run_make_support::{build_native_dynamic_lib, cwd, diff, run, rustc}; |
| |
| fn main() { |
| // We compile the binary without having the library present. |
| // We also set the rpath to the current directory so we can pick up the library at runtime. |
| rustc() |
| .crate_type("bin") |
| .input("main.rs") |
| .arg(&format!("-Wl,-rpath={}", cwd().display())) |
| .run(); |
| |
| // Now, *after* building the binary, we build the library... |
| build_native_dynamic_lib("library"); |
| |
| // ... and run with this library, ensuring it was linked correctly at runtime. |
| let output = run("main").stdout_utf8(); |
| |
| diff().expected_file("output.txt").actual_text("actual", output).run(); |
| } |