• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Test sanitizers ld flags.
2 
3 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
4 // RUN:     -target i386-unknown-linux -fsanitize=address \
5 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
6 // RUN:   | FileCheck --check-prefix=CHECK-ASAN-LINUX %s
7 //
8 // CHECK-ASAN-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
9 // CHECK-ASAN-LINUX-NOT: "-lc"
10 // CHECK-ASAN-LINUX: libclang_rt.asan-i386.a"
11 // CHECK-ASAN-LINUX: "-lpthread"
12 // CHECK-ASAN-LINUX: "-ldl"
13 // CHECK-ASAN-LINUX: "-export-dynamic"
14 
15 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
16 // RUN:     -target i386-unknown-linux -fsanitize=address \
17 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
18 // RUN:   | FileCheck --check-prefix=CHECK-ASAN-LINUX-CXX %s
19 //
20 // CHECK-ASAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
21 // CHECK-ASAN-LINUX-CXX-NOT: "-lc"
22 // CHECK-ASAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive"
23 // CHECK-ASAN-LINUX-CXX: "-lpthread"
24 // CHECK-ASAN-LINUX-CXX: "-ldl"
25 // CHECK-ASAN-LINUX-CXX: "-export-dynamic"
26 // CHECK-ASAN-LINUX-CXX: stdc++
27 
28 // RUN: %clang -no-canonical-prefixes %s -### -o /dev/null -fsanitize=address \
29 // RUN:     -target i386-unknown-linux --sysroot=%S/Inputs/basic_linux_tree \
30 // RUN:     -lstdc++ -static 2>&1 \
31 // RUN:   | FileCheck --check-prefix=CHECK-ASAN-LINUX-CXX-STATIC %s
32 //
33 // CHECK-ASAN-LINUX-CXX-STATIC: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
34 // CHECK-ASAN-LINUX-CXX-STATIC-NOT: stdc++
35 // CHECK-ASAN-LINUX-CXX-STATIC: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive"
36 // CHECK-ASAN-LINUX-CXX-STATIC: stdc++
37 
38 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
39 // RUN:     -target arm-linux-androideabi -fsanitize=address \
40 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
41 // RUN:   | FileCheck --check-prefix=CHECK-ASAN-ANDROID %s
42 //
43 // CHECK-ASAN-ANDROID: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
44 // CHECK-ASAN-ANDROID-NOT: "-lc"
45 // CHECK-ASAN-ANDROID: libclang_rt.asan-arm-android.so"
46 // CHECK-ASAN-ANDROID-NOT: "-lpthread"
47 //
48 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
49 // RUN:     -target arm-linux-androideabi -fsanitize=address \
50 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
51 // RUN:     -shared \
52 // RUN:   | FileCheck --check-prefix=CHECK-ASAN-ANDROID-SHARED %s
53 //
54 // CHECK-ASAN-ANDROID-SHARED: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
55 // CHECK-ASAN-ANDROID-SHARED-NOT: "-lc"
56 // CHECK-ASAN-ANDROID-SHARED: libclang_rt.asan-arm-android.so"
57 // CHECK-ASAN-ANDROID-SHARED-NOT: "-lpthread"
58 
59 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
60 // RUN:     -target x86_64-unknown-linux -lstdc++ -fsanitize=thread \
61 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
62 // RUN:   | FileCheck --check-prefix=CHECK-TSAN-LINUX-CXX %s
63 //
64 // CHECK-TSAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
65 // CHECK-TSAN-LINUX-CXX-NOT: stdc++
66 // CHECK-TSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.tsan-x86_64.a" "-no-whole-archive"
67 // CHECK-TSAN-LINUX-CXX: "-lpthread"
68 // CHECK-TSAN-LINUX-CXX: "-ldl"
69 // CHECK-TSAN-LINUX-CXX: "-export-dynamic"
70 // CHECK-TSAN-LINUX-CXX: stdc++
71 
72 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
73 // RUN:     -target x86_64-unknown-linux -lstdc++ -fsanitize=memory \
74 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
75 // RUN:   | FileCheck --check-prefix=CHECK-MSAN-LINUX-CXX %s
76 //
77 // CHECK-MSAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
78 // CHECK-MSAN-LINUX-CXX-NOT: stdc++
79 // CHECK-MSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.msan-x86_64.a" "-no-whole-archive"
80 // CHECK-MSAN-LINUX-CXX: "-lpthread"
81 // CHECK-MSAN-LINUX-CXX: "-ldl"
82 // CHECK-MSAN-LINUX-CXX: "-export-dynamic"
83 // CHECK-MSAN-LINUX-CXX: stdc++
84 
85 // RUN: %clang -fsanitize=undefined %s -### -o %t.o 2>&1 \
86 // RUN:     -target i386-unknown-linux \
87 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
88 // RUN:   | FileCheck --check-prefix=CHECK-UBSAN-LINUX %s
89 // CHECK-UBSAN-LINUX: "{{.*}}ld{{(.exe)?}}"
90 // CHECK-UBSAN-LINUX-NOT: "-lc"
91 // CHECK-UBSAN-LINUX: libclang_rt.ubsan-i386.a"
92 // CHECK-UBSAN-LINUX: "-lpthread"
93 
94 // RUN: %clang -fsanitize=undefined %s -### -o %t.o 2>&1 \
95 // RUN:     -target i386-unknown-linux \
96 // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
97 // RUN:     -shared \
98 // RUN:   | FileCheck --check-prefix=CHECK-UBSAN-LINUX-SHARED %s
99 // CHECK-UBSAN-LINUX-SHARED: "{{.*}}ld{{(.exe)?}}"
100 // CHECK-UBSAN-LINUX-SHARED-NOT: "-lc"
101 // CHECK-UBSAN-LINUX-SHARED: libclang_rt.ubsan-i386.a"
102 // CHECK-UBSAN-LINUX-SHARED: "-lpthread"
103