159 lines · cpp
1// RUN: %clangxx -### %s --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=ld 2>&1 \5// RUN: | FileCheck -check-prefixes=CHECK,CHECK-X86_64 %s6// RUN: %clangxx -### %s --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=ld 2>&1 \10// RUN: | FileCheck -check-prefixes=CHECK,CHECK-AARCH64 %s11// RUN: %clangxx -### %s --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=ld 2>&1 \15// RUN: | FileCheck -check-prefixes=CHECK,CHECK-RISCV64 %s16// RUN: %clangxx -### %s --target=x86_64-fuchsia \17// RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \18// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \19// RUN: --sysroot=%S/platform -fuse-ld=ld 2>&1 \20// RUN: | FileCheck -check-prefixes=CHECK,CHECK-X86_64 %s21// RUN: %clangxx -### %s --target=aarch64-fuchsia \22// RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \23// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \24// RUN: --sysroot=%S/platform -fuse-ld=ld 2>&1 \25// RUN: | FileCheck -check-prefixes=CHECK,CHECK-AARCH64 %s26// RUN: %clangxx -### %s --target=riscv64-fuchsia \27// RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \28// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \29// RUN: --sysroot=%S/platform -fuse-ld=ld 2>&1 \30// RUN: | FileCheck -check-prefixes=CHECK,CHECK-RISCV64 %s31// CHECK: "-cc1"32// CHECK-X86_64: "-triple" "x86_64-unknown-fuchsia"33// CHECK-AARCH64: "-triple" "aarch64-unknown-fuchsia"34// CHECK-RISCV64: "-triple" "riscv64-unknown-fuchsia"35// CHECK-NOT: "-fno-use-init-array"36// CHECK: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"37// CHECK: "-isysroot" "[[SYSROOT:[^"]+]]"38// CHECK-X86_64: "-internal-isystem" "{{.*[/\\]}}include{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}c++{{/|\\\\}}v1"39// CHECK-AARCH64: "-internal-isystem" "{{.*[/\\]}}include{{/|\\\\}}aarch64-unknown-fuchsia{{/|\\\\}}c++{{/|\\\\}}v1"40// CHECK-RISCV64: "-internal-isystem" "{{.*[/\\]}}include{{/|\\\\}}riscv64-unknown-fuchsia{{/|\\\\}}c++{{/|\\\\}}v1"41// CHECK: "-internal-isystem" "{{.*[/\\]}}include{{/|\\\\}}c++{{/|\\\\}}v1"42// CHECK: "-internal-externc-isystem" "[[SYSROOT]]{{/|\\\\}}include"43// CHECK: {{.*}}ld.lld{{.*}}" "-z" "now" "-z" "start-stop-visibility=hidden" "-z" "rodynamic" "-z" "separate-loadable-segments" "-z" "rel" "--pack-dyn-relocs=relr"44// CHECK: "--sysroot=[[SYSROOT]]"45// CHECK: "-pie"46// CHECK: "--build-id"47// CHECK: "-dynamic-linker" "ld.so.1"48// CHECK: Scrt1.o49// CHECK-NOT: crti.o50// CHECK-NOT: crtbegin.o51// CHECK: "-L[[SYSROOT]]{{/|\\\\}}lib"52// CHECK: "--push-state"53// CHECK: "--as-needed"54// CHECK: "-lc++"55// CHECK: "-lm"56// CHECK: "--pop-state"57// CHECK-X86_64: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}libclang_rt.builtins.a"58// CHECK-AARCH64: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}aarch64-unknown-fuchsia{{/|\\\\}}libclang_rt.builtins.a"59// CHECK-RISCV64: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}riscv64-unknown-fuchsia{{/|\\\\}}libclang_rt.builtins.a"60// CHECK: "-lc"61// CHECK-NOT: crtend.o62// CHECK-NOT: crtn.o63 64// RUN: not %clangxx -### %s --target=x86_64-unknown-fuchsia -stdlib=libstdc++ 2>&1 \65// RUN: | FileCheck %s -check-prefix=CHECK-STDLIB66// CHECK-STDLIB: error: invalid library name in argument '-stdlib=libstdc++'67 68// RUN: %clangxx -### %s --target=x86_64-unknown-fuchsia -static-libstdc++ \69// RUN: -fuse-ld=ld 2>&1 \70// RUN: | FileCheck %s -check-prefix=CHECK-STATIC71// CHECK-STATIC: "--push-state"72// CHECK-STATIC: "--as-needed"73// CHECK-STATIC: "-Bstatic"74// CHECK-STATIC: "-lc++"75// CHECK-STATIC: "-Bdynamic"76// CHECK-STATIC: "-lm"77// CHECK-STATIC: "--pop-state"78// CHECK-STATIC: "-lc"79 80// RUN: %clangxx -### %s --target=x86_64-unknown-fuchsia -nostdlib++ -fuse-ld=ld 2>&1 \81// RUN: | FileCheck %s -check-prefix=CHECK-NOSTDLIBXX82// CHECK-NOSTDLIBXX-NOT: "-lc++"83// CHECK-NOSTDLIBXX-NOT: "-lm"84// CHECK-NOSTDLIBXX: "-lc"85 86// RUN: %clangxx -### %s --target=x86_64-unknown-fuchsia \87// RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \88// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \89// RUN: -fuse-ld=ld 2>&1\90// RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X8691// RUN: %clangxx -### %s --target=x86_64-unknown-fuchsia -fno-exceptions \92// RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \93// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \94// RUN: -fuse-ld=ld 2>&1\95// RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86,CHECK-MULTILIB-NOEXCEPT-X8696// RUN: %clangxx -### %s --target=x86_64-unknown-fuchsia -fsanitize=address \97// RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \98// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \99// RUN: -fuse-ld=ld 2>&1\100// RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86,CHECK-MULTILIB-ASAN-X86101// RUN: %clangxx -### %s --target=x86_64-unknown-fuchsia -fsanitize=address -fno-exceptions \102// RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \103// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \104// RUN: -fuse-ld=ld 2>&1\105// RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86,CHECK-MULTILIB-ASAN-NOEXCEPT-X86106// RUN: %clangxx -### %s --target=x86_64-unknown-fuchsia -fsanitize=hwaddress \107// RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \108// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \109// RUN: -fuse-ld=ld 2>&1\110// RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86,CHECK-MULTILIB-HWASAN-X86111// RUN: %clangxx -### %s --target=x86_64-unknown-fuchsia -fsanitize=hwaddress -fno-exceptions \112// RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \113// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \114// RUN: -fuse-ld=ld 2>&1\115// RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86,CHECK-MULTILIB-HWASAN-NOEXCEPT-X86116 117// Test compat multilibs.118// RUN: %clangxx -### %s --target=x86_64-unknown-fuchsia -fc++-abi=itanium \119// RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \120// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \121// RUN: -fuse-ld=ld 2>&1\122// RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86,CHECK-MULTILIB-COMPAT-X86123// RUN: %clangxx -### %s --target=x86_64-unknown-fuchsia -fc++-abi=itanium -fc++-abi=fuchsia \124// RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \125// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \126// RUN: -fuse-ld=ld 2>&1\127// RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86128// RUN: %clangxx -### %s --target=x86_64-unknown-fuchsia -fc++-abi=fuchsia -fc++-abi=itanium \129// RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \130// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \131// RUN: -fuse-ld=ld 2>&1\132// RUN: | FileCheck %s -check-prefixes=CHECK-MULTILIB-X86,CHECK-MULTILIB-COMPAT-X86133// CHECK-MULTILIB-X86: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"134// CHECK-MULTILIB-NOEXCEPT-X86: "-internal-isystem" "{{.*[/\\]}}include{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}noexcept{{/|\\\\}}c++{{/|\\\\}}v1"135// CHECK-MULTILIB-ASAN-X86: "-internal-isystem" "{{.*[/\\]}}include{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}asan{{/|\\\\}}c++{{/|\\\\}}v1"136// CHECK-MULTILIB-ASAN-NOEXCEPT-X86: "-internal-isystem" "{{.*[/\\]}}include{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}asan+noexcept{{/|\\\\}}c++{{/|\\\\}}v1"137// CHECK-MULTILIB-HWASAN-X86: "-internal-isystem" "{{.*[/\\]}}include{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}hwasan{{/|\\\\}}c++{{/|\\\\}}v1"138// CHECK-MULTILIB-HWASAN-NOEXCEPT-X86: "-internal-isystem" "{{.*[/\\]}}include{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}hwasan+noexcept{{/|\\\\}}c++{{/|\\\\}}v1"139// CHECK-MULTILIB-COMPAT-X86: "-internal-isystem" "{{.*[/\\]}}include{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}compat{{/|\\\\}}c++{{/|\\\\}}v1"140// CHECK-MULTILIB-X86: "-internal-isystem" "{{.*[/\\]}}include{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}c++{{/|\\\\}}v1"141// CHECK-MULTILIB-NOEXCEPT-X86: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}noexcept"142// CHECK-MULTILIB-ASAN-X86: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}asan"143// CHECK-MULTILIB-ASAN-NOEXCEPT-X86: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}asan+noexcept"144// CHECK-MULTILIB-HWASAN-X86: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}hwasan"145// CHECK-MULTILIB-HWASAN-NOEXCEPT-X86: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}hwasan+noexcept"146// CHECK-MULTILIB-COMPAT-X86: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-fuchsia{{/|\\\\}}compat"147// CHECK-MULTILIB-X86: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}lib{{/|\\\\}}x86_64-unknown-fuchsia"148 149// Check that -print-multi-directory only outputs one multilib directory.150// This may be relaxed later but for now preserve existing behaviour.151// RUN: %clangxx -print-multi-directory --target=x86_64-unknown-fuchsia -fsanitize=address -fno-exceptions \152// RUN: -ccc-install-dir %S/Inputs/basic_fuchsia_tree/bin \153// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \154// RUN: | FileCheck %s -check-prefixes=CHECK-PRINT-MULTI-LIB155// CHECK-PRINT-MULTI-LIB-NOT: .156// CHECK-PRINT-MULTI-LIB-NOT: noexcept157// CHECK-PRINT-MULTI-LIB-NOT: asan158// CHECK-PRINT-MULTI-LIB: asan+noexcept159