Migrate atomic-lock-free to rmake · rust-lang/rust@a8b6e3f (original) (raw)

3 files changed

lines changed

Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
1 1 run-make/archive-duplicate-names/Makefile
2 -run-make/atomic-lock-free/Makefile
3 2 run-make/branch-protection-check-IBT/Makefile
4 3 run-make/c-dynamic-dylib/Makefile
5 4 run-make/c-dynamic-rlib/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
1 +// This tests ensure that atomic types are never lowered into runtime library calls that are not
2 +// guaranteed to be lock-free.
3 +
4 +//@ only-linux
5 +
6 +use run_make_support::{llvm_components_contain, llvm_readobj, rustc};
7 +
8 +fn compile(target: &str) {
9 +rustc().input("atomic_lock_free.rs").target(target).run();
10 +}
11 +
12 +fn check() {
13 +llvm_readobj()
14 +.symbols()
15 +.input("libatomic_lock_free.rlib")
16 +.run()
17 +.assert_stdout_not_contains("__atomic_fetch_add");
18 +}
19 +
20 +fn compile_and_check(target: &str) {
21 +compile(target);
22 +check();
23 +}
24 +
25 +fn main() {
26 +if llvm_components_contain("x86") {
27 +compile_and_check("i686-unknown-linux-gnu");
28 +compile_and_check("x86_64-unknown-linux-gnu");
29 +}
30 +if llvm_components_contain("arm") {
31 +compile_and_check("arm-unknown-linux-gnueabi");
32 +compile_and_check("arm-unknown-linux-gnueabihf");
33 +compile_and_check("armv7-unknown-linux-gnueabihf");
34 +compile_and_check("thumbv7neon-unknown-linux-gnueabihf");
35 +}
36 +if llvm_components_contain("aarch64") {
37 +compile_and_check("aarch64-unknown-linux-gnu");
38 +}
39 +if llvm_components_contain("mips") {
40 +compile_and_check("mips-unknown-linux-gnu");
41 +compile_and_check("mipsel-unknown-linux-gnu");
42 +}
43 +if llvm_components_contain("powerpc") {
44 +compile_and_check("powerpc-unknown-linux-gnu");
45 +compile_and_check("powerpc-unknown-linux-gnuspe");
46 +compile_and_check("powerpc64-unknown-linux-gnu");
47 +compile_and_check("powerpc64le-unknown-linux-gnu");
48 +}
49 +if llvm_components_contain("systemz") {
50 +compile_and_check("s390x-unknown-linux-gnu");
51 +}
52 +}