diff --git a/src/test/run-make/link-path-order/Makefile b/src/test/run-make/link-path-order/Makefile new file mode 100644 index 00000000000..b8ebe6db6fd --- /dev/null +++ b/src/test/run-make/link-path-order/Makefile @@ -0,0 +1,17 @@ +-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 + +all: $(TMPDIR)/libcorrect.a $(TMPDIR)/libwrong.a + mkdir -p $(CORRECT_DIR) $(WRONG_DIR) + mv $(TMPDIR)/libcorrect.a $(CORRECT_DIR)/libfoo.a + mv $(TMPDIR)/libwrong.a $(WRONG_DIR)/libfoo.a + $(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) + diff --git a/src/test/run-make/link-path-order/correct.c b/src/test/run-make/link-path-order/correct.c new file mode 100644 index 00000000000..3064af952f8 --- /dev/null +++ b/src/test/run-make/link-path-order/correct.c @@ -0,0 +1 @@ +int should_return_one() { return 1; } diff --git a/src/test/run-make/link-path-order/main.rs b/src/test/run-make/link-path-order/main.rs new file mode 100644 index 00000000000..cd286af602a --- /dev/null +++ b/src/test/run-make/link-path-order/main.rs @@ -0,0 +1,26 @@ +// Copyright 2014 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +extern crate libc; + +#[link(name="foo")] +extern { + fn should_return_one() -> libc::c_int; +} + +fn main() { + let result = unsafe { + should_return_one() + }; + + if result != 1 { + std::os::set_exit_status(255); + } +} diff --git a/src/test/run-make/link-path-order/wrong.c b/src/test/run-make/link-path-order/wrong.c new file mode 100644 index 00000000000..64275b3ad6b --- /dev/null +++ b/src/test/run-make/link-path-order/wrong.c @@ -0,0 +1 @@ +int should_return_one() { return 0; }