604 lines · cpp
1// UNSUPPORTED: system-windows2 3// RUN: %clang -### %s --target=armv6-none-eabi --emit-static-lib 2>&1 \4// RUN: | FileCheck -check-prefixes=CHECK-STATIC-LIB %s5// CHECK-STATIC-LIB: {{.*}}llvm-ar{{.*}}" "rcsD"6 7// RUN: %clang %s -### --target=armv6m-none-eabi -o %t.out 2>&1 \8// RUN: -T semihosted.lds \9// RUN: -L some/directory/user/asked/for \10// RUN: --sysroot=%S/Inputs/baremetal_arm \11// RUN: | FileCheck --check-prefix=CHECK-V6M-C %s12// CHECK-V6M-C: "-cc1" "-triple" "thumbv6m-unknown-none-eabi"13// CHECK-V6M-C-SAME: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"14// CHECK-V6M-C-SAME: "-isysroot" "[[SYSROOT:[^"]*]]"15// CHECK-V6M-C-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"16// CHECK-V6M-C-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include"17// CHECK-V6M-C-SAME: "-x" "c++" "{{.*}}baremetal.cpp"18// CHECK-V6M-C-NEXT: ld{{(.exe)?}}"19// CHECK-V6M-C-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm"20// CHECK-V6M-C-SAME: "-Bstatic" "-m" "armelf" "-EL"21// CHECK-V6M-C-SAME: "[[SYSROOT:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}crt0.o"22// CHECK-V6M-C-SAME: "-T" "semihosted.lds" "-Lsome{{[/\\]+}}directory{{[/\\]+}}user{{[/\\]+}}asked{{[/\\]+}}for"23// CHECK-V6M-C-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}lib"24// CHECK-V6M-C-SAME: "{{.*}}.o"25// CHECK-V6M-C-SAME: {{[^"]*}}libclang_rt.builtins.a"26// CHECK-V6M-C-SAME: "-lc"27// CHECK-V6M-C-SAME: "--target2=rel" "-o" "{{.*}}.tmp.out"28 29// RUN: %clang %s -### --target=armv6m-none-eabi -nostdlibinc -nobuiltininc 2>&1 \30// RUN: --sysroot=%S/Inputs/baremetal_arm | FileCheck --check-prefix=CHECK-V6M-LIBINC %s31// RUN: %clang %s -### --target=armv6m-none-eabi -nostdinc 2>&1 \32// RUN: --sysroot=%S/Inputs/baremetal_arm | FileCheck --check-prefix=CHECK-V6M-LIBINC %s33// CHECK-V6M-LIBINC-NOT: "-internal-isystem"34 35// RUN: %clang %s -### --target=armv6m-none-eabi -o %t.out 2>&1 \36// RUN: -ccc-install-dir %S/Inputs/basic_baremetal_tree/bin \37// RUN: | FileCheck --check-prefix=CHECK-V6M-TREE %s38// CHECK-V6M-TREE: InstalledDir: [[INSTALLED_DIR:.+]]39// CHECK-V6M-TREE: "-cc1" "-triple" "thumbv6m-unknown-none-eabi"40// CHECK-V6M-TREE-SAME: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"41// CHECK-V6M-TREE-SAME: "-internal-isystem" "[[INSTALLED_DIR]]{{[/\\]+}}..{{[/\\]+}}include{{[/\\]+}}armv6m-unknown-none-eabi{{[/\\]+}}c++{{[/\\]+}}v1"42// CHECK-V6M-TREE-SAME: {{^}} "-internal-isystem" "[[INSTALLED_DIR]]{{[/\\]+}}..{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"43// CHECK-V6M-TREE-SAME: "-internal-isystem" "[[INSTALLED_DIR]]{{[/\\]+}}..{{[/\\]+}}include{{[/\\]+}}armv6m-unknown-none-eabi"44// CHECK-V6M-TREE-SAME: "-x" "c++" "{{.*}}baremetal.cpp"45// CHECK-V6M-TREE-NEXT: ld{{(.exe)?}}"46// CHECK-V6M-TREE-SAME: "-Bstatic" "-m" "armelf" "-EL"47// CHECK-V6M-TREE-SAME: "[[INSTALLED_DIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}armv6m-unknown-none-eabi{{[/\\]+}}crt0.o"48// CHECK-V6M-TREE-SAME: "-L[[INSTALLED_DIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}armv6m-unknown-none-eabi"49// CHECK-V6M-TREE-SAME "{{.*}}.o"50// CHECK-V6M-TREE-SAME: "{{[^"]*}}libclang_rt.builtins.a"51// CHECK-V6M-TREE-SAME: "-lc"52// CHECK-V6M-TREE-SAME: "--target2=rel" "-o" "{{.*}}.tmp.out"53 54// RUN: %clang %s -### --target=armv7m-vendor-none-eabi -rtlib=compiler-rt 2>&1 \55// RUN: --sysroot=%S/Inputs/baremetal_arm \56// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \57// RUN: | FileCheck --check-prefix=CHECK-ARMV7M-PER-TARGET %s58// CHECK-ARMV7M-PER-TARGET: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"59// CHECK-ARMV7M-PER-TARGET: "-isysroot" "[[SYSROOT:[^"]*]]"60// CHECK-ARMV7M-PER-TARGET: "-x" "c++" "{{.*}}baremetal.cpp"61// CHECK-ARMV7M-PER-TARGET: ld{{(.exe)?}}"62// CHECK-ARMV7M-PER-TARGET: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm"63// CHECK-ARMV7M-PER-TARGET: "-Bstatic" "-m" "armelf" "-EL"64// CHECK-ARMV7M-PER_TARGET: "[[SYSROOT:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}crt0.o"65// CHECK-ARMV7M-PER-TARGET: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}lib"66// CHECK-ARMV7M-PER-TARGET: "-L[[RESOURCE_DIR:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}armv7m-vendor-none-eabi67// CHECK-ARMV7M-PER-TARGET: "{{.*}}.o"68// CHECK-ARMV7M-PER-TARGET: "{{[^"]*}}libclang_rt.builtins.a"69// CHECK-ARMV7M-PER-TARGET: "-lc"70 71// RUN: %clangxx %s -### --target=armv6m-none-eabi 2>&1 \72// RUN: --sysroot=%S/Inputs/baremetal_arm | FileCheck --check-prefix=CHECK-V6M-DEFAULTCXX %s73// CHECK-V6M-DEFAULTCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"74// CHECK-V6M-DEFAULTCXX: ld{{(.exe)?}}"75// CHECK-V6M-DEFAULTCXX: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm"76// CHECK-V6M-DEFAULTCXX: "-Bstatic" "-m" "armelf" "-EL"77// CHECK-V6M-DEFAULTCXX-SAME: "[[SYSROOT:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}crt0.o"78// CHECK-V6M-DEFAULTCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm{{[/\\]+}}lib"79// CHECK-V6M-DEFAULTCXX-SAME: "{{.*}}.o"80// CHECK-V6M-DEFAULTCXX-SAME: "-lc++"81// CHECK-V6M-DEFAULTCXX-SAME: "-lm"82// CHECK-V6M-DEFAULTCXX-SAME: "{{[^"]*}}libclang_rt.builtins.a"83// CHECK-V6M-DEFAULTCXX-SAME: "-lc"84// CHECK-V6M-DEFAULTCXX-SAME: "--target2=rel" "-o" "a.out"85 86// RUN: %clangxx %s -### --target=armv6m-none-eabi -stdlib=libc++ 2>&1 \87// RUN: --sysroot=%S/Inputs/baremetal_arm | FileCheck --check-prefix=CHECK-V6M-LIBCXX %s88// CHECK-V6M-LIBCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"89// CHECK-V6M-LIBCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}{{[^v].*}}"90// CHECK-V6M-LIBCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"91// CHECK-V6M-LIBCXX: ld{{(.exe)?}}"92// CHECK-V6M-LIBCXX-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm"93// CHECK-V6M-LIBCXX-SAME: "-Bstatic" "-m" "armelf" "-EL"94// CHECK-V6M-LIBCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm{{[/\\]+}}lib"95// CHECK-V6M-LIBCXX-SAME: "{{.*}}.o"96// CHECK-V6M-LIBCXX-SAME: "-lc++"97// CHECK-V6M-LIBCXX-SAME: "-lm"98// CHECK-V6M-LIBCXX-SAME: "{{[^"]*}}libclang_rt.builtins.a"99// CHECK-V6M-LIBCXX-SAME: "-lc"100// CHECK-V6M-LIBCXX-SAME: "--target2=rel" "-o" "a.out"101 102// RUN: %clangxx %s -### --target=armv6m-none-eabi 2>&1 \103// RUN: --sysroot=%S/Inputs/baremetal_arm \104// RUN: -stdlib=libstdc++ \105// RUN: | FileCheck --check-prefix=CHECK-V6M-LIBSTDCXX %s106// CHECK-V6M-LIBSTDCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"107// CHECK-V6M-LIBSTDCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"108// CHECK-V6M-LIBSTDCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}6.0.0"109// CHECK-V6M-LIBSTDCXX: ld{{(.exe)?}}"110// CHECK-V6M-LIBSTDCXX-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm"111// CHECK-V6M-LIBSTDCXX-SAME: "-Bstatic" "-m" "armelf" "-EL"112// CHECK-V6M-LIBSTDCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm{{[/\\]+}}lib"113// CHECK-V6M-LIBSTDCXX-SAME: "{{.*}}.o"114// CHECK-V6M-LIBSTDCXX-SAME: "-lstdc++" "-lm"115// CHECK-V6M-LIBSTDCXX-SAME: "{{[^"]*}}libclang_rt.builtins.a"116// CHECK-V6M-LIBSTDCXX-SAME: "-lc"117// CHECK-V6M-LIBSTDCXX-SAME: "--target2=rel" "-o" "a.out"118 119// RUN: %clangxx %s -### --target=armv6m-none-eabi 2>&1 \120// RUN: --sysroot=%S/Inputs/baremetal_arm \121// RUN: -nodefaultlibs \122// RUN: | FileCheck --check-prefix=CHECK-V6M-NDL %s123// CHECK-V6M-NDL: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"124// CHECK-V6M-NDL: ld{{(.exe)?}}"125// CHECK-V6M-NDL: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm"126// CHECK-V6M-NDL: "-Bstatic" "-m" "armelf" "-EL"127// CHECK-V6M-NDL-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm{{[/\\]+}}lib"128 129// RUN: rm -rf %t.dir/baremetal_cxx_sysroot130// RUN: mkdir -p %t.dir/baremetal_cxx_sysroot/usr/include/c++/v1131// RUN: %clangxx %s -### 2>&1 \132// RUN: --target=armv6m-none-eabi \133// RUN: --sysroot=%t.dir/baremetal_cxx_sysroot \134// RUN: -stdlib=libc++ \135// RUN: | FileCheck --check-prefix=CHECK-V6M-LIBCXX-USR %s136// CHECK-V6M-LIBCXX-USR: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"137// CHECK-V6M-LIBCXX-USR-NOT: "-internal-isystem" "{{[^"]+}}baremetal_cxx_sysroot{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}{{[^v].*}}"138// CHECK-V6M-LIBCXX-USR-SAME: "-internal-isystem" "{{[^"]+}}baremetal_cxx_sysroot{{[/\\]+}}usr{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"139// CHECK-V6M-LIBCXX-USR: "{{[^"]*}}-Bstatic"140// CHECK-V6M-LIBCXX-USR-SAME: "-L{{[^"]*}}{{[/\\]+}}baremetal_cxx_sysroot{{[/\\]+}}lib"141// CHECK-V6M-LIBCXX-USR: "{{.*}}.o"142// CHECK-V6M-LIBCXX-USR-SAME: "-lc++" "-lm"143// CHECK-V6M-LIBCXX-USR-SAME: "{{[^"]*}}libclang_rt.builtins.a"144// CHECK-V6M-LIBCXX-USR-SAME: "-lc"145 146// RUN: %clangxx --target=arm-none-eabi -v 2>&1 \147// RUN: | FileCheck %s --check-prefix=CHECK-THREAD-MODEL148// CHECK-THREAD-MODEL: Thread model: posix149 150// RUN: %clangxx --target=arm-none-eabi -mthread-model single -v 2>&1 \151// RUN: | FileCheck %s --check-prefix=CHECK-THREAD-MODEL-SINGLE152// CHECK-THREAD-MODEL-SINGLE: Thread model: single153 154// RUN: %clangxx --target=arm-none-eabi -mthread-model posix -v 2>&1 \155// RUN: | FileCheck %s --check-prefix=CHECK-THREAD-MODEL-POSIX156// CHECK-THREAD-MODEL-POSIX: Thread model: posix157 158// RUN: %clangxx -### --target=arm-none-eabi -nostartfiles -v %s 2>&1 \159// RUN: | FileCheck %s --check-prefix=CHECK-NOSTARTFILES160// CHECK-NOSTARTFILES-NOT: "crt0.o"161 162// RUN: %clang -### --target=arm-none-eabi -rtlib=libgcc --unwindlib=libgcc -v %s 2>&1 \163// RUN: | FileCheck %s --check-prefix=CHECK-RTLIB-GCC164// CHECK-RTLIB-GCC: -lgcc165 166// RUN: %clang -### --target=arm-none-eabi -nolibc -rtlib=compiler-rt %s 2>&1 \167// RUN: | FileCheck %s --check-prefix=CHECK-NOLIBC168// CHECK-NOLIBC-NOT: "-lc"169// CHECK-NOLIBC: "{{[^"]*}}libclang_rt.builtins.a"170 171// RUN: %clang -### --target=arm-none-eabi -nostdlib -rtlib=compiler-rt %s 2>&1 \172// RUN: | FileCheck %s --check-prefix=CHECK-NOSTDLIB173// CHECK-NOSTDLIB-NOT: "-lc"174// CHECK-NOSTDLIB-NOT: "{{[^"]*}}libclang_rt.builtins.a"175 176// RUN: %clang -### --target=arm-none-eabi -v %s 2>&1 \177// RUN: | FileCheck %s --check-prefix=CHECK-SYSROOT-INC178// CHECK-SYSROOT-INC-NOT: "-internal-isystem" "include"179 180// RUN: %clang -### %s --target=armebv7-none-eabi --sysroot=%S/Inputs/baremetal_arm 2>&1 \181// RUN: | FileCheck --check-prefix=CHECK-ARMV7EB %s182// CHECK-ARMV7EB: "{{.*}}ld{{(.exe)?}}"183// CHECK-ARMV7EB: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm"184// CHECK-ARMV7EB: "-Bstatic" "-m" "armelfb" "--be8" "-EB"185 186// RUN: %clang -### %s --target=armv7-none-eabi -mbig-endian --sysroot=%S/Inputs/baremetal_arm 2>&1 \187// RUN: | FileCheck --check-prefix=CHECK-ARMV7EB %s188 189// RUN: %clang -### %s --target=armebv7-none-eabi -mbig-endian --sysroot=%S/Inputs/baremetal_arm 2>&1 \190// RUN: | FileCheck --check-prefix=CHECK-ARMV7EB %s191 192// RUN: %clang -### %s --target=armv7-none-eabi --sysroot=%S/Inputs/baremetal_arm 2>&1 \193// RUN: | FileCheck --check-prefix=CHECK-ARMV7EL %s194// CHECK-ARMV7EL: "{{.*}}ld{{(.exe)?}}"195// CHECK-ARMV7EL: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm"196// CHECK-ARMV7EL: "-Bstatic" "-m" "armelf" "-EL"197// CHECK-ARMV7EL-NOT: "--be8"198 199// RUN: %clang -### %s --target=armebv7-none-eabi -mlittle-endian --sysroot=%S/Inputs/baremetal_arm 2>&1 \200// RUN: | FileCheck --check-prefix=CHECK-ARMV7EL %s201 202// RUN: %clang -### %s --target=armv7-none-eabi -mlittle-endian --sysroot=%S/Inputs/baremetal_arm 2>&1 \203// RUN: | FileCheck --check-prefix=CHECK-ARMV7EL %s204 205// RUN: %clang -### %s --target=aarch64_be-none-elf --sysroot=%S/Inputs/baremetal_arm 2>&1 \206// RUN: | FileCheck --check-prefix=CHECK-AARCH64BE %s207// CHECK-AARCH64BE: "{{.*}}ld{{(.exe)?}}"208// CHECK-AARCH64BE: sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm"209// CHECK-AARCH64BE: "-Bstatic" "-m" "aarch64elfb" "-EB"210// CHECK-AARCH64BE-NOT: "--be8"211 212// RUN: %clang -### %s --target=aarch64-none-elf -mbig-endian --sysroot=%S/Inputs/baremetal_arm 2>&1 \213// RUN: | FileCheck --check-prefix=CHECK-AARCH64BE %s214 215// RUN: %clang -### %s --target=aarch64_be-none-elf -mbig-endian --sysroot=%S/Inputs/baremetal_arm 2>&1 \216// RUN: | FileCheck --check-prefix=CHECK-AARCH64BE %s217 218// RUN: %clang -### %s --target=aarch64-none-elf --sysroot=%S/Inputs/baremetal_arm 2>&1 \219// RUN: | FileCheck --check-prefix=CHECK-AARCH64LE %s220// CHECK-AARCH64LE: "{{.*}}ld{{(.exe)?}}"221// CHECK-AARCH64LE: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm"222// CHECK-AARCH64LE: "-Bstatic" "-m" "aarch64elf" "-EL"223// CHECK-AARCH64LE-NOT: "--be8"224 225// RUN: %clang -### %s --target=aarch64_be-none-elf -mlittle-endian --sysroot=%S/Inputs/baremetal_arm 2>&1 \226// RUN: | FileCheck --check-prefix=CHECK-AARCH64LE %s227 228// RUN: %clang -no-canonical-prefixes %s -### --target=aarch64-none-elf 2>&1 \229// RUN: | FileCheck --check-prefix=CHECK-AARCH64-NO-HOST-INC %s230// Verify that the bare metal driver does not include any host system paths:231// CHECK-AARCH64-NO-HOST-INC: InstalledDir: [[INSTALLEDDIR:.+]]232// CHECK-AARCH64-NO-HOST-INC: "-resource-dir" "[[RESOURCE:[^"]+]]"233// CHECK-AARCH64-NO-HOST-INC-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include{{[/\\]+}}c++{{[/\\]+}}v1"234// CHECK-AARCH64-NO-HOST-INC-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include"235// CHECK-AARCH64-NO-HOST-INC-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include"236 237// RUN: %clang -no-canonical-prefixes %s -### --target=riscv32-unknown-elf 2>&1 \238// RUN: | FileCheck --check-prefix=CHECK-RISCV32-NO-HOST-INC %s239// CHECK-RISCV32-NO-HOST-INC: InstalledDir: [[INSTALLEDDIR:.+]]240// CHECK-RISCV32-NO-HOST-INC: "-resource-dir" "[[RESOURCE:[^"]+]]"241// CHECK-RISCV32-NO-HOST-INC-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include{{[/\\]+}}c++{{[/\\]+}}v1"242// CHECK-RISCV32-NO-HOST-INC-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include"243// CHECK-RISCV32-NO-HOST-INC-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include"244 245// RUN: %clang -no-canonical-prefixes %s -### --target=riscv64-unknown-elf 2>&1 \246// RUN: | FileCheck --check-prefix=CHECK-RISCV64-NO-HOST-INC %s247// CHECK-RISCV64-NO-HOST-INC: InstalledDir: [[INSTALLEDDIR:.+]]248// CHECK-RISCV64-NO-HOST-INC: "-resource-dir" "[[RESOURCE:[^"]+]]"249// CHECK-RISCV64-NO-HOST-INC-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include{{[/\\]+}}c++{{[/\\]+}}v1"250// CHECK-RISCV64-NO-HOST-INC-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include"251// CHECK-RISCV64-NO-HOST-INC-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include"252 253// RUN: %clang %s -### --target=riscv64-unknown-elf -o %t.out -L some/directory/user/asked/for \254// RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf 2>&1 \255// RUN: | FileCheck --check-prefix=CHECK-RV64 %s256// CHECK-RV64: "-cc1" "-triple" "riscv64-unknown-unknown-elf"257// CHECK-RV64-SAME: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"258// CHECK-RV64-SAME: "-isysroot" "[[SYSROOT:[^"]*]]"259// CHECK-RV64-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"260// CHECK-RV64-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include"261// CHECK-RV64-SAME: "-x" "c++" "{{.*}}baremetal.cpp"262// CHECK-RV64-NEXT: ld{{(.exe)?}}"263// CHECK-RV64-SAME: "--sysroot={{.*}}/Inputs/basic_riscv64_tree/riscv64-unknown-elf"264// CHECK-RV64-SAME: "-Bstatic" "-m" "elf64lriscv" "-X"265// CHECK-RV64-SAME: "-Lsome{{[/\\]+}}directory{{[/\\]+}}user{{[/\\]+}}asked{{[/\\]+}}for"266// CHECK-RV64-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}lib"267// CHECK-RV64-SAME:"{{.*}}.o"268// CHECK-RV64-SAME: "{{[^"]*}}libclang_rt.builtins.a"269// CHECK-RV64-SAME: "-lc"270// CHECK-RV64-SAME: "-o" "{{.*}}.tmp.out"271 272// RUN: %clangxx %s -### --target=riscv64-unknown-elf 2>&1 \273// RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \274// RUN: | FileCheck --check-prefix=CHECK-RV64-DEFAULTCXX %s275// CHECK-RV64-DEFAULTCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"276// CHECK-RV64-DEFAULTCXX: ld{{(.exe)?}}"277// CHECK-RV64-DEFAULTCXX-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf"278// CHECK-RV64-DEFAULTCXX-SAME: "-Bstatic" "-m" "elf64lriscv" "-X"279// CHECK-RV64-DEFAULTCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf{{[/\\]+}}lib"280// CHECK-RV64-DEFAULTCXX-SAME:"{{.*}}.o"281// CHECK-RV64-DEFAULTCXX-SAME: "-lc++" "-lm"282// CHECK-RV64-DEFAULTCXX-SAME: "{{[^"]*}}libclang_rt.builtins.a"283// CHECK-RV64-DEFAULTCXX-SAME: "-lc"284// CHECK-RV64-DEFAULTCXX-SAME: "-o" "a.out"285 286// RUN: %clangxx %s -### --target=riscv64-unknown-elf 2>&1 \287// RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \288// RUN: -stdlib=libc++ \289// RUN: | FileCheck --check-prefix=CHECK-RV64-LIBCXX %s290// CHECK-RV64-LIBCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"291// CHECK-RV64-LIBCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}{{[^v].*}}"292// CHECK-RV64-LIBCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"293// CHECK-RV64-LIBCXX: ld{{(.exe)?}}"294// CHECK-RV64-LIBCXX-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf"295// CHECK-RV64-LIBCXX-SAME: "-Bstatic" "-m" "elf64lriscv" "-X"296// CHECK-RV64-LIBCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf{{[/\\]+}}lib"297// CHECK-RV64-LIBCXX-SAME:"{{.*}}.o"298// CHECK-RV64-LIBCXX-SAME: "-lc++" "-lm"299// CHECK-RV64-LIBCXX-SAME: "{{[^"]*}}libclang_rt.builtins.a"300// CHECK-RV64-LIBCXX-SAME: "-lc"301// CHECK-RV64-LIBCXX-SAME: "-o" "a.out"302 303// RUN: %clangxx %s -### 2>&1 --target=riscv64-unknown-elf \304// RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \305// RUN: -stdlib=libstdc++ \306// RUN: | FileCheck --check-prefix=CHECK-RV64-LIBSTDCXX %s307// CHECK-RV64-LIBSTDCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"308// CHECK-RV64-LIBSTDCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"309// CHECK-RV64-LIBSTDCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}8.0.1"310// CHECK-RV64-LIBSTDCXX: ld{{(.exe)?}}"311// CHECK-RV64-LIBSTDCXX-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf"312// CHECK-RV64-LIBSTDCXX-SAME: "-Bstatic" "-m" "elf64lriscv" "-X"313// CHECK-RV64-LIBSTDCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf{{[/\\]+}}lib"314// CHECK-RV64-LIBSTDCXX-SAME: "{{.*}}.o"315// CHECK-RV64-LIBSTDCXX-SAME: "-lstdc++" "-lm"316// CHECK-RV64-LIBSTDCXX-SAME: "{{[^"]*}}libclang_rt.builtins.a"317// CHECK-RV64-LIBSTDCXX-SAME: "-lc"318// CHECK-RV64-LIBSTDCXX-SAME: "-o" "a.out"319 320// RUN: %clang %s -### 2>&1 --target=riscv32-unknown-elf \321// RUN: -L some/directory/user/asked/for \322// RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \323// RUN: | FileCheck --check-prefix=CHECK-RV32 %s324// CHECK-RV32: "-cc1" "-triple" "riscv32-unknown-unknown-elf"325// CHECK-RV32-SAME: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"326// CHECK-RV32-SAME: "-isysroot" "[[SYSROOT:[^"]*]]"327// CHECK-RV32-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"328// CHECK-RV32-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include"329// CHECK-RV32-SAME: "-x" "c++" "{{.*}}baremetal.cpp"330// CHECK-RV32-NEXT: ld{{(.exe)?}}"331// CHECK-RV32-SAME: "--sysroot={{.*}}/Inputs/basic_riscv32_tree/riscv32-unknown-elf"332// CHECK-RV32-SAME: "-Bstatic" "-m" "elf32lriscv" "-X"333// CHECK-RV32-SAME: "-Lsome{{[/\\]+}}directory{{[/\\]+}}user{{[/\\]+}}asked{{[/\\]+}}for"334// CHECK-RV32-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}lib"335// CHECK-RV32-SAME: "{{.*}}.o"336// CHECK-RV32-SAME: "{{[^"]*}}libclang_rt.builtins.a"337// CHECK-RV32-SAME: "-lc"338// CHECK-RV32-SAME: "-o" "a.out"339 340// RUN: %clangxx %s -### 2>&1 --target=riscv32-unknown-elf \341// RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \342// RUN: | FileCheck --check-prefix=CHECK-RV32-DEFAULTCXX %s343// CHECK-RV32-DEFAULTCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"344// CHECK-RV32-DEFAULTCXX: ld{{(.exe)?}}"345// CHECK-RV32-DEFAULTCXX-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf"346// CHECK-RV32-DEFAULTCXX-SAME: "-Bstatic" "-m" "elf32lriscv" "-X"347// CHECK-RV32-DEFAULTCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf{{[/\\]+}}lib"348// CHECK-RV32-DEFAULTCXX-SAME: "{{.*}}.o"349// CHECK-RV32-DEFAULTCXX-SAME: "-lc++" "-lm"350// CHECK-RV32-DEFAULTCXX-SAME: "{{[^"]*}}libclang_rt.builtins.a"351// CHECK-RV32-DEFAULTCXX-SAME: "-lc"352// CHECK-RV32-DEFAULTCXX-SAME: "-o" "a.out"353 354// RUN: %clangxx %s -### 2>&1 --target=riscv32-unknown-elf \355// RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \356// RUN: -stdlib=libc++ \357// RUN: | FileCheck --check-prefix=CHECK-RV32-LIBCXX %s358// CHECK-RV32-LIBCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"359// CHECK-RV32-LIBCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}{{[^v].*}}"360// CHECK-RV32-LIBCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"361// CHECK-RV32-LIBCXX: ld{{(.exe)?}}"362// CHECK-RV32-LIBCXX-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf"363// CHECK-RV32-LIBCXX-SAME: "-Bstatic" "-m" "elf32lriscv" "-X"364// CHECK-RV32-LIBCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf{{[/\\]+}}lib"365// CHECK-RV32-LIBCXX-SAME: "{{.*}}.o"366// CHECK-RV32-LIBCXX-SAME: "-lc++" "-lm"367// CHECK-RV32-LIBCXX-SAME: "{{[^"]*}}libclang_rt.builtins.a"368// CHECK-RV32-LIBCXX-SAME: "-o" "a.out"369 370// RUN: %clangxx %s -### 2>&1 --target=riscv32-unknown-elf \371// RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \372// RUN: -stdlib=libstdc++ \373// RUN: | FileCheck --check-prefix=CHECK-RV32-LIBSTDCXX %s374// CHECK-RV32-LIBSTDCXX: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"375// CHECK-RV32-LIBSTDCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"376// CHECK-RV32-LIBSTDCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}8.0.1"377// CHECK-RV32-LIBSTDCXX: ld{{(.exe)?}}"378// CHECK-RV32-LIBSTDCXX-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf"379// CHECK-RV32-LIBSTDCXX-SAME: "-Bstatic" "-m" "elf32lriscv" "-X"380// CHECK-RV32-LIBSTDCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf{{[/\\]+}}lib"381// CHECK-RV32-LIBSTDCXX-SAME: "{{.*}}.o"382// CHECK-RV32-LIBSTDCXX-SAME: "-lstdc++" "-lm"383// CHECK-RV32-LIBSTDCXX-SAME: "{{[^"]*}}libclang_rt.builtins.a"384// CHECK-RV32-LIBSTDCXX-SAME: "-lc"385// CHECK-RV32-LIBSTDCXX-SAME: "-o" "a.out"386 387// RUN: %clang %s -### 2>&1 --target=riscv64-unknown-elf \388// RUN: -nostdlibinc -nobuiltininc \389// RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \390// RUN: | FileCheck --check-prefix=CHECK-RV64-LIBINC %s391 392// RUN: %clang %s -### 2>&1 --target=riscv64-unknown-elf -nostdinc \393// RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \394// RUN: | FileCheck --check-prefix=CHECK-RV64-LIBINC %s395// CHECK-RV64-LIBINC-NOT: "-internal-isystem"396 397// RUN: %clangxx %s -### 2>&1 --target=riscv64-unknown-elf \398// RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \399// RUN: -nodefaultlibs \400// RUN: | FileCheck --check-prefix=CHECK-RV64-NDL %s401// CHECK-RV64-NDL: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"402// CHECK-RV64-NDL: ld{{(.exe)?}}"403// CHECK-RV64-NDL-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf"404// CHECK-RV64-NDL-SAME: "-Bstatic" "-m" "elf64lriscv" "-X"405// CHECK-RV64-NDL-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf{{[/\\]+}}lib"406 407// RUN: %clang %s -### 2>&1 --target=riscv64-unknown-elf \408// RUN: -march=rv64imafdc -mabi=lp64d \409// RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \410// RUN: | FileCheck --check-prefix=CHECK-RV64FD %s411 412// RUN: %clang %s -### 2>&1 --target=riscv64-unknown-elf \413// RUN: -march=rv64gc -mabi=lp64d \414// RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \415// RUN: | FileCheck --check-prefix=CHECK-RV64FD %s416 417// CHECK-RV64FD: "-cc1" "-triple" "riscv64-unknown-unknown-elf"418// CHECK-RV64FD-SAME: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"419// CHECK-RV64FD-SAME: "-isysroot" "[[SYSROOT:[^"]*]]"420// CHECK-RV64FD-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv64imafdc{{[/\\]+}}lp64d{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"421// CHECK-RV64FD-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv64imafdc{{[/\\]+}}lp64d{{[/\\]+}}include"422// CHECK-RV64FD-SAME: "-x" "c++" "{{.*}}baremetal.cpp"423// CHECK-RV64FD-NEXT: ld{{(.exe)?}}"424// CHECK-RV64FD-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf"425// CHECK-RV64FD-SAME: "-Bstatic" "-m" "elf64lriscv" "-X"426// CHECK-RV64FD-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}rv64imafdc{{[/\\]+}}lp64d{{[/\\]+}}lib"427 428// RUN: %clang %s -### 2>&1 --target=riscv32-unknown-elf \429// RUN: -march=rv32i -mabi=ilp32 \430// RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \431// RUN: | FileCheck --check-prefix=CHECK-RV32I %s432 433// RUN: %clang %s -### 2>&1 --target=riscv32-unknown-elf \434// RUN: -march=rv32ic -mabi=ilp32 \435// RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \436// RUN: | FileCheck --check-prefix=CHECK-RV32I %s437 438// CHECK-RV32I: "-cc1" "-triple" "riscv32-unknown-unknown-elf"439// CHECK-RV32I-SAME: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"440// CHECK-RV32I-SAME: "-isysroot" "[[SYSROOT:[^"]*]]"441// CHECK-RV32I-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32i{{[/\\]+}}ilp32{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"442// CHECK-RV32I-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32i{{[/\\]+}}ilp32{{[/\\]+}}include"443// CHECK-RV32I-SAME: "-x" "c++" "{{.*}}baremetal.cpp"444// CHECK-RV32I-NEXT: ld{{(.exe)?}}"445// CHECK-RV32I-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf"446// CHECK-RV32I-SAME: "-Bstatic" "-m" "elf32lriscv" "-X"447// CHECK-RV32I-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}rv32i{{[/\\]+}}ilp32{{[/\\]+}}lib"448 449// RUN: %clang %s -### 2>&1 --target=riscv32-unknown-elf \450// RUN: -march=rv32im -mabi=ilp32 \451// RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \452// RUN: | FileCheck --check-prefix=CHECK-RV32IM %s453 454// RUN: %clang %s -### 2>&1 --target=riscv32-unknown-elf \455// RUN: -march=rv32imc -mabi=ilp32 \456// RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \457// RUN: | FileCheck --check-prefix=CHECK-RV32IM %s458 459// CHECK-RV32IM: "-cc1" "-triple" "riscv32-unknown-unknown-elf"460// CHECK-RV32IM-SAME: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"461// CHECK-RV32IM-SAME: "-isysroot" "[[SYSROOT:[^"]*]]"462// CHECK-RV32IM-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32im{{[/\\]+}}ilp32{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"463// CHECK-RV32IM-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32im{{[/\\]+}}ilp32{{[/\\]+}}include"464// CHECK-RV32IM-SAME: "-x" "c++" "{{.*}}baremetal.cpp"465// CHECK-RV32IM-NEXT: ld{{(.exe)?}}"466// CHECK-RV32IM-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf"467// CHECK-RV32IM-SAME: "-Bstatic" "-m" "elf32lriscv" "-X"468// CHECK-RV32IM-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}rv32im{{[/\\]+}}ilp32{{[/\\]+}}lib"469 470// RUN: %clang %s -### 2>&1 --target=riscv32-unknown-elf \471// RUN: -march=rv32iac -mabi=ilp32 \472// RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \473// RUN: | FileCheck --check-prefix=CHECK-RV32IAC %s474 475// CHECK-RV32IAC: "-cc1" "-triple" "riscv32-unknown-unknown-elf"476// CHECK-RV32IAC-SAME: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"477// CHECK-RV32IAC-SAME: "-isysroot" "[[SYSROOT:[^"]*]]"478// CHECK-RV32IAC-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32iac{{[/\\]+}}ilp32{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"479// CHECK-RV32IAC-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32iac{{[/\\]+}}ilp32{{[/\\]+}}include"480// CHECK-RV32IAC-SAME: "-x" "c++" "{{.*}}baremetal.cpp"481// CHECK-RV32IAC-NEXT: ld{{(.exe)?}}"482// CHECK-RV32IAC-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf"483// CHECK-RV32IAC-SAME: "-Bstatic" "-m" "elf32lriscv" "-X"484// CHECK-RV32IAC-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}rv32iac{{[/\\]+}}ilp32{{[/\\]+}}lib"485 486// RUN: %clang %s -### 2>&1 --target=riscv32-unknown-elf -march=rv32imafc -mabi=ilp32f \487// RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \488// RUN: | FileCheck --check-prefix=CHECK-RV32IMAFC %s489 490// RUN: %clang %s -### 2>&1 --target=riscv32-unknown-elf -march=rv32imafdc -mabi=ilp32f \491// RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \492// RUN: | FileCheck --check-prefix=CHECK-RV32IMAFC %s493 494// RUN: %clang %s -### 2>&1 --target=riscv32-unknown-elf -march=rv32gc -mabi=ilp32f \495// RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf \496// RUN: | FileCheck --check-prefix=CHECK-RV32IMAFC %s497 498// CHECK-RV32IMAFC: "-cc1" "-triple" "riscv32-unknown-unknown-elf"499// CHECK-RV32IMAFC-SAME: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"500// CHECK-RV32IMAFC-SAME: "-isysroot" "[[SYSROOT:[^"]*]]"501// CHECK-RV32IMAFC-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32imafc{{[/\\]+}}ilp32f{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1"502// CHECK-RV32IMAFC-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}rv32imafc{{[/\\]+}}ilp32f{{[/\\]+}}include"503// CHECK-RV32IMAFC-SAME: "-x" "c++" "{{.*}}baremetal.cpp"504// CHECK-RV32IMAFC-NEXT: ld{{(.exe)?}}"505// CHECK-RV32IMAFC-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf"506// CHECK-RV32IMAFC-SAME: "-Bstatic" "-m" "elf32lriscv" "-X"507// CHECK-RV32IMAFC-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}rv32imafc{{[/\\]+}}ilp32f{{[/\\]+}}lib"508 509// RUN: %clang -no-canonical-prefixes %s -### --target=powerpc-unknown-eabi 2>&1 \510// RUN: | FileCheck --check-prefix=CHECK-PPCEABI %s511// CHECK-PPCEABI: InstalledDir: [[INSTALLEDDIR:.+]]512// CHECK-PPCEABI: "-nostdsysteminc"513// CHECK-PPCEABI-SAME: "-resource-dir" "[[RESOURCE:[^"]+]]"514// CHECK-PPCEABI-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include{{[/\\]+}}c++{{[/\\]+}}v1"515// CHECK-PPCEABI-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include"516// CHECK-PPCEABI-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include"517// CHECK-PPCEABI-NEXT: ld{{(.exe)?}}" "-Bstatic"518// CHECK-PPCEABI-SAME: "-L[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}lib"519// CHECK-PPCEABI-SAME:"{{.*}}.o"520// CHECK-PPCEABI-SAME: "{{[^"]*}}libclang_rt.builtins.a"521// CHECK-PPCEABI-SAME: "-lc"522// CHECK-PPCEABI-SAME: "-o" "a.out"523 524// RUN: %clang -no-canonical-prefixes %s -### --target=powerpc64-unknown-eabi 2>&1 \525// RUN: | FileCheck --check-prefix=CHECK-PPC64EABI %s526// CHECK-PPC64EABI: InstalledDir: [[INSTALLEDDIR:.+]]527// CHECK-PPC64EABI: "-nostdsysteminc"528// CHECK-PPC64EABI-SAME: "-resource-dir" "[[RESOURCE:[^"]+]]"529// CHECK-PPC64EABI-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include{{[/\\]+}}c++{{[/\\]+}}v1"530// CHECK-PPC64EABI-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include"531// CHECK-PPC64EABI-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include"532// CHECK-PPC64EABI-NEXT: ld{{(.exe)?}}" "-Bstatic"533// CHECK-PPC64EABI-SAME: "-L[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}lib"534// CHECK-PPC64EABI-SAME:"{{.*}}.o"535// CHECK-PPC64EABI-SAME: "{{[^"]*}}libclang_rt.builtins.a"536// CHECK-PPC64EABI-SAME: "-lc"537// CHECK-PPC64EABI-SAME: "-o" "a.out"538 539// RUN: %clang -no-canonical-prefixes %s -### --target=powerpcle-unknown-eabi 2>&1 \540// RUN: | FileCheck --check-prefix=CHECK-PPCLEEABI %s541// CHECK-PPCLEEABI: InstalledDir: [[INSTALLEDDIR:.+]]542// CHECK-PPCLEEABI: "-nostdsysteminc"543// CHECK-PPCLEEABI-SAME: "-resource-dir" "[[RESOURCE:[^"]+]]"544// CHECK-PPCLEEABI-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include{{[/\\]+}}c++{{[/\\]+}}v1"545// CHECK-PPCLEEABI-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include"546// CHECK-PPCLEEABI-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include"547// CHECK-PPCLEEABI-NEXT: ld{{(.exe)?}}" "-Bstatic"548// CHECK-PPCLEEABI-SAME: "-L[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}lib"549// CHECK-PPCLEEABI-SAME:"{{.*}}.o"550// CHECK-PPCLEEABI-SAME: "{{[^"]*}}libclang_rt.builtins.a"551// CHECK-PPCLEEABI-SAME: "-lc"552// CHECK-PPCLEEABI-SAME: "-o" "a.out"553 554// RUN: %clang -no-canonical-prefixes %s -### --target=powerpc64le-unknown-eabi 2>&1 \555// RUN: | FileCheck --check-prefix=CHECK-PPC64LEEABI %s556// CHECK-PPC64LEEABI: InstalledDir: [[INSTALLEDDIR:.+]]557// CHECK-PPC64LEEABI: "-nostdsysteminc"558// CHECK-PPC64LEEABI-SAME: "-resource-dir" "[[RESOURCE:[^"]+]]"559// CHECK-PPC64LEEABI-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include{{[/\\]+}}c++{{[/\\]+}}v1"560// CHECK-PPC64LEEABI-SAME: "-internal-isystem" "[[RESOURCE]]{{[/\\]+}}include"561// CHECK-PPC64LEEABI-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include"562// CHECK-PPC64LEEABI-NEXT: ld{{(.exe)?}}" "-Bstatic"563// CHECK-PPC64LEEABI-SAME: "-L[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}lib"564// CHECK-PPC64LEEABI-SAME:"{{.*}}.o"565// CHECK-PPC64LEEABI-SAME: "{{[^"]*}}libclang_rt.builtins.a"566// CHECK-PPC64LEEABI-SAME: "-lc"567// CHECK-PPC64LEEABI-SAME: "-o" "a.out"568 569// Check that compiler-rt library without the arch filename suffix will570// be used if present.571// RUN: rm -rf %t.dir/baremetal_clang_rt_noarch572// RUN: mkdir -p %t.dir/baremetal_clang_rt_noarch/lib573// RUN: touch %t.dir/baremetal_clang_rt_noarch/lib/libclang_rt.builtins.a574// RUN: %clang %s -### 2>&1 \575// RUN: --target=armv6m-none-eabi \576// RUN: --sysroot=%t.dir/baremetal_clang_rt_noarch \577// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-NOARCH %s578// CHECK-CLANGRT-NOARCH: "{{[^"]*}}libclang_rt.builtins.a"579// CHECK-CLANGRT-NOARCH-NOT: "{{[^"]*}}libclang_rt.builtins.a"580 581// Check that compiler-rt library with the arch filename suffix will be582// used if present.583// RUN: rm -rf %t.dir/baremetal_clang_rt_arch584// RUN: mkdir -p %t.dir/baremetal_clang_rt_arch/lib585// RUN: touch %t.dir/baremetal_clang_rt_arch/lib/libclang_rt.builtins-armv6m.a586// RUN: %clang %s -### 2>&1 \587// RUN: --target=armv6m-none-eabi \588// RUN: --sysroot=%t.dir/baremetal_clang_rt_arch \589// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-ARCH %s590// CHECK-CLANGRT-ARCH: "{{[^"]*}}libclang_rt.builtins.a"591// CHECK-CLANGRT-ARCH-NOT: "{{[^"]*}}libclang_rt.builtins.a"592 593// Check that "--no-relax" is forwarded to the linker for RISC-V.594// RUN: %clang %s -### 2>&1 --target=riscv64-unknown-elf -nostdinc -mno-relax \595// RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \596// RUN: | FileCheck --check-prefix=CHECK-RV64-NORELAX %s597// CHECK-RV64-NORELAX: "--no-relax"598 599// Check that "--no-relax" is not forwarded to the linker for RISC-V.600// RUN: %clang %s -### 2>&1 --target=riscv64-unknown-elf -nostdinc \601// RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \602// RUN: | FileCheck --check-prefix=CHECK-RV64-RELAX %s603// CHECK-RV64-RELAX-NOT: "--no-relax"604