Index: include/clang/Driver/Options.td =================================================================== --- include/clang/Driver/Options.td +++ include/clang/Driver/Options.td @@ -78,6 +78,7 @@ def m_arm_Features_Group : OptionGroup<"">, Group; def m_aarch64_Features_Group : OptionGroup<"">, Group; def m_ppc_Features_Group : OptionGroup<"">, Group; +def m_libc_Group : OptionGroup<"">, Group; def u_Group : OptionGroup<"">; def pedantic_Group : OptionGroup<"">, @@ -1279,6 +1280,8 @@ def mno_odd_spreg : Flag<["-"], "mno-odd-spreg">, Group, HelpText<"Disable odd single-precision floating point registers">, Flags<[HelpHidden]>; +def mglibc : Flag<["-"], "mglibc">, Group, Flags<[HelpHidden]>; +def muclibc : Flag<["-"], "muclibc">, Group, Flags<[HelpHidden]>; def module_file_info : Flag<["-"], "module-file-info">, Flags<[DriverOption,CC1Option]>, Group; def mthumb : Flag<["-"], "mthumb">, Group; def mtune_EQ : Joined<["-"], "mtune=">, Group; Index: lib/Driver/ToolChains.cpp =================================================================== --- lib/Driver/ToolChains.cpp +++ lib/Driver/ToolChains.cpp @@ -1695,6 +1695,9 @@ auto Mips16 = makeMultilib("/mips16") .flag("+mips16"); + auto UCLibc = makeMultilib("/uclibc") + .flag("+muclibc"); + auto MAbi64 = makeMultilib("/64") .flag("+mabi=n64").flag("-mabi=n32").flag("-m32"); @@ -1713,6 +1716,7 @@ FSFMipsMultilibs = MultilibSet() .Either(MArchMips32, MArchMicroMips, MArchMips64r2, MArchMips64, MArchDefault) + .Maybe(UCLibc) .Maybe(Mips16) .FilterOut("/mips64/mips16") .FilterOut("/mips64r2/mips16") @@ -1731,7 +1735,12 @@ StringRef InstallDir, StringRef TripleStr, const Multilib &M) { std::vector Dirs; Dirs.push_back((InstallDir + "/include").str()); - Dirs.push_back((InstallDir + "/../../../../sysroot/usr/include").str()); + if (StringRef(M.includeSuffix()).startswith("/uclibc")) + Dirs.push_back( + (InstallDir + "/../../../../sysroot/uclibc/usr/include").str()); + else + Dirs.push_back( + (InstallDir + "/../../../../sysroot/usr/include").str()); return Dirs; }); } @@ -1748,6 +1757,9 @@ auto MArchDefault = makeMultilib("") .flag("-mips16").flag("-mmicromips"); + auto UCLibc = makeMultilib("/uclibc") + .flag("+muclibc"); + auto SoftFloat = makeMultilib("/soft-float") .flag("+msoft-float"); @@ -1771,6 +1783,7 @@ CSMipsMultilibs = MultilibSet() .Either(MArchMips16, MArchMicroMips, MArchDefault) + .Maybe(UCLibc) .Either(SoftFloat, Nan2008, DefaultFloat) .FilterOut("/micromips/nan2008") .FilterOut("/mips16/nan2008") @@ -1783,8 +1796,12 @@ StringRef InstallDir, StringRef TripleStr, const Multilib &M) { std::vector Dirs; Dirs.push_back((InstallDir + "/include").str()); - Dirs.push_back((InstallDir + "/../../../../" + TripleStr + - "/libc/usr/include").str()); + if (StringRef(M.includeSuffix()).startswith("/uclibc")) + Dirs.push_back((InstallDir + "/../../../../" + TripleStr + + "/libc/uclibc/usr/include").str()); + else + Dirs.push_back((InstallDir + "/../../../../" + TripleStr + + "/libc/usr/include").str()); return Dirs; }); } @@ -1854,6 +1871,7 @@ addMultilibFlag(CPUName == "mips64r2" || CPUName == "octeon", "march=mips64r2", Flags); addMultilibFlag(isMicroMips(Args), "mmicromips", Flags); + addMultilibFlag(tools::mips::isUCLibc(Args), "muclibc", Flags); addMultilibFlag(tools::mips::isNaN2008(Args, TargetTriple), "mnan=2008", Flags); addMultilibFlag(ABIName == "n32", "mabi=n32", Flags); Index: lib/Driver/Tools.h =================================================================== --- lib/Driver/Tools.h +++ lib/Driver/Tools.h @@ -223,6 +223,7 @@ const llvm::Triple &Triple, StringRef &CPUName, StringRef &ABIName); bool hasMipsAbiArg(const llvm::opt::ArgList &Args, const char *Value); + bool isUCLibc(const llvm::opt::ArgList &Args); bool isNaN2008(const llvm::opt::ArgList &Args, const llvm::Triple &Triple); bool isFPXXDefault(const llvm::Triple &Triple, StringRef CPUName, StringRef ABIName); Index: lib/Driver/Tools.cpp =================================================================== --- lib/Driver/Tools.cpp +++ lib/Driver/Tools.cpp @@ -5345,6 +5345,11 @@ return A && (A->getValue() == StringRef(Value)); } +bool mips::isUCLibc(const ArgList &Args) { + Arg *A = Args.getLastArg(options::OPT_m_libc_Group); + return A && A->getOption().matches(options::OPT_muclibc); +} + bool mips::isNaN2008(const ArgList &Args, const llvm::Triple &Triple) { if (Arg *NaNArg = Args.getLastArg(options::OPT_mnan_EQ)) return llvm::StringSwitch(NaNArg->getValue()) @@ -7257,7 +7262,11 @@ .Case("n32", "/lib32") .Case("n64", "/lib64") .Default("/lib"); - StringRef LibName = IsNaN2008 ? "ld-linux-mipsn8.so.1" : "ld.so.1"; + StringRef LibName; + if (mips::isUCLibc(Args)) + LibName = IsNaN2008 ? "ld-uClibc-mipsn8.so.0" : "ld-uClibc.so.0"; + else + LibName = IsNaN2008 ? "ld-linux-mipsn8.so.1" : "ld.so.1"; return (LibDir + "/" + LibName).str(); } else if (ToolChain.getArch() == llvm::Triple::ppc) Index: test/Driver/mips-cs.cpp =================================================================== --- test/Driver/mips-cs.cpp +++ test/Driver/mips-cs.cpp @@ -28,6 +28,35 @@ // CHECK-BE-HF-32: "[[TC]]{{/|\\\\}}crtend.o" // CHECK-BE-HF-32: "[[TC]]/../../../../mips-linux-gnu/libc/usr/lib/../lib{{/|\\\\}}crtn.o" // +// = Big-endian, hard float, uclibc +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: --target=mips-linux-gnu -muclibc \ +// RUN: --gcc-toolchain=%S/Inputs/mips_cs_tree \ +// RUN: | FileCheck --check-prefix=CHECK-BE-UC-HF-32 %s +// CHECK-BE-UC-HF-32: "-internal-isystem" +// CHECK-BE-UC-HF-32: "[[TC:[^"]+/lib/gcc/mips-linux-gnu/4.6.3]]/../../../../mips-linux-gnu/include/c++/4.6.3" +// CHECK-BE-UC-HF-32: "-internal-isystem" +// CHECK-BE-UC-HF-32: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/mips-linux-gnu/uclibc" +// CHECK-BE-UC-HF-32: "-internal-isystem" +// CHECK-BE-UC-HF-32: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/backward" +// CHECK-BE-UC-HF-32: "-internal-externc-isystem" +// CHECK-BE-UC-HF-32: "[[TC]]/include" +// CHECK-BE-UC-HF-32: "-internal-externc-isystem" +// CHECK-BE-UC-HF-32: "[[TC]]/../../../../mips-linux-gnu/libc/uclibc/usr/include" +// CHECK-BE-UC-HF-32: "{{.*}}ld{{(.exe)?}}" +// CHECK-BE-UC-HF-32: "--sysroot=[[TC]]/../../../../mips-linux-gnu/libc/uclibc" +// CHECK-BE-UC-HF-32: "-dynamic-linker" "/lib/ld-uClibc.so.0" +// CHECK-BE-UC-HF-32: "[[TC]]/../../../../mips-linux-gnu/libc/uclibc/usr/lib/../lib{{/|\\\\}}crt1.o" +// CHECK-BE-UC-HF-32: "[[TC]]/../../../../mips-linux-gnu/libc/uclibc/usr/lib/../lib{{/|\\\\}}crti.o" +// CHECK-BE-UC-HF-32: "[[TC]]/uclibc{{/|\\\\}}crtbegin.o" +// CHECK-BE-UC-HF-32: "-L[[TC]]/uclibc" +// CHECK-BE-UC-HF-32: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/uclibc" +// CHECK-BE-UC-HF-32-NOT: "-L[[TC]]" +// CHECK-BE-UC-HF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/uclibc/lib/../lib" +// CHECK-BE-UC-HF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/uclibc/usr/lib/../lib" +// CHECK-BE-UC-HF-32: "[[TC]]/uclibc{{/|\\\\}}crtend.o" +// CHECK-BE-UC-HF-32: "[[TC]]/../../../../mips-linux-gnu/libc/uclibc/usr/lib/../lib{{/|\\\\}}crtn.o" +// // = Big-endian, hard float, mips16 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ // RUN: --target=mips-linux-gnu -mips16 \ @@ -115,6 +144,35 @@ // CHECK-BE-HF-NAN: "[[TC]]/nan2008{{/|\\\\}}crtend.o" // CHECK-BE-HF-NAN: "[[TC]]/../../../../mips-linux-gnu/libc/nan2008/usr/lib/../lib{{/|\\\\}}crtn.o" // +// = Big-endian, hard float, uclibc, nan2008 +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: --target=mips-linux-gnu -muclibc -mnan=2008 \ +// RUN: --gcc-toolchain=%S/Inputs/mips_cs_tree \ +// RUN: | FileCheck --check-prefix=CHECK-BE-UC-HF-NAN %s +// CHECK-BE-UC-HF-NAN: "-internal-isystem" +// CHECK-BE-UC-HF-NAN: "[[TC:[^"]+/lib/gcc/mips-linux-gnu/4.6.3]]/../../../../mips-linux-gnu/include/c++/4.6.3" +// CHECK-BE-UC-HF-NAN: "-internal-isystem" +// CHECK-BE-UC-HF-NAN: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/mips-linux-gnu/uclibc/nan2008" +// CHECK-BE-UC-HF-NAN: "-internal-isystem" +// CHECK-BE-UC-HF-NAN: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/backward" +// CHECK-BE-UC-HF-NAN: "-internal-externc-isystem" +// CHECK-BE-UC-HF-NAN: "[[TC]]/include" +// CHECK-BE-UC-HF-NAN: "-internal-externc-isystem" +// CHECK-BE-UC-HF-NAN: "[[TC]]/../../../../mips-linux-gnu/libc/uclibc/usr/include" +// CHECK-BE-UC-HF-NAN: "{{.*}}ld{{(.exe)?}}" +// CHECK-BE-UC-HF-NAN: "--sysroot=[[TC]]/../../../../mips-linux-gnu/libc/uclibc/nan2008" +// CHECK-BE-UC-HF-NAN: "-dynamic-linker" "/lib/ld-uClibc-mipsn8.so.0" +// CHECK-BE-UC-HF-NAN: "[[TC]]/../../../../mips-linux-gnu/libc/uclibc/nan2008/usr/lib/../lib{{/|\\\\}}crt1.o" +// CHECK-BE-UC-HF-NAN: "[[TC]]/../../../../mips-linux-gnu/libc/uclibc/nan2008/usr/lib/../lib{{/|\\\\}}crti.o" +// CHECK-BE-UC-HF-NAN: "[[TC]]/uclibc/nan2008{{/|\\\\}}crtbegin.o" +// CHECK-BE-UC-HF-NAN: "-L[[TC]]/uclibc/nan2008" +// CHECK-BE-UC-HF-NAN: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/uclibc/nan2008" +// CHECK-BE-UC-HF-NAN-NOT: "-L[[TC]]" +// CHECK-BE-UC-HF-NAN: "-L[[TC]]/../../../../mips-linux-gnu/libc/uclibc/nan2008/lib/../lib" +// CHECK-BE-UC-HF-NAN: "-L[[TC]]/../../../../mips-linux-gnu/libc/uclibc/nan2008/usr/lib/../lib" +// CHECK-BE-UC-HF-NAN: "[[TC]]/uclibc/nan2008{{/|\\\\}}crtend.o" +// CHECK-BE-UC-HF-NAN: "[[TC]]/../../../../mips-linux-gnu/libc/uclibc/nan2008/usr/lib/../lib{{/|\\\\}}crtn.o" +// // = Big-endian, soft float // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ // RUN: --target=mips-linux-gnu -msoft-float \ @@ -144,6 +202,35 @@ // CHECK-BE-SF-32: "[[TC]]/soft-float{{/|\\\\}}crtend.o" // CHECK-BE-SF-32: "[[TC]]/../../../../mips-linux-gnu/libc/soft-float/usr/lib/../lib{{/|\\\\}}crtn.o" // +// = Big-endian, soft float, uclibc +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: --target=mips-linux-gnu -muclibc -msoft-float \ +// RUN: --gcc-toolchain=%S/Inputs/mips_cs_tree \ +// RUN: | FileCheck --check-prefix=CHECK-BE-UC-SF-32 %s +// CHECK-BE-UC-SF-32: "-internal-isystem" +// CHECK-BE-UC-SF-32: "[[TC:[^"]+/lib/gcc/mips-linux-gnu/4.6.3]]/../../../../mips-linux-gnu/include/c++/4.6.3" +// CHECK-BE-UC-SF-32: "-internal-isystem" +// CHECK-BE-UC-SF-32: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/mips-linux-gnu/uclibc/soft-float" +// CHECK-BE-UC-SF-32: "-internal-isystem" +// CHECK-BE-UC-SF-32: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/backward" +// CHECK-BE-UC-SF-32: "-internal-externc-isystem" +// CHECK-BE-UC-SF-32: "[[TC]]/include" +// CHECK-BE-UC-SF-32: "-internal-externc-isystem" +// CHECK-BE-UC-SF-32: "[[TC]]/../../../../mips-linux-gnu/libc/uclibc/usr/include" +// CHECK-BE-UC-SF-32: "{{.*}}ld{{(.exe)?}}" +// CHECK-BE-UC-SF-32: "--sysroot=[[TC]]/../../../../mips-linux-gnu/libc/uclibc/soft-float" +// CHECK-BE-UC-SF-32: "-dynamic-linker" "/lib/ld-uClibc.so.0" +// CHECK-BE-UC-SF-32: "[[TC]]/../../../../mips-linux-gnu/libc/uclibc/soft-float/usr/lib/../lib{{/|\\\\}}crt1.o" +// CHECK-BE-UC-SF-32: "[[TC]]/../../../../mips-linux-gnu/libc/uclibc/soft-float/usr/lib/../lib{{/|\\\\}}crti.o" +// CHECK-BE-UC-SF-32: "[[TC]]/uclibc/soft-float{{/|\\\\}}crtbegin.o" +// CHECK-BE-UC-SF-32: "-L[[TC]]/uclibc/soft-float" +// CHECK-BE-UC-SF-32: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/uclibc/soft-float" +// CHECK-BE-UC-SF-32-NOT: "-L[[TC]]" +// CHECK-BE-UC-SF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/uclibc/soft-float/lib/../lib" +// CHECK-BE-UC-SF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/uclibc/soft-float/usr/lib/../lib" +// CHECK-BE-UC-SF-32: "[[TC]]/uclibc/soft-float{{/|\\\\}}crtend.o" +// CHECK-BE-UC-SF-32: "[[TC]]/../../../../mips-linux-gnu/libc/uclibc/soft-float/usr/lib/../lib{{/|\\\\}}crtn.o" +// // = Big-endian, soft float, mips16 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ // RUN: --target=mips-linux-gnu -msoft-float -mips16 \ @@ -289,6 +376,35 @@ // CHECK-EL-HF-32: "[[TC]]/el{{/|\\\\}}crtend.o" // CHECK-EL-HF-32: "[[TC]]/../../../../mips-linux-gnu/libc/el/usr/lib/../lib{{/|\\\\}}crtn.o" // +// = Little-endian, hard float, uclibc +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: --target=mipsel-linux-gnu -mhard-float -muclibc \ +// RUN: --gcc-toolchain=%S/Inputs/mips_cs_tree \ +// RUN: | FileCheck --check-prefix=CHECK-EL-UC-HF-32 %s +// CHECK-EL-UC-HF-32: "-internal-isystem" +// CHECK-EL-UC-HF-32: "[[TC:[^"]+/lib/gcc/mips-linux-gnu/4.6.3]]/../../../../mips-linux-gnu/include/c++/4.6.3" +// CHECK-EL-UC-HF-32: "-internal-isystem" +// CHECK-EL-UC-HF-32: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/mips-linux-gnu/uclibc/el" +// CHECK-EL-UC-HF-32: "-internal-isystem" +// CHECK-EL-UC-HF-32: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/backward" +// CHECK-EL-UC-HF-32: "-internal-externc-isystem" +// CHECK-EL-UC-HF-32: "[[TC]]/include" +// CHECK-EL-UC-HF-32: "-internal-externc-isystem" +// CHECK-EL-UC-HF-32: "[[TC]]/../../../../mips-linux-gnu/libc/uclibc/usr/include" +// CHECK-EL-UC-HF-32: "{{.*}}ld{{(.exe)?}}" +// CHECK-EL-UC-HF-32: "--sysroot=[[TC]]/../../../../mips-linux-gnu/libc/uclibc/el" +// CHECK-EL-UC-HF-32: "-dynamic-linker" "/lib/ld-uClibc.so.0" +// CHECK-EL-UC-HF-32: "[[TC]]/../../../../mips-linux-gnu/libc/uclibc/el/usr/lib/../lib{{/|\\\\}}crt1.o" +// CHECK-EL-UC-HF-32: "[[TC]]/../../../../mips-linux-gnu/libc/uclibc/el/usr/lib/../lib{{/|\\\\}}crti.o" +// CHECK-EL-UC-HF-32: "[[TC]]/uclibc/el{{/|\\\\}}crtbegin.o" +// CHECK-EL-UC-HF-32: "-L[[TC]]/uclibc/el" +// CHECK-EL-UC-HF-32: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/uclibc/el" +// CHECK-EL-UC-HF-32-NOT: "-L[[TC]]" +// CHECK-EL-UC-HF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/uclibc/el/lib/../lib" +// CHECK-EL-UC-HF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/uclibc/el/usr/lib/../lib" +// CHECK-EL-UC-HF-32: "[[TC]]/uclibc/el{{/|\\\\}}crtend.o" +// CHECK-EL-UC-HF-32: "[[TC]]/../../../../mips-linux-gnu/libc/uclibc/el/usr/lib/../lib{{/|\\\\}}crtn.o" +// // = Little-endian, hard float, mips16 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ // RUN: --target=mipsel-linux-gnu -mips16 \ @@ -376,6 +492,35 @@ // CHECK-EL-HF-NAN: "[[TC]]/nan2008/el{{/|\\\\}}crtend.o" // CHECK-EL-HF-NAN: "[[TC]]/../../../../mips-linux-gnu/libc/nan2008/el/usr/lib/../lib{{/|\\\\}}crtn.o" // +// = Little-endian, hard float, uclibc, nan2008 +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: --target=mipsel-linux-gnu -muclibc -mnan=2008 \ +// RUN: --gcc-toolchain=%S/Inputs/mips_cs_tree \ +// RUN: | FileCheck --check-prefix=CHECK-EL-UC-HF-NAN %s +// CHECK-EL-UC-HF-NAN: "-internal-isystem" +// CHECK-EL-UC-HF-NAN: "[[TC:[^"]+/lib/gcc/mips-linux-gnu/4.6.3]]/../../../../mips-linux-gnu/include/c++/4.6.3" +// CHECK-EL-UC-HF-NAN: "-internal-isystem" +// CHECK-EL-UC-HF-NAN: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/mips-linux-gnu/uclibc/nan2008/el" +// CHECK-EL-UC-HF-NAN: "-internal-isystem" +// CHECK-EL-UC-HF-NAN: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/backward" +// CHECK-EL-UC-HF-NAN: "-internal-externc-isystem" +// CHECK-EL-UC-HF-NAN: "[[TC]]/include" +// CHECK-EL-UC-HF-NAN: "-internal-externc-isystem" +// CHECK-EL-UC-HF-NAN: "[[TC]]/../../../../mips-linux-gnu/libc/uclibc/usr/include" +// CHECK-EL-UC-HF-NAN: "{{.*}}ld{{(.exe)?}}" +// CHECK-EL-UC-HF-NAN: "--sysroot=[[TC]]/../../../../mips-linux-gnu/libc/uclibc/nan2008/el" +// CHECK-EL-UC-HF-NAN: "-dynamic-linker" "/lib/ld-uClibc-mipsn8.so.0" +// CHECK-EL-UC-HF-NAN: "[[TC]]/../../../../mips-linux-gnu/libc/uclibc/nan2008/el/usr/lib/../lib{{/|\\\\}}crt1.o" +// CHECK-EL-UC-HF-NAN: "[[TC]]/../../../../mips-linux-gnu/libc/uclibc/nan2008/el/usr/lib/../lib{{/|\\\\}}crti.o" +// CHECK-EL-UC-HF-NAN: "[[TC]]/uclibc/nan2008/el{{/|\\\\}}crtbegin.o" +// CHECK-EL-UC-HF-NAN: "-L[[TC]]/uclibc/nan2008/el" +// CHECK-EL-UC-HF-NAN: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/uclibc/nan2008/el" +// CHECK-EL-UC-HF-NAN-NOT: "-L[[TC]]" +// CHECK-EL-UC-HF-NAN: "-L[[TC]]/../../../../mips-linux-gnu/libc/uclibc/nan2008/el/lib/../lib" +// CHECK-EL-UC-HF-NAN: "-L[[TC]]/../../../../mips-linux-gnu/libc/uclibc/nan2008/el/usr/lib/../lib" +// CHECK-EL-UC-HF-NAN: "[[TC]]/uclibc/nan2008/el{{/|\\\\}}crtend.o" +// CHECK-EL-UC-HF-NAN: "[[TC]]/../../../../mips-linux-gnu/libc/uclibc/nan2008/el/usr/lib/../lib{{/|\\\\}}crtn.o" +// // = Little-endian, soft float // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ // RUN: --target=mipsel-linux-gnu -mfloat-abi=soft \ @@ -405,6 +550,35 @@ // CHECK-EL-SF-32: "[[TC]]/soft-float/el{{/|\\\\}}crtend.o" // CHECK-EL-SF-32: "[[TC]]/../../../../mips-linux-gnu/libc/soft-float/el/usr/lib/../lib{{/|\\\\}}crtn.o" // +// = Little-endian, soft float, uclibc +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: --target=mipsel-linux-gnu -mfloat-abi=soft -muclibc \ +// RUN: --gcc-toolchain=%S/Inputs/mips_cs_tree \ +// RUN: | FileCheck --check-prefix=CHECK-EL-UC-SF-32 %s +// CHECK-EL-UC-SF-32: "-internal-isystem" +// CHECK-EL-UC-SF-32: "[[TC:[^"]+/lib/gcc/mips-linux-gnu/4.6.3]]/../../../../mips-linux-gnu/include/c++/4.6.3" +// CHECK-EL-UC-SF-32: "-internal-isystem" +// CHECK-EL-UC-SF-32: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/mips-linux-gnu/uclibc/soft-float/el" +// CHECK-EL-UC-SF-32: "-internal-isystem" +// CHECK-EL-UC-SF-32: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/backward" +// CHECK-EL-UC-SF-32: "-internal-externc-isystem" +// CHECK-EL-UC-SF-32: "[[TC]]/include" +// CHECK-EL-UC-SF-32: "-internal-externc-isystem" +// CHECK-EL-UC-SF-32: "[[TC]]/../../../../mips-linux-gnu/libc/uclibc/usr/include" +// CHECK-EL-UC-SF-32: "{{.*}}ld{{(.exe)?}}" +// CHECK-EL-UC-SF-32: "--sysroot=[[TC]]/../../../../mips-linux-gnu/libc/uclibc/soft-float/el" +// CHECK-EL-UC-SF-32: "-dynamic-linker" "/lib/ld-uClibc.so.0" +// CHECK-EL-UC-SF-32: "[[TC]]/../../../../mips-linux-gnu/libc/uclibc/soft-float/el/usr/lib/../lib{{/|\\\\}}crt1.o" +// CHECK-EL-UC-SF-32: "[[TC]]/../../../../mips-linux-gnu/libc/uclibc/soft-float/el/usr/lib/../lib{{/|\\\\}}crti.o" +// CHECK-EL-UC-SF-32: "[[TC]]/uclibc/soft-float/el{{/|\\\\}}crtbegin.o" +// CHECK-EL-UC-SF-32: "-L[[TC]]/uclibc/soft-float/el" +// CHECK-EL-UC-SF-32: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/uclibc/soft-float/el" +// CHECK-EL-UC-SF-32-NOT: "-L[[TC]]" +// CHECK-EL-UC-SF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/uclibc/soft-float/el/lib/../lib" +// CHECK-EL-UC-SF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/uclibc/soft-float/el/usr/lib/../lib" +// CHECK-EL-UC-SF-32: "[[TC]]/uclibc/soft-float/el{{/|\\\\}}crtend.o" +// CHECK-EL-UC-SF-32: "[[TC]]/../../../../mips-linux-gnu/libc/uclibc/soft-float/el/usr/lib/../lib{{/|\\\\}}crtn.o" +// // = Little-endian, soft float, mips16 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ // RUN: --target=mipsel-linux-gnu -mips16 -msoft-float \ Index: test/Driver/mips-fsf.cpp =================================================================== --- test/Driver/mips-fsf.cpp +++ test/Driver/mips-fsf.cpp @@ -297,6 +297,33 @@ // CHECK-BE-HF-32R2: "[[TC]]{{/|\\\\}}crtend.o" // CHECK-BE-HF-32R2: "[[TC]]/../../../../sysroot/usr/lib/../lib{{/|\\\\}}crtn.o" // +// = Big-endian, mips32r2, hard float, uclibc +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: --target=mips-linux-gnu -mips32r2 -mhard-float -muclibc \ +// RUN: --gcc-toolchain=%S/Inputs/mips_fsf_tree \ +// RUN: | FileCheck --check-prefix=CHECK-BE-UC-HF-32R2 %s +// CHECK-BE-UC-HF-32R2: "-internal-isystem" +// CHECK-BE-UC-HF-32R2: "[[TC:[^"]+/lib/gcc/mips-mti-linux-gnu/4.9.0]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0" +// CHECK-BE-UC-HF-32R2: "-internal-isystem" +// CHECK-BE-UC-HF-32R2: "[[TC]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu/uclibc" +// CHECK-BE-UC-HF-32R2: "-internal-isystem" +// CHECK-BE-UC-HF-32R2: "[[TC]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0/backward" +// CHECK-BE-UC-HF-32R2: "-internal-externc-isystem" +// CHECK-BE-UC-HF-32R2: "[[TC]]/include" +// CHECK-BE-UC-HF-32R2: "-internal-externc-isystem" +// CHECK-BE-UC-HF-32R2: "[[TC]]/../../../../sysroot/uclibc/usr/include" +// CHECK-BE-UC-HF-32R2: "{{.*}}ld{{(.exe)?}}" +// CHECK-BE-UC-HF-32R2: "--sysroot=[[TC]]/../../../../sysroot/uclibc" +// CHECK-BE-UC-HF-32R2: "-dynamic-linker" "/lib/ld-uClibc.so.0" +// CHECK-BE-UC-HF-32R2: "[[TC]]/../../../../sysroot/uclibc/usr/lib/../lib{{/|\\\\}}crt1.o" +// CHECK-BE-UC-HF-32R2: "[[TC]]/../../../../sysroot/uclibc/usr/lib/../lib{{/|\\\\}}crti.o" +// CHECK-BE-UC-HF-32R2: "[[TC]]/uclibc{{/|\\\\}}crtbegin.o" +// CHECK-BE-UC-HF-32R2: "-L[[TC]]/uclibc" +// CHECK-BE-UC-HF-32R2: "-L[[TC]]/../../../../mips-mti-linux-gnu/lib/../lib/uclibc" +// CHECK-BE-UC-HF-32R2: "-L[[TC]]/../../../../sysroot/uclibc/usr/lib/../lib" +// CHECK-BE-UC-HF-32R2: "[[TC]]/uclibc{{/|\\\\}}crtend.o" +// CHECK-BE-UC-HF-32R2: "[[TC]]/../../../../sysroot/uclibc/usr/lib/../lib{{/|\\\\}}crtn.o" +// // = Big-endian, mips32r2, fp64, hard float // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ // RUN: --target=mips-linux-gnu -mips32r2 -mfp64 -mhard-float \ @@ -351,6 +378,33 @@ // CHECK-BE-SF-32R2: "[[TC]]/sof{{/|\\\\}}crtend.o" // CHECK-BE-SF-32R2: "[[TC]]/../../../../sysroot/sof/usr/lib/../lib{{/|\\\\}}crtn.o" // +// = Big-endian, mips32r2, soft float, uclibc +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: --target=mips-linux-gnu -mips32r2 -msoft-float -muclibc \ +// RUN: --gcc-toolchain=%S/Inputs/mips_fsf_tree \ +// RUN: | FileCheck --check-prefix=CHECK-BE-UC-SF-32R2 %s +// CHECK-BE-UC-SF-32R2: "-internal-isystem" +// CHECK-BE-UC-SF-32R2: "[[TC:[^"]+/lib/gcc/mips-mti-linux-gnu/4.9.0]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0" +// CHECK-BE-UC-SF-32R2: "-internal-isystem" +// CHECK-BE-UC-SF-32R2: "[[TC]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu/uclibc/sof" +// CHECK-BE-UC-SF-32R2: "-internal-isystem" +// CHECK-BE-UC-SF-32R2: "[[TC]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0/backward" +// CHECK-BE-UC-SF-32R2: "-internal-externc-isystem" +// CHECK-BE-UC-SF-32R2: "[[TC]]/include" +// CHECK-BE-UC-SF-32R2: "-internal-externc-isystem" +// CHECK-BE-UC-SF-32R2: "[[TC]]/../../../../sysroot/uclibc/usr/include" +// CHECK-BE-UC-SF-32R2: "{{.*}}ld{{(.exe)?}}" +// CHECK-BE-UC-SF-32R2: "--sysroot=[[TC]]/../../../../sysroot/uclibc/sof" +// CHECK-BE-UC-SF-32R2: "-dynamic-linker" "/lib/ld-uClibc.so.0" +// CHECK-BE-UC-SF-32R2: "[[TC]]/../../../../sysroot/uclibc/sof/usr/lib/../lib{{/|\\\\}}crt1.o" +// CHECK-BE-UC-SF-32R2: "[[TC]]/../../../../sysroot/uclibc/sof/usr/lib/../lib{{/|\\\\}}crti.o" +// CHECK-BE-UC-SF-32R2: "[[TC]]/uclibc/sof{{/|\\\\}}crtbegin.o" +// CHECK-BE-UC-SF-32R2: "-L[[TC]]/uclibc/sof" +// CHECK-BE-UC-SF-32R2: "-L[[TC]]/../../../../mips-mti-linux-gnu/lib/../lib/uclibc/sof" +// CHECK-BE-UC-SF-32R2: "-L[[TC]]/../../../../sysroot/uclibc/sof/usr/lib/../lib" +// CHECK-BE-UC-SF-32R2: "[[TC]]/uclibc/sof{{/|\\\\}}crtend.o" +// CHECK-BE-UC-SF-32R2: "[[TC]]/../../../../sysroot/uclibc/sof/usr/lib/../lib{{/|\\\\}}crtn.o" +// // = Big-endian, mips32r2 / mips16, hard float // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ // RUN: --target=mips-linux-gnu -mips32r2 -mips16 -mhard-float \ @@ -513,6 +567,33 @@ // CHECK-BE-NAN-32R2: "[[TC]]/nan2008{{/|\\\\}}crtend.o" // CHECK-BE-NAN-32R2: "[[TC]]/../../../../sysroot/nan2008/usr/lib/../lib{{/|\\\\}}crtn.o" // +// = Big-endian, mips32r2, nan2008, uclibc +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: --target=mips-linux-gnu -mips32r2 -mnan=2008 -muclibc \ +// RUN: --gcc-toolchain=%S/Inputs/mips_fsf_tree \ +// RUN: | FileCheck --check-prefix=CHECK-BE-UC-NAN-32R2 %s +// CHECK-BE-UC-NAN-32R2: "-internal-isystem" +// CHECK-BE-UC-NAN-32R2: "[[TC:[^"]+/lib/gcc/mips-mti-linux-gnu/4.9.0]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0" +// CHECK-BE-UC-NAN-32R2: "-internal-isystem" +// CHECK-BE-UC-NAN-32R2: "[[TC]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu/uclibc/nan2008" +// CHECK-BE-UC-NAN-32R2: "-internal-isystem" +// CHECK-BE-UC-NAN-32R2: "[[TC]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0/backward" +// CHECK-BE-UC-NAN-32R2: "-internal-externc-isystem" +// CHECK-BE-UC-NAN-32R2: "[[TC]]/include" +// CHECK-BE-UC-NAN-32R2: "-internal-externc-isystem" +// CHECK-BE-UC-NAN-32R2: "[[TC]]/../../../../sysroot/uclibc/usr/include" +// CHECK-BE-UC-NAN-32R2: "{{.*}}ld{{(.exe)?}}" +// CHECK-BE-UC-NAN-32R2: "--sysroot=[[TC]]/../../../../sysroot/uclibc/nan2008" +// CHECK-BE-UC-NAN-32R2: "-dynamic-linker" "/lib/ld-uClibc-mipsn8.so.0" +// CHECK-BE-UC-NAN-32R2: "[[TC]]/../../../../sysroot/uclibc/nan2008/usr/lib/../lib{{/|\\\\}}crt1.o" +// CHECK-BE-UC-NAN-32R2: "[[TC]]/../../../../sysroot/uclibc/nan2008/usr/lib/../lib{{/|\\\\}}crti.o" +// CHECK-BE-UC-NAN-32R2: "[[TC]]/uclibc/nan2008{{/|\\\\}}crtbegin.o" +// CHECK-BE-UC-NAN-32R2: "-L[[TC]]/uclibc/nan2008" +// CHECK-BE-UC-NAN-32R2: "-L[[TC]]/../../../../mips-mti-linux-gnu/lib/../lib/uclibc/nan2008" +// CHECK-BE-UC-NAN-32R2: "-L[[TC]]/../../../../sysroot/uclibc/nan2008/usr/lib/../lib" +// CHECK-BE-UC-NAN-32R2: "[[TC]]/uclibc/nan2008{{/|\\\\}}crtend.o" +// CHECK-BE-UC-NAN-32R2: "[[TC]]/../../../../sysroot/uclibc/nan2008/usr/lib/../lib{{/|\\\\}}crtn.o" +// // = Big-endian, mips32r2, fp64, nan2008 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ // RUN: --target=mips-linux-gnu -mips32r2 -mfp64 -mnan=2008 \ @@ -1566,6 +1647,33 @@ // CHECK-EL-HF-32R2: "[[TC]]/el{{/|\\\\}}crtend.o" // CHECK-EL-HF-32R2: "[[TC]]/../../../../sysroot/el/usr/lib/../lib{{/|\\\\}}crtn.o" // +// = Little-endian, mips32r2, hard float, uclibc +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: --target=mipsel-linux-gnu -mips32r2 -mhard-float -muclibc \ +// RUN: --gcc-toolchain=%S/Inputs/mips_fsf_tree \ +// RUN: | FileCheck --check-prefix=CHECK-EL-UC-HF-32R2 %s +// CHECK-EL-UC-HF-32R2: "-internal-isystem" +// CHECK-EL-UC-HF-32R2: "[[TC:[^"]+/lib/gcc/mips-mti-linux-gnu/4.9.0]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0" +// CHECK-EL-UC-HF-32R2: "-internal-isystem" +// CHECK-EL-UC-HF-32R2: "[[TC]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu/uclibc/el" +// CHECK-EL-UC-HF-32R2: "-internal-isystem" +// CHECK-EL-UC-HF-32R2: "[[TC]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0/backward" +// CHECK-EL-UC-HF-32R2: "-internal-externc-isystem" +// CHECK-EL-UC-HF-32R2: "[[TC]]/include" +// CHECK-EL-UC-HF-32R2: "-internal-externc-isystem" +// CHECK-EL-UC-HF-32R2: "[[TC]]/../../../../sysroot/uclibc/usr/include" +// CHECK-EL-UC-HF-32R2: "{{.*}}ld{{(.exe)?}}" +// CHECK-EL-UC-HF-32R2: "--sysroot=[[TC]]/../../../../sysroot/uclibc/el" +// CHECK-EL-UC-HF-32R2: "-dynamic-linker" "/lib/ld-uClibc.so.0" +// CHECK-EL-UC-HF-32R2: "[[TC]]/../../../../sysroot/uclibc/el/usr/lib/../lib{{/|\\\\}}crt1.o" +// CHECK-EL-UC-HF-32R2: "[[TC]]/../../../../sysroot/uclibc/el/usr/lib/../lib{{/|\\\\}}crti.o" +// CHECK-EL-UC-HF-32R2: "[[TC]]/uclibc/el{{/|\\\\}}crtbegin.o" +// CHECK-EL-UC-HF-32R2: "-L[[TC]]/uclibc/el" +// CHECK-EL-UC-HF-32R2: "-L[[TC]]/../../../../mips-mti-linux-gnu/lib/../lib/uclibc/el" +// CHECK-EL-UC-HF-32R2: "-L[[TC]]/../../../../sysroot/uclibc/el/usr/lib/../lib" +// CHECK-EL-UC-HF-32R2: "[[TC]]/uclibc/el{{/|\\\\}}crtend.o" +// CHECK-EL-UC-HF-32R2: "[[TC]]/../../../../sysroot/uclibc/el/usr/lib/../lib{{/|\\\\}}crtn.o" +// // = Little-endian, mips32r2, fp64, hard float // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ // RUN: --target=mipsel-linux-gnu -mips32r2 -mfp64 -mhard-float \ @@ -1620,6 +1728,33 @@ // CHECK-EL-SF-32R2: "[[TC]]/el/sof{{/|\\\\}}crtend.o" // CHECK-EL-SF-32R2: "[[TC]]/../../../../sysroot/el/sof/usr/lib/../lib{{/|\\\\}}crtn.o" // +// = Little-endian, mips32r2, soft float, uclibc +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: --target=mipsel-linux-gnu -mips32r2 -msoft-float -muclibc \ +// RUN: --gcc-toolchain=%S/Inputs/mips_fsf_tree \ +// RUN: | FileCheck --check-prefix=CHECK-EL-UC-SF-32R2 %s +// CHECK-EL-UC-SF-32R2: "-internal-isystem" +// CHECK-EL-UC-SF-32R2: "[[TC:[^"]+/lib/gcc/mips-mti-linux-gnu/4.9.0]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0" +// CHECK-EL-UC-SF-32R2: "-internal-isystem" +// CHECK-EL-UC-SF-32R2: "[[TC]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu/uclibc/el/sof" +// CHECK-EL-UC-SF-32R2: "-internal-isystem" +// CHECK-EL-UC-SF-32R2: "[[TC]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0/backward" +// CHECK-EL-UC-SF-32R2: "-internal-externc-isystem" +// CHECK-EL-UC-SF-32R2: "[[TC]]/include" +// CHECK-EL-UC-SF-32R2: "-internal-externc-isystem" +// CHECK-EL-UC-SF-32R2: "[[TC]]/../../../../sysroot/uclibc/usr/include" +// CHECK-EL-UC-SF-32R2: "{{.*}}ld{{(.exe)?}}" +// CHECK-EL-UC-SF-32R2: "--sysroot=[[TC]]/../../../../sysroot/uclibc/el/sof" +// CHECK-EL-UC-SF-32R2: "-dynamic-linker" "/lib/ld-uClibc.so.0" +// CHECK-EL-UC-SF-32R2: "[[TC]]/../../../../sysroot/uclibc/el/sof/usr/lib/../lib{{/|\\\\}}crt1.o" +// CHECK-EL-UC-SF-32R2: "[[TC]]/../../../../sysroot/uclibc/el/sof/usr/lib/../lib{{/|\\\\}}crti.o" +// CHECK-EL-UC-SF-32R2: "[[TC]]/uclibc/el/sof{{/|\\\\}}crtbegin.o" +// CHECK-EL-UC-SF-32R2: "-L[[TC]]/uclibc/el/sof" +// CHECK-EL-UC-SF-32R2: "-L[[TC]]/../../../../mips-mti-linux-gnu/lib/../lib/uclibc/el/sof" +// CHECK-EL-UC-SF-32R2: "-L[[TC]]/../../../../sysroot/uclibc/el/sof/usr/lib/../lib" +// CHECK-EL-UC-SF-32R2: "[[TC]]/uclibc/el/sof{{/|\\\\}}crtend.o" +// CHECK-EL-UC-SF-32R2: "[[TC]]/../../../../sysroot/uclibc/el/sof/usr/lib/../lib{{/|\\\\}}crtn.o" +// // = Little-endian, mips32r2 / mips16, hard float // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ // RUN: --target=mipsel-linux-gnu -mips32r2 -mips16 -mhard-float \ @@ -1782,6 +1917,33 @@ // CHECK-EL-NAN-32R2: "[[TC]]/el/nan2008{{/|\\\\}}crtend.o" // CHECK-EL-NAN-32R2: "[[TC]]/../../../../sysroot/el/nan2008/usr/lib/../lib{{/|\\\\}}crtn.o" // +// = Little-endian, mips32r2, nan2008, uclibc +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: --target=mipsel-linux-gnu -mips32r2 -mnan=2008 -muclibc \ +// RUN: --gcc-toolchain=%S/Inputs/mips_fsf_tree \ +// RUN: | FileCheck --check-prefix=CHECK-EL-UC-NAN-32R2 %s +// CHECK-EL-UC-NAN-32R2: "-internal-isystem" +// CHECK-EL-UC-NAN-32R2: "[[TC:[^"]+/lib/gcc/mips-mti-linux-gnu/4.9.0]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0" +// CHECK-EL-UC-NAN-32R2: "-internal-isystem" +// CHECK-EL-UC-NAN-32R2: "[[TC]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu/uclibc/el/nan2008" +// CHECK-EL-UC-NAN-32R2: "-internal-isystem" +// CHECK-EL-UC-NAN-32R2: "[[TC]]/../../../../mips-mti-linux-gnu/include/c++/4.9.0/backward" +// CHECK-EL-UC-NAN-32R2: "-internal-externc-isystem" +// CHECK-EL-UC-NAN-32R2: "[[TC]]/include" +// CHECK-EL-UC-NAN-32R2: "-internal-externc-isystem" +// CHECK-EL-UC-NAN-32R2: "[[TC]]/../../../../sysroot/uclibc/usr/include" +// CHECK-EL-UC-NAN-32R2: "{{.*}}ld{{(.exe)?}}" +// CHECK-EL-UC-NAN-32R2: "--sysroot=[[TC]]/../../../../sysroot/uclibc/el/nan2008" +// CHECK-EL-UC-NAN-32R2: "-dynamic-linker" "/lib/ld-uClibc-mipsn8.so.0" +// CHECK-EL-UC-NAN-32R2: "[[TC]]/../../../../sysroot/uclibc/el/nan2008/usr/lib/../lib{{/|\\\\}}crt1.o" +// CHECK-EL-UC-NAN-32R2: "[[TC]]/../../../../sysroot/uclibc/el/nan2008/usr/lib/../lib{{/|\\\\}}crti.o" +// CHECK-EL-UC-NAN-32R2: "[[TC]]/uclibc/el/nan2008{{/|\\\\}}crtbegin.o" +// CHECK-EL-UC-NAN-32R2: "-L[[TC]]/uclibc/el/nan2008" +// CHECK-EL-UC-NAN-32R2: "-L[[TC]]/../../../../mips-mti-linux-gnu/lib/../lib/uclibc/el/nan2008" +// CHECK-EL-UC-NAN-32R2: "-L[[TC]]/../../../../sysroot/uclibc/el/nan2008/usr/lib/../lib" +// CHECK-EL-UC-NAN-32R2: "[[TC]]/uclibc/el/nan2008{{/|\\\\}}crtend.o" +// CHECK-EL-UC-NAN-32R2: "[[TC]]/../../../../sysroot/uclibc/el/nan2008/usr/lib/../lib{{/|\\\\}}crtn.o" +// // = Little-endian, mips32r2, fp64, nan2008 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ // RUN: --target=mipsel-linux-gnu -mips32r2 -mfp64 -mnan=2008 \