Author: nickdesaulniers Date: Tue May 21 14:21:35 2019 New Revision: 361314
URL: http://llvm.org/viewvc/llvm-project?rev=361314&view=rev Log: [Driver] Verify GCCInstallation is valid Summary: Values returned by GCCInstallation.getParentLibPath() and GCCInstallation.getTriple() are not valid unless GCCInstallation.isValid() returns true. This has previously been ignored, and the former two values were used without checking whether GCCInstallation is valid. This led to the bad path "/../bin" being added to the list of program paths. author: danielmentz "Daniel Mentz <danielme...@google.com>" Reviewers: #clang, tstellar, srhines Reviewed By: srhines Subscribers: danielmentz, ormris, nickdesaulniers, srhines, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D57930 Modified: cfe/trunk/lib/Driver/ToolChains/Linux.cpp cfe/trunk/test/Driver/B-opt.c Modified: cfe/trunk/lib/Driver/ToolChains/Linux.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Linux.cpp?rev=361314&r1=361313&r2=361314&view=diff ============================================================================== --- cfe/trunk/lib/Driver/ToolChains/Linux.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains/Linux.cpp Tue May 21 14:21:35 2019 @@ -234,9 +234,11 @@ Linux::Linux(const Driver &D, const llvm // used to target i386. // FIXME: This seems unlikely to be Linux-specific. ToolChain::path_list &PPaths = getProgramPaths(); - PPaths.push_back(Twine(GCCInstallation.getParentLibPath() + "/../" + - GCCInstallation.getTriple().str() + "/bin") - .str()); + if (GCCInstallation.isValid()) { + PPaths.push_back(Twine(GCCInstallation.getParentLibPath() + "/../" + + GCCInstallation.getTriple().str() + "/bin") + .str()); + } Distro Distro(D.getVFS()); Modified: cfe/trunk/test/Driver/B-opt.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/B-opt.c?rev=361314&r1=361313&r2=361314&view=diff ============================================================================== --- cfe/trunk/test/Driver/B-opt.c (original) +++ cfe/trunk/test/Driver/B-opt.c Tue May 21 14:21:35 2019 @@ -20,3 +20,8 @@ // RUN: -B %S/Inputs/B_opt_tree/dir2 2>&1 -fuse-ld=ld \ // RUN: | FileCheck --check-prefix=CHECK-B-OPT-MULT %s // CHECK-B-OPT-MULT: "{{.*}}/Inputs/B_opt_tree/dir3{{/|\\\\}}prefix-ld" +// +// RUN: %clang -B %S/Inputs/does_not_exist -print-search-dirs \ +// RUN: -target aarch64-linux-gnu \ +// RUN: | FileCheck --check-prefix=CHECK-B-OPT-INVALID %s +// CHECK-B-OPT-INVALID-NOT: /..//bin _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits