1 // UNSUPPORTED: system-windows 2 3 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 4 // RUN: -target armv6m-none-eabi \ 5 // RUN: -T semihosted.lds \ 6 // RUN: -L some/directory/user/asked/for \ 7 // RUN: --sysroot=%S/Inputs/baremetal_arm \ 8 // RUN: | FileCheck --check-prefix=CHECK-V6M-C %s 9 // CHECK-V6M-C: "[[PREFIX_DIR:.*]]{{[/\\]+}}{{[^/^\\]+}}{{[/\\]+}}clang{{.*}}" "-cc1" "-triple" "thumbv6m-none-unknown-eabi" 10 // CHECK-V6M-C-SAME: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" 11 // CHECK-V6M-C-SAME: "-isysroot" "[[SYSROOT:[^"]*]]" 12 // CHECK-V6M-C-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1" 13 // CHECk-V6M-C-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include" 14 // CHECK-V6M-C-SAME: "-x" "c++" "{{.*}}baremetal.cpp" 15 // CHECK-V6M-C-NEXT: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic" 16 // CHECK-V6M-C-SAME: "-T" "semihosted.lds" "-Lsome{{[/\\]+}}directory{{[/\\]+}}user{{[/\\]+}}asked{{[/\\]+}}for" 17 // CHECK-V6M-C-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}lib" 18 // CHECK-V6M-C-SAME: "-L[[RESOURCE_DIR:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}baremetal" 19 // CHECK-V6M-C-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m" 20 // CHECK-V6M-C-SAME: "-o" "{{.*}}.o" 21 22 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 23 // RUN: -target armv6m-none-eabi \ 24 // RUN: -nostdlibinc -nobuiltininc \ 25 // RUN: --sysroot=%S/Inputs/baremetal_arm \ 26 // RUN: | FileCheck --check-prefix=CHECK-V6M-LIBINC %s 27 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 28 // RUN: -target armv6m-none-eabi \ 29 // RUN: -nostdinc \ 30 // RUN: --sysroot=%S/Inputs/baremetal_arm \ 31 // RUN: | FileCheck --check-prefix=CHECK-V6M-LIBINC %s 32 // CHECK-V6M-LIBINC-NOT: "-internal-isystem" 33 34 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 35 // RUN: -target armv6m-none-eabi \ 36 // RUN: --sysroot=%S/Inputs/baremetal_arm \ 37 // RUN: | FileCheck --check-prefix=CHECK-V6M-DEFAULTCXX %s 38 // CHECK-V6M-DEFAULTCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" 39 // CHECK-V6M-DEFAULTCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic" 40 // CHECK-V6M-DEFAULTCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm{{[/\\]+}}lib" 41 // CHECK-V6M-DEFAULTCXX-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal" 42 // CHECK-V6M-DEFAULTCXX-SAME: "-lc++" "-lc++abi" "-lunwind" 43 // CHECK-V6M-DEFAULTCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m" 44 // CHECK-V6M-DEFAULTCXX-SAME: "-o" "{{.*}}.o" 45 46 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 47 // RUN: -target armv6m-none-eabi \ 48 // RUN: --sysroot=%S/Inputs/baremetal_arm \ 49 // RUN: -stdlib=libc++ \ 50 // RUN: | FileCheck --check-prefix=CHECK-V6M-LIBCXX %s 51 // CHECK-V6M-LIBCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" 52 // CHECK-V6M-LIBCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}{{[^v].*}}" 53 // CHECK-V6M-LIBCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1" 54 // CHECK-V6M-LIBCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic" 55 // CHECK-V6M-LIBCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm{{[/\\]+}}lib" 56 // CHECK-V6M-LIBCXX-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal" 57 // CHECK-V6M-LIBCXX-SAME: "-lc++" "-lc++abi" "-lunwind" 58 // CHECK-V6M-LIBCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m" 59 // CHECK-V6M-LIBCXX-SAME: "-o" "{{.*}}.o" 60 61 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 62 // RUN: -target armv6m-none-eabi \ 63 // RUN: --sysroot=%S/Inputs/baremetal_arm \ 64 // RUN: -stdlib=libstdc++ \ 65 // RUN: | FileCheck --check-prefix=CHECK-V6M-LIBSTDCXX %s 66 // CHECK-V6M-LIBSTDCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" 67 // CHECK-V6M-LIBSTDCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1" 68 // CHECK-V6M-LIBSTDCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}6.0.0" 69 // CHECK-V6M-LIBSTDCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic" 70 // CHECK-V6M-LIBSTDCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm{{[/\\]+}}lib" 71 // CHECK-V6M-LIBSTDCXX-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal" 72 // CHECK-V6M-LIBSTDCXX-SAME: "-lstdc++" "-lsupc++" "-lunwind" 73 // CHECK-V6M-LIBSTDCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m" 74 // CHECK-V6M-LIBSTDCXX-SAME: "-o" "{{.*}}.o" 75 76 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 77 // RUN: -target armv6m-none-eabi \ 78 // RUN: --sysroot=%S/Inputs/baremetal_arm \ 79 // RUN: -nodefaultlibs \ 80 // RUN: | FileCheck --check-prefix=CHECK-V6M-NDL %s 81 // CHECK-V6M-NDL: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" 82 // CHECK-V6M-NDL: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic" 83 // CHECK-V6M-NDL-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm{{[/\\]+}}lib" 84 // CHECK-V6M-NDL-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal" 85 // CHECK-V6M-NDL-SAME: "-o" "{{.*}}.o" 86 87 // RUN: %clangxx -target arm-none-eabi -v 2>&1 \ 88 // RUN: | FileCheck %s --check-prefix=CHECK-THREAD-MODEL 89 // CHECK-THREAD-MODEL: Thread model: posix 90 91 // RUN: %clangxx -target arm-none-eabi -mthread-model single -v 2>&1 \ 92 // RUN: | FileCheck %s --check-prefix=CHECK-THREAD-MODEL-SINGLE 93 // CHECK-THREAD-MODEL-SINGLE: Thread model: single 94 95 // RUN: %clangxx -target arm-none-eabi -mthread-model posix -v 2>&1 \ 96 // RUN: | FileCheck %s --check-prefix=CHECK-THREAD-MODEL-POSIX 97 // CHECK-THREAD-MODEL-POSIX: Thread model: posix 98 99 // RUN: %clang -### -target arm-none-eabi -rtlib=libgcc -v %s 2>&1 \ 100 // RUN: | FileCheck %s --check-prefix=CHECK-RTLIB-GCC 101 // CHECK-RTLIB-GCC: -lgcc 102 103 // RUN: %clang -### -target arm-none-eabi -v %s 2>&1 \ 104 // RUN: | FileCheck %s --check-prefix=CHECK-SYSROOT-INC 105 // CHECK-SYSROOT-INC-NOT: "-internal-isystem" "include" 106 107 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 108 // RUN: -target aarch64-none-elf \ 109 // RUN: | FileCheck --check-prefix=CHECK-AARCH64-NO-HOST-INC %s 110 // Verify that the bare metal driver does not include any host system paths: 111 // CHECK-AARCH64-NO-HOST-INC: InstalledDir: [[INSTALLEDDIR:.+]] 112 // CHECK-AARCH64-NO-HOST-INC: "-resource-dir" "[[RESOURCE:[^"]+]]" 113 // CHECK-AARCH64-NO-HOST-INC-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+}}aarch64-none-elf{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1" 114 // CHECK-AARCH64-NO-HOST-INC-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include" 115 // CHECK-AARCH64-NO-HOST-INC-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+}}aarch64-none-elf{{[/\\]+}}include" 116 117 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 118 // RUN: -target riscv64-unknown-elf \ 119 // RUN: -L some/directory/user/asked/for \ 120 // RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \ 121 // RUN: | FileCheck --check-prefix=CHECK-RV64 %s 122 // CHECK-RV64: "[[PREFIX_DIR:.*]]{{[/\\]+}}{{[^/^\\]+}}{{[/\\]+}}clang{{.*}}" "-cc1" "-triple" "riscv64-unknown-unknown-elf" 123 // CHECK-RV64-SAME: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" 124 // CHECK-RV64-SAME: "-isysroot" "[[SYSROOT:[^"]*]]" 125 // CHECK-RV64-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1" 126 // CHECk-RV64-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include" 127 // CHECK-RV64-SAME: "-x" "c++" "{{.*}}baremetal.cpp" 128 // CHECK-RV64-NEXT: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic" 129 // CHECK-RV64-SAME: "-Lsome{{[/\\]+}}directory{{[/\\]+}}user{{[/\\]+}}asked{{[/\\]+}}for" 130 // CHECK-RV64-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}lib" 131 // CHECK-RV64-SAME: "-L[[RESOURCE_DIR:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}baremetal" 132 // CHECK-RV64-SAME: "-lc" "-lm" "-lclang_rt.builtins-riscv64" 133 // CHECK-RV64-SAME: "-o" "{{.*}}.o" 134 135 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 136 // RUN: -target riscv64-unknown-elf \ 137 // RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \ 138 // RUN: | FileCheck --check-prefix=CHECK-RV64-DEFAULTCXX %s 139 // CHECK-RV64-DEFAULTCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" 140 // CHECK-RV64-DEFAULTCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic" 141 // CHECK-RV64-DEFAULTCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf{{[/\\]+}}lib" 142 // CHECK-RV64-DEFAULTCXX-SAME: "-L[[RESOURCE_DIR]]{{.*}}{{[/\\]+}}lib{{[/\\]+}}baremetal" 143 // CHECK-RV64-DEFAULTCXX-SAME: "-lc++" "-lc++abi" "-lunwind" 144 // CHECK-RV64-DEFAULTCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-riscv64" 145 // CHECK-RV64-DEFAULTCXX-SAME: "-o" "{{.*}}.o" 146 147 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 148 // RUN: -target riscv64-unknown-elf \ 149 // RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \ 150 // RUN: -stdlib=libc++ \ 151 // RUN: | FileCheck --check-prefix=CHECK-RV64-LIBCXX %s 152 // CHECK-RV64-LIBCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" 153 // CHECK-RV64-LIBCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}{{[^v].*}}" 154 // CHECK-RV64-LIBCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1" 155 // CHECK-RV64-LIBCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic" 156 // CHECK-RV64-LIBCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf{{[/\\]+}}lib" 157 // CHECK-RV64-LIBCXX-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal" 158 // CHECK-RV64-LIBCXX-SAME: "-lc++" "-lc++abi" "-lunwind" 159 // CHECK-RV64-LIBCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-riscv64" 160 // CHECK-RV64-LIBCXX-SAME: "-o" "{{.*}}.o" 161 162 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 163 // RUN: -target riscv64-unknown-elf \ 164 // RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \ 165 // RUN: -stdlib=libstdc++ \ 166 // RUN: | FileCheck --check-prefix=CHECK-RV64-LIBSTDCXX %s 167 // CHECK-RV64-LIBSTDCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" 168 // CHECK-RV64-LIBSTDCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1" 169 // CHECK-RV64-LIBSTDCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}8.0.1" 170 // CHECK-RV64-LIBSTDCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic" 171 // CHECK-RV64-LIBSTDCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf{{[/\\]+}}lib" 172 // CHECK-RV64-LIBSTDCXX-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal" 173 // CHECK-RV64-LIBSTDCXX-SAME: "-lstdc++" "-lsupc++" "-lunwind" 174 // CHECK-RV64-LIBSTDCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-riscv64" 175 // CHECK-RV64-LIBSTDCXX-SAME: "-o" "{{.*}}.o" 176 177 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 178 // RUN: -target riscv32-unknown-elf \ 179 // RUN: -L some/directory/user/asked/for \ 180 // RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \ 181 // RUN: | FileCheck --check-prefix=CHECK-RV32 %s 182 // CHECK-RV32: "[[PREFIX_DIR:.*]]{{[/\\]+}}{{[^/^\\]+}}{{[/\\]+}}clang{{.*}}" "-cc1" "-triple" "riscv32-unknown-unknown-elf" 183 // CHECK-RV32-SAME: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" 184 // CHECK-RV32-SAME: "-isysroot" "[[SYSROOT:[^"]*]]" 185 // CHECK-RV32-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1" 186 // CHECK-RV32-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include" 187 // CHECK-RV32-SAME: "-x" "c++" "{{.*}}baremetal.cpp" 188 // CHECK-RV32-NEXT: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic" 189 // CHECK-RV32-SAME: "-Lsome{{[/\\]+}}directory{{[/\\]+}}user{{[/\\]+}}asked{{[/\\]+}}for" 190 // CHECK-RV32-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}lib" 191 // CHECK-RV32-SAME: "-L[[RESOURCE_DIR:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}baremetal" 192 // CHECK-RV32-SAME: "-lc" "-lm" "-lclang_rt.builtins-riscv32" 193 // CHECK-RV32-SAME: "-o" "{{.*}}.o" 194 195 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 196 // RUN: -target riscv32-unknown-elf \ 197 // RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \ 198 // RUN: | FileCheck --check-prefix=CHECK-RV32-DEFAULTCXX %s 199 // CHECK-RV32-DEFAULTCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" 200 // CHECK-RV32-DEFAULTCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic" 201 // CHECK-RV32-DEFAULTCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf{{[/\\]+}}lib" 202 // CHECK-RV32-DEFAULTCXX-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal" 203 // CHECK-RV32-DEFAULTCXX-SAME: "-lc++" "-lc++abi" "-lunwind" 204 // CHECK-RV32-DEFAULTCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-riscv32" 205 // CHECK-RV32-DEFAULTCXX-SAME: "-o" "{{.*}}.o" 206 207 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 208 // RUN: -target riscv32-unknown-elf \ 209 // RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \ 210 // RUN: -stdlib=libc++ \ 211 // RUN: | FileCheck --check-prefix=CHECK-RV32-LIBCXX %s 212 // CHECK-RV32-LIBCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" 213 // CHECK-RV32-LIBCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}{{[^v].*}}" 214 // CHECK-RV32-LIBCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1" 215 // CHECK-RV32-LIBCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic" 216 // CHECK-RV32-LIBCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf{{[/\\]+}}lib" 217 // CHECK-RV32-LIBCXX-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal" 218 // CHECK-RV32-LIBCXX-SAME: "-lc++" "-lc++abi" "-lunwind" 219 // CHECK-RV32-LIBCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-riscv32" 220 // CHECK-RV32-LIBCXX-SAME: "-o" "{{.*}}.o" 221 222 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 223 // RUN: -target riscv32-unknown-elf \ 224 // RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \ 225 // RUN: -stdlib=libstdc++ \ 226 // RUN: | FileCheck --check-prefix=CHECK-RV32-LIBSTDCXX %s 227 // CHECK-RV32-LIBSTDCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" 228 // CHECK-RV32-LIBSTDCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1" 229 // CHECK-RV32-LIBSTDCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}8.0.1" 230 // CHECK-RV32-LIBSTDCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic" 231 // CHECK-RV32-LIBSTDCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf{{[/\\]+}}lib" 232 // CHECK-RV32-LIBSTDCXX-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal" 233 // CHECK-RV32-LIBSTDCXX-SAME: "-lstdc++" "-lsupc++" "-lunwind" 234 // CHECK-RV32-LIBSTDCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-riscv32" 235 // CHECK-RV32-LIBSTDCXX-SAME: "-o" "{{.*}}.o" 236 237 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 238 // RUN: -target riscv64-unknown-elf \ 239 // RUN: -nostdlibinc -nobuiltininc \ 240 // RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \ 241 // RUN: | FileCheck --check-prefix=CHECK-RV64-LIBINC %s 242 243 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 244 // RUN: -target riscv64-unknown-elf \ 245 // RUN: -nostdinc \ 246 // RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \ 247 // RUN: | FileCheck --check-prefix=CHECK-RV64-LIBINC %s 248 // CHECK-RV64-LIBINC-NOT: "-internal-isystem" 249 250 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 251 // RUN: -target riscv64-unknown-elf \ 252 // RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \ 253 // RUN: -nodefaultlibs \ 254 // RUN: | FileCheck --check-prefix=CHECK-RV64-NDL %s 255 // CHECK-RV64-NDL: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" 256 // CHECK-RV64-NDL: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic" 257 // CHECK-RV64-NDL-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf{{[/\\]+}}lib" 258 // CHECK-RV64-NDL-SAME: "-L[[RESOURCE_DIR]]{{[/\\]+}}lib{{[/\\]+}}baremetal" 259 // CHECK-RV64-NDL-SAME: "-o" "{{.*}}.o" 260 261 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 262 // RUN: -target riscv64-unknown-elf \ 263 // RUN: -march=rv64imafdc -mabi=lp64d \ 264 // RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \ 265 // RUN: | FileCheck --check-prefix=CHECK-RV64FD %s 266 267 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 268 // RUN: -target riscv64-unknown-elf \ 269 // RUN: -march=rv64gc -mabi=lp64d \ 270 // RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \ 271 // RUN: | FileCheck --check-prefix=CHECK-RV64FD %s 272 273 // CHECK-RV64FD: "[[PREFIX_DIR:.*]]{{[/\\]+}}{{[^/^\\]+}}{{[/\\]+}}clang{{.*}}" "-cc1" "-triple" "riscv64-unknown-unknown-elf" 274 // CHECK-RV64FD-SAME: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" 275 // CHECK-RV64FD-SAME: "-isysroot" "[[SYSROOT:[^"]*]]" 276 // CHECK-RV64FD-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv64imafdc{{[/\\]+}}lp64d{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1" 277 // CHECk-RV64FD-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv64imafdc{{[/\\]+}}lp64d{{[/\\]+}}include" 278 // CHECK-RV64FD-SAME: "-x" "c++" "{{.*}}baremetal.cpp" 279 // CHECK-RV64FD-NEXT: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic" 280 // CHECK-RV64FD-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}rv64imafdc{{[/\\]+}}lp64d{{[/\\]+}}lib" 281 // CHECK-RV64FD-SAME: "-L[[RESOURCE_DIR:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}baremetal{{[/\\]+}}rv64imafdc{{[/\\]+}}lp64d" 282 283 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 284 // RUN: -target riscv32-unknown-elf \ 285 // RUN: -march=rv32i -mabi=ilp32 \ 286 // RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \ 287 // RUN: | FileCheck --check-prefix=CHECK-RV32I %s 288 289 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 290 // RUN: -target riscv32-unknown-elf \ 291 // RUN: -march=rv32ic -mabi=ilp32 \ 292 // RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \ 293 // RUN: | FileCheck --check-prefix=CHECK-RV32I %s 294 295 // CHECK-RV32I: "[[PREFIX_DIR:.*]]{{[/\\]+}}{{[^/^\\]+}}{{[/\\]+}}clang{{.*}}" "-cc1" "-triple" "riscv32-unknown-unknown-elf" 296 // CHECK-RV32I-SAME: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" 297 // CHECK-RV32I-SAME: "-isysroot" "[[SYSROOT:[^"]*]]" 298 // CHECK-RV32I-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32i{{[/\\]+}}ilp32{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1" 299 // CHECK-RV32I-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32i{{[/\\]+}}ilp32{{[/\\]+}}include" 300 // CHECK-RV32I-SAME: "-x" "c++" "{{.*}}baremetal.cpp" 301 // CHECK-RV32I-NEXT: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic" 302 // CHECK-RV32I-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}rv32i{{[/\\]+}}ilp32{{[/\\]+}}lib" 303 // CHECK-RV32I-SAME: "-L[[RESOURCE_DIR:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}baremetal{{[/\\]+}}rv32i{{[/\\]+}}ilp32" 304 305 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 306 // RUN: -target riscv32-unknown-elf \ 307 // RUN: -march=rv32im -mabi=ilp32 \ 308 // RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \ 309 // RUN: | FileCheck --check-prefix=CHECK-RV32IM %s 310 311 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 312 // RUN: -target riscv32-unknown-elf \ 313 // RUN: -march=rv32imc -mabi=ilp32 \ 314 // RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \ 315 // RUN: | FileCheck --check-prefix=CHECK-RV32IM %s 316 317 // CHECK-RV32IM: "[[PREFIX_DIR:.*]]{{[/\\]+}}{{[^/^\\]+}}{{[/\\]+}}clang{{.*}}" "-cc1" "-triple" "riscv32-unknown-unknown-elf" 318 // CHECK-RV32IM-SAME: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" 319 // CHECK-RV32IM-SAME: "-isysroot" "[[SYSROOT:[^"]*]]" 320 // CHECK-RV32IM-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32im{{[/\\]+}}ilp32{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1" 321 // CHECK-RV32IM-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32im{{[/\\]+}}ilp32{{[/\\]+}}include" 322 // CHECK-RV32IM-SAME: "-x" "c++" "{{.*}}baremetal.cpp" 323 // CHECK-RV32IM-NEXT: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic" 324 // CHECK-RV32IM-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}rv32im{{[/\\]+}}ilp32{{[/\\]+}}lib" 325 // CHECK-RV32IM-SAME: "-L[[RESOURCE_DIR:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}baremetal{{[/\\]+}}rv32im{{[/\\]+}}ilp32" 326 327 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 328 // RUN: -target riscv32-unknown-elf \ 329 // RUN: -march=rv32iac -mabi=ilp32 \ 330 // RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \ 331 // RUN: | FileCheck --check-prefix=CHECK-RV32IAC %s 332 333 // CHECK-RV32IAC: "[[PREFIX_DIR:.*]]{{[/\\]+}}{{[^/^\\]+}}{{[/\\]+}}clang{{.*}}" "-cc1" "-triple" "riscv32-unknown-unknown-elf" 334 // CHECK-RV32IAC-SAME: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" 335 // CHECK-RV32IAC-SAME: "-isysroot" "[[SYSROOT:[^"]*]]" 336 // CHECK-RV32IAC-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32iac{{[/\\]+}}ilp32{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1" 337 // CHECK-RV32IAC-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32iac{{[/\\]+}}ilp32{{[/\\]+}}include" 338 // CHECK-RV32IAC-SAME: "-x" "c++" "{{.*}}baremetal.cpp" 339 // CHECK-RV32IAC-NEXT: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic" 340 // CHECK-RV32IAC-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}rv32iac{{[/\\]+}}ilp32{{[/\\]+}}lib" 341 // CHECK-RV32IAC-SAME: "-L[[RESOURCE_DIR:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}baremetal{{[/\\]+}}rv32iac{{[/\\]+}}ilp32" 342 343 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 344 // RUN: -target riscv32-unknown-elf \ 345 // RUN: -march=rv32imafc -mabi=ilp32f \ 346 // RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \ 347 // RUN: | FileCheck --check-prefix=CHECK-RV32IMAFC %s 348 349 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 350 // RUN: -target riscv32-unknown-elf \ 351 // RUN: -march=rv32imafdc -mabi=ilp32f \ 352 // RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \ 353 // RUN: | FileCheck --check-prefix=CHECK-RV32IMAFC %s 354 355 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ 356 // RUN: -target riscv32-unknown-elf \ 357 // RUN: -march=rv32gc -mabi=ilp32f \ 358 // RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \ 359 // RUN: | FileCheck --check-prefix=CHECK-RV32IMAFC %s 360 361 // CHECK-RV32IMAFC: "[[PREFIX_DIR:.*]]{{[/\\]+}}{{[^/^\\]+}}{{[/\\]+}}clang{{.*}}" "-cc1" "-triple" "riscv32-unknown-unknown-elf" 362 // CHECK-RV32IMAFC-SAME: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" 363 // CHECK-RV32IMAFC-SAME: "-isysroot" "[[SYSROOT:[^"]*]]" 364 // CHECK-RV32IMAFC-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32imafc{{[/\\]+}}ilp32f{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1" 365 // CHECK-RV32IMAFC-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32imafc{{[/\\]+}}ilp32f{{[/\\]+}}include" 366 // CHECK-RV32IMAFC-SAME: "-x" "c++" "{{.*}}baremetal.cpp" 367 // CHECK-RV32IMAFC-NEXT: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic" 368 // CHECK-RV32IMAFC-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}rv32imafc{{[/\\]+}}ilp32f{{[/\\]+}}lib" 369 // CHECK-RV32IMAFC-SAME: "-L[[RESOURCE_DIR:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}baremetal{{[/\\]+}}rv32imafc{{[/\\]+}}ilp32f" 370