| commit 509a8904e3efa1db01b76f01ee57ace55968bc29 |
| Author: Tiancong Wang <tcwang@google.com> |
| Date: Tue Nov 24 09:51:53 2020 -0800 |
| |
| Revert "[Driver] -B: don't search for target triple prefixes" |
| |
| This reverts commit 3452a0d8c17f7166f479706b293caf6ac76ffd90. |
| |
| diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp |
| index 4ac813718ea..9db285adb64 100644 |
| --- a/clang/lib/Driver/Driver.cpp |
| +++ b/clang/lib/Driver/Driver.cpp |
| @@ -4865,7 +4865,8 @@ void Driver::generatePrefixedToolNames( |
| Names.emplace_back((DefaultTargetTriple + "-" + Tool).str()); |
| } |
| |
| -static bool ScanDirForExecutable(SmallString<128> &Dir, StringRef Name) { |
| +static bool ScanDirForExecutable(SmallString<128> &Dir, |
| + const std::string &Name) { |
| llvm::sys::path::append(Dir, Name); |
| if (llvm::sys::fs::can_execute(Twine(Dir))) |
| return true; |
| @@ -4882,8 +4883,9 @@ std::string Driver::GetProgramPath(StringRef Name, const ToolChain &TC) const { |
| for (const auto &PrefixDir : PrefixDirs) { |
| if (llvm::sys::fs::is_directory(PrefixDir)) { |
| SmallString<128> P(PrefixDir); |
| - if (ScanDirForExecutable(P, Name)) |
| - return std::string(P.str()); |
| + for (const auto &TargetSpecificExecutable : TargetSpecificExecutables) |
| + if (ScanDirForExecutable(P, TargetSpecificExecutable)) |
| + return std::string(P.str()); |
| } else { |
| SmallString<128> P((PrefixDir + Name).str()); |
| if (llvm::sys::fs::can_execute(Twine(P))) |
| diff --git a/clang/test/Driver/B-opt.c b/clang/test/Driver/B-opt.c |
| index df85dee4b70..5e5ff42fd09 100644 |
| --- a/clang/test/Driver/B-opt.c |
| +++ b/clang/test/Driver/B-opt.c |
| @@ -1,10 +1,9 @@ |
| // Check -B driver option. |
| - |
| -/// Target triple prefix is not detected for -B. |
| +// |
| // RUN: %clang %s -### -o %t.o -target i386-unknown-linux \ |
| // RUN: -B %S/Inputs/B_opt_tree/dir1 -fuse-ld=ld 2>&1 \ |
| // RUN: | FileCheck --check-prefix=CHECK-B-OPT-TRIPLE %s |
| -// CHECK-B-OPT-TRIPLE-NOT: "{{.*}}/Inputs/B_opt_tree/dir1{{/|\\\\}}i386-unknown-linux-ld" |
| +// CHECK-B-OPT-TRIPLE: "{{.*}}/Inputs/B_opt_tree/dir1{{/|\\\\}}i386-unknown-linux-ld" |
| // |
| // RUN: %clang %s -### -o %t.o -target i386-unknown-linux \ |
| // RUN: -B %S/Inputs/B_opt_tree/dir2 -fuse-ld=ld 2>&1 \ |
| diff --git a/clang/test/Driver/fuse-ld.c b/clang/test/Driver/fuse-ld.c |
| index 678913dd84c..9b90307ecec 100644 |
| --- a/clang/test/Driver/fuse-ld.c |
| +++ b/clang/test/Driver/fuse-ld.c |
| @@ -32,21 +32,23 @@ |
| // RUN: | FileCheck %s -check-prefix=CHECK-FREEBSD-PLIB |
| // CHECK-FREEBSD-PLIB: error: invalid linker name |
| |
| + |
| + |
| // RUN: %clang %s -### -fuse-ld=ld \ |
| // RUN: -target arm-linux-androideabi \ |
| -// RUN: -B%S/Inputs/basic_android_tree/bin/arm-linux-androideabi- 2>&1 \ |
| +// RUN: -B%S/Inputs/basic_android_tree/bin 2>&1 \ |
| // RUN: | FileCheck %s --check-prefix=CHECK-ANDROID-ARM-LD |
| // CHECK-ANDROID-ARM-LD: Inputs/basic_android_tree/bin{{/|\\+}}arm-linux-androideabi-ld |
| |
| // RUN: %clang %s -### -fuse-ld=bfd \ |
| // RUN: -target arm-linux-androideabi \ |
| -// RUN: -B%S/Inputs/basic_android_tree/bin/arm-linux-androideabi- 2>&1 \ |
| +// RUN: -B%S/Inputs/basic_android_tree/bin 2>&1 \ |
| // RUN: | FileCheck %s -check-prefix=CHECK-ANDROID-ARM-BFD |
| // CHECK-ANDROID-ARM-BFD: Inputs/basic_android_tree/bin{{/|\\+}}arm-linux-androideabi-ld.bfd |
| |
| // RUN: %clang %s -### -fuse-ld=gold \ |
| // RUN: -target arm-linux-androideabi \ |
| -// RUN: -B%S/Inputs/basic_android_tree/bin/arm-linux-androideabi- 2>&1 \ |
| +// RUN: -B%S/Inputs/basic_android_tree/bin 2>&1 \ |
| // RUN: | FileCheck %s -check-prefix=CHECK-ANDROID-ARM-GOLD |
| // CHECK-ANDROID-ARM-GOLD: Inputs/basic_android_tree/bin{{/|\\+}}arm-linux-androideabi-ld.gold |
| |
| diff --git a/clang/test/Driver/prefixed-tools.c b/clang/test/Driver/prefixed-tools.c |
| index 0252a2f7014..63f7f29ae96 100644 |
| --- a/clang/test/Driver/prefixed-tools.c |
| +++ b/clang/test/Driver/prefixed-tools.c |
| @@ -1,8 +1,8 @@ |
| -// RUN: %clang -### -B%S/Inputs/prefixed_tools_tree/x86_64--linux- -o %t.o -no-integrated-as -fuse-ld=ld \ |
| +// RUN: %clang -### -B%S/Inputs/prefixed_tools_tree -o %t.o -no-integrated-as -fuse-ld=ld \ |
| // RUN: -target x86_64--linux %s 2>&1 | \ |
| // RUN: FileCheck --check-prefix=CHECK-M64 %s |
| |
| -// RUN: %clang -### -B%S/Inputs/prefixed_tools_tree/x86_64--linux- -o %t.o -no-integrated-as -fuse-ld=ld \ |
| +// RUN: %clang -### -B%S/Inputs/prefixed_tools_tree -o %t.o -no-integrated-as -fuse-ld=ld \ |
| // RUN: -m32 -target x86_64--linux %s 2>&1 | \ |
| // RUN: FileCheck --check-prefix=CHECK-M32 %s |
| |
| diff --git a/clang/test/Driver/program-path-priority.c b/clang/test/Driver/program-path-priority.c |
| index cba5f9f4d74..9f1109f530c 100644 |
| --- a/clang/test/Driver/program-path-priority.c |
| +++ b/clang/test/Driver/program-path-priority.c |
| @@ -119,15 +119,15 @@ |
| // RUN: test -f %t/%target_triple-gcc && \ |
| // RUN: mv %t/%target_triple-gcc %t/prefix || true |
| // RUN: touch %t/notreal-none-elf-gcc && chmod +x %t/notreal-none-elf-gcc |
| -// RUN: touch %t/prefix/gcc && chmod +x %t/prefix/gcc |
| // RUN: env "PATH=" %t/clang -### -target notreal-none-elf %s -B %t/prefix 2>&1 | \ |
| // RUN: FileCheck --check-prefix=DEFAULT_TRIPLE_IN_PREFIX %s |
| -// DEFAULT_TRIPLE_IN_PREFIX: prefix/gcc" |
| +// DEFAULT_TRIPLE_IN_PREFIX: prefix/{{.*}}-gcc" |
| // DEFAULT_TRIPLE_IN_PREFIX-NOT: notreal-none-elf-gcc" |
| |
| /// Only if there is nothing in the prefix will we search other paths |
| /// -f in case $DEFAULT_TRIPLE == %target_triple |
| -// RUN: rm -f %t/prefix/$DEFAULT_TRIPLE-gcc %t/prefix/%target_triple-gcc %t/prefix/gcc |
| +// RUN: rm -f %t/prefix/$DEFAULT_TRIPLE-gcc |
| +// RUN: rm -f %t/prefix/%target_triple-gcc |
| // RUN: env "PATH=" %t/clang -### -target notreal-none-elf %s -B %t/prefix 2>&1 | \ |
| // RUN: FileCheck --check-prefix=EMPTY_PREFIX_DIR %s |
| // EMPTY_PREFIX_DIR: notreal-none-elf-gcc" |
| diff --git a/clang/test/Driver/windows-cross.c b/clang/test/Driver/windows-cross.c |
| index 96497da61c0..d96b0283a90 100644 |
| --- a/clang/test/Driver/windows-cross.c |
| +++ b/clang/test/Driver/windows-cross.c |
| @@ -1,47 +1,47 @@ |
| // RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=ld -stdlib=libstdc++ -rtlib=compiler-rt -o /dev/null %s 2>&1 \ |
| // RUN: | FileCheck %s --check-prefix CHECK-BASIC-LIBCXX |
| |
| -// CHECK-BASIC-LIBCXX: {{[/\\]}}ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup" "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{[^"]*}}.o" "-lmsvcrt" |
| +// CHECK-BASIC-LIBCXX: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup" "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{[^"]*}}.o" "-lmsvcrt" |
| |
| // RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=ld -stdlib=libstdc++ -rtlib=compiler-rt -static -o /dev/null %s 2>&1 \ |
| // RUN: | FileCheck %s --check-prefix CHECK-STATIC |
| |
| -// CHECK-STATIC: {{[/\\]}}ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-Bstatic" "--entry" "mainCRTStartup" "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{[^"]*}}.o" "-lmsvcrt" |
| +// CHECK-STATIC: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-Bstatic" "--entry" "mainCRTStartup" "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{[^"]*}}.o" "-lmsvcrt" |
| |
| // RUN: %clang -### -target armv7-windows-itanium --sysroot %s/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=ld -rtlib=compiler-rt -stdlib=libstdc++ -o /dev/null %s 2>&1 \ |
| // RUN: | FileCheck %s --check-prefix CHECK-RTLIB |
| |
| -// CHECK-RTLIB: {{[/\\]}}ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup" "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib" |
| +// CHECK-RTLIB: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup" "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib" |
| |
| // RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=ld -rtlib=compiler-rt -stdlib=libc++ -o /dev/null %s 2>&1 \ |
| // RUN: | FileCheck %s --check-prefix CHECK-C-LIBCXX |
| |
| -// CHECK-C-LIBCXX: {{[/\\]}}ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup" "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib" |
| +// CHECK-C-LIBCXX: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup" "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib" |
| |
| // RUN: %clangxx -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=ld -rtlib=compiler-rt -stdlib=libc++ -o /dev/null %s 2>&1 \ |
| // RUN: | FileCheck %s --check-prefix CHECK-LIBCXX |
| |
| -// CHECK-LIBCXX: {{[/\\]}}ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup" "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{.*}}.o" "-lc++" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib" |
| +// CHECK-LIBCXX: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup" "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{.*}}.o" "-lc++" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib" |
| |
| // RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=ld -shared -rtlib=compiler-rt -stdlib=libc++ -o shared.dll %s 2>&1 \ |
| // RUN: | FileCheck %s --check-prefix CHECK-SHARED |
| |
| -// CHECK-SHARED: {{[/\\]}}ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-shared" "-Bdynamic" "--enable-auto-image-base" "--entry" "_DllMainCRTStartup" "--allow-multiple-definition" "-o" "shared.dll" "--out-implib" "shared.lib" "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib" |
| +// CHECK-SHARED: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-shared" "-Bdynamic" "--enable-auto-image-base" "--entry" "_DllMainCRTStartup" "--allow-multiple-definition" "-o" "shared.dll" "--out-implib" "shared.lib" "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib" |
| |
| // RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=ld -shared -rtlib=compiler-rt -stdlib=libc++ -static -o shared.dll %s 2>&1 \ |
| // RUN: | FileCheck %s --check-prefix CHECK-SHARED-STATIC |
| |
| -// CHECK-SHARED-STATIC: {{[/\\]}}ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-shared" "-Bstatic" "--enable-auto-image-base" "--entry" "_DllMainCRTStartup" "--allow-multiple-definition" "-o" "shared.dll" "--out-implib" "shared.lib" "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib" |
| +// CHECK-SHARED-STATIC: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-shared" "-Bstatic" "--enable-auto-image-base" "--entry" "_DllMainCRTStartup" "--allow-multiple-definition" "-o" "shared.dll" "--out-implib" "shared.lib" "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib" |
| |
| // RUN: %clang -### -target armv7-windows-itanium --sysroot %s/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=ld -shared -rtlib=compiler-rt -stdlib=libc++ -nostartfiles -o shared.dll %s 2>&1 \ |
| // RUN: | FileCheck %s --check-prefix CHECK-NOSTARTFILES |
| |
| -// CHECK-NOSTARTFILES: {{[/\\]}}ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-shared" "-Bdynamic" "--enable-auto-image-base" "--entry" "_DllMainCRTStartup" "--allow-multiple-definition" "-o" "shared.dll" "--out-implib" "shared.lib" "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib" |
| +// CHECK-NOSTARTFILES: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-shared" "-Bdynamic" "--enable-auto-image-base" "--entry" "_DllMainCRTStartup" "--allow-multiple-definition" "-o" "shared.dll" "--out-implib" "shared.lib" "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib" |
| |
| // RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=ld -shared -rtlib=compiler-rt -stdlib=libc++ -nostartfiles -nodefaultlibs -o shared.dll %s 2>&1 \ |
| // RUN: | FileCheck %s --check-prefix CHECK-STANDALONE |
| |
| -// CHECK-STANDALONE: {{[/\\]}}ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-shared" "-Bdynamic" "--enable-auto-image-base" "--entry" "_DllMainCRTStartup" "--allow-multiple-definition" "-o" "shared.dll" "--out-implib" "shared.lib" "{{.*}}.o" |
| +// CHECK-STANDALONE: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-shared" "-Bdynamic" "--enable-auto-image-base" "--entry" "_DllMainCRTStartup" "--allow-multiple-definition" "-o" "shared.dll" "--out-implib" "shared.lib" "{{.*}}.o" |
| |
| // RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=lld-link2 -shared -o shared.dll -x c++ %s 2>&1 \ |
| // RUN: | FileCheck %s --check-prefix CHECK-FUSE-LD |