rewrite link-path-order to rmake
This commit is contained in:
parent
741cf91678
commit
730313227f
@ -56,7 +56,6 @@ run-make/libtest-junit/Makefile
|
|||||||
run-make/libtest-thread-limit/Makefile
|
run-make/libtest-thread-limit/Makefile
|
||||||
run-make/link-cfg/Makefile
|
run-make/link-cfg/Makefile
|
||||||
run-make/link-framework/Makefile
|
run-make/link-framework/Makefile
|
||||||
run-make/link-path-order/Makefile
|
|
||||||
run-make/linkage-attr-on-static/Makefile
|
run-make/linkage-attr-on-static/Makefile
|
||||||
run-make/long-linker-command-lines-cmd-exe/Makefile
|
run-make/long-linker-command-lines-cmd-exe/Makefile
|
||||||
run-make/long-linker-command-lines/Makefile
|
run-make/long-linker-command-lines/Makefile
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
# ignore-cross-compile
|
|
||||||
include ../tools.mk
|
|
||||||
|
|
||||||
# Verifies that the -L arguments given to the linker is in the same order
|
|
||||||
# as the -L arguments on the rustc command line.
|
|
||||||
|
|
||||||
CORRECT_DIR=$(TMPDIR)/correct
|
|
||||||
WRONG_DIR=$(TMPDIR)/wrong
|
|
||||||
|
|
||||||
F := $(call NATIVE_STATICLIB_FILE,foo)
|
|
||||||
|
|
||||||
all: $(call NATIVE_STATICLIB,correct) $(call NATIVE_STATICLIB,wrong)
|
|
||||||
mkdir -p $(CORRECT_DIR) $(WRONG_DIR)
|
|
||||||
mv $(call NATIVE_STATICLIB,correct) $(CORRECT_DIR)/$(F)
|
|
||||||
mv $(call NATIVE_STATICLIB,wrong) $(WRONG_DIR)/$(F)
|
|
||||||
$(RUSTC) main.rs -o $(TMPDIR)/should_succeed -L $(CORRECT_DIR) -L $(WRONG_DIR)
|
|
||||||
$(call RUN,should_succeed)
|
|
||||||
$(RUSTC) main.rs -o $(TMPDIR)/should_fail -L $(WRONG_DIR) -L $(CORRECT_DIR)
|
|
||||||
$(call FAIL,should_fail)
|
|
33
tests/run-make/link-path-order/rmake.rs
Normal file
33
tests/run-make/link-path-order/rmake.rs
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
// The order in which "library search path" `-L` arguments are given to the command line rustc
|
||||||
|
// is important. These arguments must match the order of the linker's arguments. In this test,
|
||||||
|
// fetching the Wrong library before the Correct one causes a function to return 0 instead of the
|
||||||
|
// expected 1, causing a runtime panic, as expected.
|
||||||
|
// See https://github.com/rust-lang/rust/pull/16904
|
||||||
|
|
||||||
|
//@ ignore-cross-compile
|
||||||
|
// Reason: the compiled binary is executed
|
||||||
|
|
||||||
|
use run_make_support::{build_native_static_lib, path, rfs, run, run_fail, rustc, static_lib_name};
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
build_native_static_lib("correct");
|
||||||
|
build_native_static_lib("wrong");
|
||||||
|
rfs::create_dir("correct");
|
||||||
|
rfs::create_dir("wrong");
|
||||||
|
rfs::rename(static_lib_name("correct"), path("correct").join(static_lib_name("foo")));
|
||||||
|
rfs::rename(static_lib_name("wrong"), path("wrong").join(static_lib_name("foo")));
|
||||||
|
rustc()
|
||||||
|
.input("main.rs")
|
||||||
|
.output("should_succeed")
|
||||||
|
.library_search_path("correct")
|
||||||
|
.library_search_path("wrong")
|
||||||
|
.run();
|
||||||
|
run("should_succeed");
|
||||||
|
rustc()
|
||||||
|
.input("main.rs")
|
||||||
|
.output("should_fail")
|
||||||
|
.library_search_path("wrong")
|
||||||
|
.library_search_path("correct")
|
||||||
|
.run();
|
||||||
|
run_fail("should_fail");
|
||||||
|
}
|
@ -13,8 +13,8 @@ fn main() {
|
|||||||
cc().input("bar.c")
|
cc().input("bar.c")
|
||||||
.arg(static_lib_name("foo"))
|
.arg(static_lib_name("foo"))
|
||||||
.out_exe("bar")
|
.out_exe("bar")
|
||||||
.args(&extra_c_flags())
|
.args(extra_c_flags())
|
||||||
.args(&extra_cxx_flags())
|
.args(extra_cxx_flags())
|
||||||
.run();
|
.run();
|
||||||
run("bar");
|
run("bar");
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user