30 lines
1016 B
Rust
30 lines
1016 B
Rust
|
|
//@ 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();
|
||
|
|
}
|