From: Simon Atanasyan Date: Sat, 28 Sep 2013 13:45:11 +0000 (+0000) Subject: Separate construction of bi-arch path suffix from construction of X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5c805e92a5f70a913bc3bfcd15c44875974c2111;p=clang Separate construction of bi-arch path suffix from construction of multi-library path suffix. The code calculates MIPS toolchain specific multi-lib path suffixes like mips16/soft-float/el is moved to the separate function findMultiLibSuffix(). This function called during GCC installation detection and result is stored for the future using. The patch reviewed by Rafael Espindola. http://llvm-reviews.chandlerc.com/D1738 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191612 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp index 976f65c0e6..b1d65909cf 100644 --- a/lib/Driver/ToolChains.cpp +++ b/lib/Driver/ToolChains.cpp @@ -1306,29 +1306,8 @@ static bool hasMipsN32ABIArg(const ArgList &Args) { return A && (A->getValue() == StringRef("n32")); } -static void appendMipsTargetSuffix(std::string &Path, - llvm::Triple::ArchType TargetArch, - const ArgList &Args) { - if (isMips16(Args)) - Path += "/mips16"; - else if (isMicroMips(Args)) - Path += "/micromips"; - - if (isSoftFloatABI(Args)) - Path += "/soft-float"; - - if (TargetArch == llvm::Triple::mipsel || - TargetArch == llvm::Triple::mips64el) - Path += "/el"; -} - -static StringRef getMipsTargetABISuffix(llvm::Triple::ArchType TargetArch, - const ArgList &Args) { - if (TargetArch == llvm::Triple::mips64 || - TargetArch == llvm::Triple::mips64el) - return hasMipsN32ABIArg(Args) ? "/n32" : "/64"; - - return "/32"; +static bool hasCrtBeginObj(Twine Path) { + return llvm::sys::fs::exists(Path + "/crtbegin.o"); } static bool findTargetBiarchSuffix(std::string &Suffix, StringRef Path, @@ -1337,35 +1316,41 @@ static bool findTargetBiarchSuffix(std::string &Suffix, StringRef Path, // FIXME: This routine was only intended to model bi-arch toolchains which // use -m32 and -m64 to swap between variants of a target. It shouldn't be // doing ABI-based builtin location for MIPS. - if (isMipsArch(TargetArch)) { - StringRef ABISuffix = getMipsTargetABISuffix(TargetArch, Args); + if (hasMipsN32ABIArg(Args)) + Suffix = "/n32"; + else if (TargetArch == llvm::Triple::x86_64 || + TargetArch == llvm::Triple::ppc64 || + TargetArch == llvm::Triple::systemz || + TargetArch == llvm::Triple::mips64 || + TargetArch == llvm::Triple::mips64el) + Suffix = "/64"; + else + Suffix = "/32"; - // First build and check a complex path to crtbegin.o - // depends on command line options (-mips16, -msoft-float, ...) - // like mips-linux-gnu/4.7/mips16/soft-float/el/crtbegin.o - appendMipsTargetSuffix(Suffix, TargetArch, Args); + return hasCrtBeginObj(Path + Suffix); +} - if (TargetArch == llvm::Triple::mips64 || - TargetArch == llvm::Triple::mips64el) - Suffix += ABISuffix; +static void findMultiLibSuffix(std::string &Suffix, + llvm::Triple::ArchType TargetArch, + StringRef Path, + const ArgList &Args) { + if (!isMipsArch(TargetArch)) + return; - if (llvm::sys::fs::exists(Path + Suffix + "/crtbegin.o")) - return true; + if (isMips16(Args)) + Suffix += "/mips16"; + else if (isMicroMips(Args)) + Suffix += "/micromips"; - // Then fall back and probe a simple case like - // mips-linux-gnu/4.7/32/crtbegin.o - Suffix = ABISuffix; - return llvm::sys::fs::exists(Path + Suffix + "/crtbegin.o"); - } + if (isSoftFloatABI(Args)) + Suffix += "/soft-float"; - if (TargetArch == llvm::Triple::x86_64 || - TargetArch == llvm::Triple::ppc64 || - TargetArch == llvm::Triple::systemz) - Suffix = "/64"; - else - Suffix = "/32"; + if (TargetArch == llvm::Triple::mipsel || + TargetArch == llvm::Triple::mips64el) + Suffix += "/el"; - return llvm::sys::fs::exists(Path + Suffix + "/crtbegin.o"); + if (!hasCrtBeginObj(Path + Suffix)) + Suffix.clear(); } void Generic_GCC::GCCInstallationDetector::ScanLibDirForGCCTriple( @@ -1416,6 +1401,9 @@ void Generic_GCC::GCCInstallationDetector::ScanLibDirForGCCTriple( if (CandidateVersion <= Version) continue; + std::string MultiLibSuffix; + findMultiLibSuffix(MultiLibSuffix, TargetArch, LI->path(), Args); + // Some versions of SUSE and Fedora on ppc64 put 32-bit libs // in what would normally be GCCInstallPath and put the 64-bit // libs in a subdirectory named 64. The simple logic we follow is that @@ -1424,12 +1412,14 @@ void Generic_GCC::GCCInstallationDetector::ScanLibDirForGCCTriple( // crtbegin.o without the subdirectory. std::string BiarchSuffix; - if (findTargetBiarchSuffix(BiarchSuffix, LI->path(), TargetArch, Args)) { + if (findTargetBiarchSuffix(BiarchSuffix, + LI->path() + MultiLibSuffix, + TargetArch, Args)) { GCCBiarchSuffix = BiarchSuffix; + } else if (NeedsBiarchSuffix || + !hasCrtBeginObj(LI->path() + MultiLibSuffix)) { + continue; } else { - if (NeedsBiarchSuffix || - !llvm::sys::fs::exists(LI->path() + "/crtbegin.o")) - continue; GCCBiarchSuffix.clear(); } @@ -1440,6 +1430,7 @@ void Generic_GCC::GCCInstallationDetector::ScanLibDirForGCCTriple( // Linux. GCCInstallPath = LibDir + LibSuffixes[i] + "/" + VersionText.str(); GCCParentLibPath = GCCInstallPath + InstallSuffixes[i]; + GCCMultiLibSuffix = MultiLibSuffix; IsValid = true; } } @@ -2293,21 +2284,19 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) const llvm::Triple &GCCTriple = GCCInstallation.getTriple(); const std::string &LibPath = GCCInstallation.getParentLibPath(); - if (IsAndroid && isMipsR2Arch(Triple.getArch(), Args)) - addPathIfExists(GCCInstallation.getInstallPath() + - GCCInstallation.getBiarchSuffix() + "/mips-r2", - Paths); - else - addPathIfExists((GCCInstallation.getInstallPath() + - GCCInstallation.getBiarchSuffix()), - Paths); - // Sourcery CodeBench MIPS toolchain holds some libraries under // the parent prefix of the GCC installation. // FIXME: It would be cleaner to model this as a variant of multilib. IE, // instead of 'lib64' it would be 'lib/el'. - std::string MultilibSuffix; - appendMipsTargetSuffix(MultilibSuffix, Arch, Args); + if (IsAndroid && isMipsR2Arch(Triple.getArch(), Args)) { + assert(GCCInstallation.getBiarchSuffix().empty() && + "Unexpected bi-arch suffix"); + addPathIfExists(GCCInstallation.getInstallPath() + "/mips-r2", Paths); + } else + addPathIfExists((GCCInstallation.getInstallPath() + + GCCInstallation.getMultiLibSuffix() + + GCCInstallation.getBiarchSuffix()), + Paths); // GCC cross compiling toolchains will install target libraries which ship // as part of the toolchain under // rather than as @@ -2328,7 +2317,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) // Note that this matches the GCC behavior. See the below comment for where // Clang diverges from GCC's behavior. addPathIfExists(LibPath + "/../" + GCCTriple.str() + "/lib/../" + Multilib + - MultilibSuffix, + GCCInstallation.getMultiLibSuffix(), Paths); // If the GCC installation we found is inside of the sysroot, we want to @@ -2410,8 +2399,8 @@ std::string Linux::computeSysRoot(const ArgList &Args) const { std::string Path = (GCCInstallation.getInstallPath() + - "/../../../../" + GCCInstallation.getTriple().str() + "/libc").str(); - appendMipsTargetSuffix(Path, getTriple().getArch(), Args); + "/../../../../" + GCCInstallation.getTriple().str() + + "/libc" + GCCInstallation.getMultiLibSuffix()).str(); return llvm::sys::fs::exists(Path) ? Path : ""; } @@ -2597,11 +2586,13 @@ void Linux::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs, StringRef LibDir = GCCInstallation.getParentLibPath(); StringRef InstallDir = GCCInstallation.getInstallPath(); StringRef TripleStr = GCCInstallation.getTriple().str(); + StringRef MultiLibSuffix = GCCInstallation.getMultiLibSuffix(); + StringRef BiarchSuffix = GCCInstallation.getBiarchSuffix(); const GCCVersion &Version = GCCInstallation.getVersion(); if (addLibStdCXXIncludePaths( LibDir.str() + "/../include", "/c++/" + Version.Text, TripleStr, - GCCInstallation.getBiarchSuffix(), DriverArgs, CC1Args)) + MultiLibSuffix + BiarchSuffix, DriverArgs, CC1Args)) return; const std::string IncludePathCandidates[] = { @@ -2620,8 +2611,7 @@ void Linux::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs, for (unsigned i = 0; i < llvm::array_lengthof(IncludePathCandidates); ++i) { if (addLibStdCXXIncludePaths( IncludePathCandidates[i], - (TripleStr + GCCInstallation.getBiarchSuffix()), DriverArgs, - CC1Args)) + TripleStr + MultiLibSuffix + BiarchSuffix, DriverArgs, CC1Args)) break; } } diff --git a/lib/Driver/ToolChains.h b/lib/Driver/ToolChains.h index acfcfdf3b8..12121bf69a 100644 --- a/lib/Driver/ToolChains.h +++ b/lib/Driver/ToolChains.h @@ -82,6 +82,7 @@ protected: std::string GCCInstallPath; std::string GCCBiarchSuffix; std::string GCCParentLibPath; + std::string GCCMultiLibSuffix; GCCVersion Version; @@ -109,6 +110,9 @@ protected: /// \brief Get the detected GCC parent lib path. StringRef getParentLibPath() const { return GCCParentLibPath; } + /// \brief Get the detected GCC lib path suffix. + StringRef getMultiLibSuffix() const { return GCCMultiLibSuffix; } + /// \brief Get the detected GCC version string. const GCCVersion &getVersion() const { return Version; } diff --git a/test/Driver/mips-cs-ld.c b/test/Driver/mips-cs-ld.c index 1561008275..cdbd5c8c69 100644 --- a/test/Driver/mips-cs-ld.c +++ b/test/Driver/mips-cs-ld.c @@ -29,9 +29,9 @@ // CHECK-BE-HF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/mips16{{/|\\\\}}crtbegin.o" // CHECK-BE-HF-16: "-L[[TC]]/mips16" // CHECK-BE-HF-16: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/mips16" -// CHECK-BE-HF-16: "-L[[TC]]" -// CHECK-BE-HF-16: "-L[[TC]]/../../../../mips-linux-gnu/libc/mips16/lib" -// CHECK-BE-HF-16: "-L[[TC]]/../../../../mips-linux-gnu/libc/mips16/usr/lib" +// CHECK-BE-HF-16-NOT: "-L[[TC]]" +// CHECK-BE-HF-16: "-L[[TC]]/../../../../mips-linux-gnu/libc/mips16/lib/../lib" +// CHECK-BE-HF-16: "-L[[TC]]/../../../../mips-linux-gnu/libc/mips16/usr/lib/../lib" // CHECK-BE-HF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/mips16{{/|\\\\}}crtend.o" // CHECK-BE-HF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/mips16/usr/lib/../lib{{/|\\\\}}crtn.o" // @@ -47,9 +47,9 @@ // CHECK-BE-HF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/micromips{{/|\\\\}}crtbegin.o" // CHECK-BE-HF-MICRO: "-L[[TC]]/micromips" // CHECK-BE-HF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/micromips" -// CHECK-BE-HF-MICRO: "-L[[TC]]" -// CHECK-BE-HF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/libc/micromips/lib" -// CHECK-BE-HF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/libc/micromips/usr/lib" +// CHECK-BE-HF-MICRO-NOT: "-L[[TC]]" +// CHECK-BE-HF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/libc/micromips/lib/../lib" +// CHECK-BE-HF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/libc/micromips/usr/lib/../lib" // CHECK-BE-HF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/micromips{{/|\\\\}}crtend.o" // CHECK-BE-HF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/micromips/usr/lib/../lib{{/|\\\\}}crtn.o" // @@ -65,9 +65,9 @@ // CHECK-BE-SF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/soft-float{{/|\\\\}}crtbegin.o" // CHECK-BE-SF-32: "-L[[TC]]/soft-float" // CHECK-BE-SF-32: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/soft-float" -// CHECK-BE-SF-32: "-L[[TC]]" -// CHECK-BE-SF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/soft-float/lib" -// CHECK-BE-SF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/soft-float/usr/lib" +// CHECK-BE-SF-32-NOT: "-L[[TC]]" +// CHECK-BE-SF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/soft-float/lib/../lib" +// CHECK-BE-SF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/soft-float/usr/lib/../lib" // CHECK-BE-SF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/soft-float{{/|\\\\}}crtend.o" // CHECK-BE-SF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/soft-float/usr/lib/../lib{{/|\\\\}}crtn.o" // @@ -83,9 +83,9 @@ // CHECK-BE-SF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/mips16/soft-float{{/|\\\\}}crtbegin.o" // CHECK-BE-SF-16: "-L[[TC]]/mips16/soft-float" // CHECK-BE-SF-16: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/mips16/soft-float" -// CHECK-BE-SF-16: "-L[[TC]]" -// CHECK-BE-SF-16: "-L[[TC]]/../../../../mips-linux-gnu/libc/mips16/soft-float/lib" -// CHECK-BE-SF-16: "-L[[TC]]/../../../../mips-linux-gnu/libc/mips16/soft-float/usr/lib" +// CHECK-BE-SF-16-NOT: "-L[[TC]]" +// CHECK-BE-SF-16: "-L[[TC]]/../../../../mips-linux-gnu/libc/mips16/soft-float/lib/../lib" +// CHECK-BE-SF-16: "-L[[TC]]/../../../../mips-linux-gnu/libc/mips16/soft-float/usr/lib/../lib" // CHECK-BE-SF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/mips16/soft-float{{/|\\\\}}crtend.o" // CHECK-BE-SF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/mips16/soft-float/usr/lib/../lib{{/|\\\\}}crtn.o" // @@ -101,9 +101,9 @@ // CHECK-BE-SF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/micromips/soft-float{{/|\\\\}}crtbegin.o" // CHECK-BE-SF-MICRO: "-L[[TC]]/micromips/soft-float" // CHECK-BE-SF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/micromips/soft-float" -// CHECK-BE-SF-MICRO: "-L[[TC]]" -// CHECK-BE-SF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/libc/micromips/soft-float/lib" -// CHECK-BE-SF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/libc/micromips/soft-float/usr/lib" +// CHECK-BE-SF-MICRO-NOT: "-L[[TC]]" +// CHECK-BE-SF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/libc/micromips/soft-float/lib/../lib" +// CHECK-BE-SF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/libc/micromips/soft-float/usr/lib/../lib" // CHECK-BE-SF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/micromips/soft-float{{/|\\\\}}crtend.o" // CHECK-BE-SF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/micromips/soft-float/usr/lib/../lib{{/|\\\\}}crtn.o" // @@ -121,7 +121,7 @@ // CHECK-BE-HF-64: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib64" // CHECK-BE-HF-64: "-L[[TC]]/../../../../mips-linux-gnu/libc/lib/../lib64" // CHECK-BE-HF-64: "-L[[TC]]/../../../../mips-linux-gnu/libc/usr/lib/../lib64" -// CHECK-BE-HF-64: "-L[[TC]]" +// CHECK-BE-HF-64-NOT: "-L[[TC]]" // CHECK-BE-HF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/64{{/|\\\\}}crtend.o" // CHECK-BE-HF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/usr/lib/../lib64{{/|\\\\}}crtn.o" // @@ -139,7 +139,7 @@ // CHECK-BE-SF-64: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib64/soft-float" // CHECK-BE-SF-64: "-L[[TC]]/../../../../mips-linux-gnu/libc/soft-float/lib/../lib64" // CHECK-BE-SF-64: "-L[[TC]]/../../../../mips-linux-gnu/libc/soft-float/usr/lib/../lib64" -// CHECK-BE-SF-64: "-L[[TC]]" +// CHECK-BE-SF-64-NOT: "-L[[TC]]" // CHECK-BE-SF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/soft-float/64{{/|\\\\}}crtend.o" // CHECK-BE-SF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/soft-float/usr/lib/../lib64{{/|\\\\}}crtn.o" // @@ -155,9 +155,9 @@ // CHECK-EL-HF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/el{{/|\\\\}}crtbegin.o" // CHECK-EL-HF-32: "-L[[TC]]/el" // CHECK-EL-HF-32: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/el" -// CHECK-EL-HF-32: "-L[[TC]]" -// CHECK-EL-HF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/el/lib" -// CHECK-EL-HF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/el/usr/lib" +// CHECK-EL-HF-32-NOT: "-L[[TC]]" +// CHECK-EL-HF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/el/lib/../lib" +// CHECK-EL-HF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/el/usr/lib/../lib" // CHECK-EL-HF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/el{{/|\\\\}}crtend.o" // CHECK-EL-HF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/el/usr/lib/../lib{{/|\\\\}}crtn.o" // @@ -173,9 +173,9 @@ // CHECK-EL-HF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/mips16/el{{/|\\\\}}crtbegin.o" // CHECK-EL-HF-16: "-L[[TC]]/mips16/el" // CHECK-EL-HF-16: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/mips16/el" -// CHECK-EL-HF-16: "-L[[TC]]" -// CHECK-EL-HF-16: "-L[[TC]]/../../../../mips-linux-gnu/libc/mips16/el/lib" -// CHECK-EL-HF-16: "-L[[TC]]/../../../../mips-linux-gnu/libc/mips16/el/usr/lib" +// CHECK-EL-HF-16-NOT: "-L[[TC]]" +// CHECK-EL-HF-16: "-L[[TC]]/../../../../mips-linux-gnu/libc/mips16/el/lib/../lib" +// CHECK-EL-HF-16: "-L[[TC]]/../../../../mips-linux-gnu/libc/mips16/el/usr/lib/../lib" // CHECK-EL-HF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/mips16/el{{/|\\\\}}crtend.o" // CHECK-EL-HF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/mips16/el/usr/lib/../lib{{/|\\\\}}crtn.o" // @@ -191,9 +191,9 @@ // CHECK-EL-HF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/micromips/el{{/|\\\\}}crtbegin.o" // CHECK-EL-HF-MICRO: "-L[[TC]]/micromips/el" // CHECK-EL-HF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/micromips/el" -// CHECK-EL-HF-MICRO: "-L[[TC]]" -// CHECK-EL-HF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/libc/micromips/el/lib" -// CHECK-EL-HF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/libc/micromips/el/usr/lib" +// CHECK-EL-HF-MICRO-NOT: "-L[[TC]]" +// CHECK-EL-HF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/libc/micromips/el/lib/../lib" +// CHECK-EL-HF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/libc/micromips/el/usr/lib/../lib" // CHECK-EL-HF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/micromips/el{{/|\\\\}}crtend.o" // CHECK-EL-HF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/micromips/el/usr/lib/../lib{{/|\\\\}}crtn.o" // @@ -209,9 +209,9 @@ // CHECK-EL-SF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/soft-float/el{{/|\\\\}}crtbegin.o" // CHECK-EL-SF-32: "-L[[TC]]/soft-float/el" // CHECK-EL-SF-32: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/soft-float/el" -// CHECK-EL-SF-32: "-L[[TC]]" -// CHECK-EL-SF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/soft-float/el/lib" -// CHECK-EL-SF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/soft-float/el/usr/lib" +// CHECK-EL-SF-32-NOT: "-L[[TC]]" +// CHECK-EL-SF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/soft-float/el/lib/../lib" +// CHECK-EL-SF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/soft-float/el/usr/lib/../lib" // CHECK-EL-SF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/soft-float/el{{/|\\\\}}crtend.o" // CHECK-EL-SF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/soft-float/el/usr/lib/../lib{{/|\\\\}}crtn.o" // @@ -227,9 +227,9 @@ // CHECK-EL-SF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/mips16/soft-float/el{{/|\\\\}}crtbegin.o" // CHECK-EL-SF-16: "-L[[TC]]/mips16/soft-float/el" // CHECK-EL-SF-16: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/mips16/soft-float/el" -// CHECK-EL-SF-16: "-L[[TC]]" -// CHECK-EL-SF-16: "-L[[TC]]/../../../../mips-linux-gnu/libc/mips16/soft-float/el/lib" -// CHECK-EL-SF-16: "-L[[TC]]/../../../../mips-linux-gnu/libc/mips16/soft-float/el/usr/lib" +// CHECK-EL-SF-16-NOT: "-L[[TC]]" +// CHECK-EL-SF-16: "-L[[TC]]/../../../../mips-linux-gnu/libc/mips16/soft-float/el/lib/../lib" +// CHECK-EL-SF-16: "-L[[TC]]/../../../../mips-linux-gnu/libc/mips16/soft-float/el/usr/lib/../lib" // CHECK-EL-SF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/mips16/soft-float/el{{/|\\\\}}crtend.o" // CHECK-EL-SF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/mips16/soft-float/el/usr/lib/../lib{{/|\\\\}}crtn.o" // @@ -245,9 +245,9 @@ // CHECK-EL-SF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/micromips/soft-float/el{{/|\\\\}}crtbegin.o" // CHECK-EL-SF-MICRO: "-L[[TC]]/micromips/soft-float/el" // CHECK-EL-SF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/micromips/soft-float/el" -// CHECK-EL-SF-MICRO: "-L[[TC]]" -// CHECK-EL-SF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/libc/micromips/soft-float/el/lib" -// CHECK-EL-SF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/libc/micromips/soft-float/el/usr/lib" +// CHECK-EL-SF-MICRO-NOT: "-L[[TC]]" +// CHECK-EL-SF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/libc/micromips/soft-float/el/lib/../lib" +// CHECK-EL-SF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/libc/micromips/soft-float/el/usr/lib/../lib" // CHECK-EL-SF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/micromips/soft-float/el{{/|\\\\}}crtend.o" // CHECK-EL-SF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/micromips/soft-float/el/usr/lib/../lib{{/|\\\\}}crtn.o" // @@ -265,7 +265,7 @@ // CHECK-EL-HF-64: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib64/el" // CHECK-EL-HF-64: "-L[[TC]]/../../../../mips-linux-gnu/libc/el/lib/../lib64" // CHECK-EL-HF-64: "-L[[TC]]/../../../../mips-linux-gnu/libc/el/usr/lib/../lib64" -// CHECK-EL-HF-64: "-L[[TC]]" +// CHECK-EL-HF-64-NOT: "-L[[TC]]" // CHECK-EL-HF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/el/64{{/|\\\\}}crtend.o" // CHECK-EL-HF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/el/usr/lib/../lib64{{/|\\\\}}crtn.o" // @@ -283,6 +283,6 @@ // CHECK-EL-SF-64: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib64/soft-float/el" // CHECK-EL-SF-64: "-L[[TC]]/../../../../mips-linux-gnu/libc/soft-float/el/lib/../lib64" // CHECK-EL-SF-64: "-L[[TC]]/../../../../mips-linux-gnu/libc/soft-float/el/usr/lib/../lib64" -// CHECK-EL-SF-64: "-L[[TC]]" +// CHECK-EL-SF-64-NOT: "-L[[TC]]" // CHECK-EL-SF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/soft-float/el/64{{/|\\\\}}crtend.o" // CHECK-EL-SF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/soft-float/el/usr/lib/../lib64{{/|\\\\}}crtn.o"