35 lines · cpp
1// Test that gcc-toolchain option is working correctly2//3/// Without --rtlib=libgcc the driver may pick clang_rt.crtbegin.o if4/// -DCLANG_DEFAULT_RTLIB=compiler-rt.5// RUN: %clangxx %s -### --target=x86_64-linux-gnu --sysroot= \6// RUN: --gcc-toolchain=%S/Inputs/ubuntu_14.04_multiarch_tree/usr -stdlib=libstdc++ --rtlib=libgcc --unwindlib=libgcc -no-pie 2>&1 | \7// RUN: FileCheck %s8//9// Test for header search toolchain detection.10// CHECK: "-internal-isystem"11// CHECK: "[[TOOLCHAIN:[^"]+]]/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8"12// CHECK: "-internal-isystem"13// CHECK: "[[TOOLCHAIN]]/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/x86_64-linux-gnu/c++/4.8"14// CHECK: "-internal-isystem"15// CHECK: "[[TOOLCHAIN]]/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/backward"16//17// Test for linker toolchain detection. Note that only the '-L' flags will use18// the same precise formatting of the path as the '-internal-system' flags19// above, so we just blanket wildcard match the 'crtbegin.o'.20// CHECK: "{{[^"]*}}ld{{(.exe)?}}"21// CHECK-SAME: "{{[^"]*}}/usr/lib/gcc/x86_64-linux-gnu/4.8{{/|\\\\}}crtbegin.o"22// CHECK-SAME: "-L[[TOOLCHAIN]]/usr/lib/gcc/x86_64-linux-gnu/4.8"23/// On x86_64, there is an extra usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu but we should not test it.24 25/// Test we don't detect GCC installation under -B.26// RUN: %clangxx %s -### --sysroot= 2>&1 \27// RUN: --target=aarch64-suse-linux --gcc-toolchain=%S/Inputs/opensuse_42.2_aarch64_tree/usr -no-pie | \28// RUN: FileCheck %s --check-prefix=AARCH6429// RUN: %clangxx %s -### --sysroot= 2>&1 \30// RUN: --target=aarch64-suse-linux -B%S/Inputs/opensuse_42.2_aarch64_tree/usr | \31// RUN: FileCheck %s --check-prefix=NO_AARCH6432 33// AARCH64: Inputs{{[^"]+}}aarch64-suse-linux/{{[^"]+}}crt1.o"34// NO_AARCH64-NOT: Inputs{{[^"]+}}aarch64-suse-linux/{{[^"]+}}crt1.o"35