| // ----------------------------------------------------------------------------- |
| // Passing --musl |
| // ----------------------------------------------------------------------------- |
| // RUN: %clang -### --target=hexagon-unknown-linux-musl \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: -mcpu=hexagonv60 \ |
| // RUN: -fuse-ld=lld \ |
| // RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree %s 2>&1 | FileCheck -check-prefix=CHECK000 %s |
| // CHECK000-NOT: {{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crti.o |
| // CHECK000: "-dynamic-linker={{/|\\\\}}lib{{/|\\\\}}ld-musl-hexagon.so.1" |
| // CHECK000: "{{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o" |
| // CHECK000: "-lc" "-lclang_rt.builtins-hexagon" |
| // CHECK000: "-L{{.*}}/Inputs/basic_linux_libcxx_tree{{/|\\\\}}lib{{/|\\\\}}v60" |
| // CHECK000: "-L{{.*}}/Inputs/basic_linux_libcxx_tree{{/|\\\\}}lib" |
| |
| // ----------------------------------------------------------------------------- |
| // Passing --musl --shared |
| // ----------------------------------------------------------------------------- |
| // RUN: %clang -### --target=hexagon-unknown-linux-musl \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: -mcpu=hexagonv60 \ |
| // RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree -shared %s 2>&1 | FileCheck -check-prefix=CHECK001 %s |
| // CHECK001-NOT: -dynamic-linker={{/|\\\\}}lib{{/|\\\\}}ld-musl-hexagon.so.1 |
| // CHECK001: "{{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crti.o" |
| // CHECK001: "-lc" "-lclang_rt.builtins-hexagon" |
| // CHECK001-NOT: {{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o |
| // ----------------------------------------------------------------------------- |
| // Passing --musl -nostdlib |
| // ----------------------------------------------------------------------------- |
| // RUN: %clang -### --target=hexagon-unknown-linux-musl \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: -mcpu=hexagonv60 \ |
| // RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree -nostdlib %s 2>&1 | FileCheck -check-prefix=CHECK002 %s |
| // CHECK002: "-dynamic-linker={{/|\\\\}}lib{{/|\\\\}}ld-musl-hexagon.so.1" |
| // CHECK002-NOT: {{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crti.o |
| // CHECK002-NOT: {{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o |
| // CHECK002-NOT: "-lc" |
| // CHECK002-NOT: "-lclang_rt.builtins-hexagon" |
| // ----------------------------------------------------------------------------- |
| // Passing --musl -nostartfiles |
| // ----------------------------------------------------------------------------- |
| // RUN: %clang -### --target=hexagon-unknown-linux-musl \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: -mcpu=hexagonv60 \ |
| // RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree -nostartfiles %s 2>&1 | FileCheck -check-prefix=CHECK003 %s |
| // CHECK003: "-dynamic-linker={{/|\\\\}}lib{{/|\\\\}}ld-musl-hexagon.so.1" |
| // CHECK003-NOT: {{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}Scrt1.o |
| // CHECK003-NOT: {{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o |
| // CHECK003: "-lc" "-lclang_rt.builtins-hexagon" |
| // ----------------------------------------------------------------------------- |
| // Passing --musl -nodefaultlibs |
| // ----------------------------------------------------------------------------- |
| // RUN: %clang -### --target=hexagon-unknown-linux-musl \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: -mcpu=hexagonv60 \ |
| // RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree -nodefaultlibs %s 2>&1 | FileCheck -check-prefix=CHECK004 %s |
| // CHECK004: "-dynamic-linker={{/|\\\\}}lib{{/|\\\\}}ld-musl-hexagon.so.1" |
| // CHECK004: "{{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o" |
| // CHECK004-NOT: "-lc" |
| // CHECK004-NOT: "-lclang_rt.builtins-hexagon" |
| // ----------------------------------------------------------------------------- |
| // Passing --musl -nolibc |
| // ----------------------------------------------------------------------------- |
| // RUN: %clang -### --target=hexagon-unknown-linux-musl \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: -mcpu=hexagonv60 --sysroot=%S/Inputs/basic_linux_libcxx_tree \ |
| // RUN: -nolibc %s 2>&1 | FileCheck -check-prefix=CHECK-NOLIBC %s |
| // CHECK-NOLIBC: "-dynamic-linker={{/|\\\\}}lib{{/|\\\\}}ld-musl-hexagon.so.1" |
| // CHECK-NOLIBC-SAME: "{{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o" |
| // CHECK-NOLIBC-NOT: "-lc" |
| // ----------------------------------------------------------------------------- |
| // Not Passing -fno-use-init-array when musl is selected |
| // ----------------------------------------------------------------------------- |
| // RUN: %clang -### --target=hexagon-unknown-linux-musl \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: -mcpu=hexagonv60 %s 2>&1 | FileCheck -check-prefix=CHECK005 %s |
| // CHECK005-NOT: -fno-use-init-array |
| // ----------------------------------------------------------------------------- |
| // ----------------------------------------------------------------------------- |
| // c++ when musl is selected |
| // ----------------------------------------------------------------------------- |
| // RUN: %clangxx -### --target=hexagon-unknown-linux-musl \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree \ |
| // RUN: -mcpu=hexagonv60 %s 2>&1 | FileCheck -check-prefix=CHECK006 %s |
| // CHECK006: "-internal-isystem" "{{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}v1" |
| // ----------------------------------------------------------------------------- |
| // c++ when musl is selected |
| // ----------------------------------------------------------------------------- |
| // RUN: %clangxx -### --target=hexagon-unknown-elf \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: -stdlib=libc++ \ |
| // RUN: -mcpu=hexagonv60 %s 2>&1 | FileCheck -check-prefix=CHECK007 %s |
| // CHECK007: "-internal-isystem" "{{.*}}hexagon{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}v1" |
| // ----------------------------------------------------------------------------- |
| // internal-isystem for linux with and without musl |
| // ----------------------------------------------------------------------------- |
| // RUN: %clang -### --target=hexagon-unknown-linux-musl \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: -resource-dir=%S/Inputs/resource_dir %s 2>&1 | FileCheck -check-prefix=CHECK008 %s |
| // CHECK008: "-resource-dir" "[[RESOURCE:[^"]+]]" |
| // CHECK008-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]{{/|\\\\}}include" |
| // CHECK008-SAME: {{^}} "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/Tools/bin{{/|\\\\}}..{{/|\\\\}}target{{/|\\\\}}hexagon{{/|\\\\}}include" |
| |
| // RUN: %clang -### --target=hexagon-unknown-linux \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: -resource-dir=%S/Inputs/resource_dir %s 2>&1 | FileCheck -check-prefix=CHECK009 %s |
| // CHECK009: "-resource-dir" "[[RESOURCE:[^"]+]]" |
| // CHECK009-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]{{/|\\\\}}include" |
| // CHECK009-SAME: {{^}} "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/Tools/bin{{/|\\\\}}..{{/|\\\\}}target{{/|\\\\}}hexagon{{/|\\\\}}include" |
| |
| // RUN: %clang -Werror -L/tmp \ |
| // RUN: --target=hexagon-unknown-linux-musl %s -### 2>&1 \ |
| // RUN: | FileCheck -check-prefix=CHECK010 %s |
| // CHECK010-NOT: "-lstandalone" |
| // CHECK010-NOT: crt0_standalone.o |
| // CHECK010: crt1.o |
| // CHECK010: "-L/tmp" |
| // CHECK010-NOT: "-lstandalone" |
| |
| // ----------------------------------------------------------------------------- |
| // unwindlib |
| // ----------------------------------------------------------------------------- |
| // RUN: %clangxx --unwindlib=none \ |
| // RUN: --target=hexagon-unknown-linux-musl %s -### 2>&1 \ |
| // RUN: | FileCheck -check-prefix=CHECK011 %s |
| // CHECK011: "--eh-frame-hdr" |
| // CHECK011: crt1.o |
| // CHECK011-NOT: "-lunwind" |
| // CHECK011-NOT: "-lgcc_eh" |
| // CHECK012-NOT: "-lgcc_s" |
| |
| |
| // RUN: %clangxx --rtlib=compiler-rt --unwindlib=libunwind \ |
| // RUN: --target=hexagon-unknown-linux-musl %s -### 2>&1 \ |
| // RUN: | FileCheck -check-prefix=CHECK012 %s |
| // RUN: %clangxx \ |
| // RUN: --target=hexagon-unknown-linux-musl %s -### 2>&1 \ |
| // RUN: | FileCheck -check-prefix=CHECK012 %s |
| // CHECK012: crt1.o |
| // CHECK012: "-lunwind" |
| // CHECK012-NOT: "-lgcc_eh" |
| // CHECK012-NOT: "-lgcc_s" |
| |
| // RUN: not %clangxx --rtlib=compiler-rt --unwindlib=libgcc \ |
| // RUN: --target=hexagon-unknown-linux-musl %s -### 2>&1 \ |
| // RUN: | FileCheck -check-prefix=CHECK013 %s |
| // CHECK013: error: unsupported unwind library 'libgcc' for platform 'hexagon-unknown-linux-musl' |
| // CHECK013-NOT: "-lgcc_eh" |
| // CHECK013-NOT: "-lgcc_s" |
| // CHECK013-NOT: "-lunwind" |
| |
| // ----------------------------------------------------------------------------- |
| // PIE is the default for linux-musl |
| // ----------------------------------------------------------------------------- |
| // RUN: %clang -### --target=hexagon-unknown-linux-musl \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: -mcpu=hexagonv60 \ |
| // RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree %s 2>&1 \ |
| // RUN: | FileCheck -check-prefix=CHECK-PIE-DEFAULT %s |
| // CHECK-PIE-DEFAULT: "-pie" |
| |
| // RUN: %clang -### --target=hexagon-unknown-linux-musl \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: -mcpu=hexagonv60 \ |
| // RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree -no-pie %s 2>&1 \ |
| // RUN: | FileCheck -check-prefix=CHECK-NO-PIE %s |
| // CHECK-NO-PIE-NOT: "-pie" |
| |
| // RUN: %clang -### --target=hexagon-unknown-linux-musl \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: -mcpu=hexagonv60 \ |
| // RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree -shared %s 2>&1 \ |
| // RUN: | FileCheck -check-prefix=CHECK-PIE-SHARED %s |
| // CHECK-PIE-SHARED-NOT: "-pie" |
| |
| // RUN: %clang -### --target=hexagon-unknown-linux-musl \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: -mcpu=hexagonv60 \ |
| // RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree -r %s 2>&1 \ |
| // RUN: | FileCheck -check-prefix=CHECK-PIE-RELOCATABLE %s |
| // CHECK-PIE-RELOCATABLE-NOT: "-pie" |
| |
| // ----------------------------------------------------------------------------- |
| // Relocatable (-r) links: no CRT start files, no dynamic linker |
| // Partial links must not include crt1.o/crti.o — they define _start which |
| // would conflict when the relocatable output is later linked into an executable. |
| // ----------------------------------------------------------------------------- |
| // RUN: %clang -### --target=hexagon-unknown-linux-musl \ |
| // RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree -r %s 2>&1 \ |
| // RUN: | FileCheck -check-prefix=CHECK-RELOC %s |
| // CHECK-RELOC-NOT: "-dynamic-linker={{/|\\\\}}lib{{/|\\\\}}ld-musl-hexagon.so.1" |
| // CHECK-RELOC-NOT: "{{.*}}crt1.o" |
| // CHECK-RELOC-NOT: "{{.*}}crti.o" |
| |
| // Verify that a normal (non-relocatable) link still gets the CRT files. |
| // RUN: %clang -### --target=hexagon-unknown-linux-musl \ |
| // RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree %s 2>&1 \ |
| // RUN: | FileCheck -check-prefix=CHECK-RELOC-NORMAL %s |
| // CHECK-RELOC-NORMAL: "-dynamic-linker={{/|\\\\}}lib{{/|\\\\}}ld-musl-hexagon.so.1" |
| // CHECK-RELOC-NORMAL: "{{.*}}crt1.o" |
| |
| // ----------------------------------------------------------------------------- |
| // Startup object: -static alone gets PIE by default (see PIE-DEFAULT above), |
| // so it must link the self-relocating rcrt1.o, not the plain crt1.o. Plain |
| // crt1.o never processes the R_HEX_RELATIVE relocations a static-PIE image |
| // needs, and the resulting binary crashes during libc startup. |
| // ----------------------------------------------------------------------------- |
| // RUN: %clang -### --target=hexagon-unknown-linux-musl \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: -mcpu=hexagonv60 \ |
| // RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree -static %s 2>&1 \ |
| // RUN: | FileCheck -check-prefix=CHECK-STATIC-PIE %s |
| // CHECK-STATIC-PIE: "-static" "-pie" |
| // CHECK-STATIC-PIE: "{{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}rcrt1.o" |
| // CHECK-STATIC-PIE-NOT: "{{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o" |
| |
| // ----------------------------------------------------------------------------- |
| // Startup object: -static -no-pie must still link the plain, non-relocating |
| // crt1.o (a static non-PIE image has no relocations to apply). |
| // ----------------------------------------------------------------------------- |
| // RUN: %clang -### --target=hexagon-unknown-linux-musl \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: -mcpu=hexagonv60 \ |
| // RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree -static -no-pie %s 2>&1 \ |
| // RUN: | FileCheck -check-prefix=CHECK-STATIC-NO-PIE %s |
| // CHECK-STATIC-NO-PIE: "-static" |
| // CHECK-STATIC-NO-PIE-NOT: "-pie" |
| // CHECK-STATIC-NO-PIE: "{{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o" |
| // CHECK-STATIC-NO-PIE-NOT: "{{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}rcrt1.o" |
| |
| // ----------------------------------------------------------------------------- |
| // Startup object: a non-static (dynamic) link keeps using crt1.o even though |
| // PIE is on by default -- relocation is the dynamic linker's job there, not |
| // the CRT's. |
| // ----------------------------------------------------------------------------- |
| // RUN: %clang -### --target=hexagon-unknown-linux-musl \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: -mcpu=hexagonv60 \ |
| // RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree %s 2>&1 \ |
| // RUN: | FileCheck -check-prefix=CHECK-DYNAMIC-PIE %s |
| // CHECK-DYNAMIC-PIE: "-pie" |
| // CHECK-DYNAMIC-PIE: "{{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o" |
| // CHECK-DYNAMIC-PIE-NOT: "{{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}rcrt1.o" |
| |
| // ----------------------------------------------------------------------------- |
| // Sanitizer library paths: -fsanitize=memory |
| // ----------------------------------------------------------------------------- |
| // RUN: %clang -### --target=hexagon-unknown-linux-musl \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: -mcpu=hexagonv60 \ |
| // RUN: -fuse-ld=lld \ |
| // RUN: -fsanitize=memory \ |
| // RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree %s 2>&1 | FileCheck -check-prefix=CHECK-MSAN %s |
| // CHECK-MSAN: "-L{{[^"]*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}msan" |
| // CHECK-MSAN-SAME: "-L{{[^"]*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib" |
| // ----------------------------------------------------------------------------- |
| // Sanitizer library paths: -fsanitize=address |
| // ----------------------------------------------------------------------------- |
| // RUN: %clang -### --target=hexagon-unknown-linux-musl \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: -mcpu=hexagonv60 \ |
| // RUN: -fuse-ld=lld \ |
| // RUN: -fsanitize=address \ |
| // RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree %s 2>&1 | FileCheck -check-prefix=CHECK-ASAN %s |
| // CHECK-ASAN: "-L{{[^"]*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}asan" |
| // CHECK-ASAN-SAME: "-L{{[^"]*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib" |
| // ----------------------------------------------------------------------------- |
| // Sanitizer library paths: -fsanitize=shadow-call-stack |
| // ----------------------------------------------------------------------------- |
| // RUN: %clang -### --target=hexagon-unknown-linux-musl \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: -mcpu=hexagonv60 \ |
| // RUN: -fuse-ld=lld \ |
| // RUN: -fsanitize=shadow-call-stack -ffixed-r18 \ |
| // RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree %s 2>&1 | FileCheck -check-prefix=CHECK-SCS %s |
| // CHECK-SCS: "-L{{[^"]*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}scs" |
| // CHECK-SCS-SAME: "-L{{[^"]*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib" |
| // ----------------------------------------------------------------------------- |
| // Library paths: -ffixed-r18 alone must NOT select the scs multilib |
| // ----------------------------------------------------------------------------- |
| // RUN: %clang -### --target=hexagon-unknown-linux-musl \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: -mcpu=hexagonv60 \ |
| // RUN: -fuse-ld=lld \ |
| // RUN: -ffixed-r18 \ |
| // RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree %s 2>&1 | FileCheck -check-prefix=CHECK-R18-ONLY %s |
| // CHECK-R18-ONLY-NOT: "-L{{.*}}{{/|\\\\}}scs" |
| // ----------------------------------------------------------------------------- |
| // Startup object: -fsanitize=shadow-call-stack links the scs crt1.o, not the |
| // base crt1.o. Selection is on the multilib in effect, not file presence, so |
| // this holds even though the test sysroot ships no usr/lib/scs/crt1.o. |
| // ----------------------------------------------------------------------------- |
| // RUN: %clang -### --target=hexagon-unknown-linux-musl \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: -mcpu=hexagonv60 \ |
| // RUN: -fuse-ld=lld \ |
| // RUN: -fsanitize=shadow-call-stack -ffixed-r18 \ |
| // RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree %s 2>&1 | FileCheck -check-prefix=CHECK-SCS-CRT %s |
| // CHECK-SCS-CRT: "{{[^"]*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}scs{{/|\\\\}}crt1.o" |
| // CHECK-SCS-CRT-NOT: "{{[^"]*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o" |
| // ----------------------------------------------------------------------------- |
| // Startup object: without the scs multilib, the base crt1.o is used (never the |
| // scs one). |
| // ----------------------------------------------------------------------------- |
| // RUN: %clang -### --target=hexagon-unknown-linux-musl \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: -mcpu=hexagonv60 \ |
| // RUN: -fuse-ld=lld \ |
| // RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree %s 2>&1 | FileCheck -check-prefix=CHECK-NOSCS-CRT %s |
| // CHECK-NOSCS-CRT: "{{[^"]*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o" |
| // CHECK-NOSCS-CRT-NOT: "{{/|\\\\}}scs{{/|\\\\}}crt1.o" |
| // ----------------------------------------------------------------------------- |
| // No sanitizer: no msan/asan/scs library paths |
| // ----------------------------------------------------------------------------- |
| // RUN: %clang -### --target=hexagon-unknown-linux-musl \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: -mcpu=hexagonv60 \ |
| // RUN: -fuse-ld=lld \ |
| // RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree %s 2>&1 | FileCheck -check-prefix=CHECK-NOSAN %s |
| // CHECK-NOSAN-NOT: "-L{{.*}}{{/|\\\\}}msan" |
| // CHECK-NOSAN-NOT: "-L{{.*}}{{/|\\\\}}asan" |
| // CHECK-NOSAN-NOT: "-L{{.*}}{{/|\\\\}}scs" |
| // ----------------------------------------------------------------------------- |
| // ThinLTO passes LTO options to the linker |
| // ----------------------------------------------------------------------------- |
| // RUN: touch %t.o |
| // RUN: %clang -### --target=hexagon-unknown-linux-musl \ |
| // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ |
| // RUN: -mcpu=hexagonv60 \ |
| // RUN: -fuse-ld=lld \ |
| // RUN: -flto=thin -fenable-matrix \ |
| // RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree %t.o 2>&1 \ |
| // RUN: | FileCheck -check-prefix=CHECK-LTO %s |
| // CHECK-LTO: "-plugin-opt=thinlto" |
| // CHECK-LTO: "-plugin-opt=-enable-matrix" |