1 // RUN: %clangxx %s -### -no-canonical-prefixes --target=x86_64-unknown-fuchsia \ 2 // RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \ 3 // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ 4 // RUN: --sysroot=%S/platform -fuse-ld=lld 2>&1 \ 5 // RUN: | FileCheck -check-prefixes=CHECK,CHECK-X86_64 %s 6 // RUN: %clangxx %s -### -no-canonical-prefixes --target=aarch64-unknown-fuchsia \ 7 // RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \ 8 // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ 9 // RUN: --sysroot=%S/platform -fuse-ld=lld 2>&1 \ 10 // RUN: | FileCheck -check-prefixes=CHECK,CHECK-AARCH64 %s 11 // RUN: %clangxx %s -### -no-canonical-prefixes --target=riscv64-unknown-fuchsia \ 12 // RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \ 13 // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ 14 // RUN: --sysroot=%S/platform -fuse-ld=lld 2>&1 \ 15 // RUN: | FileCheck -check-prefixes=CHECK,CHECK-RISCV64 %s 16 // CHECK: {{.*}}clang{{.*}}" "-cc1" 17 // CHECK-X86_64: "-triple" "x86_64-unknown-fuchsia" 18 // CHECK-AARCH64: "-triple" "aarch64-unknown-fuchsia" 19 // CHECK-RISCV64: "-triple" "riscv64-unknown-fuchsia" 20 // CHECK-NOT: "-fno-use-init-array" 21 // CHECK: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" 22 // CHECK: "-isysroot" "[[SYSROOT:[^"]+]]" 23 // CHECK-X86_64: "-internal-isystem" "{{.*[/\\]}}include{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}c++{{/|\\\\}}v1" 24 // CHECK-AARCH64: "-internal-isystem" "{{.*[/\\]}}include{{/|\\\\}}aarch64-unknown-fuchsia{{/|\\\\}}c++{{/|\\\\}}v1" 25 // CHECK-RISCV64: "-internal-isystem" "{{.*[/\\]}}include{{/|\\\\}}riscv64-unknown-fuchsia{{/|\\\\}}c++{{/|\\\\}}v1" 26 // CHECK: "-internal-isystem" "{{.*[/\\]}}include{{/|\\\\}}c++{{/|\\\\}}v1" 27 // CHECK: "-internal-externc-isystem" "[[SYSROOT]]{{/|\\\\}}include" 28 // CHECK: {{.*}}ld.lld{{.*}}" "-z" "now" "-z" "rodynamic" "-z" "separate-loadable-segments" 29 // CHECK: "--sysroot=[[SYSROOT]]" 30 // CHECK: "-pie" 31 // CHECK: "--build-id" 32 // CHECK: "-dynamic-linker" "ld.so.1" 33 // CHECK: Scrt1.o 34 // CHECK-NOT: crti.o 35 // CHECK-NOT: crtbegin.o 36 // CHECK: "-L[[SYSROOT]]{{/|\\\\}}lib" 37 // CHECK: "--push-state" 38 // CHECK: "--as-needed" 39 // CHECK: "-lc++" 40 // CHECK: "-lm" 41 // CHECK: "--pop-state" 42 // CHECK-X86_64: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}libclang_rt.builtins.a" 43 // CHECK-AARCH64: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}aarch64-unknown-fuchsia{{/|\\\\}}libclang_rt.builtins.a" 44 // CHECK-RISCV64: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}riscv64-unknown-fuchsia{{/|\\\\}}libclang_rt.builtins.a" 45 // CHECK: "-lc" 46 // CHECK-NOT: crtend.o 47 // CHECK-NOT: crtn.o 48 49 // RUN: %clangxx %s -### --target=x86_64-unknown-fuchsia -stdlib=libstdc++ \ 50 // RUN: -fuse-ld=lld 2>&1 \ 51 // RUN: | FileCheck %s -check-prefix=CHECK-STDLIB 52 // CHECK-STDLIB: error: invalid library name in argument '-stdlib=libstdc++' 53 54 // RUN: %clangxx %s -### --target=x86_64-unknown-fuchsia -static-libstdc++ \ 55 // RUN: -fuse-ld=lld 2>&1 \ 56 // RUN: | FileCheck %s -check-prefix=CHECK-STATIC 57 // CHECK-STATIC: "--push-state" 58 // CHECK-STATIC: "--as-needed" 59 // CHECK-STATIC: "-Bstatic" 60 // CHECK-STATIC: "-lc++" 61 // CHECK-STATIC: "-Bdynamic" 62 // CHECK-STATIC: "-lm" 63 // CHECK-STATIC: "--pop-state" 64 // CHECK-STATIC: "-lc" 65 66 // RUN: %clangxx %s -### --target=x86_64-unknown-fuchsia -nostdlib++ -fuse-ld=lld 2>&1 \ 67 // RUN: | FileCheck %s -check-prefix=CHECK-NOSTDLIBXX 68 // CHECK-NOSTDLIBXX-NOT: "-lc++" 69 // CHECK-NOSTDLIBXX-NOT: "-lm" 70 // CHECK-NOSTDLIBXX: "-lc" 71 72 // RUN: %clangxx %s -### --target=x86_64-unknown-fuchsia \ 73 // RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \ 74 // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ 75 // RUN: -fuse-ld=lld 2>&1\ 76 // RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86 77 // RUN: %clangxx %s -### --target=x86_64-unknown-fuchsia -fsanitize=address \ 78 // RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \ 79 // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ 80 // RUN: -fuse-ld=lld 2>&1\ 81 // RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86,CHECK-MULTILIB-ASAN-X86 82 // RUN: %clangxx %s -### --target=x86_64-unknown-fuchsia -fno-exceptions \ 83 // RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \ 84 // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ 85 // RUN: -fuse-ld=lld 2>&1\ 86 // RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86,CHECK-MULTILIB-NOEXCEPT-X86 87 // RUN: %clangxx %s -### --target=x86_64-unknown-fuchsia -fsanitize=address -fno-exceptions \ 88 // RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \ 89 // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ 90 // RUN: -fuse-ld=lld 2>&1\ 91 // RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86,CHECK-MULTILIB-ASAN-NOEXCEPT-X86 92 // RUN: %clangxx %s -### --target=x86_64-unknown-fuchsia -fexperimental-relative-c++-abi-vtables \ 93 // RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \ 94 // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ 95 // RUN: -fuse-ld=lld 2>&1\ 96 // RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86,CHECK-MULTILIB-RELATIVE-VTABLES-X86 97 // RUN: %clangxx %s -### --target=x86_64-unknown-fuchsia -fexperimental-relative-c++-abi-vtables -fno-exceptions \ 98 // RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \ 99 // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ 100 // RUN: -fuse-ld=lld 2>&1\ 101 // RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86,CHECK-MULTILIB-RELATIVE-VTABLES-NOEXCEPT-X86 102 // RUN: %clangxx %s -### --target=x86_64-unknown-fuchsia -fexperimental-relative-c++-abi-vtables -fsanitize=address \ 103 // RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \ 104 // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ 105 // RUN: -fuse-ld=lld 2>&1\ 106 // RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86,CHECK-MULTILIB-RELATIVE-VTABLES-ASAN-X86 107 // RUN: %clangxx %s -### --target=x86_64-unknown-fuchsia -fexperimental-relative-c++-abi-vtables -fno-exceptions -fsanitize=address \ 108 // RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \ 109 // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ 110 // RUN: -fuse-ld=lld 2>&1\ 111 // RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86,CHECK-MULTILIB-RELATIVE-VTABLES-ASAN-NOEXCEPT-X86 112 // RUN: %clangxx %s -### --target=x86_64-unknown-fuchsia -fno-experimental-relative-c++-abi-vtables \ 113 // RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \ 114 // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ 115 // RUN: -fuse-ld=lld 2>&1\ 116 // RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86 117 // RUN: %clangxx %s -### --target=x86_64-unknown-fuchsia -fno-experimental-relative-c++-abi-vtables \ 118 // RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \ 119 // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ 120 // RUN: -fuse-ld=lld 2>&1\ 121 // RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86 122 // RUN: %clangxx %s -### --target=x86_64-unknown-fuchsia -fno-experimental-relative-c++-abi-vtables -fexperimental-relative-c++-abi-vtables \ 123 // RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \ 124 // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ 125 // RUN: -fuse-ld=lld 2>&1\ 126 // RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86 127 // RUN: %clangxx %s -### --target=x86_64-unknown-fuchsia -fsanitize=hwaddress \ 128 // RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \ 129 // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ 130 // RUN: -fuse-ld=lld 2>&1\ 131 // RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86,CHECK-MULTILIB-HWASAN-X86 132 // RUN: %clangxx %s -### --target=x86_64-unknown-fuchsia -fsanitize=hwaddress -fno-exceptions \ 133 // RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \ 134 // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ 135 // RUN: -fuse-ld=lld 2>&1\ 136 // RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86,CHECK-MULTILIB-HWASAN-NOEXCEPT-X86 137 // RUN: %clangxx %s -### --target=x86_64-unknown-fuchsia -fexperimental-relative-c++-abi-vtables -fsanitize=hwaddress \ 138 // RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \ 139 // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ 140 // RUN: -fuse-ld=lld 2>&1\ 141 // RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86,CHECK-MULTILIB-RELATIVE-VTABLES-HWASAN-X86 142 // RUN: %clangxx %s -### --target=x86_64-unknown-fuchsia -fexperimental-relative-c++-abi-vtables -fno-exceptions -fsanitize=hwaddress \ 143 // RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \ 144 // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ 145 // RUN: -fuse-ld=lld 2>&1\ 146 // RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86,CHECK-MULTILIB-RELATIVE-VTABLES-HWASAN-NOEXCEPT-X86 147 148 // Test compat multilibs. 149 // RUN: %clangxx %s -### --target=x86_64-unknown-fuchsia -fc++-abi=itanium \ 150 // RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \ 151 // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ 152 // RUN: -fuse-ld=lld 2>&1\ 153 // RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86,CHECK-MULTILIB-COMPAT-X86 154 // RUN: %clangxx %s -### --target=x86_64-unknown-fuchsia -fc++-abi=itanium -fc++-abi=fuchsia \ 155 // RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \ 156 // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ 157 // RUN: -fuse-ld=lld 2>&1\ 158 // RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86 159 // RUN: %clangxx %s -### --target=x86_64-unknown-fuchsia -fc++-abi=fuchsia -fc++-abi=itanium \ 160 // RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \ 161 // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ 162 // RUN: -fuse-ld=lld 2>&1\ 163 // RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86,CHECK-MULTILIB-COMPAT-X86 164 // CHECK-MULTILIB-X86: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]" 165 // CHECK-MULTILIB-ASAN-X86: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}asan" 166 // CHECK-MULTILIB-NOEXCEPT-X86: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}noexcept" 167 // CHECK-MULTILIB-ASAN-NOEXCEPT-X86: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}asan+noexcept" 168 // CHECK-MULTILIB-RELATIVE-VTABLES-X86: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}relative-vtables" 169 // CHECK-MULTILIB-RELATIVE-VTABLES-NOEXCEPT-X86: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}relative-vtables+noexcept" 170 // CHECK-MULTILIB-RELATIVE-VTABLES-ASAN-X86: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}relative-vtables+asan" 171 // CHECK-MULTILIB-RELATIVE-VTABLES-ASAN-NOEXCEPT-X86: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}relative-vtables+asan+noexcept" 172 // CHECK-MULTILIB-HWASAN-X86: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}hwasan" 173 // CHECK-MULTILIB-HWASAN-NOEXCEPT-X86: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}hwasan+noexcept" 174 // CHECK-MULTILIB-RELATIVE-VTABLES-HWASAN-X86: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}relative-vtables+hwasan" 175 // CHECK-MULTILIB-RELATIVE-VTABLES-HWASAN-NOEXCEPT-X86: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}relative-vtables+hwasan+noexcept" 176 // CHECK-MULTILIB-COMPAT-X86: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}compat" 177 // CHECK-MULTILIB-X86: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-fuchsia" 178