1f4a2713aSLionel Sambuc // Test sanitizers ld flags. 2f4a2713aSLionel Sambuc 3f4a2713aSLionel Sambuc // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 4f4a2713aSLionel Sambuc // RUN: -target i386-unknown-linux -fsanitize=address \ 5f4a2713aSLionel Sambuc // RUN: -resource-dir=%S/Inputs/resource_dir \ 6f4a2713aSLionel Sambuc // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 7f4a2713aSLionel Sambuc // RUN: | FileCheck --check-prefix=CHECK-ASAN-LINUX %s 8f4a2713aSLionel Sambuc // 9f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 10f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX-NOT: "-lc" 11f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX: libclang_rt.asan-i386.a" 12*0a6a1f1dSLionel Sambuc // CHECK-ASAN-LINUX-NOT: "-export-dynamic" 13*0a6a1f1dSLionel Sambuc // CHECK-ASAN-LINUX: "--dynamic-list={{.*}}libclang_rt.asan-i386.a.syms" 14*0a6a1f1dSLionel Sambuc // CHECK-ASAN-LINUX-NOT: "-export-dynamic" 15f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX: "-lpthread" 16f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX: "-lrt" 17f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX: "-ldl" 18*0a6a1f1dSLionel Sambuc 19*0a6a1f1dSLionel Sambuc // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 20*0a6a1f1dSLionel Sambuc // RUN: -target i386-unknown-linux -fsanitize=address -shared-libasan \ 21*0a6a1f1dSLionel Sambuc // RUN: -resource-dir=%S/Inputs/resource_dir \ 22*0a6a1f1dSLionel Sambuc // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 23*0a6a1f1dSLionel Sambuc // RUN: | FileCheck --check-prefix=CHECK-SHARED-ASAN-LINUX %s 24*0a6a1f1dSLionel Sambuc // 25*0a6a1f1dSLionel Sambuc // CHECK-SHARED-ASAN-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 26*0a6a1f1dSLionel Sambuc // CHECK-SHARED-ASAN-LINUX-NOT: "-lc" 27*0a6a1f1dSLionel Sambuc // CHECK-SHARED-ASAN-LINUX-NOT: libclang_rt.asan-i386.a" 28*0a6a1f1dSLionel Sambuc // CHECK-SHARED-ASAN-LINUX: libclang_rt.asan-i386.so" 29*0a6a1f1dSLionel Sambuc // CHECK-SHARED-ASAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.asan-preinit-i386.a" "-no-whole-archive" 30*0a6a1f1dSLionel Sambuc // CHECK-SHARED-ASAN-LINUX-NOT: "-lpthread" 31*0a6a1f1dSLionel Sambuc // CHECK-SHARED-ASAN-LINUX-NOT: "-lrt" 32*0a6a1f1dSLionel Sambuc // CHECK-SHARED-ASAN-LINUX-NOT: "-ldl" 33*0a6a1f1dSLionel Sambuc // CHECK-SHARED-ASAN-LINUX-NOT: "-export-dynamic" 34*0a6a1f1dSLionel Sambuc // CHECK-SHARED-ASAN-LINUX-NOT: "--dynamic-list" 35*0a6a1f1dSLionel Sambuc 36*0a6a1f1dSLionel Sambuc // RUN: %clang -no-canonical-prefixes %s -### -o %t.so -shared 2>&1 \ 37*0a6a1f1dSLionel Sambuc // RUN: -target i386-unknown-linux -fsanitize=address -shared-libasan \ 38*0a6a1f1dSLionel Sambuc // RUN: -resource-dir=%S/Inputs/resource_dir \ 39*0a6a1f1dSLionel Sambuc // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 40*0a6a1f1dSLionel Sambuc // RUN: | FileCheck --check-prefix=CHECK-DSO-SHARED-ASAN-LINUX %s 41*0a6a1f1dSLionel Sambuc // 42*0a6a1f1dSLionel Sambuc // CHECK-DSO-SHARED-ASAN-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 43*0a6a1f1dSLionel Sambuc // CHECK-DSO-SHARED-ASAN-LINUX-NOT: "-lc" 44*0a6a1f1dSLionel Sambuc // CHECK-DSO-SHARED-ASAN-LINUX-NOT: libclang_rt.asan-i386.a" 45*0a6a1f1dSLionel Sambuc // CHECK-DSO-SHARED-ASAN-LINUX-NOT: "libclang_rt.asan-preinit-i386.a" 46*0a6a1f1dSLionel Sambuc // CHECK-DSO-SHARED-ASAN-LINUX: libclang_rt.asan-i386.so" 47*0a6a1f1dSLionel Sambuc // CHECK-DSO-SHARED-ASAN-LINUX-NOT: "-lpthread" 48*0a6a1f1dSLionel Sambuc // CHECK-DSO-SHARED-ASAN-LINUX-NOT: "-lrt" 49*0a6a1f1dSLionel Sambuc // CHECK-DSO-SHARED-ASAN-LINUX-NOT: "-ldl" 50*0a6a1f1dSLionel Sambuc // CHECK-DSO-SHARED-ASAN-LINUX-NOT: "-export-dynamic" 51*0a6a1f1dSLionel Sambuc // CHECK-DSO-SHARED-ASAN-LINUX-NOT: "--dynamic-list" 52*0a6a1f1dSLionel Sambuc 53*0a6a1f1dSLionel Sambuc // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 54*0a6a1f1dSLionel Sambuc // RUN: -target i386-unknown-freebsd -fsanitize=address \ 55*0a6a1f1dSLionel Sambuc // RUN: -resource-dir=%S/Inputs/resource_dir \ 56*0a6a1f1dSLionel Sambuc // RUN: --sysroot=%S/Inputs/basic_freebsd_tree \ 57*0a6a1f1dSLionel Sambuc // RUN: | FileCheck --check-prefix=CHECK-ASAN-FREEBSD %s 58*0a6a1f1dSLionel Sambuc // 59*0a6a1f1dSLionel Sambuc // CHECK-ASAN-FREEBSD: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 60*0a6a1f1dSLionel Sambuc // CHECK-ASAN-FREEBSD-NOT: "-lc" 61*0a6a1f1dSLionel Sambuc // CHECK-ASAN-FREEBSD-NOT: libclang_rt.asan_cxx 62*0a6a1f1dSLionel Sambuc // CHECK-ASAN-FREEBSD: freebsd{{/|\\+}}libclang_rt.asan-i386.a" 63*0a6a1f1dSLionel Sambuc // CHECK-ASAN-FREEBSD-NOT: libclang_rt.asan_cxx 64*0a6a1f1dSLionel Sambuc // CHECK-ASAN-FREEBSD-NOT: "--dynamic-list" 65*0a6a1f1dSLionel Sambuc // CHECK-ASAN-FREEBSD: "-export-dynamic" 66*0a6a1f1dSLionel Sambuc // CHECK-ASAN-FREEBSD: "-lpthread" 67*0a6a1f1dSLionel Sambuc // CHECK-ASAN-FREEBSD: "-lrt" 68*0a6a1f1dSLionel Sambuc 69*0a6a1f1dSLionel Sambuc // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 70*0a6a1f1dSLionel Sambuc // RUN: -target i386-unknown-freebsd -fsanitize=address \ 71*0a6a1f1dSLionel Sambuc // RUN: -resource-dir=%S/Inputs/resource_dir \ 72*0a6a1f1dSLionel Sambuc // RUN: --sysroot=%S/Inputs/basic_freebsd_tree \ 73*0a6a1f1dSLionel Sambuc // RUN: | FileCheck --check-prefix=CHECK-ASAN-FREEBSD-LDL %s 74*0a6a1f1dSLionel Sambuc // 75*0a6a1f1dSLionel Sambuc // CHECK-ASAN-FREEBSD-LDL: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 76*0a6a1f1dSLionel Sambuc // CHECK-ASAN-FREEBSD-LDL-NOT: "-ldl" 77f4a2713aSLionel Sambuc 78f4a2713aSLionel Sambuc // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 79f4a2713aSLionel Sambuc // RUN: -target i386-unknown-linux -fsanitize=address \ 80f4a2713aSLionel Sambuc // RUN: -resource-dir=%S/Inputs/empty_resource_dir \ 81f4a2713aSLionel Sambuc // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 82f4a2713aSLionel Sambuc // RUN: | FileCheck --check-prefix=CHECK-ASAN-LINUX-CXX %s 83f4a2713aSLionel Sambuc // 84f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 85f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX-CXX-NOT: "-lc" 86f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive" 87*0a6a1f1dSLionel Sambuc // CHECK-ASAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.asan_cxx-i386.a" "-no-whole-archive" 88*0a6a1f1dSLionel Sambuc // CHECK-ASAN-LINUX-CXX-NOT: "--dynamic-list" 89*0a6a1f1dSLionel Sambuc // CHECK-ASAN-LINUX-CXX: "-export-dynamic" 90*0a6a1f1dSLionel Sambuc // CHECK-ASAN-LINUX-CXX: stdc++ 91f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX-CXX: "-lpthread" 92f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX-CXX: "-lrt" 93f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX-CXX: "-ldl" 94f4a2713aSLionel Sambuc 95f4a2713aSLionel Sambuc // RUN: %clang -no-canonical-prefixes %s -### -o /dev/null -fsanitize=address \ 96f4a2713aSLionel Sambuc // RUN: -target i386-unknown-linux --sysroot=%S/Inputs/basic_linux_tree \ 97f4a2713aSLionel Sambuc // RUN: -lstdc++ -static 2>&1 \ 98f4a2713aSLionel Sambuc // RUN: | FileCheck --check-prefix=CHECK-ASAN-LINUX-CXX-STATIC %s 99f4a2713aSLionel Sambuc // 100f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX-CXX-STATIC: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 101f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX-CXX-STATIC-NOT: stdc++ 102f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX-CXX-STATIC: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive" 103f4a2713aSLionel Sambuc // CHECK-ASAN-LINUX-CXX-STATIC: stdc++ 104f4a2713aSLionel Sambuc 105f4a2713aSLionel Sambuc // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 106*0a6a1f1dSLionel Sambuc // RUN: -target arm-linux-gnueabi -fsanitize=address \ 107*0a6a1f1dSLionel Sambuc // RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \ 108*0a6a1f1dSLionel Sambuc // RUN: | FileCheck --check-prefix=CHECK-ASAN-ARM %s 109*0a6a1f1dSLionel Sambuc // 110*0a6a1f1dSLionel Sambuc // CHECK-ASAN-ARM: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 111*0a6a1f1dSLionel Sambuc // CHECK-ASAN-ARM-NOT: "-lc" 112*0a6a1f1dSLionel Sambuc // CHECK-ASAN-ARM: libclang_rt.asan-arm.a" 113*0a6a1f1dSLionel Sambuc // 114*0a6a1f1dSLionel Sambuc // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 115*0a6a1f1dSLionel Sambuc // RUN: -target armv7l-linux-gnueabi -fsanitize=address \ 116*0a6a1f1dSLionel Sambuc // RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \ 117*0a6a1f1dSLionel Sambuc // RUN: | FileCheck --check-prefix=CHECK-ASAN-ARMv7 %s 118*0a6a1f1dSLionel Sambuc // 119*0a6a1f1dSLionel Sambuc // CHECK-ASAN-ARMv7: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 120*0a6a1f1dSLionel Sambuc // CHECK-ASAN-ARMv7-NOT: "-lc" 121*0a6a1f1dSLionel Sambuc // CHECK-ASAN-ARMv7: libclang_rt.asan-arm.a" 122*0a6a1f1dSLionel Sambuc 123*0a6a1f1dSLionel Sambuc // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 124f4a2713aSLionel Sambuc // RUN: -target arm-linux-androideabi -fsanitize=address \ 125f4a2713aSLionel Sambuc // RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \ 126f4a2713aSLionel Sambuc // RUN: | FileCheck --check-prefix=CHECK-ASAN-ANDROID %s 127f4a2713aSLionel Sambuc // 128f4a2713aSLionel Sambuc // CHECK-ASAN-ANDROID: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 129f4a2713aSLionel Sambuc // CHECK-ASAN-ANDROID-NOT: "-lc" 130*0a6a1f1dSLionel Sambuc // CHECK-ASAN-ANDROID: "-pie" 131*0a6a1f1dSLionel Sambuc // CHECK-ASAN-ANDROID-NOT: "-lpthread" 132f4a2713aSLionel Sambuc // CHECK-ASAN-ANDROID: libclang_rt.asan-arm-android.so" 133f4a2713aSLionel Sambuc // CHECK-ASAN-ANDROID-NOT: "-lpthread" 134f4a2713aSLionel Sambuc // 135f4a2713aSLionel Sambuc // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 136f4a2713aSLionel Sambuc // RUN: -target arm-linux-androideabi -fsanitize=address \ 137f4a2713aSLionel Sambuc // RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \ 138*0a6a1f1dSLionel Sambuc // RUN: -shared-libasan \ 139*0a6a1f1dSLionel Sambuc // RUN: | FileCheck --check-prefix=CHECK-ASAN-ANDROID-SHARED-LIBASAN %s 140*0a6a1f1dSLionel Sambuc // 141*0a6a1f1dSLionel Sambuc // CHECK-ASAN-ANDROID-SHARED-LIBASAN-NOT: argument unused during compilation: '-shared-libasan' 142*0a6a1f1dSLionel Sambuc // 143*0a6a1f1dSLionel Sambuc // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 144*0a6a1f1dSLionel Sambuc // RUN: -target arm-linux-androideabi -fsanitize=address \ 145*0a6a1f1dSLionel Sambuc // RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \ 146f4a2713aSLionel Sambuc // RUN: -shared \ 147f4a2713aSLionel Sambuc // RUN: | FileCheck --check-prefix=CHECK-ASAN-ANDROID-SHARED %s 148f4a2713aSLionel Sambuc // 149f4a2713aSLionel Sambuc // CHECK-ASAN-ANDROID-SHARED: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 150f4a2713aSLionel Sambuc // CHECK-ASAN-ANDROID-SHARED-NOT: "-lc" 151f4a2713aSLionel Sambuc // CHECK-ASAN-ANDROID-SHARED: libclang_rt.asan-arm-android.so" 152f4a2713aSLionel Sambuc // CHECK-ASAN-ANDROID-SHARED-NOT: "-lpthread" 153f4a2713aSLionel Sambuc 154f4a2713aSLionel Sambuc // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 155f4a2713aSLionel Sambuc // RUN: -target x86_64-unknown-linux -lstdc++ -fsanitize=thread \ 156f4a2713aSLionel Sambuc // RUN: -resource-dir=%S/Inputs/resource_dir \ 157f4a2713aSLionel Sambuc // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 158f4a2713aSLionel Sambuc // RUN: | FileCheck --check-prefix=CHECK-TSAN-LINUX-CXX %s 159f4a2713aSLionel Sambuc // 160f4a2713aSLionel Sambuc // CHECK-TSAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 161f4a2713aSLionel Sambuc // CHECK-TSAN-LINUX-CXX-NOT: stdc++ 162f4a2713aSLionel Sambuc // CHECK-TSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.tsan-x86_64.a" "-no-whole-archive" 163*0a6a1f1dSLionel Sambuc // CHECK-TSAN-LINUX-CXX-NOT: "-export-dynamic" 164*0a6a1f1dSLionel Sambuc // CHECK-TSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.tsan-x86_64.a.syms" 165*0a6a1f1dSLionel Sambuc // CHECK-TSAN-LINUX-CXX-NOT: "-export-dynamic" 166*0a6a1f1dSLionel Sambuc // CHECK-TSAN-LINUX-CXX: stdc++ 167f4a2713aSLionel Sambuc // CHECK-TSAN-LINUX-CXX: "-lpthread" 168f4a2713aSLionel Sambuc // CHECK-TSAN-LINUX-CXX: "-lrt" 169f4a2713aSLionel Sambuc // CHECK-TSAN-LINUX-CXX: "-ldl" 170f4a2713aSLionel Sambuc 171f4a2713aSLionel Sambuc // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 172f4a2713aSLionel Sambuc // RUN: -target x86_64-unknown-linux -lstdc++ -fsanitize=memory \ 173f4a2713aSLionel Sambuc // RUN: -resource-dir=%S/Inputs/resource_dir \ 174f4a2713aSLionel Sambuc // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 175f4a2713aSLionel Sambuc // RUN: | FileCheck --check-prefix=CHECK-MSAN-LINUX-CXX %s 176f4a2713aSLionel Sambuc // 177f4a2713aSLionel Sambuc // CHECK-MSAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 178f4a2713aSLionel Sambuc // CHECK-MSAN-LINUX-CXX-NOT: stdc++ 179f4a2713aSLionel Sambuc // CHECK-MSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.msan-x86_64.a" "-no-whole-archive" 180*0a6a1f1dSLionel Sambuc // CHECK-MSAN-LINUX-CXX-NOT: "-export-dynamic" 181*0a6a1f1dSLionel Sambuc // CHECK-MSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.msan-x86_64.a.syms" 182*0a6a1f1dSLionel Sambuc // CHECK-MSAN-LINUX-CXX-NOT: "-export-dynamic" 183*0a6a1f1dSLionel Sambuc // CHECK-MSAN-LINUX-CXX: stdc++ 184f4a2713aSLionel Sambuc // CHECK-MSAN-LINUX-CXX: "-lpthread" 185f4a2713aSLionel Sambuc // CHECK-MSAN-LINUX-CXX: "-lrt" 186f4a2713aSLionel Sambuc // CHECK-MSAN-LINUX-CXX: "-ldl" 187f4a2713aSLionel Sambuc 188f4a2713aSLionel Sambuc // RUN: %clang -fsanitize=undefined %s -### -o %t.o 2>&1 \ 189f4a2713aSLionel Sambuc // RUN: -target i386-unknown-linux \ 190f4a2713aSLionel Sambuc // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 191f4a2713aSLionel Sambuc // RUN: | FileCheck --check-prefix=CHECK-UBSAN-LINUX %s 192f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX: "{{.*}}ld{{(.exe)?}}" 193f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX-NOT: libclang_rt.asan 194*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx 195f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.san-i386.a" "-no-whole-archive" 196f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX-NOT: libclang_rt.asan 197f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx 198*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive" 199*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-NOT: libclang_rt.asan 200*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx 201f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX-NOT: "-lstdc++" 202*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX: "-lpthread" 203*0a6a1f1dSLionel Sambuc 204*0a6a1f1dSLionel Sambuc // RUN: %clang -fsanitize=undefined -fsanitize-link-c++-runtime %s -### -o %t.o 2>&1 \ 205*0a6a1f1dSLionel Sambuc // RUN: -target i386-unknown-linux \ 206*0a6a1f1dSLionel Sambuc // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 207*0a6a1f1dSLionel Sambuc // RUN: | FileCheck --check-prefix=CHECK-UBSAN-LINUX-LINK-CXX %s 208*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-LINK-CXX-NOT: "-lstdc++" 209*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-LINK-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan_cxx-i386.a" "-no-whole-archive" 210*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-LINK-CXX-NOT: "-lstdc++" 211f4a2713aSLionel Sambuc 212f4a2713aSLionel Sambuc // RUN: %clangxx -fsanitize=undefined %s -### -o %t.o 2>&1 \ 213f4a2713aSLionel Sambuc // RUN: -target i386-unknown-linux \ 214*0a6a1f1dSLionel Sambuc // RUN: -resource-dir=%S/Inputs/resource_dir \ 215f4a2713aSLionel Sambuc // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 216f4a2713aSLionel Sambuc // RUN: | FileCheck --check-prefix=CHECK-UBSAN-LINUX-CXX %s 217f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX-CXX: "{{.*}}ld{{(.exe)?}}" 218f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan 219f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.san-i386.a" "-no-whole-archive" 220f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan 221f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive" 222*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan 223*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.ubsan-i386.a.syms" 224*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan 225f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan_cxx-i386.a" "-no-whole-archive" 226*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan 227*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.ubsan_cxx-i386.a.syms" 228*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan 229f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX-CXX: "-lstdc++" 230*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan 231*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-CXX: "-lpthread" 232f4a2713aSLionel Sambuc 233f4a2713aSLionel Sambuc // RUN: %clang -fsanitize=address,undefined %s -### -o %t.o 2>&1 \ 234f4a2713aSLionel Sambuc // RUN: -target i386-unknown-linux \ 235f4a2713aSLionel Sambuc // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 236f4a2713aSLionel Sambuc // RUN: | FileCheck --check-prefix=CHECK-ASAN-UBSAN-LINUX %s 237f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX: "{{.*}}ld{{(.exe)?}}" 238f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX-NOT: libclang_rt.san 239f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive" 240f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX-NOT: libclang_rt.san 241f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive" 242f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx 243f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX-NOT: "-lstdc++" 244*0a6a1f1dSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX: "-lpthread" 245f4a2713aSLionel Sambuc 246f4a2713aSLionel Sambuc // RUN: %clangxx -fsanitize=address,undefined %s -### -o %t.o 2>&1 \ 247f4a2713aSLionel Sambuc // RUN: -target i386-unknown-linux \ 248f4a2713aSLionel Sambuc // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 249f4a2713aSLionel Sambuc // RUN: | FileCheck --check-prefix=CHECK-ASAN-UBSAN-LINUX-CXX %s 250f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX-CXX: "{{.*}}ld{{(.exe)?}}" 251f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX-CXX-NOT: libclang_rt.san 252f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive" 253f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX-CXX-NOT: libclang_rt.san 254f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive" 255f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan_cxx-i386.a" "-no-whole-archive" 256f4a2713aSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX-CXX: "-lstdc++" 257*0a6a1f1dSLionel Sambuc // CHECK-ASAN-UBSAN-LINUX-CXX: "-lpthread" 258f4a2713aSLionel Sambuc 259f4a2713aSLionel Sambuc // RUN: %clang -fsanitize=undefined %s -### -o %t.o 2>&1 \ 260f4a2713aSLionel Sambuc // RUN: -target i386-unknown-linux \ 261*0a6a1f1dSLionel Sambuc // RUN: -resource-dir=%S/Inputs/resource_dir \ 262f4a2713aSLionel Sambuc // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 263f4a2713aSLionel Sambuc // RUN: -shared \ 264f4a2713aSLionel Sambuc // RUN: | FileCheck --check-prefix=CHECK-UBSAN-LINUX-SHARED %s 265f4a2713aSLionel Sambuc // CHECK-UBSAN-LINUX-SHARED: "{{.*}}ld{{(.exe)?}}" 266*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-SHARED-NOT: --export-dynamic 267*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-SHARED-NOT: --dynamic-list 268*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-SHARED-NOT: libclang_rt.ubsan-i386.a" 269*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-SHARED-NOT: --export-dynamic 270*0a6a1f1dSLionel Sambuc // CHECK-UBSAN-LINUX-SHARED-NOT: --dynamic-list 271f4a2713aSLionel Sambuc 272f4a2713aSLionel Sambuc // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 273f4a2713aSLionel Sambuc // RUN: -target x86_64-unknown-linux -fsanitize=leak \ 274f4a2713aSLionel Sambuc // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 275f4a2713aSLionel Sambuc // RUN: | FileCheck --check-prefix=CHECK-LSAN-LINUX %s 276f4a2713aSLionel Sambuc // 277f4a2713aSLionel Sambuc // CHECK-LSAN-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 278f4a2713aSLionel Sambuc // CHECK-LSAN-LINUX-NOT: "-lc" 279f4a2713aSLionel Sambuc // CHECK-LSAN-LINUX: libclang_rt.lsan-x86_64.a" 280f4a2713aSLionel Sambuc // CHECK-LSAN-LINUX: "-lpthread" 281f4a2713aSLionel Sambuc // CHECK-LSAN-LINUX: "-ldl" 282f4a2713aSLionel Sambuc 283f4a2713aSLionel Sambuc // RUN: %clang -fsanitize=leak,undefined %s -### -o %t.o 2>&1 \ 284f4a2713aSLionel Sambuc // RUN: -target x86_64-unknown-linux \ 285f4a2713aSLionel Sambuc // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 286f4a2713aSLionel Sambuc // RUN: | FileCheck --check-prefix=CHECK-LSAN-UBSAN-LINUX %s 287f4a2713aSLionel Sambuc // CHECK-LSAN-UBSAN-LINUX: "{{.*}}ld{{(.exe)?}}" 288f4a2713aSLionel Sambuc // CHECK-LSAN-UBSAN-LINUX-NOT: libclang_rt.san 289f4a2713aSLionel Sambuc // CHECK-LSAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.lsan-x86_64.a" "-no-whole-archive" 290f4a2713aSLionel Sambuc // CHECK-LSAN-UBSAN-LINUX-NOT: libclang_rt.san 291f4a2713aSLionel Sambuc // CHECK-LSAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.ubsan-x86_64.a" "-no-whole-archive" 292f4a2713aSLionel Sambuc // CHECK-LSAN-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx 293f4a2713aSLionel Sambuc // CHECK-LSAN-UBSAN-LINUX-NOT: "-lstdc++" 294*0a6a1f1dSLionel Sambuc // CHECK-LSAN-UBSAN-LINUX: "-lpthread" 295f4a2713aSLionel Sambuc 296f4a2713aSLionel Sambuc // RUN: %clang -fsanitize=leak,address %s -### -o %t.o 2>&1 \ 297f4a2713aSLionel Sambuc // RUN: -target x86_64-unknown-linux \ 298f4a2713aSLionel Sambuc // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 299f4a2713aSLionel Sambuc // RUN: | FileCheck --check-prefix=CHECK-LSAN-ASAN-LINUX %s 300f4a2713aSLionel Sambuc // CHECK-LSAN-ASAN-LINUX: "{{.*}}ld{{(.exe)?}}" 301f4a2713aSLionel Sambuc // CHECK-LSAN-ASAN-LINUX-NOT: libclang_rt.lsan 302f4a2713aSLionel Sambuc // CHECK-LSAN-ASAN-LINUX: libclang_rt.asan-x86_64 303f4a2713aSLionel Sambuc // CHECK-LSAN-ASAN-LINUX-NOT: libclang_rt.lsan 304