1396 lines · c
1// Test sanitizers ld flags.2 3// Match all sanitizer related libclang_rt, we are not interested in4// libclang_rt.builtins, libclang_rt.osx, libclang_rt.ios, libclang_rt.watchos5// etc.6//7// If we need to add sanitizer with name starting with excluded laters, e.g.8// `bsan`, we can extend expression like this: `([^iow]|b[^u])`.9//10// DEFINE: %{filecheck} = FileCheck %s --implicit-check-not="libclang_rt.{{([^biow])}}"11 12// RUN: %clang -### %s 2>&1 \13// RUN: --target=i386-unknown-linux -fuse-ld=ld -fsanitize=address \14// RUN: -resource-dir=%S/Inputs/resource_dir \15// RUN: --sysroot=%S/Inputs/basic_linux_tree \16// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-LINUX17//18// CHECK-ASAN-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"19// CHECK-ASAN-LINUX-NOT: "-lc"20// CHECK-ASAN-LINUX: "--whole-archive" "{{.*}}libclang_rt.asan_static.a" "--no-whole-archive"21// CHECK-ASAN-LINUX: "--whole-archive" "{{.*}}libclang_rt.asan.a" "--no-whole-archive"22// CHECK-ASAN-LINUX-NOT: "--export-dynamic"23// CHECK-ASAN-LINUX: "--dynamic-list={{.*}}libclang_rt.asan.a.syms"24// CHECK-ASAN-LINUX-NOT: "--export-dynamic"25// CHECK-ASAN-LINUX: "-lpthread"26// CHECK-ASAN-LINUX: "-lrt"27// CHECK-ASAN-LINUX: "-ldl"28// CHECK-ASAN-LINUX: "-lresolv"29 30// RUN: %clang -fsanitize=address -fno-sanitize-link-runtime -### %s 2>&1 \31// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \32// RUN: -resource-dir=%S/Inputs/resource_dir \33// RUN: --sysroot=%S/Inputs/basic_linux_tree \34// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-NO-LINK-RUNTIME-LINUX35//36// CHECK-ASAN-NO-LINK-RUNTIME-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"37 38// RUN: %clang -fsanitize=address -fno-sanitize-link-runtime -### %s 2>&1 \39// RUN: --target=arm64e-apple-macosx -fuse-ld=ld \40// RUN: -resource-dir=%S/Inputs/resource_dir \41// RUN: --sysroot=%S/Inputs/basic_linux_tree \42// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-NO-LINK-RUNTIME-DARWIN43//44// CHECK-ASAN-NO-LINK-RUNTIME-DARWIN: "{{.*}}ld{{(.exe)?}}"45 46// RUN: %clang -fsanitize=address -### %s 2>&1 \47// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \48// RUN: -resource-dir=%S/Inputs/resource_dir \49// RUN: --sysroot=%S/Inputs/basic_linux_tree \50// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-EXECUTABLE-LINUX51//52// CHECK-ASAN-EXECUTABLE-LINUX: "--whole-archive" "{{.*}}libclang_rt.asan_static.a" "--no-whole-archive"53// CHECK-ASAN-EXECUTABLE-LINUX: "--whole-archive" "{{.*}}libclang_rt.asan.a" "--no-whole-archive"54// CHECK-ASAN-EXECUTABLE-LINUX: "--dynamic-list={{.*}}libclang_rt.asan.a.syms"55 56// RUN: %clang -fsanitize=address -shared -### %s 2>&1 \57// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \58// RUN: -resource-dir=%S/Inputs/resource_dir \59// RUN: --sysroot=%S/Inputs/basic_linux_tree \60// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-SHARED-LINUX61//62// CHECK-ASAN-SHARED-LINUX: libclang_rt.asan_static63 64// RUN: %clang -### %s 2>&1 \65// RUN: --target=i386-unknown-linux -fuse-ld=ld -fsanitize=address -shared-libsan \66// RUN: -resource-dir=%S/Inputs/resource_dir \67// RUN: --sysroot=%S/Inputs/basic_linux_tree \68// RUN: | %{filecheck} --check-prefix=CHECK-SHARED-ASAN-LINUX69 70// RUN: %clang -### %s 2>&1 \71// RUN: --target=i386-unknown-linux -fuse-ld=ld -fsanitize=address -shared-libasan \72// RUN: -resource-dir=%S/Inputs/resource_dir \73// RUN: --sysroot=%S/Inputs/basic_linux_tree \74// RUN: | %{filecheck} --check-prefix=CHECK-SHARED-ASAN-LINUX75 76// RUN: %clang -### %s 2>&1 \77// RUN: --target=i386-unknown-linux -fuse-ld=ld -fsanitize=address \78// RUN: -shared-libsan -static-libsan -shared-libasan \79// RUN: -resource-dir=%S/Inputs/resource_dir \80// RUN: --sysroot=%S/Inputs/basic_linux_tree \81// RUN: | %{filecheck} --check-prefix=CHECK-SHARED-ASAN-LINUX82//83// CHECK-SHARED-ASAN-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"84// CHECK-SHARED-ASAN-LINUX-NOT: "-lc"85// CHECK-SHARED-ASAN-LINUX: libclang_rt.asan.so"86// CHECK-SHARED-ASAN-LINUX: "--whole-archive" "{{.*}}libclang_rt.asan-preinit.a" "--no-whole-archive"87// CHECK-SHARED-ASAN-LINUX: "--whole-archive" "{{.*}}libclang_rt.asan_static.a" "--no-whole-archive"88// CHECK-SHARED-ASAN-LINUX-NOT: "-lpthread"89// CHECK-SHARED-ASAN-LINUX-NOT: "-lrt"90// CHECK-SHARED-ASAN-LINUX-NOT: "-ldl"91// CHECK-SHARED-ASAN-LINUX-NOT: "-lresolv"92// CHECK-SHARED-ASAN-LINUX-NOT: "--export-dynamic"93// CHECK-SHARED-ASAN-LINUX-NOT: "--dynamic-list"94 95// RUN: %clang -### %s -o %t.so -shared 2>&1 \96// RUN: --target=i386-unknown-linux -fuse-ld=ld -fsanitize=address -shared-libsan \97// RUN: -resource-dir=%S/Inputs/resource_dir \98// RUN: --sysroot=%S/Inputs/basic_linux_tree \99// RUN: | %{filecheck} --check-prefix=CHECK-DSO-SHARED-ASAN-LINUX100//101// CHECK-DSO-SHARED-ASAN-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"102// CHECK-DSO-SHARED-ASAN-LINUX-NOT: "-lc"103// CHECK-DSO-SHARED-ASAN-LINUX: libclang_rt.asan.so"104// CHECK-DSO-SHARED-ASAN-LINUX: "--whole-archive" "{{.*}}libclang_rt.asan_static.a" "--no-whole-archive"105// CHECK-DSO-SHARED-ASAN-LINUX-NOT: "-lpthread"106// CHECK-DSO-SHARED-ASAN-LINUX-NOT: "-lrt"107// CHECK-DSO-SHARED-ASAN-LINUX-NOT: "-ldl"108// CHECK-DSO-SHARED-ASAN-LINUX-NOT: "-lresolv"109// CHECK-DSO-SHARED-ASAN-LINUX-NOT: "--export-dynamic"110// CHECK-DSO-SHARED-ASAN-LINUX-NOT: "--dynamic-list"111 112// RUN: %clang -### %s 2>&1 \113// RUN: --target=i386-unknown-freebsd -fuse-ld=ld -fsanitize=address \114// RUN: -resource-dir=%S/Inputs/resource_dir \115// RUN: --sysroot=%S/Inputs/basic_freebsd_tree \116// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-FREEBSD117//118// CHECK-ASAN-FREEBSD: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"119// CHECK-ASAN-FREEBSD-NOT: "-lc"120// CHECK-ASAN-FREEBSD: freebsd{{/|\\+}}libclang_rt.asan_static.a"121// CHECK-ASAN-FREEBSD: freebsd{{/|\\+}}libclang_rt.asan.a"122// CHECK-ASAN-FREEBSD-NOT: "--dynamic-list"123// CHECK-ASAN-FREEBSD: "--export-dynamic"124// CHECK-ASAN-FREEBSD: "-lpthread"125// CHECK-ASAN-FREEBSD: "-lrt"126 127// RUN: %clang -### %s 2>&1 \128// RUN: --target=i386-unknown-freebsd -fuse-ld=ld -fsanitize=address \129// RUN: -resource-dir=%S/Inputs/resource_dir \130// RUN: --sysroot=%S/Inputs/basic_freebsd_tree \131// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-FREEBSD-LDL132//133// CHECK-ASAN-FREEBSD-LDL: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"134// CHECK-ASAN-FREEBSD-LDL-NOT: "-ldl"135// CHECK-ASAN-FREEBSD-LDL: "--whole-archive" "{{.*}}libclang_rt.asan_static.a" "--no-whole-archive"136// CHECK-ASAN-FREEBSD-LDL: "--whole-archive" "{{.*}}libclang_rt.asan.a" "--no-whole-archive"137 138// RUN: %clangxx -### %s 2>&1 \139// RUN: --target=i386-unknown-linux -fuse-ld=ld -stdlib=platform -fsanitize=address \140// RUN: -resource-dir=%S/Inputs/empty_resource_dir \141// RUN: --sysroot=%S/Inputs/basic_linux_tree \142// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-LINUX-CXX143 144// RUN: %clangxx -### %s 2>&1 \145// RUN: --target=i386-unknown-linux -fuse-ld=ld -stdlib=platform -fsanitize=address \146// RUN: -resource-dir=%S/Inputs/empty_resource_dir \147// RUN: --sysroot=%S/Inputs/basic_linux_tree \148// RUN: -fsanitize-link-c++-runtime \149// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-LINUX-CXX150 151// CHECK-ASAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"152// CHECK-ASAN-LINUX-CXX-SAME: "--whole-archive" "{{.*}}libclang_rt.asan.a" "--no-whole-archive"153// CHECK-ASAN-LINUX-CXX-SAME: "--whole-archive" "{{.*}}libclang_rt.asan_cxx.a" "--no-whole-archive"154// CHECK-ASAN-LINUX-CXX-NOT: "--dynamic-list"155// CHECK-ASAN-LINUX-CXX-SAME: "--export-dynamic"156// CHECK-ASAN-LINUX-CXX-SAME: "-lstdc++"157// CHECK-ASAN-LINUX-CXX-SAME: "-lpthread"158// CHECK-ASAN-LINUX-CXX-SAME: "-lrt"159// CHECK-ASAN-LINUX-CXX-SAME: "-ldl"160// CHECK-ASAN-LINUX-CXX-SAME: "-lresolv"161// CHECK-ASAN-LINUX-CXX-SAME: "-lc"162 163// RUN: %clang -### %s 2>&1 \164// RUN: --target=i386-unknown-linux -fuse-ld=ld -stdlib=platform -fsanitize=address \165// RUN: -resource-dir=%S/Inputs/empty_resource_dir \166// RUN: --sysroot=%S/Inputs/basic_linux_tree \167// RUN: -fno-sanitize-link-c++-runtime \168// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-LINUX-CNOCXX169 170// CHECK-ASAN-LINUX-CNOCXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"171// CHECK-ASAN-LINUX-CNOCXX-SAME: "--whole-archive" "{{.*}}libclang_rt.asan.a" "--no-whole-archive"172// CHECK-ASAN-LINUX-CNOCXX-SAME: "--export-dynamic"173// CHECK-ASAN-LINUX-CNOCXX-NOT: stdc++174// CHECK-ASAN-LINUX-CNOCXX-SAME: "-lpthread"175// CHECK-ASAN-LINUX-CNOCXX-SAME: "-lrt"176// CHECK-ASAN-LINUX-CNOCXX-SAME: "-ldl"177// CHECK-ASAN-LINUX-CNOCXX-SAME: "-lresolv"178// CHECK-ASAN-LINUX-CNOCXX-SAME: "-lc"179 180// RUN: %clangxx -### %s 2>&1 \181// RUN: --target=i386-unknown-linux -fuse-ld=ld -stdlib=platform -fsanitize=address \182// RUN: -resource-dir=%S/Inputs/empty_resource_dir \183// RUN: --sysroot=%S/Inputs/basic_linux_tree \184// RUN: -fno-sanitize-link-c++-runtime \185// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-LINUX-NOCXX186 187// CHECK-ASAN-LINUX-NOCXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"188// CHECK-ASAN-LINUX-NOCXX-SAME: "--whole-archive" "{{.*}}libclang_rt.asan.a" "--no-whole-archive"189// CHECK-ASAN-LINUX-NOCXX-SAME: "--export-dynamic"190// CHECK-ASAN-LINUX-NOCXX-SAME: "-lstdc++"191// CHECK-ASAN-LINUX-NOCXX-SAME: "-lpthread"192// CHECK-ASAN-LINUX-NOCXX-SAME: "-lrt"193// CHECK-ASAN-LINUX-NOCXX-SAME: "-ldl"194// CHECK-ASAN-LINUX-NOCXX-SAME: "-lresolv"195// CHECK-ASAN-LINUX-NOCXX-SAME: "-lc"196 197// RUN: %clangxx -### %s 2>&1 \198// RUN: --target=i386-unknown-linux -fuse-ld=ld -stdlib=platform -fsanitize=address \199// RUN: -resource-dir=%S/Inputs/empty_resource_dir \200// RUN: --sysroot=%S/Inputs/basic_linux_tree \201// RUN: -nostdlib++ \202// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-LINUX-NOSTDCXX203 204// CHECK-ASAN-LINUX-NOSTDCXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"205// CHECK-ASAN-LINUX-NOSTDCXX-SAME: "--whole-archive" "{{.*}}libclang_rt.asan.a" "--no-whole-archive"206// CHECK-ASAN-LINUX-NOSTDCXX-SAME: "--whole-archive" "{{.*}}libclang_rt.asan_cxx.a" "--no-whole-archive"207// CHECK-ASAN-LINUX-NOSTDCXX-SAME: "--export-dynamic"208// CHECK-ASAN-LINUX-NOSTDCXX-SAME: "-lpthread"209// CHECK-ASAN-LINUX-NOSTDCXX-SAME: "-lrt"210// CHECK-ASAN-LINUX-NOSTDCXX-SAME: "-ldl"211// CHECK-ASAN-LINUX-NOSTDCXX-SAME: "-lresolv"212// CHECK-ASAN-LINUX-NOSTDCXX-SAME: "-lc"213 214// RUN: %clang -### %s -o /dev/null -fsanitize=address \215// RUN: --target=i386-unknown-linux -fuse-ld=ld -stdlib=platform \216// RUN: -resource-dir=%S/Inputs/resource_dir \217// RUN: --sysroot=%S/Inputs/basic_linux_tree -lstdc++ -static 2>&1 \218// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-LINUX-CXX-STATIC219//220// CHECK-ASAN-LINUX-CXX-STATIC: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"221// CHECK-ASAN-LINUX-CXX-STATIC-NOT: stdc++222// CHECK-ASAN-LINUX-CXX-STATIC: "--whole-archive" "{{.*}}libclang_rt.asan.a" "--no-whole-archive"223// CHECK-ASAN-LINUX-CXX-STATIC: "--dynamic-list={{.*}}libclang_rt.asan.a.syms"224// CHECK-ASAN-LINUX-CXX-STATIC: stdc++225 226// RUN: %clang -### %s 2>&1 \227// RUN: --target=arm-linux-gnueabi -fuse-ld=ld -fsanitize=address \228// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \229// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-ARM230//231// CHECK-ASAN-ARM: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"232// CHECK-ASAN-ARM-NOT: "-lc"233// CHECK-ASAN-ARM: libclang_rt.asan_static.a"234// CHECK-ASAN-ARM: libclang_rt.asan.a"235//236// RUN: %clang -### %s 2>&1 \237// RUN: --target=armv7l-linux-gnueabi -fuse-ld=ld -fsanitize=address \238// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \239// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-ARMv7240//241// CHECK-ASAN-ARMv7: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"242// CHECK-ASAN-ARMv7-NOT: "-lc"243// CHECK-ASAN-ARMv7: libclang_rt.asan_static.a"244// CHECK-ASAN-ARMv7: libclang_rt.asan.a"245 246// RUN: %clang -### %s 2>&1 \247// RUN: --target=arm-linux-androideabi -fuse-ld=ld -fsanitize=address \248// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \249// RUN: -resource-dir=%S/Inputs/resource_dir \250// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-ANDROID251//252// CHECK-ASAN-ANDROID: "{{(.*[^.0-9A-Z_a-z])?}}ld.lld{{(.exe)?}}"253// CHECK-ASAN-ANDROID: "-pie"254// CHECK-ASAN-ANDROID-NOT: "-lc"255// CHECK-ASAN-ANDROID-NOT: "-lpthread"256// CHECK-ASAN-ANDROID-NOT: "-lresolv"257// CHECK-ASAN-ANDROID: libclang_rt.asan.so"258// CHECK-ASAN-ANDROID: libclang_rt.asan_static.a"259// CHECK-ASAN-ANDROID-NOT: "-lpthread"260// CHECK-ASAN-ANDROID-NOT: "-lresolv"261 262// RUN: %clang -### %s 2>&1 \263// RUN: --target=arm-linux-androideabi -fuse-ld=ld -fsanitize=address \264// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \265// RUN: -resource-dir=%S/Inputs/resource_dir \266// RUN: -static-libsan \267// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-ANDROID-STATICLIBASAN268//269// RUN: %clang -### %s 2>&1 \270// RUN: --target=arm-linux-androideabi -fuse-ld=ld -fsanitize=address \271// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \272// RUN: -resource-dir=%S/Inputs/resource_dir \273// RUN: -static-libasan \274// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-ANDROID-STATICLIBASAN275//276// CHECK-ASAN-ANDROID-STATICLIBASAN: "{{(.*[^.0-9A-Z_a-z])?}}ld.lld{{(.exe)?}}"277// CHECK-ASAN-ANDROID-STATICLIBASAN: libclang_rt.asan_static.a"278// CHECK-ASAN-ANDROID-STATICLIBASAN: libclang_rt.asan.a"279// CHECK-ASAN-ANDROID-STATICLIBASAN-NOT: "-lpthread"280// CHECK-ASAN-ANDROID-STATICLIBASAN-NOT: "-lrt"281// CHECK-ASAN-ANDROID-STATICLIBASAN-NOT: "-lresolv"282 283// RUN: %clang -### %s 2>&1 \284// RUN: --target=arm-linux-androideabi -fuse-ld=ld -fsanitize=undefined \285// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \286// RUN: -resource-dir=%S/Inputs/resource_dir \287// RUN: | %{filecheck} --check-prefix=CHECK-UBSAN-ANDROID288//289// CHECK-UBSAN-ANDROID: "{{(.*[^.0-9A-Z_a-z])?}}ld.lld{{(.exe)?}}"290// CHECK-UBSAN-ANDROID: "-pie"291// CHECK-UBSAN-ANDROID-NOT: "-lc"292// CHECK-UBSAN-ANDROID-NOT: "-lpthread"293// CHECK-UBSAN-ANDROID-NOT: "-lresolv"294// CHECK-UBSAN-ANDROID: libclang_rt.ubsan_standalone.so"295// CHECK-UBSAN-ANDROID-NOT: "-lpthread"296// CHECK-UBSAN-ANDROID-NOT: "-lresolv"297 298// RUN: %clang -### %s 2>&1 \299// RUN: --target=arm-linux-androideabi -fuse-ld=ld -fsanitize=undefined \300// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \301// RUN: -resource-dir=%S/Inputs/resource_dir \302// RUN: -static-libsan \303// RUN: | %{filecheck} --check-prefix=CHECK-UBSAN-ANDROID-STATICLIBASAN304//305// CHECK-UBSAN-ANDROID-STATICLIBASAN: "{{(.*[^.0-9A-Z_a-z])?}}ld.lld{{(.exe)?}}"306// CHECK-UBSAN-ANDROID-STATICLIBASAN: libclang_rt.ubsan_standalone.a"307// CHECK-UBSAN-ANDROID-STATICLIBASAN-NOT: "-lpthread"308// CHECK-UBSAN-ANDROID-STATICLIBASAN-NOT: "-lrt"309// CHECK-UBSAN-ANDROID-STATICLIBASAN-NOT: "-lresolv"310 311//312// RUN: %clang -### %s 2>&1 \313// RUN: --target=i686-linux-android -fuse-ld=ld -fsanitize=address \314// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \315// RUN: -resource-dir=%S/Inputs/resource_dir \316// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-ANDROID-X86317//318// CHECK-ASAN-ANDROID-X86: "{{(.*[^.0-9A-Z_a-z])?}}ld.lld{{(.exe)?}}"319// CHECK-ASAN-ANDROID-X86: "-pie"320// CHECK-ASAN-ANDROID-X86-NOT: "-lc"321// CHECK-ASAN-ANDROID-X86-NOT: "-lpthread"322// CHECK-ASAN-ANDROID-X86-NOT: "-lresolv"323// CHECK-ASAN-ANDROID-X86: libclang_rt.asan.so"324// CHECK-ASAN-ANDROID-X86: libclang_rt.asan_static.a"325// CHECK-ASAN-ANDROID-X86-NOT: "-lpthread"326// CHECK-ASAN-ANDROID-X86-NOT: "-lresolv"327//328// RUN: %clang -### %s 2>&1 \329// RUN: --target=arm-linux-androideabi -fsanitize=address \330// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \331// RUN: -shared-libsan \332// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-ANDROID-SHARED-LIBASAN333//334// CHECK-ASAN-ANDROID-SHARED-LIBASAN-NOT: argument unused during compilation: '-shared-libsan'335// CHECK-ASAN-ANDROID-SHARED-LIBASAN: libclang_rt.asan{{.*}}.so"336// CHECK-ASAN-ANDROID-SHARED-LIBASAN: libclang_rt.asan_static{{.*}}.a"337//338// RUN: %clang -### %s 2>&1 \339// RUN: --target=arm-linux-androideabi -fuse-ld=ld -fsanitize=address \340// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \341// RUN: -resource-dir=%S/Inputs/resource_dir \342// RUN: -shared \343// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-ANDROID-SHARED344//345// CHECK-ASAN-ANDROID-SHARED: "{{(.*[^.0-9A-Z_a-z])?}}ld.lld{{(.exe)?}}"346// CHECK-ASAN-ANDROID-SHARED-NOT: "-lc"347// CHECK-ASAN-ANDROID-SHARED: libclang_rt.asan.so"348// CHECK-ASAN-ANDROID-SHARED: libclang_rt.asan_static.a"349// CHECK-ASAN-ANDROID-SHARED-NOT: "-lpthread"350// CHECK-ASAN-ANDROID-SHARED-NOT: "-lresolv"351 352 353// RUN: %clangxx %s -### -o %t.o 2>&1 \354// RUN: --target=x86_64-unknown-linux -fuse-ld=ld -stdlib=platform -lstdc++ \355// RUN: -fsanitize=type \356// RUN: -resource-dir=%S/Inputs/resource_dir \357// RUN: --sysroot=%S/Inputs/basic_linux_tree \358// RUN: | %{filecheck} --check-prefix=CHECK-TYSAN-LINUX-CXX359//360// CHECK-TYSAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"361// CHECK-TYSAN-LINUX-CXX-NOT: stdc++362// CHECK-TYSAN-LINUX-CXX: "--whole-archive" "{{.*}}libclang_rt.tysan{{[^.]*}}.a" "--no-whole-archive"363// CHECK-TYSAN-LINUX-CXX: stdc++364 365// RUN: %clangxx -fsanitize=type -### %s 2>&1 \366// RUN: -mmacosx-version-min=10.6 \367// RUN: --target=x86_64-apple-darwin13.4.0 -fuse-ld=ld -stdlib=platform \368// RUN: -resource-dir=%S/Inputs/resource_dir \369// RUN: --sysroot=%S/Inputs/basic_linux_tree \370// RUN: | %{filecheck} --check-prefix=CHECK-TYSAN-DARWIN-CXX371// CHECK-TYSAN-DARWIN-CXX: "{{.*}}ld{{(.exe)?}}"372// CHECK-TYSAN-DARWIN-CXX: libclang_rt.tysan_osx_dynamic.dylib373// CHECK-TYSAN-DARWIN-CXX-NOT: -lc++abi374 375// RUN: %clangxx -### %s 2>&1 \376// RUN: --target=x86_64-unknown-linux -fuse-ld=ld -stdlib=platform -lstdc++ \377// RUN: -fsanitize=thread \378// RUN: -resource-dir=%S/Inputs/resource_dir \379// RUN: --sysroot=%S/Inputs/basic_linux_tree \380// RUN: | %{filecheck} --check-prefix=CHECK-TSAN-LINUX-CXX381//382// CHECK-TSAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"383// CHECK-TSAN-LINUX-CXX-NOT: stdc++384// CHECK-TSAN-LINUX-CXX: "--whole-archive" "{{.*}}libclang_rt.tsan.a" "--no-whole-archive"385// CHECK-TSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.tsan.a.syms"386// CHECK-TSAN-LINUX-CXX: "--whole-archive" "{{.*}}libclang_rt.tsan_cxx.a" "--no-whole-archive"387// CHECK-TSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.tsan_cxx.a.syms"388// CHECK-TSAN-LINUX-CXX-NOT: "--export-dynamic"389// CHECK-TSAN-LINUX-CXX: stdc++390// CHECK-TSAN-LINUX-CXX: "-lpthread"391// CHECK-TSAN-LINUX-CXX: "-lrt"392// CHECK-TSAN-LINUX-CXX: "-ldl"393// CHECK-TSAN-LINUX-CXX: "-lresolv"394 395// RUN: %clang -fsanitize=thread -fno-sanitize-link-runtime -### %s 2>&1 \396// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \397// RUN: -resource-dir=%S/Inputs/resource_dir \398// RUN: --sysroot=%S/Inputs/basic_linux_tree \399// RUN: | %{filecheck} --check-prefix=CHECK-TSAN-NO-LINK-RUNTIME-LINUX400//401// CHECK-TSAN-NO-LINK-RUNTIME-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"402 403// RUN: not %clang -fsanitize=thread -fno-sanitize-link-runtime -### %s 2>&1 \404// RUN: --target=arm64e-apple-ios -fuse-ld=ld \405// RUN: -resource-dir=%S/Inputs/resource_dir \406// RUN: --sysroot=%S/Inputs/basic_linux_tree \407// RUN: | %{filecheck} --check-prefix=CHECK-TSAN-NO-LINK-RUNTIME-DARWIN408//409// CHECK-TSAN-NO-LINK-RUNTIME-DARWIN: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"410 411// RUN: %clangxx -### %s 2>&1 \412// RUN: --target=x86_64-unknown-linux -fuse-ld=ld -stdlib=platform -lstdc++ \413// RUN: -fsanitize=memory \414// RUN: -resource-dir=%S/Inputs/resource_dir \415// RUN: --sysroot=%S/Inputs/basic_linux_tree \416// RUN: | %{filecheck} --check-prefix=CHECK-MSAN-LINUX-CXX417//418// CHECK-MSAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"419// CHECK-MSAN-LINUX-CXX-NOT: stdc++420// CHECK-MSAN-LINUX-CXX: "--whole-archive" "{{.*}}libclang_rt.msan.a" "--no-whole-archive"421// CHECK-MSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.msan.a.syms"422// CHECK-MSAN-LINUX-CXX: "--whole-archive" "{{.*}}libclang_rt.msan_cxx.a" "--no-whole-archive"423// CHECK-MSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.msan_cxx.a.syms"424// CHECK-MSAN-LINUX-CXX-NOT: "--export-dynamic"425// CHECK-MSAN-LINUX-CXX: stdc++426// CHECK-MSAN-LINUX-CXX: "-lpthread"427// CHECK-MSAN-LINUX-CXX: "-lrt"428// CHECK-MSAN-LINUX-CXX: "-ldl"429// CHECK-MSAN-LINUX-CXX: "-lresolv"430 431// RUN: %clang -fsanitize=memory -fno-sanitize-link-runtime -### %s 2>&1 \432// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \433// RUN: -resource-dir=%S/Inputs/resource_dir \434// RUN: --sysroot=%S/Inputs/basic_linux_tree \435// RUN: | %{filecheck} --check-prefix=CHECK-MSAN-NO-LINK-RUNTIME-LINUX436//437// CHECK-MSAN-NO-LINK-RUNTIME-LINUX: "{{.*}}ld{{(.exe)?}}"438 439// RUN: %clang -fsanitize=undefined -### %s 2>&1 \440// RUN: --target=x86_64-unknown-linux-gnux32 -fuse-ld=ld \441// RUN: -resource-dir=%S/Inputs/resource_dir \442// RUN: --sysroot=%S/Inputs/multilib_64bit_linux_tree \443// RUN: | %{filecheck} --check-prefix=CHECK-UBSAN-LINUX444 445// RUN: %clang -fsanitize=float-divide-by-zero -### %s 2>&1 \446// RUN: --target=x86_64-unknown-linux-gnux32 -fuse-ld=ld \447// RUN: -resource-dir=%S/Inputs/resource_dir \448// RUN: --sysroot=%S/Inputs/multilib_64bit_linux_tree \449// RUN: | %{filecheck} --check-prefix=CHECK-UBSAN-LINUX450 451// RUN: %clang -fsanitize=undefined -### %s 2>&1 \452// RUN: --target=x86_64-unknown-linux-gnux32 -fuse-ld=ld \453// RUN: -resource-dir=%S/Inputs/resource_dir \454// RUN: --sysroot=%S/Inputs/multilib_64bit_linux_tree \455// RUN: -static-libsan \456// RUN: | %{filecheck} --check-prefix=CHECK-UBSAN-LINUX457 458// CHECK-UBSAN-LINUX: "{{.*}}ld{{(.exe)?}}"459// CHECK-UBSAN-LINUX: "--whole-archive" "{{.*}}libclang_rt.ubsan_standalone.a" "--no-whole-archive"460// CHECK-UBSAN-LINUX-NOT: "-lstdc++"461// CHECK-UBSAN-LINUX: "-lpthread"462// CHECK-UBSAN-LINUX: "-lresolv"463 464// RUN: %clang -fsanitize=undefined -fno-sanitize-link-runtime -### %s 2>&1 \465// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \466// RUN: -resource-dir=%S/Inputs/resource_dir \467// RUN: --sysroot=%S/Inputs/basic_linux_tree \468// RUN: | %{filecheck} --check-prefix=CHECK-UBSAN-NO-LINK-RUNTIME-LINUX469//470// CHECK-UBSAN-NO-LINK-RUNTIME-LINUX: "{{.*}}ld{{(.exe)?}}"471 472// RUN: %clang -fsanitize=undefined -fno-sanitize-link-runtime -### %s 2>&1 \473// RUN: --target=x86_64-apple-darwin -fuse-ld=ld \474// RUN: -resource-dir=%S/Inputs/resource_dir \475// RUN: --sysroot=%S/Inputs/basic_linux_tree \476// RUN: | %{filecheck} --check-prefix=CHECK-UBSAN-NO-LINK-RUNTIME-DARWIN477//478// CHECK-UBSAN-NO-LINK-RUNTIME-DARWIN: "{{.*}}ld{{(.exe)?}}"479 480// RUN: %clang -fsanitize=fuzzer -fno-sanitize-link-runtime -### %s 2>&1 \481// RUN: --target=arm64e-apple-watchos -fuse-ld=ld \482// RUN: -resource-dir=%S/Inputs/resource_dir \483// RUN: --sysroot=%S/Inputs/basic_linux_tree \484// RUN: | %{filecheck} --check-prefix=CHECK-FUZZER-NO-LINK-RUNTIME-DARWIN485//486// CHECK-FUZZER-NO-LINK-RUNTIME-DARWIN: "{{.*}}ld{{(.exe)?}}"487 488// RUN: %clang -fsanitize=undefined -### %s 2>&1 \489// RUN: --target=i386-unknown-linux -fuse-ld=ld \490// RUN: -resource-dir=%S/Inputs/resource_dir \491// RUN: --sysroot=%S/Inputs/basic_linux_tree \492// RUN: -shared-libsan \493// RUN: | %{filecheck} --check-prefix=CHECK-UBSAN-LINUX-SHAREDLIBASAN494 495// RUN: %clang -fsanitize=undefined -### %s 2>&1 \496// RUN: --target=i386-unknown-linux -fuse-ld=ld \497// RUN: -resource-dir=%S/Inputs/resource_dir \498// RUN: --sysroot=%S/Inputs/basic_linux_tree \499// RUN: -static-libsan -shared-libsan \500// RUN: | %{filecheck} --check-prefix=CHECK-UBSAN-LINUX-SHAREDLIBASAN501 502// RUN: %clang -fsanitize=undefined -### %s 2>&1 \503// RUN: --target=i386-unknown-linux -fuse-ld=ld \504// RUN: -resource-dir=%S/Inputs/resource_dir \505// RUN: --sysroot=%S/Inputs/basic_linux_tree \506// RUN: -shared -shared-libsan \507// RUN: | %{filecheck} --check-prefix=CHECK-UBSAN-LINUX-SHAREDLIBASAN508 509// CHECK-UBSAN-LINUX-SHAREDLIBASAN: "{{.*}}ld{{(.exe)?}}"510// CHECK-UBSAN-LINUX-SHAREDLIBASAN: "{{.*}}libclang_rt.ubsan_standalone.so{{.*}}"511 512// RUN: %clang -fsanitize=undefined -fsanitize-link-c++-runtime -### %s 2>&1 \513// RUN: --target=i386-unknown-linux \514// RUN: -resource-dir=%S/Inputs/resource_dir \515// RUN: --sysroot=%S/Inputs/basic_linux_tree \516// RUN: | %{filecheck} --check-prefix=CHECK-UBSAN-LINUX-LINK-CXX517// CHECK-UBSAN-LINUX-LINK-CXX: "{{.*}}ld{{(.exe)?}}"518// CHECK-UBSAN-LINUX-LINK-CXX-NOT: "-lstdc++"519// CHECK-UBSAN-LINUX-LINK-CXX: "--whole-archive" "{{.*}}libclang_rt.ubsan_standalone.a" "--no-whole-archive"520 521// RUN: %clang -fsanitize=vptr -fsanitize-link-c++-runtime -### %s 2>&1 \522// RUN: --target=i386-unknown-linux \523// RUN: -resource-dir=%S/Inputs/resource_dir \524// RUN: --sysroot=%S/Inputs/basic_linux_tree \525// RUN: | %{filecheck} --check-prefix=CHECK-VPTR-LINUX-LINK-CXX526// CHECK-VPTR-LINUX-LINK-CXX-NOT: "-lstdc++"527// CHECK-VPTR-LINUX-LINK-CXX: "--whole-archive" "{{.*}}libclang_rt.ubsan_standalone.a" "--no-whole-archive"528// CHECK-VPTR-LINUX-LINK-CXX-SAME: "--whole-archive" "{{.*}}libclang_rt.ubsan_standalone_cxx.a" "--no-whole-archive"529// CHECK-VPTR-LINUX-LINK-CXX-NOT: "-lstdc++"530 531// RUN: %clangxx -fsanitize=undefined -### %s 2>&1 \532// RUN: --target=i386-unknown-linux -fuse-ld=ld -stdlib=platform \533// RUN: -resource-dir=%S/Inputs/resource_dir \534// RUN: --sysroot=%S/Inputs/basic_linux_tree \535// RUN: | %{filecheck} --check-prefix=CHECK-UBSAN-LINUX-CXX536// CHECK-UBSAN-LINUX-CXX: "{{.*}}ld{{(.exe)?}}"537// CHECK-UBSAN-LINUX-CXX-SAME: "--whole-archive" "{{.*}}libclang_rt.ubsan_standalone.a" "--no-whole-archive"538// CHECK-UBSAN-LINUX-CXX: "-lstdc++"539// CHECK-UBSAN-LINUX-CXX: "-lpthread"540// CHECK-UBSAN-LINUX-CXX: "-lresolv"541 542// RUN: %clangxx -fsanitize=vptr -### %s 2>&1 \543// RUN: --target=i386-unknown-linux -fuse-ld=ld -stdlib=platform \544// RUN: -resource-dir=%S/Inputs/resource_dir \545// RUN: --sysroot=%S/Inputs/basic_linux_tree \546// RUN: | %{filecheck}--check-prefix=CHECK-VPTR-LINUX-CXX547// CHECK-VPTR-LINUX-CXX: "{{.*}}ld{{(.exe)?}}"548// CHECK-VPTR-LINUX-CXX-SAME: "--whole-archive" "{{.*}}libclang_rt.ubsan_standalone.a" "--no-whole-archive"549// CHECK-VPTR-LINUX-CXX-SAME: "--whole-archive" "{{.*}}libclang_rt.ubsan_standalone_cxx.a" "--no-whole-archive"550// CHECK-VPTR-LINUX-CXX-SAME: "-lstdc++"551// CHECK-VPTR-LINUX-CXX-SAME: "-lpthread"552// CHECK-VPTR-LINUX-CXX-SAME: "-lresolv"553 554// RUN: %clang -fsanitize=undefined -fsanitize-minimal-runtime -### %s 2>&1 \555// RUN: --target=i386-unknown-linux -fuse-ld=ld \556// RUN: -resource-dir=%S/Inputs/resource_dir \557// RUN: --sysroot=%S/Inputs/basic_linux_tree \558// RUN: | %{filecheck} --check-prefix=CHECK-UBSAN-MINIMAL-LINUX559// CHECK-UBSAN-MINIMAL-LINUX: "{{.*}}ld{{(.exe)?}}"560// CHECK-UBSAN-MINIMAL-LINUX: "--whole-archive" "{{.*}}libclang_rt.ubsan_minimal.a" "--no-whole-archive"561// CHECK-UBSAN-MINIMAL-LINUX: "-lpthread"562// CHECK-UBSAN-MINIMAL-LINUX: "-lresolv"563 564// RUN: %clang -fsanitize=undefined -fsanitize-minimal-runtime -### %s 2>&1 \565// RUN: --target=x86_64-apple-darwin -fuse-ld=ld \566// RUN: --sysroot=%S/Inputs/basic_linux_tree \567// RUN: | %{filecheck} --check-prefix=CHECK-UBSAN-MINIMAL-DARWIN568// CHECK-UBSAN-MINIMAL-DARWIN: "{{.*}}ld{{(.exe)?}}"569// CHECK-UBSAN-MINIMAL-DARWIN: "{{.*}}libclang_rt.ubsan_minimal_osx_dynamic.dylib"570 571// RUN: not %clang -fsanitize=undefined -### %s 2>&1 \572// RUN: --target=x86_64-apple-darwin -fuse-ld=ld -static-libsan \573// RUN: --sysroot=%S/Inputs/basic_linux_tree \574// RUN: | %{filecheck} --check-prefix=CHECK-UBSAN-STATIC-DARWIN575// CHECK-UBSAN-STATIC-DARWIN: {{.*}}error: static UndefinedBehaviorSanitizer runtime is not supported on darwin576 577// RUN: not %clang -fsanitize=address -### %s 2>&1 \578// RUN: --target=x86_64-apple-darwin -fuse-ld=ld -static-libsan \579// RUN: --sysroot=%S/Inputs/basic_linux_tree \580// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-STATIC-DARWIN581// CHECK-ASAN-STATIC-DARWIN: {{.*}}error: static AddressSanitizer runtime is not supported on darwin582 583// RUN: not %clang -fsanitize=thread -### %s 2>&1 \584// RUN: --target=x86_64-apple-darwin -fuse-ld=ld -static-libsan \585// RUN: --sysroot=%S/Inputs/basic_linux_tree \586// RUN: | %{filecheck} --check-prefix=CHECK-TSAN-STATIC-DARWIN587// CHECK-TSAN-STATIC-DARWIN: {{.*}}error: static ThreadSanitizer runtime is not supported on darwin588 589// RUN: %clang -fsanitize=address,undefined -### %s 2>&1 \590// RUN: --target=i386-unknown-linux -fuse-ld=ld \591// RUN: -resource-dir=%S/Inputs/resource_dir \592// RUN: --sysroot=%S/Inputs/basic_linux_tree \593// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-UBSAN-LINUX594// CHECK-ASAN-UBSAN-LINUX: "{{.*}}ld{{(.exe)?}}"595// CHECK-ASAN-UBSAN-LINUX: "--whole-archive" "{{.*}}libclang_rt.asan_static.a" "--no-whole-archive"596// CHECK-ASAN-UBSAN-LINUX: "--whole-archive" "{{.*}}libclang_rt.asan.a" "--no-whole-archive"597// CHECK-ASAN-UBSAN-LINUX: "--dynamic-list={{.*}}libclang_rt.asan.a.syms"598// CHECK-ASAN-UBSAN-LINUX-NOT: "-lstdc++"599// CHECK-ASAN-UBSAN-LINUX: "-lpthread"600// CHECK-ASAN-UBSAN-LINUX: "-lresolv"601 602// RUN: %clangxx -fsanitize=address,undefined -### %s 2>&1 \603// RUN: --target=i386-unknown-linux -fuse-ld=ld -stdlib=platform \604// RUN: -resource-dir=%S/Inputs/resource_dir \605// RUN: --sysroot=%S/Inputs/basic_linux_tree \606// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-UBSAN-LINUX-CXX607// CHECK-ASAN-UBSAN-LINUX-CXX: "{{.*}}ld{{(.exe)?}}"608// CHECK-ASAN-UBSAN-LINUX-CXX: "--whole-archive" "{{.*}}libclang_rt.asan_static.a" "--no-whole-archive"609// CHECK-ASAN-UBSAN-LINUX-CXX: "--whole-archive" "{{.*}}libclang_rt.asan.a" "--no-whole-archive"610// CHECK-ASAN-UBSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.asan.a.syms"611// CHECK-ASAN-UBSAN-LINUX-CXX: "--whole-archive" "{{.*}}libclang_rt.asan_cxx.a" "--no-whole-archive"612// CHECK-ASAN-UBSAN-LINUX-CXX: "-lstdc++"613// CHECK-ASAN-UBSAN-LINUX-CXX: "-lpthread"614// CHECK-ASAN-UBSAN-LINUX-CXX: "-lresolv"615 616// RUN: %clangxx -fsanitize=address,vptr -### %s 2>&1 \617// RUN: --target=i386-unknown-linux -fuse-ld=ld -stdlib=platform \618// RUN: -resource-dir=%S/Inputs/resource_dir \619// RUN: --sysroot=%S/Inputs/basic_linux_tree \620// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-VPTR-LINUX-CXX621// CHECK-ASAN-VPTR-LINUX-CXX: "{{.*}}ld{{(.exe)?}}"622// CHECK-ASAN-VPTR-LINUX-CXX-SAME: "--whole-archive" "{{.*}}libclang_rt.asan_static.a" "--no-whole-archive"623// CHECK-ASAN-VPTR-LINUX-CXX-SAME: "--whole-archive" "{{.*}}libclang_rt.asan.a" "--no-whole-archive"624// CHECK-ASAN-VPTR-LINUX-CXX-SAME: "--dynamic-list={{.*}}libclang_rt.asan.a.syms"625// CHECK-ASAN-VPTR-LINUX-CXX-SAME: "--whole-archive" "{{.*}}libclang_rt.asan_cxx.a" "--no-whole-archive"626// CHECK-ASAN-VPTR-LINUX-CXX-SAME: "--whole-archive" "{{.*}}libclang_rt.ubsan_standalone_cxx.a" "--no-whole-archive"627// CHECK-ASAN-VPTR-LINUX-CXX-SAME: "-lstdc++"628// CHECK-ASAN-VPTR-LINUX-CXX-SAME: "-lpthread"629// CHECK-ASAN-VPTR-LINUX-CXX-SAME: "-lresolv"630 631// RUN: %clangxx -fsanitize=address,undefined -fno-sanitize=vptr -### %s 2>&1 \632// RUN: --target=i386-unknown-linux -fuse-ld=ld -stdlib=platform \633// RUN: -resource-dir=%S/Inputs/resource_dir \634// RUN: --sysroot=%S/Inputs/basic_linux_tree \635// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-UBSAN-NOVPTR-LINUX-CXX636// CHECK-ASAN-UBSAN-NOVPTR-LINUX-CXX: "{{.*}}ld{{(.exe)?}}"637// CHECK-ASAN-UBSAN-NOVPTR-LINUX-CXX-SAME: "--whole-archive" "{{.*}}libclang_rt.asan_static.a" "--no-whole-archive"638// CHECK-ASAN-UBSAN-NOVPTR-LINUX-CXX-SAME: "--whole-archive" "{{.*}}libclang_rt.asan.a" "--no-whole-archive"639// CHECK-ASAN-UBSAN-NOVPTR-LINUX-CXX-SAME: "--dynamic-list={{.*}}libclang_rt.asan.a.syms"640// CHECK-ASAN-UBSAN-NOVPTR-LINUX-CXX-SAME: "--whole-archive" "{{.*}}libclang_rt.asan_cxx.a" "--no-whole-archive"641// CHECK-ASAN-UBSAN-NOVPTR-LINUX-CXX-SAME: "-lstdc++"642// CHECK-ASAN-UBSAN-NOVPTR-LINUX-CXX-SAME: "-lpthread"643// CHECK-ASAN-UBSAN-NOVPTR-LINUX-CXX-SAME: "-lresolv"644 645// RUN: %clangxx -fsanitize=memory,undefined -### %s 2>&1 \646// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \647// RUN: -resource-dir=%S/Inputs/resource_dir \648// RUN: --sysroot=%S/Inputs/basic_linux_tree \649// RUN: | %{filecheck} --check-prefix=CHECK-MSAN-UBSAN-LINUX-CXX650// CHECK-MSAN-UBSAN-LINUX-CXX: "{{.*}}ld{{(.exe)?}}"651// CHECK-MSAN-UBSAN-LINUX-CXX-SAME: "--whole-archive" "{{.*}}libclang_rt.msan.a" "--no-whole-archive"652// CHECK-MSAN-UBSAN-LINUX-CXX-SAME: "--dynamic-list={{.*}}libclang_rt.msan.a.syms"653// CHECK-MSAN-UBSAN-LINUX-CXX-SAME: "--whole-archive" "{{.*}}libclang_rt.msan_cxx.a" "--no-whole-archive"654// CHECK-MSAN-UBSAN-LINUX-CXX-SAME: "--dynamic-list={{.*}}libclang_rt.msan_cxx.a.syms"655 656// RUN: %clangxx -fsanitize=memory,vptr -### %s 2>&1 \657// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \658// RUN: -resource-dir=%S/Inputs/resource_dir \659// RUN: --sysroot=%S/Inputs/basic_linux_tree \660// RUN: | %{filecheck} --check-prefix=CHECK-MSAN-VPTR-LINUX-CXX661// CHECK-MSAN-VPTR-LINUX-CXX: "{{.*}}ld{{(.exe)?}}"662// CHECK-MSAN-VPTR-LINUX-CXX-SAME: "--whole-archive" "{{.*}}libclang_rt.msan.a" "--no-whole-archive"663// CHECK-MSAN-VPTR-LINUX-CXX-SAME: "--dynamic-list={{.*}}libclang_rt.msan.a.syms"664// CHECK-MSAN-VPTR-LINUX-CXX-SAME: "--whole-archive" "{{.*}}libclang_rt.msan_cxx.a" "--no-whole-archive"665// CHECK-MSAN-VPTR-LINUX-CXX-SAME: "--dynamic-list={{.*}}libclang_rt.msan_cxx.a.syms"666// CHECK-MSAN-VPTR-LINUX-CXX-SAME: "--whole-archive" "{{.*}}libclang_rt.ubsan_standalone_cxx.a" "--no-whole-archive"667 668// RUN: %clangxx -fsanitize=thread,undefined -### %s 2>&1 \669// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \670// RUN: -resource-dir=%S/Inputs/resource_dir \671// RUN: --sysroot=%S/Inputs/basic_linux_tree \672// RUN: | %{filecheck} --check-prefix=CHECK-TSAN-UBSAN-LINUX-CXX673// CHECK-TSAN-UBSAN-LINUX-CXX: "{{.*}}ld{{(.exe)?}}"674// CHECK-TSAN-UBSAN-LINUX-CXX-SAME: "--whole-archive" "{{.*}}libclang_rt.tsan.a" "--no-whole-archive"675// CHECK-TSAN-UBSAN-LINUX-CXX-SAME: "--dynamic-list={{.*}}libclang_rt.tsan.a.syms"676// CHECK-TSAN-UBSAN-LINUX-CXX-SAME: "--whole-archive" "{{.*}}libclang_rt.tsan_cxx.a" "--no-whole-archive"677// CHECK-TSAN-UBSAN-LINUX-CXX-SAME: "--dynamic-list={{.*}}libclang_rt.tsan_cxx.a.syms"678 679// RUN: %clangxx -fsanitize=thread,vptr -### %s 2>&1 \680// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \681// RUN: -resource-dir=%S/Inputs/resource_dir \682// RUN: --sysroot=%S/Inputs/basic_linux_tree \683// RUN: | %{filecheck} --check-prefix=CHECK-TSAN-VPTR-LINUX-CXX684// CHECK-TSAN-VPTR-LINUX-CXX: "{{.*}}ld{{(.exe)?}}"685// CHECK-TSAN-VPTR-LINUX-CXX-SAME: "--whole-archive" "{{.*}}libclang_rt.tsan.a" "--no-whole-archive"686// CHECK-TSAN-VPTR-LINUX-CXX-SAME: "--dynamic-list={{.*}}libclang_rt.tsan.a.syms"687// CHECK-TSAN-VPTR-LINUX-CXX-SAME: "--whole-archive" "{{.*}}libclang_rt.tsan_cxx.a" "--no-whole-archive"688// CHECK-TSAN-VPTR-LINUX-CXX-SAME: "--dynamic-list={{.*}}libclang_rt.tsan_cxx.a.syms"689// CHECK-TSAN-VPTR-LINUX-CXX-SAME: "--whole-archive" "{{.*}}libclang_rt.ubsan_standalone_cxx.a" "--no-whole-archive"690 691// RUN: %clang -fsanitize=undefined -### %s 2>&1 \692// RUN: --target=i386-unknown-linux -fuse-ld=ld \693// RUN: -resource-dir=%S/Inputs/resource_dir \694// RUN: --sysroot=%S/Inputs/basic_linux_tree \695// RUN: -shared \696// RUN: | %{filecheck} --check-prefix=CHECK-UBSAN-LINUX-SHARED697// CHECK-UBSAN-LINUX-SHARED: "{{.*}}ld{{(.exe)?}}"698// CHECK-UBSAN-LINUX-SHARED-NOT: --export-dynamic699// CHECK-UBSAN-LINUX-SHARED-NOT: --dynamic-list700 701// RUN: %clang -### %s 2>&1 \702// RUN: --target=x86_64-unknown-linux -fuse-ld=ld -fsanitize=leak \703// RUN: -resource-dir=%S/Inputs/resource_dir \704// RUN: --sysroot=%S/Inputs/basic_linux_tree \705// RUN: | %{filecheck} --check-prefix=CHECK-LSAN-LINUX706//707// CHECK-LSAN-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"708// CHECK-LSAN-LINUX-NOT: "-lc"709// CHECK-LSAN-LINUX: libclang_rt.lsan.a"710// CHECK-LSAN-LINUX: "-lpthread"711// CHECK-LSAN-LINUX: "-ldl"712// CHECK-LSAN-LINUX: "-lresolv"713 714// RUN: %clang -fsanitize=leak -fno-sanitize-link-runtime -### %s 2>&1 \715// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \716// RUN: -resource-dir=%S/Inputs/resource_dir \717// RUN: --sysroot=%S/Inputs/basic_linux_tree \718// RUN: | %{filecheck} --check-prefix=CHECK-LSAN-NO-LINK-RUNTIME-LINUX719//720// CHECK-LSAN-NO-LINK-RUNTIME-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"721 722// RUN: %clang -### %s 2>&1 \723// RUN: --target=x86_64-unknown-linux -fuse-ld=ld -fsanitize=leak -fsanitize-coverage=func \724// RUN: -resource-dir=%S/Inputs/resource_dir \725// RUN: --sysroot=%S/Inputs/basic_linux_tree \726// RUN: | %{filecheck} --check-prefix=CHECK-LSAN-COV-LINUX727//728// CHECK-LSAN-COV-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"729// CHECK-LSAN-COV-LINUX-NOT: "-lc"730// CHECK-LSAN-COV-LINUX: libclang_rt.lsan.a731// CHECK-LSAV-COV-LINUX: libclang_rt.lsan-x86_64.a"732// CHECK-LSAN-COV-LINUX: "-lpthread"733// CHECK-LSAN-COV-LINUX: "-ldl"734// CHECK-LSAN-COV-LINUX: "-lresolv"735 736// RUN: %clang -fsanitize=leak,address -### %s 2>&1 \737// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \738// RUN: -resource-dir=%S/Inputs/resource_dir \739// RUN: --sysroot=%S/Inputs/basic_linux_tree \740// RUN: | %{filecheck} --check-prefix=CHECK-LSAN-ASAN-LINUX741// CHECK-LSAN-ASAN-LINUX: "{{.*}}ld{{(.exe)?}}"742// CHECK-LSAN-ASAN-LINUX: libclang_rt.asan_static743// CHECK-LSAN-ASAN-LINUX: libclang_rt.asan744// CHECK-LSAN-ASAN-LINUX: "--dynamic-list={{.*}}libclang_rt.asan.a.syms"745 746// RUN: %clang -fsanitize=address -fsanitize-coverage=func -### %s 2>&1 \747// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \748// RUN: -resource-dir=%S/Inputs/resource_dir \749// RUN: --sysroot=%S/Inputs/basic_linux_tree \750// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-COV-LINUX751// CHECK-ASAN-COV-LINUX: "{{.*}}ld{{(.exe)?}}"752// CHECK-ASAN-COV-LINUX: libclang_rt.asan_static753// CHECK-ASAN-COV-LINUX: libclang_rt.asan754// CHECK-ASAN-COV-LINUX: "--dynamic-list={{.*}}libclang_rt.asan.a.syms"755// CHECK-ASAN-COV-LINUX-NOT: "-lstdc++"756// CHECK-ASAN-COV-LINUX: "-lpthread"757// CHECK-ASAN-COV-LINUX: "-lresolv"758 759// RUN: %clang -fsanitize=memory -fsanitize-coverage=func -### %s 2>&1 \760// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \761// RUN: -resource-dir=%S/Inputs/resource_dir \762// RUN: --sysroot=%S/Inputs/basic_linux_tree \763// RUN: | %{filecheck} --check-prefix=CHECK-MSAN-COV-LINUX764// CHECK-MSAN-COV-LINUX: "{{.*}}ld{{(.exe)?}}"765// CHECK-MSAN-COV-LINUX: "--whole-archive" "{{.*}}libclang_rt.msan.a" "--no-whole-archive"766// CHECK-MSAN-COV-LINUX: "--dynamic-list={{.*}}libclang_rt.msan.a.syms"767// CHECK-MSAN-COV-LINUX-NOT: "-lstdc++"768// CHECK-MSAN-COV-LINUX: "-lpthread"769// CHECK-MSAN-COV-LINUX: "-lresolv"770 771// RUN: %clang -fsanitize=dataflow -fsanitize-coverage=func -### %s 2>&1 \772// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \773// RUN: -resource-dir=%S/Inputs/resource_dir \774// RUN: --sysroot=%S/Inputs/basic_linux_tree \775// RUN: | %{filecheck} --check-prefix=CHECK-DFSAN-COV-LINUX776// CHECK-DFSAN-COV-LINUX: "{{.*}}ld{{(.exe)?}}"777// CHECK-DFSAN-COV-LINUX: "--whole-archive" "{{.*}}libclang_rt.dfsan.a" "--no-whole-archive"778// CHECK-DFSAN-COV-LINUX-NOT: "-lstdc++"779// CHECK-DFSAN-COV-LINUX: "-lpthread"780// CHECK-DFSAN-COV-LINUX: "-lresolv"781 782// RUN: %clang -fsanitize=undefined -fsanitize-coverage=func -### %s 2>&1 \783// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \784// RUN: -resource-dir=%S/Inputs/resource_dir \785// RUN: --sysroot=%S/Inputs/basic_linux_tree \786// RUN: | %{filecheck} --check-prefix=CHECK-UBSAN-COV-LINUX787// CHECK-UBSAN-COV-LINUX: "{{.*}}ld{{(.exe)?}}"788// CHECK-UBSAN-COV-LINUX: "--whole-archive" "{{.*}}libclang_rt.ubsan_standalone.a" "--no-whole-archive"789// CHECK-UBSAN-COV-LINUX-NOT: "-lstdc++"790// CHECK-UBSAN-COV-LINUX: "-lpthread"791// CHECK-UBSAN-COV-LINUX: "-lresolv"792 793// RUN: %clang -fsanitize-coverage=func -### %s 2>&1 \794// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \795// RUN: -resource-dir=%S/Inputs/resource_dir \796// RUN: --sysroot=%S/Inputs/basic_linux_tree \797// RUN: | %{filecheck} --check-prefix=CHECK-COV-LINUX798// CHECK-COV-LINUX: "{{.*}}ld{{(.exe)?}}"799// CHECK-COV-LINUX: "--whole-archive" "{{.*}}libclang_rt.ubsan_standalone.a" "--no-whole-archive"800// CHECK-COV-LINUX-NOT: "-lstdc++"801// CHECK-COV-LINUX: "-lpthread"802// CHECK-COV-LINUX: "-lresolv"803 804// RUN: %clang -### %s 2>&1 \805// RUN: --target=x86_64-unknown-linux -fuse-ld=ld -fsanitize=numerical \806// RUN: -resource-dir=%S/Inputs/resource_dir \807// RUN: --sysroot=%S/Inputs/basic_linux_tree \808// RUN: | %{filecheck} --check-prefix=CHECK-NSAN-LINUX809//810// CHECK-NSAN-LINUX: "{{.*}}ld{{(.exe)?}}"811// CHECK-NSAN-LINUX-NOT: "-lc"812// CHECK-NSAN-LINUX: libclang_rt.nsan.a"813// CHECK-NSAN-LINUX: "-lpthread" "-lrt" "-lm" "-ldl" "-lresolv"814 815// RUN: %clang -### %s 2>&1 --target=x86_64-unknown-linux -fuse-ld=ld -fsanitize=numerical -shared-libsan \816// RUN: -resource-dir=%S/Inputs/resource_dir \817// RUN: --sysroot=%S/Inputs/basic_linux_tree \818// RUN: | %{filecheck} --check-prefix=CHECK-NSAN-SHARED-LINUX819 820// CHECK-NSAN-SHARED-LINUX: libclang_rt.nsan.so"821// CHECK-NSAN-SHARED-LINUX-NOT: "-lpthread"822// CHECK-NSAN-SHARED-LINUX-NOT: "-ldl"823// CHECK-NSAN-SHARED-LINUX-NOT: "--dynamic-list824 825// RUN: %clang -### %s 2>&1 --target=x86_64-unknown-linux -fsanitize=numerical,undefined \826// RUN: -resource-dir=%S/Inputs/resource_dir \827// RUN: --sysroot=%S/Inputs/basic_linux_tree \828// RUN: | %{filecheck} --check-prefix=CHECK-NSAN-UBSAN829 830// CHECK-NSAN-UBSAN: "--whole-archive" "{{[^"]*}}libclang_rt.nsan.a" "--no-whole-archive"831 832// CFI requirements.833// RUN: not %clang -fsanitize=cfi \834// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \835// RUN: -resource-dir=%S/Inputs/resource_dir \836// RUN: --sysroot=%S/Inputs/basic_linux_tree \837// RUN: -### %s 2>&1 \838// RUN: | %{filecheck} --check-prefix=CHECK-CFI-PREREQ-LINUX839// CHECK-CFI-PREREQ-LINUX: '-fsanitize=cfi' only allowed with '-flto'840// CHECK-CFI-PREREQ-LINUX: '-fsanitize=cfi' only allowed with '-fvisibility='841 842// CFI by itself does not link runtime libraries.843// RUN: %clang -fsanitize=cfi \844// RUN: -flto -fvisibility=hidden \845// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \846// RUN: -resource-dir=%S/Inputs/resource_dir \847// RUN: --sysroot=%S/Inputs/basic_linux_tree \848// RUN: -### %s 2>&1 \849// RUN: | %{filecheck} --check-prefix=CHECK-CFI-LINUX850// CHECK-CFI-LINUX: "{{.*}}ld{{(.exe)?}}"851 852// CFI with diagnostics links the UBSan runtime.853// RUN: %clang -fsanitize=cfi -fno-sanitize-trap=cfi -fsanitize-recover=cfi \854// RUN: -flto -fvisibility=hidden \855// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \856// RUN: -resource-dir=%S/Inputs/resource_dir \857// RUN: --sysroot=%S/Inputs/basic_linux_tree \858// RUN: -### %s 2>&1 \859// RUN: | %{filecheck} --check-prefix=CHECK-CFI-DIAG-LINUX860// CHECK-CFI-DIAG-LINUX: "{{.*}}ld{{(.exe)?}}"861// CHECK-CFI-DIAG-LINUX: "--whole-archive" "{{[^"]*}}libclang_rt.ubsan_standalone.a" "--no-whole-archive"862 863// Cross-DSO CFI links the CFI runtime.864// RUN: %clang -fsanitize=cfi -fsanitize-cfi-cross-dso \865// RUN: -flto -fvisibility=hidden \866// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \867// RUN: -resource-dir=%S/Inputs/resource_dir \868// RUN: --sysroot=%S/Inputs/basic_linux_tree \869// RUN: -### %s 2>&1 \870// RUN: | %{filecheck} --check-prefix=CHECK-CFI-CROSS-DSO-LINUX871// CHECK-CFI-CROSS-DSO-LINUX: "{{.*}}ld{{(.exe)?}}"872// CHECK-CFI-CROSS-DSO-LINUX: "--whole-archive" "{{[^"]*}}libclang_rt.cfi.a" "--no-whole-archive"873// CHECK-CFI-CROSS-DSO-LINUX: -export-dynamic874 875// Cross-DSO CFI with diagnostics links just the CFI runtime.876// RUN: %clang -fsanitize=cfi -fsanitize-cfi-cross-dso \877// RUN: -flto -fvisibility=hidden \878// RUN: -fno-sanitize-trap=cfi -fsanitize-recover=cfi \879// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \880// RUN: -resource-dir=%S/Inputs/resource_dir \881// RUN: --sysroot=%S/Inputs/basic_linux_tree \882// RUN: -### %s 2>&1 \883// RUN: | %{filecheck} --check-prefix=CHECK-CFI-CROSS-DSO-DIAG-LINUX884// CHECK-CFI-CROSS-DSO-DIAG-LINUX: "{{.*}}ld{{(.exe)?}}"885// CHECK-CFI-CROSS-DSO-DIAG-LINUX: "--whole-archive" "{{[^"]*}}libclang_rt.cfi_diag.a" "--no-whole-archive"886// CHECK-CFI-CROSS-DSO-DIAG-LINUX: -export-dynamic887 888// Cross-DSO CFI on Android does not link runtime libraries.889// RUN: %clang -fsanitize=cfi -fsanitize-cfi-cross-dso \890// RUN: -flto -fvisibility=hidden \891// RUN: --target=aarch64-linux-android -fuse-ld=ld \892// RUN: -resource-dir=%S/Inputs/resource_dir \893// RUN: --sysroot=%S/Inputs/basic_android_tree \894// RUN: -### %s 2>&1 \895// RUN: | %{filecheck} --check-prefix=CHECK-CFI-CROSS-DSO-ANDROID896// CHECK-CFI-CROSS-DSO-ANDROID: "{{.*}}ld{{(.exe)?}}"897 898// Cross-DSO CFI with diagnostics on Android links just the UBSAN runtime.899// RUN: %clang -fsanitize=cfi -fsanitize-cfi-cross-dso \900// RUN: -flto -fvisibility=hidden \901// RUN: -fno-sanitize-trap=cfi -fsanitize-recover=cfi \902// RUN: --target=aarch64-linux-android -fuse-ld=ld \903// RUN: -resource-dir=%S/Inputs/resource_dir \904// RUN: --sysroot=%S/Inputs/basic_android_tree \905// RUN: -### %s 2>&1 \906// RUN: | %{filecheck} --check-prefix=CHECK-CFI-CROSS-DSO-DIAG-ANDROID907// CHECK-CFI-CROSS-DSO-DIAG-ANDROID: "{{.*}}ld{{(.exe)?}}"908// CHECK-CFI-CROSS-DSO-DIAG-ANDROID: "{{[^"]*}}libclang_rt.ubsan_standalone.so"909// CHECK-CFI-CROSS-DSO-DIAG-ANDROID: "--export-dynamic-symbol=__cfi_check"910 911// CFI by itself does not link runtime libraries.912// RUN: %clang -fsanitize=cfi \913// RUN: -flto -fvisibility=hidden \914// RUN: -fsanitize-minimal-runtime \915// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \916// RUN: -resource-dir=%S/Inputs/resource_dir \917// RUN: --sysroot=%S/Inputs/basic_linux_tree \918// RUN: -### %s 2>&1 \919// RUN: | %{filecheck} --check-prefix=CHECK-CFI-MINRT-LINUX920// CHECK-CFI-MINRT-LINUX: "{{.*}}ld{{(.exe)?}}"921 922// CFI with diagnostics links the UBSan runtime.923// RUN: %clang -fsanitize=cfi -fno-sanitize-trap=cfi -fsanitize-recover=cfi \924// RUN: -flto -fvisibility=hidden \925// RUN: -fsanitize-minimal-runtime \926// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \927// RUN: -resource-dir=%S/Inputs/resource_dir \928// RUN: --sysroot=%S/Inputs/basic_linux_tree \929// RUN: -### %s 2>&1 \930// RUN: | %{filecheck} --check-prefix=CHECK-CFI-MINRT-DIAG-LINUX931// CHECK-CFI-MINRT-DIAG-LINUX: "{{.*}}ld{{(.exe)?}}"932// CHECK-CFI-MINRT-DIAG-LINUX: "--whole-archive" "{{[^"]*}}libclang_rt.ubsan_minimal.a" "--no-whole-archive"933 934// Cross-DSO CFI links the CFI runtime.935// RUN: %clang -fsanitize=cfi -fsanitize-cfi-cross-dso \936// RUN: -flto -fvisibility=hidden \937// RUN: -fsanitize-minimal-runtime \938// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \939// RUN: -resource-dir=%S/Inputs/resource_dir \940// RUN: --sysroot=%S/Inputs/basic_linux_tree \941// RUN: -### %s 2>&1 \942// RUN: | %{filecheck} --check-prefix=CHECK-CFI-MINRT-CROSS-DSO-LINUX943// CHECK-CFI-MINRT-CROSS-DSO-LINUX: "{{.*}}ld{{(.exe)?}}"944// CHECK-CFI-MINRT-CROSS-DSO-LINUX: "--whole-archive" "{{[^"]*}}libclang_rt.cfi.a" "--no-whole-archive"945// CHECK-CFI-MINRT-CROSS-DSO-LINUX: -export-dynamic946 947// Cross-DSO CFI with diagnostics links just the CFI runtime.948// RUN: %clang -fsanitize=cfi -fsanitize-cfi-cross-dso \949// RUN: -flto -fvisibility=hidden \950// RUN: -fsanitize-minimal-runtime \951// RUN: -fno-sanitize-trap=cfi -fsanitize-recover=cfi \952// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \953// RUN: -resource-dir=%S/Inputs/resource_dir \954// RUN: --sysroot=%S/Inputs/basic_linux_tree \955// RUN: -### %s 2>&1 \956// RUN: | %{filecheck} --check-prefix=CHECK-CFI-MINRT-CROSS-DSO-DIAG-LINUX957// CHECK-CFI-MINRT-CROSS-DSO-DIAG-LINUX: "{{.*}}ld{{(.exe)?}}"958// CHECK-CFI-MINRT-CROSS-DSO-DIAG-LINUX: "--whole-archive" "{{[^"]*}}libclang_rt.cfi_diag.a" "--no-whole-archive"959// CHECK-CFI-MINRT-CROSS-DSO-DIAG-LINUX: -export-dynamic960 961// Cross-DSO CFI on Android does not link runtime libraries.962// RUN: %clang -fsanitize=cfi -fsanitize-cfi-cross-dso \963// RUN: -flto -fvisibility=hidden \964// RUN: -fsanitize-minimal-runtime \965// RUN: --target=aarch64-linux-android -fuse-ld=ld \966// RUN: -resource-dir=%S/Inputs/resource_dir \967// RUN: --sysroot=%S/Inputs/basic_android_tree \968// RUN: -### %s 2>&1 \969// RUN: | %{filecheck} --check-prefix=CHECK-CFI-MINRT-CROSS-DSO-ANDROID970// CHECK-CFI-MINRT-CROSS-DSO-ANDROID: "{{.*}}ld{{(.exe)?}}"971 972// Cross-DSO CFI with diagnostics on Android links just the UBSAN runtime.973// RUN: %clang -fsanitize=cfi -fsanitize-cfi-cross-dso \974// RUN: -flto -fvisibility=hidden \975// RUN: -fsanitize-minimal-runtime \976// RUN: -fno-sanitize-trap=cfi -fsanitize-recover=cfi \977// RUN: --target=aarch64-linux-android -fuse-ld=ld \978// RUN: -resource-dir=%S/Inputs/resource_dir \979// RUN: --sysroot=%S/Inputs/basic_android_tree \980// RUN: -### %s 2>&1 \981// RUN: | %{filecheck} --check-prefix=CHECK-CFI-MINRT-CROSS-DSO-DIAG-ANDROID982// CHECK-CFI-MINRT-CROSS-DSO-DIAG-ANDROID: "{{.*}}ld{{(.exe)?}}"983// CHECK-CFI-MINRT-CROSS-DSO-DIAG-ANDROID: "{{[^"]*}}libclang_rt.ubsan_minimal.so"984// CHECK-CFI-MINRT-CROSS-DSO-DIAG-ANDROID: "--export-dynamic-symbol=__cfi_check"985 986// RUN: %clangxx -fsanitize=address -### %s 2>&1 \987// RUN: -mmacos-version-min=10.6 \988// RUN: --target=x86_64-apple-darwin13.4.0 -fuse-ld=ld -stdlib=platform \989// RUN: -resource-dir=%S/Inputs/resource_dir \990// RUN: --sysroot=%S/Inputs/basic_linux_tree \991// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-DARWIN106-CXX992// CHECK-ASAN-DARWIN106-CXX: "{{.*}}ld{{(.exe)?}}"993// CHECK-ASAN-DARWIN106-CXX: libclang_rt.asan_osx_dynamic.dylib994// CHECK-ASAN-DARWIN106-CXX-NOT: -lc++abi995 996// RUN: %clangxx -fsanitize=leak -### %s 2>&1 \997// RUN: -mmacos-version-min=10.6 \998// RUN: --target=x86_64-apple-darwin13.4.0 -fuse-ld=ld -stdlib=platform \999// RUN: -resource-dir=%S/Inputs/resource_dir \1000// RUN: --sysroot=%S/Inputs/basic_linux_tree \1001// RUN: | %{filecheck} --check-prefix=CHECK-LSAN-DARWIN106-CXX1002// CHECK-LSAN-DARWIN106-CXX: "{{.*}}ld{{(.exe)?}}"1003// CHECK-LSAN-DARWIN106-CXX: libclang_rt.lsan_osx_dynamic.dylib1004// CHECK-LSAN-DARWIN106-CXX-NOT: -lc++abi1005 1006// RUN: %clang -### %s 2>&1 \1007// RUN: --target=x86_64-unknown-linux -fuse-ld=ld -fsanitize=safe-stack \1008// RUN: -resource-dir=%S/Inputs/resource_dir \1009// RUN: --sysroot=%S/Inputs/basic_linux_tree \1010// RUN: | %{filecheck} --check-prefix=CHECK-SAFESTACK-LINUX1011//1012// CHECK-SAFESTACK-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"1013// CHECK-SAFESTACK-LINUX-NOT: "-lc"1014// CHECK-SAFESTACK-LINUX-NOT: whole-archive1015// CHECK-SAFESTACK-LINUX: "-u" "__safestack_init"1016// CHECK-SAFESTACK-LINUX: libclang_rt.safestack.a"1017// CHECK-SAFESTACK-LINUX: "-lpthread"1018// CHECK-SAFESTACK-LINUX: "-ldl"1019// CHECK-SAFESTACK-LINUX: "-lresolv"1020 1021// RUN: %clang -fsanitize=shadow-call-stack -### %s 2>&1 \1022// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \1023// RUN: | %{filecheck} --check-prefix=CHECK-SHADOWCALLSTACK-LINUX-X86-641024// CHECK-SHADOWCALLSTACK-LINUX-X86-64-NOT: error:1025// CHECK-SHADOWCALLSTACK-LINUX-X86-64: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"1026 1027// RUN: not %clang -fsanitize=shadow-call-stack -### %s 2>&1 \1028// RUN: --target=aarch64-unknown-linux -fuse-ld=ld \1029// RUN: | %{filecheck} --check-prefix=CHECK-SHADOWCALLSTACK-LINUX-AARCH641030// CHECK-SHADOWCALLSTACK-LINUX-AARCH64: '-fsanitize=shadow-call-stack' only allowed with '-ffixed-x18'1031 1032// RUN: %clang -fsanitize=shadow-call-stack -### %s 2>&1 \1033// RUN: --target=riscv32-unknown-elf -fuse-ld=ld \1034// RUN: | %{filecheck} --check-prefix=CHECK-SHADOWCALLSTACK-ELF-RISCV321035// CHECK-SHADOWCALLSTACK-ELF-RISCV32-NOT: error:1036// CHECK-SHADOWCALLSTACK-ELF-RISCV32: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"1037 1038// RUN: %clang -fsanitize=shadow-call-stack -### %s 2>&1 \1039// RUN: --target=riscv64-unknown-linux -fuse-ld=ld \1040// RUN: | %{filecheck} --check-prefix=CHECK-SHADOWCALLSTACK-LINUX-RISCV641041// CHECK-SHADOWCALLSTACK-LINUX-RISCV64-NOT: error:1042// CHECK-SHADOWCALLSTACK-LINUX-RISCV64: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"1043 1044// RUN: %clang -target riscv64-linux-android -fsanitize=shadow-call-stack %s -### 2>&1 \1045// RUN: | %{filecheck} --check-prefix=CHECK-SHADOWCALLSTACK-ANDROID-RISCV641046// CHECK-SHADOWCALLSTACK-ANDROID-RISCV64-NOT: error:1047// CHECK-SHADOWCALLSTACK-ANDROID-RISCV64: "{{(.*[^-.0-9A-Z_a-z])?}}ld.lld{{(.exe)?}}"1048 1049// RUN: %clang -fsanitize=shadow-call-stack -### %s 2>&1 \1050// RUN: --target=riscv64-unknown-fuchsia -fuse-ld=ld \1051// RUN: | %{filecheck} --check-prefix=CHECK-SHADOWCALLSTACK-FUCHSIA-RISCV641052// CHECK-SHADOWCALLSTACK-FUCHSIA-RISCV64-NOT: error:1053// CHECK-SHADOWCALLSTACK-FUCHSIA-RISCV64: "{{(.*[^-.0-9A-Z_a-z])?}}ld.lld{{(.exe)?}}"1054 1055// RUN: %clang -fsanitize=shadow-call-stack -### %s 2>&1 \1056// RUN: --target=aarch64-unknown-linux -fuse-ld=ld -ffixed-x18 \1057// RUN: | %{filecheck} --check-prefix=CHECK-SHADOWCALLSTACK-LINUX-AARCH64-X181058// RUN: %clang -fsanitize=shadow-call-stack -### %s 2>&1 \1059// RUN: --target=arm64-unknown-ios -fuse-ld=ld \1060// RUN: | %{filecheck} --check-prefix=CHECK-SHADOWCALLSTACK-LINUX-AARCH64-X181061// CHECK-SHADOWCALLSTACK-LINUX-AARCH64-X18-NOT: error:1062// CHECK-SHADOWCALLSTACK-LINUX-AARCH64-X18: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"1063 1064// RUN: %clang -fsanitize=shadow-call-stack -### %s 2>&1 \1065// RUN: --target=aarch64-unknown-linux-android -fuse-ld=ld \1066// RUN: | %{filecheck} --check-prefix=CHECK-SHADOWCALLSTACK-LINUX-AARCH64-X18-ANDROID1067// CHECK-SHADOWCALLSTACK-LINUX-AARCH64-X18-ANDROID-NOT: error:1068// CHECK-SHADOWCALLSTACK-LINUX-AARCH64-X18-ANDROID: "{{(.*[^-.0-9A-Z_a-z])?}}ld.lld{{(.exe)?}}"1069 1070// RUN: not %clang -fsanitize=shadow-call-stack -### %s 2>&1 \1071// RUN: --target=x86-unknown-linux -fuse-ld=ld \1072// RUN: | %{filecheck} --check-prefix=CHECK-SHADOWCALLSTACK-LINUX-X861073// CHECK-SHADOWCALLSTACK-LINUX-X86: error: unsupported option '-fsanitize=shadow-call-stack' for target 'x86-unknown-linux'1074 1075// RUN: %clang -fsanitize=shadow-call-stack -### %s 2>&1 \1076// RUN: -fsanitize=safe-stack --target=x86_64-unknown-linux -fuse-ld=ld \1077// RUN: | %{filecheck} --check-prefix=CHECK-SHADOWCALLSTACK-SAFESTACK1078// CHECK-SHADOWCALLSTACK-SAFESTACK-NOT: error:1079// CHECK-SHADOWCALLSTACK-SAFESTACK: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"1080// CHECK-SHADOWCALLSTACK-SAFESTACK: libclang_rt.safestack.a1081 1082// RUN: not %clang -fsanitize=cfi -fsanitize-stats -### %s 2>&1 \1083// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \1084// RUN: -resource-dir=%S/Inputs/resource_dir \1085// RUN: --sysroot=%S/Inputs/basic_linux_tree \1086// RUN: | %{filecheck} --check-prefix=CHECK-CFI-STATS-LINUX1087// CHECK-CFI-STATS-LINUX: "{{.*}}ld{{(.exe)?}}"1088// CHECK-CFI-STATS-LINUX: "--whole-archive" "{{[^"]*}}libclang_rt.stats_client.a" "--no-whole-archive"1089// CHECK-CFI-STATS-LINUX-NOT: "--whole-archive"1090// CHECK-CFI-STATS-LINUX: "{{[^"]*}}libclang_rt.stats.a"1091 1092// RUN: not %clang -fsanitize=cfi -fsanitize-stats -### %s 2>&1 \1093// RUN: --target=x86_64-apple-darwin -fuse-ld=ld \1094// RUN: --sysroot=%S/Inputs/basic_linux_tree \1095// RUN: | %{filecheck} --check-prefix=CHECK-CFI-STATS-DARWIN1096// CHECK-CFI-STATS-DARWIN: "{{.*}}ld{{(.exe)?}}"1097// CHECK-CFI-STATS-DARWIN: "{{[^"]*}}libclang_rt.stats_client_osx.a"1098// CHECK-CFI-STATS-DARWIN: "{{[^"]*}}libclang_rt.stats_osx_dynamic.dylib"1099 1100// RUN: not %clang -fsanitize=cfi -fsanitize-stats -### %s 2>&1 \1101// RUN: --target=x86_64-pc-windows \1102// RUN: --sysroot=%S/Inputs/basic_linux_tree \1103// RUN: | %{filecheck} --check-prefix=CHECK-CFI-STATS-WIN641104// CHECK-CFI-STATS-WIN64: "--dependent-lib=clang_rt.stats_client{{(-x86_64)?}}.lib"1105// CHECK-CFI-STATS-WIN64: "--dependent-lib=clang_rt.stats{{(-x86_64)?}}.lib"1106// CHECK-CFI-STATS-WIN64: "--linker-option=/include:__sanitizer_stats_register"1107 1108// RUN: not %clang -fsanitize=cfi -fsanitize-stats -### %s 2>&1 \1109// RUN: --target=i686-pc-windows \1110// RUN: --sysroot=%S/Inputs/basic_linux_tree \1111// RUN: | %{filecheck} --check-prefix=CHECK-CFI-STATS-WIN321112// RUN: not %clang -fsanitize=cfi -fsanitize-stats -### %s 2>&1 \1113// RUN: --target=i686-pc-windows \1114// RUN: -fno-rtlib-defaultlib \1115// RUN: -frtlib-defaultlib \1116// RUN: --sysroot=%S/Inputs/basic_linux_tree \1117// RUN: | %{filecheck} --check-prefix=CHECK-CFI-STATS-WIN321118// CHECK-CFI-STATS-WIN32: "--dependent-lib=clang_rt.stats_client{{(-i386)?}}.lib"1119// CHECK-CFI-STATS-WIN32: "--dependent-lib=clang_rt.stats{{(-i386)?}}.lib"1120// CHECK-CFI-STATS-WIN32: "--linker-option=/include:___sanitizer_stats_register"1121 1122// RUN: not %clang -fsanitize=cfi -fsanitize-stats -### %s 2>&1 \1123// RUN: --target=i686-pc-windows \1124// RUN: -fno-rtlib-defaultlib \1125// RUN: --sysroot=%S/Inputs/basic_linux_tree \1126// RUN: | %{filecheck} --check-prefix=CHECK-CFI-STATS-WIN32-NODEF1127// CHECK-CFI-STATS-WIN32-NODEF-NOT: "--dependent-lib=clang_rt.stats_client{{(-i386)?}}.lib"1128// CHECK-CFI-STATS-WIN32-NODEF-NOT: "--dependent-lib=clang_rt.stats{{(-i386)?}}.lib"1129 1130// RUN: %clang -### %s 2>&1 \1131// RUN: --target=arm-linux-androideabi -fuse-ld=ld -fsanitize=safe-stack \1132// RUN: --sysroot=%S/Inputs/basic_android_tree \1133// RUN: | %{filecheck} --check-prefix=CHECK-SAFESTACK-ANDROID-ARM1134//1135// CHECK-SAFESTACK-ANDROID-ARM: "{{(.*[^-.0-9A-Z_a-z])?}}ld.lld{{(.exe)?}}"1136 1137// RUN: %clang -### %s -shared 2>&1 \1138// RUN: --target=arm-linux-androideabi -fuse-ld=ld -fsanitize=safe-stack \1139// RUN: --sysroot=%S/Inputs/basic_android_tree \1140// RUN: | %{filecheck} --check-prefix=CHECK-SAFESTACK-SHARED-ANDROID-ARM1141//1142// CHECK-SAFESTACK-SHARED-ANDROID-ARM: "{{(.*[^-.0-9A-Z_a-z])?}}ld.lld{{(.exe)?}}"1143 1144// RUN: %clang -### %s 2>&1 \1145// RUN: --target=aarch64-linux-android -fuse-ld=ld -fsanitize=safe-stack \1146// RUN: --sysroot=%S/Inputs/basic_android_tree \1147// RUN: | %{filecheck} --check-prefix=CHECK-SAFESTACK-ANDROID-AARCH641148//1149// CHECK-SAFESTACK-ANDROID-AARCH64: "{{(.*[^-.0-9A-Z_a-z])?}}ld.lld{{(.exe)?}}"1150 1151// RUN: not %clang -fsanitize=undefined -### %s 2>&1 \1152// RUN: --target=x86_64-scei-ps4 -fuse-ld=ld \1153// RUN: -shared \1154// RUN: | %{filecheck} --check-prefix=CHECK-UBSAN-PS41155// CHECK-UBSAN-PS4: --dependent-lib=libSceDbgUBSanitizer_stub_weak.a1156// CHECK-UBSAN-PS4: "{{.*}}ld{{(.gold)?(.exe)?}}"1157// CHECK-UBSAN-PS4: -lSceDbgUBSanitizer_stub_weak1158 1159// RUN: not %clang -fsanitize=undefined -### %s 2>&1 \1160// RUN: --target=x86_64-sie-ps5 -fuse-ld=ld \1161// RUN: -shared \1162// RUN: | %{filecheck} --check-prefix=CHECK-UBSAN-PS51163// CHECK-UBSAN-PS5: --dependent-lib=libSceUBSanitizer_nosubmission_stub_weak.a1164// CHECK-UBSAN-PS5: "{{.*}}ld{{(.gold)?(.exe)?}}"1165// CHECK-UBSAN-PS5: -lSceUBSanitizer_nosubmission_stub_weak1166 1167// RUN: not %clang -fsanitize=address -### %s 2>&1 \1168// RUN: --target=x86_64-scei-ps4 -fuse-ld=ld \1169// RUN: -shared \1170// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-PS41171// CHECK-ASAN-PS4: --dependent-lib=libSceDbgAddressSanitizer_stub_weak.a1172// CHECK-ASAN-PS4: "{{.*}}ld{{(.gold)?(.exe)?}}"1173// CHECK-ASAN-PS4: -lSceDbgAddressSanitizer_stub_weak1174 1175// RUN: not %clang -fsanitize=address -### %s 2>&1 \1176// RUN: --target=x86_64-sie-ps5 -fuse-ld=ld \1177// RUN: -shared \1178// RUN: | %{filecheck} --check-prefix=CHECK-ASAN-PS51179// CHECK-ASAN-PS5: --dependent-lib=libSceAddressSanitizer_nosubmission_stub_weak.a1180// CHECK-ASAN-PS5: "{{.*}}ld{{(.gold)?(.exe)?}}"1181// CHECK-ASAN-PS5: -lSceAddressSanitizer_nosubmission_stub_weak1182 1183// RUN: not %clang -fsanitize=address,undefined -### %s 2>&1 \1184// RUN: --target=x86_64-scei-ps4 -fuse-ld=ld \1185// RUN: -shared \1186// RUN: | %{filecheck} --check-prefix=CHECK-AUBSAN-PS41187// CHECK-AUBSAN-PS4-NOT: --dependent-lib=libSceDbgUBSanitizer_stub_weak.a1188// CHECK-AUBSAN-PS4: --dependent-lib=libSceDbgAddressSanitizer_stub_weak.a1189// CHECK-AUBSAN-PS4-NOT: --dependent-lib=libSceDbgUBSanitizer_stub_weak.a1190// CHECK-AUBSAN-PS4: "{{.*}}ld{{(.gold)?(.exe)?}}"1191// CHECK-AUBSAN-PS4: -lSceDbgAddressSanitizer_stub_weak1192 1193// RUN: not %clang -fsanitize=address,undefined -### %s 2>&1 \1194// RUN: --target=x86_64-sie-ps5 -fuse-ld=ld \1195// RUN: -shared \1196// RUN: | %{filecheck} --check-prefix=CHECK-AUBSAN-PS51197// CHECK-AUBSAN-PS5-NOT: --dependent-lib=libSceUBSanitizer_nosubmission_stub_weak.a1198// CHECK-AUBSAN-PS5: --dependent-lib=libSceAddressSanitizer_nosubmission_stub_weak.a1199// CHECK-AUBSAN-PS5-NOT: --dependent-lib=libSceUBSanitizer_nosubmission_stub_weak.a1200// CHECK-AUBSAN-PS5: "{{.*}}ld{{(.gold)?(.exe)?}}"1201// CHECK-AUBSAN-PS5: -lSceAddressSanitizer_nosubmission_stub_weak1202 1203// RUN: not %clang -fsanitize=address,undefined -### %s 2>&1 \1204// RUN: --target=x86_64-scei-ps4 -fuse-ld=ld \1205// RUN: -shared \1206// RUN: -nostdlib \1207// RUN: | %{filecheck} --check-prefix=CHECK-NOLIB-PS41208// CHECK-NOLIB-PS4-NOT: SceDbgAddressSanitizer_stub_weak1209 1210// RUN: not %clang -fsanitize=address,undefined -### %s 2>&1 \1211// RUN: --target=x86_64-sie-ps5 -fuse-ld=ld \1212// RUN: -shared \1213// RUN: -nostdlib \1214// RUN: | %{filecheck} --check-prefix=CHECK-NOLIB-PS51215// CHECK-NOLIB-PS5-NOT: SceAddressSanitizer_nosubmission_stub_weak1216 1217// RUN: %clang -fsanitize=scudo -### %s 2>&1 \1218// RUN: --target=i386-unknown-linux -fuse-ld=ld \1219// RUN: -resource-dir=%S/Inputs/resource_dir \1220// RUN: --sysroot=%S/Inputs/basic_linux_tree \1221// RUN: | %{filecheck} --check-prefix=CHECK-SCUDO-LINUX1222// CHECK-SCUDO-LINUX: "{{.*}}ld{{(.exe)?}}"1223// CHECK-SCUDO-LINUX: "--whole-archive" "{{.*}}libclang_rt.scudo_standalone.a" "--no-whole-archive"1224// CHECK-SCUDO-LINUX-NOT: "-lstdc++"1225// CHECK-SCUDO-LINUX: "-lpthread"1226// CHECK-SCUDO-LINUX: "-ldl"1227// CHECK-SCUDO-LINUX: "-lresolv"1228 1229// RUN: %clang -### %s -o %t.so -shared 2>&1 \1230// RUN: --target=i386-unknown-linux -fuse-ld=ld -fsanitize=scudo -shared-libsan \1231// RUN: -resource-dir=%S/Inputs/resource_dir \1232// RUN: --sysroot=%S/Inputs/basic_linux_tree \1233// RUN: | %{filecheck} --check-prefix=CHECK-SCUDO-SHARED-LINUX1234//1235// CHECK-SCUDO-SHARED-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"1236// CHECK-SCUDO-SHARED-LINUX-NOT: "-lc"1237// CHECK-SCUDO-SHARED-LINUX: libclang_rt.scudo_standalone.so"1238// CHECK-SCUDO-SHARED-LINUX-NOT: "-lpthread"1239// CHECK-SCUDO-SHARED-LINUX-NOT: "-lrt"1240// CHECK-SCUDO-SHARED-LINUX-NOT: "-ldl"1241// CHECK-SCUDO-SHARED-LINUX-NOT: "-lresolv"1242// CHECK-SCUDO-SHARED-LINUX-NOT: "--export-dynamic"1243// CHECK-SCUDO-SHARED-LINUX-NOT: "--dynamic-list"1244 1245// RUN: %clang -### %s 2>&1 \1246// RUN: --target=arm-linux-androideabi -fuse-ld=ld -fsanitize=scudo \1247// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \1248// RUN: | %{filecheck} --check-prefix=CHECK-SCUDO-ANDROID1249//1250// CHECK-SCUDO-ANDROID: "{{(.*[^.0-9A-Z_a-z])?}}ld.lld{{(.exe)?}}"1251// CHECK-SCUDO-ANDROID-NOT: "-lc"1252// CHECK-SCUDO-ANDROID: "-pie"1253// CHECK-SCUDO-ANDROID-NOT: "-lpthread"1254// CHECK-SCUDO-ANDROID-NOT: "-lresolv"1255// CHECK-SCUDO-ANDROID: libclang_rt.scudo_standalone.so"1256// CHECK-SCUDO-ANDROID-NOT: "-lpthread"1257// CHECK-SCUDO-ANDROID-NOT: "-lresolv"1258 1259// RUN: %clang -### %s 2>&1 \1260// RUN: --target=arm-linux-androideabi -fuse-ld=ld -fsanitize=scudo \1261// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \1262// RUN: -static-libsan \1263// RUN: | %{filecheck} --check-prefix=CHECK-SCUDO-ANDROID-STATIC1264// CHECK-SCUDO-ANDROID-STATIC: "{{(.*[^.0-9A-Z_a-z])?}}ld.lld{{(.exe)?}}"1265// CHECK-SCUDO-ANDROID-STATIC: "-pie"1266// CHECK-SCUDO-ANDROID-STATIC: "--whole-archive" "{{.*}}libclang_rt.scudo_standalone.a" "--no-whole-archive"1267// CHECK-SCUDO-ANDROID-STATIC-NOT: "-lstdc++"1268// CHECK-SCUDO-ANDROID-STATIC-NOT: "-lpthread"1269// CHECK-SCUDO-ANDROID-STATIC-NOT: "-lrt"1270// CHECK-SCUDO-ANDROID-STATIC-NOT: "-lresolv"1271 1272// RUN: %clang -### %s 2>&1 \1273// RUN: --target=x86_64-unknown-linux -fuse-ld=ld -fsanitize=hwaddress \1274// RUN: -resource-dir=%S/Inputs/resource_dir \1275// RUN: --sysroot=%S/Inputs/basic_linux_tree \1276// RUN: | %{filecheck} --check-prefix=CHECK-HWASAN-X86-64-LINUX1277//1278// CHECK-HWASAN-X86-64-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"1279// CHECK-HWASAN-X86-64-LINUX-NOT: "-lc"1280// CHECK-HWASAN-X86-64-LINUX: libclang_rt.hwasan.a"1281// CHECK-HWASAN-X86-64-LINUX-NOT: "--export-dynamic"1282// CHECK-HWASAN-X86-64-LINUX: "--dynamic-list={{.*}}libclang_rt.hwasan.a.syms"1283// CHECK-HWASAN-X86-64-LINUX-NOT: "--export-dynamic"1284// CHECK-HWASAN-X86-64-LINUX: "-lpthread"1285// CHECK-HWASAN-X86-64-LINUX: "-lrt"1286// CHECK-HWASAN-X86-64-LINUX: "-ldl"1287// CHECK-HWASAN-X86-64-LINUX: "-lresolv"1288 1289// RUN: %clang -### %s 2>&1 \1290// RUN: --target=x86_64-unknown-linux -fuse-ld=ld -fsanitize=hwaddress \1291// RUN: -shared-libsan -resource-dir=%S/Inputs/resource_dir \1292// RUN: --sysroot=%S/Inputs/basic_linux_tree \1293// RUN: | %{filecheck} --check-prefix=CHECK-SHARED-HWASAN-X86-64-LINUX1294//1295// CHECK-SHARED-HWASAN-X86-64-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"1296// CHECK-SHARED-HWASAN-X86-64-LINUX-NOT: "-lc"1297// CHECK-SHARED-HWASAN-X86-64-LINUX: libclang_rt.hwasan.so"1298// CHECK-SHARED-HWASAN-X86-64-LINUX: libclang_rt.hwasan-preinit.a"1299// CHECK-SHARED-HWASAN-X86-64-LINUX-NOT: "-lpthread"1300// CHECK-SHARED-HWASAN-X86-64-LINUX-NOT: "-lrt"1301// CHECK-SHARED-HWASAN-X86-64-LINUX-NOT: "-ldl"1302// CHECK-SHARED-HWASAN-X86-64-LINUX-NOT: "-lresolv"1303// CHECK-SHARED-HWASAN-X86-64-LINUX-NOT: "--export-dynamic"1304// CHECK-SHARED-HWASAN-X86-64-LINUX-NOT: "--dynamic-list"1305 1306// RUN: %clang -### %s -o %t.so -shared 2>&1 \1307// RUN: --target=x86_64-unknown-linux -fuse-ld=ld -fsanitize=hwaddress \1308// RUN: -shared-libsan -resource-dir=%S/Inputs/resource_dir \1309// RUN: --sysroot=%S/Inputs/basic_linux_tree \1310// RUN: | %{filecheck} --check-prefix=CHECK-DSO-SHARED-HWASAN-X86-64-LINUX1311//1312// CHECK-DSO-SHARED-HWASAN-X86-64-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"1313// CHECK-DSO-SHARED-HWASAN-X86-64-LINUX-NOT: "-lc"1314// CHECK-DSO-SHARED-HWASAN-X86-64-LINUX: libclang_rt.hwasan.so"1315// CHECK-DSO-SHARED-HWASAN-X86-64-LINUX-NOT: "-lpthread"1316// CHECK-DSO-SHARED-HWASAN-X86-64-LINUX-NOT: "-lrt"1317// CHECK-DSO-SHARED-HWASAN-X86-64-LINUX-NOT: "-ldl"1318// CHECK-DSO-SHARED-HWASAN-X86-64-LINUX-NOT: "-lresolv"1319// CHECK-DSO-SHARED-HWASAN-X86-64-LINUX-NOT: "--export-dynamic"1320// CHECK-DSO-SHARED-HWASAN-X86-64-LINUX-NOT: "--dynamic-list"1321 1322// RUN: %clang -### %s 2>&1 \1323// RUN: --target=aarch64-unknown-linux -fuse-ld=ld -fsanitize=hwaddress \1324// RUN: -resource-dir=%S/Inputs/resource_dir \1325// RUN: --sysroot=%S/Inputs/basic_linux_tree \1326// RUN: | %{filecheck} --check-prefix=CHECK-HWASAN-AARCH64-LINUX1327//1328// CHECK-HWASAN-AARCH64-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"1329// CHECK-HWASAN-AARCH64-LINUX-NOT: "-lc"1330// CHECK-HWASAN-AARCH64-LINUX: libclang_rt.hwasan.a"1331// CHECK-HWASAN-AARCH64-LINUX-NOT: "--export-dynamic"1332// CHECK-HWASAN-AARCH64-LINUX: "--dynamic-list={{.*}}libclang_rt.hwasan.a.syms"1333// CHECK-HWASAN-AARCH64-LINUX-NOT: "--export-dynamic"1334// CHECK-HWASAN-AARCH64-LINUX: "-lpthread"1335// CHECK-HWASAN-AARCH64-LINUX: "-lrt"1336// CHECK-HWASAN-AARCH64-LINUX: "-ldl"1337// CHECK-HWASAN-AARCH64-LINUX: "-lresolv"1338 1339// RUN: %clang -### %s 2>&1 \1340// RUN: --target=aarch64-unknown-linux -fuse-ld=ld -fsanitize=hwaddress \1341// RUN: -shared-libsan \1342// RUN: -resource-dir=%S/Inputs/resource_dir \1343// RUN: --sysroot=%S/Inputs/basic_linux_tree \1344// RUN: | %{filecheck} --check-prefix=CHECK-SHARED-HWASAN-AARCH64-LINUX1345//1346// CHECK-SHARED-HWASAN-AARCH64-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"1347// CHECK-SHARED-HWASAN-AARCH64-LINUX-NOT: "-lc"1348// CHECK-SHARED-HWASAN-AARCH64-LINUX: libclang_rt.hwasan.so"1349// CHECK-SHARED-HWASAN-AARCH64-LINUX: libclang_rt.hwasan-preinit.a"1350// CHECK-SHARED-HWASAN-AARCH64-LINUX-NOT: "-lpthread"1351// CHECK-SHARED-HWASAN-AARCH64-LINUX-NOT: "-lrt"1352// CHECK-SHARED-HWASAN-AARCH64-LINUX-NOT: "-ldl"1353// CHECK-SHARED-HWASAN-AARCH64-LINUX-NOT: "-lresolv"1354// CHECK-SHARED-HWASAN-AARCH64-LINUX-NOT: "--export-dynamic"1355// CHECK-SHARED-HWASAN-AARCH64-LINUX-NOT: "--dynamic-list"1356 1357// RUN: %clang -### %s -o %t.so -shared 2>&1 \1358// RUN: --target=aarch64-unknown-linux -fuse-ld=ld -fsanitize=hwaddress \1359// RUN: -shared-libsan -resource-dir=%S/Inputs/resource_dir \1360// RUN: --sysroot=%S/Inputs/basic_linux_tree \1361// RUN: | %{filecheck} --check-prefix=CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX1362//1363// CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"1364// CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX-NOT: "-lc"1365// CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX: libclang_rt.hwasan.so"1366// CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX-NOT: "-lpthread"1367// CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX-NOT: "-lrt"1368// CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX-NOT: "-ldl"1369// CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX-NOT: "-lresolv"1370// CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX-NOT: "--export-dynamic"1371// CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX-NOT: "--dynamic-list"1372 1373// RUN: %clang -fsanitize=address,undefined -r -### %s 2>&1 \1374// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \1375// RUN: -resource-dir=%S/Inputs/resource_dir \1376// RUN: --sysroot=%S/Inputs/basic_linux_tree \1377// RUN: | %{filecheck} --check-prefix=CHECK-RELOCATABLE-LINK-ASAN-UBSAN-RTLIB1378//1379// CHECK-RELOCATABLE-LINK-ASAN-UBSAN-RTLIB-NOT: "{{.*}}(asan|ubsan){{.*}}"1380 1381// RUN: %clang -fsanitize=address -r -fsanitize-link-runtime -### %s 2>&1 \1382// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \1383// RUN: -resource-dir=%S/Inputs/resource_dir \1384// RUN: --sysroot=%S/Inputs/basic_linux_tree \1385// RUN: | FileCheck %s --check-prefix=CHECK-RELOCATABLE-LINK-FORCE-LINK-ASAN1386//1387// CHECK-RELOCATABLE-LINK-FORCE-LINK-ASAN: "{{.*}}asan{{.*}}"1388 1389// RUN: %clang -fsanitize=thread -r -### %s 2>&1 \1390// RUN: --target=x86_64-unknown-linux -fuse-ld=ld \1391// RUN: -resource-dir=%S/Inputs/resource_dir \1392// RUN: --sysroot=%S/Inputs/basic_linux_tree \1393// RUN: | %{filecheck} --check-prefix=CHECK-RELOCATABLE-LINK-TSAN-RTLIB1394//1395// CHECK-RELOCATABLE-LINK-TSAN-RTLIB-NOT: "{{.*}}tsan{{.*}}"1396