1 // Test instrumented profiling ld flags. 2 // 3 // RUN: %clang -### %s 2>&1 \ 4 // RUN: --target=i386-unknown-linux -fprofile-instr-generate -fuse-ld=ld \ 5 // RUN: -resource-dir=%S/Inputs/resource_dir \ 6 // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 7 // RUN: | FileCheck --check-prefix=CHECK-LINUX-I386 %s 8 // 9 // CHECK-LINUX-I386: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 10 // CHECK-LINUX-I386: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{/|\\\\}}i386-unknown-linux{{/|\\\\}}libclang_rt.profile.a" {{.*}} "-lc" 11 // 12 // RUN: %clang -### %s 2>&1 \ 13 // RUN: --target=x86_64-unknown-linux -fprofile-instr-generate -fuse-ld=ld \ 14 // RUN: -resource-dir=%S/Inputs/resource_dir \ 15 // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 16 // RUN: | FileCheck --check-prefix=CHECK-LINUX-X86-64 %s 17 // 18 // CHECK-LINUX-X86-64: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 19 // CHECK-LINUX-X86-64: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{.*}}linux{{.*}}libclang_rt.profile.a" {{.*}} "-lc" 20 // 21 // RUN: %clang -### %s 2>&1 \ 22 // RUN: --target=x86_64-unknown-linux -fprofile-instr-generate -nostdlib -fuse-ld=ld \ 23 // RUN: -resource-dir=%S/Inputs/resource_dir \ 24 // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 25 // RUN: | FileCheck --check-prefix=CHECK-LINUX-NOSTDLIB-X86-64 %s 26 // 27 // CHECK-LINUX-NOSTDLIB-X86-64: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 28 // CHECK-LINUX-NOSTDLIB-X86-64: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{.*}}linux{{.*}}libclang_rt.profile.a" 29 // 30 // RUN: %clang -### %s 2>&1 \ 31 // RUN: --target=x86_64-unknown-freebsd -fprofile-instr-generate -fuse-ld=ld \ 32 // RUN: -resource-dir=%S/Inputs/resource_dir \ 33 // RUN: --sysroot=%S/Inputs/basic_freebsd64_tree \ 34 // RUN: | FileCheck --check-prefix=CHECK-FREEBSD-X86-64 %s 35 // 36 // CHECK-FREEBSD-X86-64: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 37 // CHECK-FREEBSD-X86-64: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-freebsd{{/|\\\\}}libclang_rt.profile.a" 38 // 39 // RUN: %clang -### %s 2>&1 \ 40 // RUN: --target=x86_64-unknown-netbsd -fprofile-instr-generate -fuse-ld=ld \ 41 // RUN: -resource-dir=%S/Inputs/resource_dir \ 42 // RUN: --sysroot=%S/Inputs/basic_netbsd_tree \ 43 // RUN: | FileCheck --check-prefix=CHECK-NETBSD-X86-64 %s 44 45 // CHECK-NETBSD-X86-64: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 46 // CHECK-NETBSD-X86-64: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-netbsd{{/|\\\\}}libclang_rt.profile.a" 47 48 // RUN: %clang -### %s 2>&1 \ 49 // RUN: --target=x86_64-unknown-openbsd -fprofile-instr-generate -fuse-ld=ld \ 50 // RUN: -resource-dir=%S/Inputs/resource_dir \ 51 // RUN: --sysroot=%S/Inputs/basic_openbsd_tree \ 52 // RUN: | FileCheck --check-prefix=CHECK-OPENBSD-X86-64 %s 53 54 // CHECK-OPENBSD-X86-64: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 55 // CHECK-OPENBSD-X86-64: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-openbsd{{/|\\\\}}libclang_rt.profile.a" 56 57 // RUN: %clang -### %s 2>&1 \ 58 // RUN: -shared \ 59 // RUN: --target=i386-unknown-linux -fprofile-instr-generate -fuse-ld=ld \ 60 // RUN: -resource-dir=%S/Inputs/resource_dir \ 61 // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 62 // RUN: | FileCheck --check-prefix=CHECK-LINUX-I386-SHARED %s 63 // 64 // CHECK-LINUX-I386-SHARED: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 65 // CHECK-LINUX-I386-SHARED: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{.*}}i386-unknown-linux{{.*}}libclang_rt.profile.a" {{.*}} "-lc" 66 // 67 // RUN: %clang -### %s 2>&1 \ 68 // RUN: -shared \ 69 // RUN: --target=x86_64-unknown-linux -fprofile-instr-generate -fuse-ld=ld \ 70 // RUN: -resource-dir=%S/Inputs/resource_dir \ 71 // RUN: --sysroot=%S/Inputs/basic_linux_tree \ 72 // RUN: | FileCheck --check-prefix=CHECK-LINUX-X86-64-SHARED %s 73 // 74 // CHECK-LINUX-X86-64-SHARED: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 75 // CHECK-LINUX-X86-64-SHARED: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{.*}}x86_64-unknown-linux{{.*}}libclang_rt.profile.a" {{.*}} "-lc" 76 // 77 // RUN: %clang -### %s 2>&1 \ 78 // RUN: -shared \ 79 // RUN: --target=x86_64-unknown-freebsd -fprofile-instr-generate -fuse-ld=ld \ 80 // RUN: -resource-dir=%S/Inputs/resource_dir \ 81 // RUN: --sysroot=%S/Inputs/basic_freebsd64_tree \ 82 // RUN: | FileCheck --check-prefix=CHECK-FREEBSD-X86-64-SHARED %s 83 // 84 // CHECK-FREEBSD-X86-64-SHARED: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 85 // CHECK-FREEBSD-X86-64-SHARED: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-freebsd{{/|\\\\}}libclang_rt.profile.a" 86 // 87 // RUN: %clang -### %s 2>&1 \ 88 // RUN: -shared \ 89 // RUN: --target=x86_64-unknown-netbsd -fprofile-instr-generate -fuse-ld=ld \ 90 // RUN: -resource-dir=%S/Inputs/resource_dir \ 91 // RUN: --sysroot=%S/Inputs/basic_netbsd_tree \ 92 // RUN: | FileCheck --check-prefix=CHECK-NETBSD-X86-64-SHARED %s 93 94 // CHECK-NETBSD-X86-64-SHARED: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 95 // CHECK-NETBSD-X86-64-SHARED: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-netbsd{{/|\\\\}}libclang_rt.profile.a" 96 97 // RUN: %clang -### %s 2>&1 \ 98 // RUN: -shared \ 99 // RUN: --target=x86_64-unknown-openbsd -fprofile-instr-generate -fuse-ld=ld \ 100 // RUN: -resource-dir=%S/Inputs/resource_dir \ 101 // RUN: --sysroot=%S/Inputs/basic_openbsd_tree \ 102 // RUN: | FileCheck --check-prefix=CHECK-OPENBSD-X86-64-SHARED %s 103 104 // CHECK-OPENBSD-X86-64-SHARED: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 105 // CHECK-OPENBSD-X86-64-SHARED: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-openbsd{{/|\\\\}}libclang_rt.profile.a" 106 107 // RUN: %clang -### %s 2>&1 \ 108 // RUN: --target=x86_64-apple-darwin14 -fprofile-instr-generate -fuse-ld=ld \ 109 // RUN: -resource-dir=%S/Inputs/resource_dir \ 110 // RUN: | FileCheck --check-prefix=CHECK-DARWIN-X86-64 %s 111 // 112 // CHECK-DARWIN-X86-64: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 113 // CHECK-DARWIN-X86-64: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{/|\\\\}}darwin{{/|\\\\}}libclang_rt.profile_osx.a" 114 // 115 // RUN: %clang -### %s 2>&1 \ 116 // RUN: --target=x86_64-apple-darwin14 -fprofile-instr-generate -nostdlib -fuse-ld=ld \ 117 // RUN: -resource-dir=%S/Inputs/resource_dir \ 118 // RUN: | FileCheck --check-prefix=CHECK-DARWIN-NOSTDLIB-X86-64 %s 119 // 120 // CHECK-DARWIN-NOSTDLIB-X86-64: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 121 // CHECK-DARWIN-NOSTDLIB-X86-64: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{/|\\\\}}darwin{{/|\\\\}}libclang_rt.profile_osx.a" 122 // 123 // RUN: %clang -### %s 2>&1 \ 124 // RUN: --target=arm64-apple-ios -fprofile-instr-generate -fuse-ld=ld \ 125 // RUN: -resource-dir=%S/Inputs/resource_dir \ 126 // RUN: | FileCheck --check-prefix=CHECK-DARWIN-ARM64 %s 127 // 128 // CHECK-DARWIN-ARM64: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 129 // CHECK-DARWIN-ARM64: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{/|\\\\}}darwin{{/|\\\\}}libclang_rt.profile_ios.a" 130 // 131 // RUN: %clang -### %s 2>&1 \ 132 // RUN: --target=armv7-apple-darwin -mtvos-version-min=8.3 -fprofile-instr-generate -fuse-ld=ld \ 133 // RUN: -resource-dir=%S/Inputs/resource_dir \ 134 // RUN: | FileCheck --check-prefix=CHECK-TVOS-ARMV7 %s 135 // 136 // CHECK-TVOS-ARMV7: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 137 // CHECK-TVOS-ARMV7: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{/|\\\\}}darwin{{/|\\\\}}libclang_rt.profile_tvos.a" 138 // 139 // RUN: %clang -### %s 2>&1 \ 140 // RUN: --target=armv7s-apple-darwin10 -mwatchos-version-min=2.0 -arch armv7k -fprofile-instr-generate -fuse-ld=ld \ 141 // RUN: -resource-dir=%S/Inputs/resource_dir \ 142 // RUN: | FileCheck --check-prefix=CHECK-WATCHOS-ARMV7 %s 143 // 144 // CHECK-WATCHOS-ARMV7: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 145 // CHECK-WATCHOS-ARMV7: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{/|\\\\}}darwin{{/|\\\\}}libclang_rt.profile_watchos.a" 146 // 147 // RUN: %clang -### %s 2>&1 \ 148 // RUN: -target x86_64-apple-driverkit19.0 -arch x86_64 -fprofile-instr-generate -fuse-ld=ld \ 149 // RUN: -resource-dir=%S/Inputs/resource_dir \ 150 // RUN: | FileCheck --check-prefix=CHECK-DRIVERKIT-X86_64 %s 151 // 152 // CHECK-DRIVERKIT-X86_64: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 153 // CHECK-DRIVERKIT-X86_64: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{/|\\\\}}darwin{{/|\\\\}}libclang_rt.profile_driverkit.a" 154 // 155 // RUN: %clang -### %s 2>&1 \ 156 // RUN: --target=i386-pc-win32 -fprofile-instr-generate \ 157 // RUN: -resource-dir=%S/Inputs/resource_dir -fuse-ld=link \ 158 // RUN: | FileCheck --check-prefix=CHECK-WINDOWS-I386 %s 159 // 160 // CHECK-WINDOWS-I386: "{{.*}}link{{(.exe)?}}" 161 // CHECK-WINDOWS-I386: "{{.*}}clang_rt.profile{{(-i386)?}}.lib" 162 // 163 // RUN: %clang -### %s 2>&1 \ 164 // RUN: --target=x86_64-pc-win32 -fprofile-instr-generate \ 165 // RUN: -resource-dir=%S/Inputs/resource_dir -fuse-ld=link \ 166 // RUN: | FileCheck --check-prefix=CHECK-WINDOWS-X86-64 %s 167 // 168 // CHECK-WINDOWS-X86-64: "{{.*}}link{{(.exe)?}}" 169 // CHECK-WINDOWS-X86-64: "{{.*}}clang_rt.profile{{(-x86_64)?}}.lib" 170 // 171 // RUN: %clang -### %s 2>&1 \ 172 // RUN: --target=x86_64-mingw32 -fprofile-instr-generate -fuse-ld=ld \ 173 // RUN: -resource-dir=%S/Inputs/resource_dir \ 174 // RUN: | FileCheck --check-prefix=CHECK-MINGW-X86-64 %s 175 // 176 // CHECK-MINGW-X86-64: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}" 177 // CHECK-MINGW-X86-64: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-windows-gnu{{/|\\\\}}libclang_rt.profile.a" 178 179 // Test instrumented profiling dependent-lib flags 180 // 181 // RUN: %clang -### %s --target=x86_64-pc-win32 \ 182 // RUN: -fprofile-instr-generate 2>&1 \ 183 // RUN: | FileCheck --check-prefix=CHECK-WINDOWS-X86-64-DEPENDENT-LIB %s 184 // 185 // CHECK-WINDOWS-X86-64-DEPENDENT-LIB: "--dependent-lib={{[^"]*}}clang_rt.profile{{[^"]*}}.lib" 186 // 187 // RUN: %clang -### %s --target=x86_64-mingw32 \ 188 // RUN: -fprofile-instr-generate 2>&1 \ 189 // RUN: | FileCheck --check-prefix=CHECK-MINGW-X86-64-DEPENDENT-LIB %s 190 // 191 // CHECK-MINGW-X86-64-DEPENDENT-LIB-NOT: "--dependent-lib={{[^"]*}}clang_rt.profile-{{[^"]*}}.a" 192