Lines Matching +full:- +full:multilib
1 //===--- ToolChains.cpp - ToolChain Implementations -------------*- C++ -*-===//
8 //===----------------------------------------------------------------------===//
53 /// Darwin - Darwin tool chain for i386 and x86_64.
60 // Darwin always preprocesses assembly files (unless -x is used explicitly). in LookupTypeForExtension()
114 .Cases("armv7a", "armv7-a", "armv7") in ArmMachOArchName()
115 .Cases("armv7r", "armv7-r", "armv7") in ArmMachOArchName()
116 .Cases("armv7em", "armv7e-m", "armv7em") in ArmMachOArchName()
117 .Cases("armv7k", "armv7-k", "armv7k") in ArmMachOArchName()
118 .Cases("armv7m", "armv7-m", "armv7m") in ArmMachOArchName()
119 .Cases("armv7s", "armv7-s", "armv7s") in ArmMachOArchName()
148 return A->getOption().matches(options::OPT_msoft_float) || in isSoftFloatABI()
149 (A->getOption().matches(options::OPT_mfloat_abi_EQ) && in isSoftFloatABI()
150 A->getValue() == StringRef("soft")); in isSoftFloatABI()
164 if (const char *Arch = ArmMachOArchName(A->getValue())) in getMachOArchName()
168 if (const char *Arch = ArmMachOArchNameCPU(A->getValue())) in getMachOArchName()
244 // Always enable -Wdeprecated-objc-isa-usage and promote it in addClangWarningOptions()
246 CC1Args.push_back("-Wdeprecated-objc-isa-usage"); in addClangWarningOptions()
247 CC1Args.push_back("-Werror=deprecated-objc-isa-usage"); in addClangWarningOptions()
252 CC1Args.push_back("-Werror=implicit-function-declaration"); in addClangWarningOptions()
256 /// \brief Determine whether Objective-C automated reference counting is
274 CmdArgs.push_back("-force_load"); in AddLinkARCArgs()
309 // not have compiler-rt checked out or integrated into their build (unless in AddLinkRuntimeLib()
315 // so we should make sure we add the rpaths last, after all user-specified in AddLinkRuntimeLib()
323 CmdArgs.push_back("-rpath"); in AddLinkRuntimeLib()
328 CmdArgs.push_back("-rpath"); in AddLinkRuntimeLib()
358 return SDK.slice(0, SDK.size() - 4); in getSDKName()
405 // Darwin only supports the compiler-rt based runtime libraries. in AddLinkRuntimeLibArgs()
411 << Args.getLastArg(options::OPT_rtlib_EQ)->getValue() << "darwin"; in AddLinkRuntimeLibArgs()
416 // libraries with -static. in AddLinkRuntimeLibArgs()
422 // Reject -static-libgcc for now, we can deal with this when and if someone in AddLinkRuntimeLibArgs()
426 getDriver().Diag(diag::err_drv_unsupported_opt) << A->getAsString(Args); in AddLinkRuntimeLibArgs()
449 CmdArgs.push_back("-lSystem"); in AddLinkRuntimeLibArgs()
464 CmdArgs.push_back("-lgcc_s.1"); in AddLinkRuntimeLibArgs()
473 CmdArgs.push_back("-lgcc_s.10.4"); in AddLinkRuntimeLibArgs()
475 CmdArgs.push_back("-lgcc_s.10.5"); in AddLinkRuntimeLibArgs()
503 if (!getVFS().exists(A->getValue())) in AddDeploymentTarget()
504 getDriver().Diag(clang::diag::warn_missing_sysroot) << A->getValue(); in AddDeploymentTarget()
524 << OSXVersion->getAsString(Args) in AddDeploymentTarget()
526 TvOSVersion ? TvOSVersion : WatchOSVersion)->getAsString(Args); in AddDeploymentTarget()
530 << iOSVersion->getAsString(Args) in AddDeploymentTarget()
531 << (TvOSVersion ? TvOSVersion : WatchOSVersion)->getAsString(Args); in AddDeploymentTarget()
535 << TvOSVersion->getAsString(Args) in AddDeploymentTarget()
536 << WatchOSVersion->getAsString(Args); in AddDeploymentTarget()
555 // If there is no command-line argument to specify the Target version and in AddDeploymentTarget()
557 // on -isysroot. in AddDeploymentTarget()
561 StringRef isysroot = A->getValue(); in AddDeploymentTarget()
677 if (!Driver::GetReleaseVersion(OSXVersion->getValue(), Major, Minor, Micro, in AddDeploymentTarget()
681 << OSXVersion->getAsString(Args); in AddDeploymentTarget()
684 if (!Driver::GetReleaseVersion(iOSVersion->getValue(), Major, Minor, Micro, in AddDeploymentTarget()
688 << iOSVersion->getAsString(Args); in AddDeploymentTarget()
690 if (!Driver::GetReleaseVersion(TvOSVersion->getValue(), Major, Minor, in AddDeploymentTarget()
694 << TvOSVersion->getAsString(Args); in AddDeploymentTarget()
696 if (!Driver::GetReleaseVersion(WatchOSVersion->getValue(), Major, Minor, in AddDeploymentTarget()
700 << WatchOSVersion->getAsString(Args); in AddDeploymentTarget()
718 StringRef SDK = getSDKName(A->getValue()); in AddDeploymentTarget()
735 CmdArgs.push_back("-lc++"); in AddCXXStdlibLibArgs()
739 // Unfortunately, -lstdc++ doesn't always exist in the standard search path; in AddCXXStdlibLibArgs()
741 // platforms we care about it was -lstdc++.6, so we search for that in AddCXXStdlibLibArgs()
742 // explicitly if we can't see an obvious -lstdc++ candidate. in AddCXXStdlibLibArgs()
746 SmallString<128> P(A->getValue()); in AddCXXStdlibLibArgs()
769 CmdArgs.push_back("-lstdc++"); in AddCXXStdlibLibArgs()
776 // For Darwin platforms, use the compiler-rt-based support library in AddCCKextLibArgs()
777 // instead of the gcc-provided one (which is also incidentally in AddCCKextLibArgs()
795 // not have compiler-rt checked out or integrated into their build. in AddCCKextLibArgs()
813 if (A->getOption().matches(options::OPT_Xarch__)) { in TranslateArgs()
817 tools::darwin::getArchTypeForMachOArchName(A->getValue(0)); in TranslateArgs()
825 unsigned Index = Args.getBaseArgs().MakeIndex(A->getValue(1)); in TranslateArgs()
830 // consumed, the -Xarch_ argument's parameter tried to consume in TranslateArgs()
836 // like -O4 are going to slip through. in TranslateArgs()
839 << A->getAsString(Args); in TranslateArgs()
841 } else if (XarchArg->getOption().hasFlag(options::DriverOption)) { in TranslateArgs()
843 << A->getAsString(Args); in TranslateArgs()
847 XarchArg->setBaseArg(A); in TranslateArgs()
850 DAL->AddSynthesizedArg(A); in TranslateArgs()
855 if (A->getOption().hasFlag(options::LinkerInput)) { in TranslateArgs()
857 for (const char *Value : A->getValues()) { in TranslateArgs()
858 DAL->AddSeparateArg( in TranslateArgs()
866 // gcc translates options twice, which means that self-expanding in TranslateArgs()
868 switch ((options::ID)A->getOption().getID()) { in TranslateArgs()
870 DAL->append(A); in TranslateArgs()
875 DAL->append(A); in TranslateArgs()
876 DAL->AddFlagArg(A, Opts.getOption(options::OPT_static)); in TranslateArgs()
880 DAL->AddSeparateArg(A, Opts.getOption(options::OPT_MF), A->getValue()); in TranslateArgs()
884 DAL->AddFlagArg(A, Opts.getOption(options::OPT_g_Flag)); in TranslateArgs()
885 DAL->AddFlagArg( in TranslateArgs()
890 DAL->AddFlagArg(A, Opts.getOption(options::OPT_g_Flag)); in TranslateArgs()
891 DAL->AddFlagArg( in TranslateArgs()
896 DAL->AddFlagArg(A, Opts.getOption(options::OPT_dynamiclib)); in TranslateArgs()
900 DAL->AddFlagArg(A, Opts.getOption(options::OPT_mconstant_cfstrings)); in TranslateArgs()
904 DAL->AddFlagArg(A, Opts.getOption(options::OPT_mno_constant_cfstrings)); in TranslateArgs()
908 DAL->AddFlagArg(A, in TranslateArgs()
913 DAL->AddFlagArg( in TranslateArgs()
918 DAL->AddFlagArg(A, Opts.getOption(options::OPT_mpascal_strings)); in TranslateArgs()
922 DAL->AddFlagArg(A, Opts.getOption(options::OPT_mno_pascal_strings)); in TranslateArgs()
930 DAL->AddJoinedArg(nullptr, Opts.getOption(options::OPT_mtune_EQ), in TranslateArgs()
933 // Add the arch options based on the particular spelling of -arch, to match in TranslateArgs()
945 DAL->AddJoinedArg(nullptr, MCpu, "601"); in TranslateArgs()
947 DAL->AddJoinedArg(nullptr, MCpu, "603"); in TranslateArgs()
949 DAL->AddJoinedArg(nullptr, MCpu, "604"); in TranslateArgs()
951 DAL->AddJoinedArg(nullptr, MCpu, "604e"); in TranslateArgs()
953 DAL->AddJoinedArg(nullptr, MCpu, "750"); in TranslateArgs()
955 DAL->AddJoinedArg(nullptr, MCpu, "7400"); in TranslateArgs()
957 DAL->AddJoinedArg(nullptr, MCpu, "7450"); in TranslateArgs()
959 DAL->AddJoinedArg(nullptr, MCpu, "970"); in TranslateArgs()
962 DAL->AddFlagArg(nullptr, Opts.getOption(options::OPT_m64)); in TranslateArgs()
967 DAL->AddJoinedArg(nullptr, MArch, "i486"); in TranslateArgs()
969 DAL->AddJoinedArg(nullptr, MArch, "i586"); in TranslateArgs()
971 DAL->AddJoinedArg(nullptr, MArch, "i686"); in TranslateArgs()
973 DAL->AddJoinedArg(nullptr, MArch, "pentium"); in TranslateArgs()
975 DAL->AddJoinedArg(nullptr, MArch, "pentium2"); in TranslateArgs()
977 DAL->AddJoinedArg(nullptr, MArch, "pentiumpro"); in TranslateArgs()
979 DAL->AddJoinedArg(nullptr, MArch, "pentium2"); in TranslateArgs()
982 DAL->AddFlagArg(nullptr, Opts.getOption(options::OPT_m64)); in TranslateArgs()
984 DAL->AddFlagArg(nullptr, Opts.getOption(options::OPT_m64)); in TranslateArgs()
985 DAL->AddJoinedArg(nullptr, MArch, "x86_64h"); in TranslateArgs()
989 DAL->AddJoinedArg(nullptr, MArch, "armv4t"); in TranslateArgs()
991 DAL->AddJoinedArg(nullptr, MArch, "armv4t"); in TranslateArgs()
993 DAL->AddJoinedArg(nullptr, MArch, "armv5tej"); in TranslateArgs()
995 DAL->AddJoinedArg(nullptr, MArch, "xscale"); in TranslateArgs()
997 DAL->AddJoinedArg(nullptr, MArch, "armv6k"); in TranslateArgs()
999 DAL->AddJoinedArg(nullptr, MArch, "armv6m"); in TranslateArgs()
1001 DAL->AddJoinedArg(nullptr, MArch, "armv7a"); in TranslateArgs()
1003 DAL->AddJoinedArg(nullptr, MArch, "armv7em"); in TranslateArgs()
1005 DAL->AddJoinedArg(nullptr, MArch, "armv7k"); in TranslateArgs()
1007 DAL->AddJoinedArg(nullptr, MArch, "armv7m"); in TranslateArgs()
1009 DAL->AddJoinedArg(nullptr, MArch, "armv7s"); in TranslateArgs()
1019 // { hard-float, soft-float } in AddLinkRuntimeLibArgs()
1032 // First get the generic Apple args, before moving onto Darwin-specific ones. in TranslateArgs()
1041 // after argument translation because -Xarch_ arguments may add a version min in TranslateArgs()
1045 // For iOS 6, undo the translation to add -static for -mkernel/-fapple-kext. in TranslateArgs()
1046 // FIXME: It would be far better to avoid inserting those -static arguments, in TranslateArgs()
1051 for (ArgList::iterator it = DAL->begin(), ie = DAL->end(); it != ie; ) { in TranslateArgs()
1054 if (A->getOption().getID() != options::OPT_mkernel && in TranslateArgs()
1055 A->getOption().getID() != options::OPT_fapple_kext) in TranslateArgs()
1059 assert(A->getOption().getID() == options::OPT_static && in TranslateArgs()
1060 "missing expected -static argument"); in TranslateArgs()
1061 it = DAL->getArgs().erase(it); in TranslateArgs()
1067 DAL->AddJoinedArg(nullptr, Opts.getOption(options::OPT_stdlib_EQ), in TranslateArgs()
1135 CmdArgs.push_back("-watchos_version_min"); in addMinVersionArgs()
1137 CmdArgs.push_back("-watchos_simulator_version_min"); in addMinVersionArgs()
1139 CmdArgs.push_back("-tvos_version_min"); in addMinVersionArgs()
1141 CmdArgs.push_back("-tvos_simulator_version_min"); in addMinVersionArgs()
1143 CmdArgs.push_back("-ios_simulator_version_min"); in addMinVersionArgs()
1145 CmdArgs.push_back("-iphoneos_version_min"); in addMinVersionArgs()
1148 CmdArgs.push_back("-macosx_version_min"); in addMinVersionArgs()
1165 CmdArgs.push_back("-ldylib1.o"); in addStartObjectFileArgs()
1168 CmdArgs.push_back("-ldylib1.o"); in addStartObjectFileArgs()
1170 CmdArgs.push_back("-ldylib1.10.5.o"); in addStartObjectFileArgs()
1182 CmdArgs.push_back("-lbundle1.o"); in addStartObjectFileArgs()
1185 CmdArgs.push_back("-lbundle1.o"); in addStartObjectFileArgs()
1193 CmdArgs.push_back("-lgcrt0.o"); in addStartObjectFileArgs()
1195 CmdArgs.push_back("-lgcrt1.o"); in addStartObjectFileArgs()
1201 // when compiling with -pg, we need to link with the gcrt1.o file, in addStartObjectFileArgs()
1202 // so pass the -no_new_main option to tell the linker to use the in addStartObjectFileArgs()
1205 CmdArgs.push_back("-no_new_main"); in addStartObjectFileArgs()
1210 CmdArgs.push_back("-lcrt0.o"); in addStartObjectFileArgs()
1221 CmdArgs.push_back("-lcrt1.o"); in addStartObjectFileArgs()
1223 CmdArgs.push_back("-lcrt1.3.1.o"); in addStartObjectFileArgs()
1226 CmdArgs.push_back("-lcrt1.o"); in addStartObjectFileArgs()
1228 CmdArgs.push_back("-lcrt1.10.5.o"); in addStartObjectFileArgs()
1230 CmdArgs.push_back("-lcrt1.10.6.o"); in addStartObjectFileArgs()
1273 /// Generic_GCC - A tool chain using the 'gcc' command to perform
1282 const GCCVersion BadVersion = {VersionText.str(), -1, -1, -1, "", "", ""}; in Parse()
1286 GCCVersion GoodVersion = {VersionText.str(), -1, -1, -1, "", "", ""}; in Parse()
1303 // 4.4.2-rc4 in Parse()
1304 // 4.4.x-patched in Parse()
1320 /// \brief Less-than for GCCVersion, implementing a Strict Weak Ordering.
1331 if (RHSPatch == -1) in isOlderThan()
1333 if (Patch == -1) in isOlderThan()
1357 return A->getValue(); in getGCCToolchainDir()
1408 Prefixes.push_back("/opt/rh/devtoolset-4/root/usr"); in init()
1409 Prefixes.push_back("/opt/rh/devtoolset-3/root/usr"); in init()
1410 Prefixes.push_back("/opt/rh/devtoolset-2/root/usr"); in init()
1411 Prefixes.push_back("/opt/rh/devtoolset-1.1/root/usr"); in init()
1412 Prefixes.push_back("/opt/rh/devtoolset-1.0/root/usr"); in init()
1451 for (const auto &Multilib : Multilibs) in print() local
1452 OS << "Candidate multilib: " << Multilib << "\n"; in print()
1455 OS << "Selected multilib: " << SelectedMultilib << "\n"; in print()
1458 bool Generic_GCC::GCCInstallationDetector::getBiarchSibling(Multilib &M) const { in getBiarchSibling()
1477 "aarch64-none-linux-gnu", "aarch64-linux-gnu", "aarch64-linux-android", in CollectLibDirsAndTriples()
1478 "aarch64-redhat-linux"}; in CollectLibDirsAndTriples()
1480 static const char *const AArch64beTriples[] = {"aarch64_be-none-linux-gnu", in CollectLibDirsAndTriples()
1481 "aarch64_be-linux-gnu"}; in CollectLibDirsAndTriples()
1484 static const char *const ARMTriples[] = {"arm-linux-gnueabi", in CollectLibDirsAndTriples()
1485 "arm-linux-androideabi"}; in CollectLibDirsAndTriples()
1486 static const char *const ARMHFTriples[] = {"arm-linux-gnueabihf", in CollectLibDirsAndTriples()
1487 "armv7hl-redhat-linux-gnueabi"}; in CollectLibDirsAndTriples()
1489 static const char *const ARMebTriples[] = {"armeb-linux-gnueabi", in CollectLibDirsAndTriples()
1490 "armeb-linux-androideabi"}; in CollectLibDirsAndTriples()
1492 "armeb-linux-gnueabihf", "armebv7hl-redhat-linux-gnueabi"}; in CollectLibDirsAndTriples()
1496 "x86_64-linux-gnu", "x86_64-unknown-linux-gnu", in CollectLibDirsAndTriples()
1497 "x86_64-pc-linux-gnu", "x86_64-redhat-linux6E", in CollectLibDirsAndTriples()
1498 "x86_64-redhat-linux", "x86_64-suse-linux", in CollectLibDirsAndTriples()
1499 "x86_64-manbo-linux-gnu", "x86_64-linux-gnu", in CollectLibDirsAndTriples()
1500 "x86_64-slackware-linux", "x86_64-linux-android", in CollectLibDirsAndTriples()
1501 "x86_64-unknown-linux"}; in CollectLibDirsAndTriples()
1505 "i686-linux-gnu", "i686-pc-linux-gnu", "i486-linux-gnu", in CollectLibDirsAndTriples()
1506 "i386-linux-gnu", "i386-redhat-linux6E", "i686-redhat-linux", in CollectLibDirsAndTriples()
1507 "i586-redhat-linux", "i386-redhat-linux", "i586-suse-linux", in CollectLibDirsAndTriples()
1508 "i486-slackware-linux", "i686-montavista-linux", "i686-linux-android", in CollectLibDirsAndTriples()
1509 "i586-linux-gnu"}; in CollectLibDirsAndTriples()
1512 static const char *const MIPSTriples[] = {"mips-linux-gnu", "mips-mti-linux", in CollectLibDirsAndTriples()
1513 "mips-mti-linux-gnu", in CollectLibDirsAndTriples()
1514 "mips-img-linux-gnu"}; in CollectLibDirsAndTriples()
1516 static const char *const MIPSELTriples[] = {"mipsel-linux-gnu", in CollectLibDirsAndTriples()
1517 "mips-img-linux-gnu"}; in CollectLibDirsAndTriples()
1521 "mips64-linux-gnu", "mips-mti-linux-gnu", "mips-img-linux-gnu", in CollectLibDirsAndTriples()
1522 "mips64-linux-gnuabi64"}; in CollectLibDirsAndTriples()
1525 "mips64el-linux-gnu", "mips-mti-linux-gnu", "mips-img-linux-gnu", in CollectLibDirsAndTriples()
1526 "mips64el-linux-gnuabi64"}; in CollectLibDirsAndTriples()
1530 static const char *const MIPSELAndroidTriples[] = {"mipsel-linux-android"}; in CollectLibDirsAndTriples()
1534 "mips64el-linux-android"}; in CollectLibDirsAndTriples()
1538 "powerpc-linux-gnu", "powerpc-unknown-linux-gnu", "powerpc-linux-gnuspe", in CollectLibDirsAndTriples()
1539 "powerpc-suse-linux", "powerpc-montavista-linuxspe"}; in CollectLibDirsAndTriples()
1542 "powerpc64-linux-gnu", "powerpc64-unknown-linux-gnu", in CollectLibDirsAndTriples()
1543 "powerpc64-suse-linux", "ppc64-redhat-linux"}; in CollectLibDirsAndTriples()
1546 "powerpc64le-linux-gnu", "powerpc64le-unknown-linux-gnu", in CollectLibDirsAndTriples()
1547 "powerpc64le-suse-linux", "ppc64le-redhat-linux"}; in CollectLibDirsAndTriples()
1550 static const char *const SPARCv8Triples[] = {"sparc-linux-gnu", in CollectLibDirsAndTriples()
1551 "sparcv8-linux-gnu"}; in CollectLibDirsAndTriples()
1553 static const char *const SPARCv9Triples[] = {"sparc64-linux-gnu", in CollectLibDirsAndTriples()
1554 "sparcv9-linux-gnu"}; in CollectLibDirsAndTriples()
1558 "s390x-linux-gnu", "s390x-unknown-linux-gnu", "s390x-ibm-linux-gnu", in CollectLibDirsAndTriples()
1559 "s390x-suse-linux", "s390x-redhat-linux"}; in CollectLibDirsAndTriples()
1563 static const char *const SolarisSPARCTriples[] = {"sparc-sun-solaris2.11", in CollectLibDirsAndTriples()
1564 "i386-pc-solaris2.11"}; in CollectLibDirsAndTriples()
1732 int Major = -1, Minor = -1; in ParseCudaVersionFile()
1740 // This doesn't appear to ever happen -- version.txt doesn't exist in the in ParseCudaVersionFile()
1751 // \brief -- try common CUDA installation paths looking for files we need for
1763 // CudaPathCandidates.push_back(D.SysRoot + "/usr/local/cuda-8.0"); in init()
1764 CudaPathCandidates.push_back(D.SysRoot + "/usr/local/cuda-7.5"); in init()
1765 CudaPathCandidates.push_back(D.SysRoot + "/usr/local/cuda-7.0"); in init()
1786 StringRef FilePath = LI->path(); in init()
1822 Version = ParseCudaVersionFile((*VersionFile)->getBuffer()); in init()
1860 bool operator()(const Multilib &M) { in operator ()()
1871 Flags.push_back(std::string("-") + Flag); in addMultilibFlag()
1897 return A && A->getOption().matches(options::OPT_mips16); in isMips16()
1902 return A && A->getOption().matches(options::OPT_mmicromips); in isMicroMips()
1910 /// The primary multilib appropriate for the given flags.
1911 Multilib SelectedMultilib;
1913 /// On Biarch systems, this corresponds to the default multilib when
1914 /// targeting the non-default multilib. Otherwise, it is empty.
1915 llvm::Optional<Multilib> BiarchSibling;
1919 static Multilib makeMultilib(StringRef commonSuffix) { in makeMultilib()
1920 return Multilib(commonSuffix, commonSuffix, commonSuffix); in makeMultilib()
1923 static bool findMipsCsMultilibs(const Multilib::flags_list &Flags, in findMipsCsMultilibs()
1934 auto MArchDefault = makeMultilib("").flag("-mips16").flag("-mmicromips"); in findMipsCsMultilibs()
1938 auto SoftFloat = makeMultilib("/soft-float").flag("+msoft-float"); in findMipsCsMultilibs()
1943 makeMultilib("").flag("-msoft-float").flag("-mnan=2008"); in findMipsCsMultilibs()
1945 auto BigEndian = makeMultilib("").flag("+EB").flag("-EL"); in findMipsCsMultilibs()
1947 auto LittleEndian = makeMultilib("/el").flag("+EL").flag("-EB"); in findMipsCsMultilibs()
1954 .flag("-mabi=n32") in findMipsCsMultilibs()
1955 .flag("-m32"); in findMipsCsMultilibs()
1969 .setIncludeDirsCallback([](const Multilib &M) { in findMipsCsMultilibs()
1973 "/../../../../mips-linux-gnu/libc/uclibc/usr/include"); in findMipsCsMultilibs()
1975 Dirs.push_back("/../../../../mips-linux-gnu/libc/usr/include"); in findMipsCsMultilibs()
1982 Multilib MAbiN32 = in findMipsCsMultilibs()
1983 Multilib().gccSuffix("/n32").includeSuffix("/n32").flag("+mabi=n32"); in findMipsCsMultilibs()
1985 Multilib M64 = Multilib() in findMipsCsMultilibs()
1989 .flag("-m32") in findMipsCsMultilibs()
1990 .flag("-mabi=n32"); in findMipsCsMultilibs()
1992 Multilib M32 = Multilib().flag("-m64").flag("+m32").flag("-mabi=n32"); in findMipsCsMultilibs()
2004 if (Candidate->select(Flags, Result.SelectedMultilib)) { in findMipsCsMultilibs()
2006 Result.BiarchSibling = Multilib(); in findMipsCsMultilibs()
2015 const Multilib::flags_list &Flags, in findMipsAndroidMultilibs()
2021 .Maybe(Multilib("/mips-r2").flag("+march=mips32r2")) in findMipsAndroidMultilibs()
2022 .Maybe(Multilib("/mips-r6").flag("+march=mips32r6")) in findMipsAndroidMultilibs()
2027 .Either(Multilib().flag("+march=mips32"), in findMipsAndroidMultilibs()
2028 Multilib("/mips-r2", "", "/mips-r2").flag("+march=mips32r2"), in findMipsAndroidMultilibs()
2029 Multilib("/mips-r6", "", "/mips-r6").flag("+march=mips32r6")) in findMipsAndroidMultilibs()
2035 Multilib().flag("+march=mips64r6"), in findMipsAndroidMultilibs()
2036 Multilib("/32/mips-r1", "", "/mips-r1").flag("+march=mips32"), in findMipsAndroidMultilibs()
2037 Multilib("/32/mips-r2", "", "/mips-r2").flag("+march=mips32r2"), in findMipsAndroidMultilibs()
2038 Multilib("/32/mips-r6", "", "/mips-r6").flag("+march=mips32r6")) in findMipsAndroidMultilibs()
2042 if (VFS.exists(Path + "/mips-r6")) in findMipsAndroidMultilibs()
2046 if (MS->select(Flags, Result.SelectedMultilib)) { in findMipsAndroidMultilibs()
2053 static bool findMipsMuslMultilibs(const Multilib::flags_list &Flags, in findMipsMuslMultilibs()
2060 .osSuffix("/mips-r2-hard-musl") in findMipsMuslMultilibs()
2062 .flag("-EL") in findMipsMuslMultilibs()
2065 auto MArchMipselR2 = makeMultilib("/mipsel-r2-hard-musl") in findMipsMuslMultilibs()
2066 .flag("-EB") in findMipsMuslMultilibs()
2073 MuslMipsMultilibs.setIncludeDirsCallback([](const Multilib &M) { in findMipsMuslMultilibs()
2085 static bool findMipsMtiMultilibs(const Multilib::flags_list &Flags, in findMipsMtiMultilibs()
2093 .flag("-m64") in findMipsMtiMultilibs()
2094 .flag("-mmicromips") in findMipsMtiMultilibs()
2099 .flag("-m64") in findMipsMtiMultilibs()
2103 .flag("-m32") in findMipsMtiMultilibs()
2107 auto MArchMips64 = makeMultilib("/mips64").flag("-m32").flag("+m64").flag( in findMipsMtiMultilibs()
2108 "-march=mips64r2"); in findMipsMtiMultilibs()
2112 .flag("-m64") in findMipsMtiMultilibs()
2113 .flag("-mmicromips") in findMipsMtiMultilibs()
2121 makeMultilib("/64").flag("+mabi=n64").flag("-mabi=n32").flag("-m32"); in findMipsMtiMultilibs()
2123 auto BigEndian = makeMultilib("").flag("+EB").flag("-EL"); in findMipsMtiMultilibs()
2125 auto LittleEndian = makeMultilib("/el").flag("+EL").flag("-EB"); in findMipsMtiMultilibs()
2127 auto SoftFloat = makeMultilib("/sof").flag("+msoft-float"); in findMipsMtiMultilibs()
2150 .setIncludeDirsCallback([](const Multilib &M) { in findMipsMtiMultilibs()
2163 auto BeHard = makeMultilib("/mips-r2-hard") in findMipsMtiMultilibs()
2165 .flag("-msoft-float") in findMipsMtiMultilibs()
2166 .flag("-mnan=2008") in findMipsMtiMultilibs()
2167 .flag("-muclibc"); in findMipsMtiMultilibs()
2168 auto BeSoft = makeMultilib("/mips-r2-soft") in findMipsMtiMultilibs()
2170 .flag("+msoft-float") in findMipsMtiMultilibs()
2171 .flag("-mnan=2008"); in findMipsMtiMultilibs()
2172 auto ElHard = makeMultilib("/mipsel-r2-hard") in findMipsMtiMultilibs()
2174 .flag("-msoft-float") in findMipsMtiMultilibs()
2175 .flag("-mnan=2008") in findMipsMtiMultilibs()
2176 .flag("-muclibc"); in findMipsMtiMultilibs()
2177 auto ElSoft = makeMultilib("/mipsel-r2-soft") in findMipsMtiMultilibs()
2179 .flag("+msoft-float") in findMipsMtiMultilibs()
2180 .flag("-mnan=2008") in findMipsMtiMultilibs()
2181 .flag("-mmicromips"); in findMipsMtiMultilibs()
2182 auto BeHardNan = makeMultilib("/mips-r2-hard-nan2008") in findMipsMtiMultilibs()
2184 .flag("-msoft-float") in findMipsMtiMultilibs()
2186 .flag("-muclibc"); in findMipsMtiMultilibs()
2187 auto ElHardNan = makeMultilib("/mipsel-r2-hard-nan2008") in findMipsMtiMultilibs()
2189 .flag("-msoft-float") in findMipsMtiMultilibs()
2191 .flag("-muclibc") in findMipsMtiMultilibs()
2192 .flag("-mmicromips"); in findMipsMtiMultilibs()
2193 auto BeHardNanUclibc = makeMultilib("/mips-r2-hard-nan2008-uclibc") in findMipsMtiMultilibs()
2195 .flag("-msoft-float") in findMipsMtiMultilibs()
2198 auto ElHardNanUclibc = makeMultilib("/mipsel-r2-hard-nan2008-uclibc") in findMipsMtiMultilibs()
2200 .flag("-msoft-float") in findMipsMtiMultilibs()
2203 auto BeHardUclibc = makeMultilib("/mips-r2-hard-uclibc") in findMipsMtiMultilibs()
2205 .flag("-msoft-float") in findMipsMtiMultilibs()
2206 .flag("-mnan=2008") in findMipsMtiMultilibs()
2208 auto ElHardUclibc = makeMultilib("/mipsel-r2-hard-uclibc") in findMipsMtiMultilibs()
2210 .flag("-msoft-float") in findMipsMtiMultilibs()
2211 .flag("-mnan=2008") in findMipsMtiMultilibs()
2213 auto ElMicroHardNan = makeMultilib("/micromipsel-r2-hard-nan2008") in findMipsMtiMultilibs()
2215 .flag("-msoft-float") in findMipsMtiMultilibs()
2218 auto ElMicroSoft = makeMultilib("/micromipsel-r2-soft") in findMipsMtiMultilibs()
2220 .flag("+msoft-float") in findMipsMtiMultilibs()
2221 .flag("-mnan=2008") in findMipsMtiMultilibs()
2225 makeMultilib("/lib").osSuffix("").flag("-mabi=n32").flag("-mabi=n64"); in findMipsMtiMultilibs()
2227 makeMultilib("/lib32").osSuffix("").flag("+mabi=n32").flag("-mabi=n64"); in findMipsMtiMultilibs()
2229 makeMultilib("/lib64").osSuffix("").flag("-mabi=n32").flag("+mabi=n64"); in findMipsMtiMultilibs()
2238 .setIncludeDirsCallback([](const Multilib &M) { in findMipsMtiMultilibs()
2243 .setFilePathsCallback([](const Multilib &M) { in findMipsMtiMultilibs()
2245 {"/../../../../mips-mti-linux-gnu/lib" + M.gccSuffix()}); in findMipsMtiMultilibs()
2249 if (Candidate->select(Flags, Result.SelectedMultilib)) { in findMipsMtiMultilibs()
2257 static bool findMipsImgMultilibs(const Multilib::flags_list &Flags, in findMipsImgMultilibs()
2263 auto Mips64r6 = makeMultilib("/mips64r6").flag("+m64").flag("-m32"); in findMipsImgMultilibs()
2265 auto LittleEndian = makeMultilib("/el").flag("+EL").flag("-EB"); in findMipsImgMultilibs()
2268 makeMultilib("/64").flag("+mabi=n64").flag("-mabi=n32").flag("-m32"); in findMipsImgMultilibs()
2276 .setIncludeDirsCallback([](const Multilib &M) { in findMipsImgMultilibs()
2285 auto BeHard = makeMultilib("/mips-r6-hard") in findMipsImgMultilibs()
2287 .flag("-msoft-float") in findMipsImgMultilibs()
2288 .flag("-mmicromips"); in findMipsImgMultilibs()
2289 auto BeSoft = makeMultilib("/mips-r6-soft") in findMipsImgMultilibs()
2291 .flag("+msoft-float") in findMipsImgMultilibs()
2292 .flag("-mmicromips"); in findMipsImgMultilibs()
2293 auto ElHard = makeMultilib("/mipsel-r6-hard") in findMipsImgMultilibs()
2295 .flag("-msoft-float") in findMipsImgMultilibs()
2296 .flag("-mmicromips"); in findMipsImgMultilibs()
2297 auto ElSoft = makeMultilib("/mipsel-r6-soft") in findMipsImgMultilibs()
2299 .flag("+msoft-float") in findMipsImgMultilibs()
2300 .flag("-mmicromips"); in findMipsImgMultilibs()
2301 auto BeMicroHard = makeMultilib("/micromips-r6-hard") in findMipsImgMultilibs()
2303 .flag("-msoft-float") in findMipsImgMultilibs()
2305 auto BeMicroSoft = makeMultilib("/micromips-r6-soft") in findMipsImgMultilibs()
2307 .flag("+msoft-float") in findMipsImgMultilibs()
2309 auto ElMicroHard = makeMultilib("/micromipsel-r6-hard") in findMipsImgMultilibs()
2311 .flag("-msoft-float") in findMipsImgMultilibs()
2313 auto ElMicroSoft = makeMultilib("/micromipsel-r6-soft") in findMipsImgMultilibs()
2315 .flag("+msoft-float") in findMipsImgMultilibs()
2319 makeMultilib("/lib").osSuffix("").flag("-mabi=n32").flag("-mabi=n64"); in findMipsImgMultilibs()
2321 makeMultilib("/lib32").osSuffix("").flag("+mabi=n32").flag("-mabi=n64"); in findMipsImgMultilibs()
2323 makeMultilib("/lib64").osSuffix("").flag("-mabi=n32").flag("+mabi=n64"); in findMipsImgMultilibs()
2331 .setIncludeDirsCallback([](const Multilib &M) { in findMipsImgMultilibs()
2336 .setFilePathsCallback([](const Multilib &M) { in findMipsImgMultilibs()
2338 {"/../../../../mips-img-linux-gnu/lib" + M.gccSuffix()}); in findMipsImgMultilibs()
2342 if (Candidate->select(Flags, Result.SelectedMultilib)) { in findMipsImgMultilibs()
2361 Multilib::flags_list Flags; in findMIPSMultilibs()
2381 addMultilibFlag(isSoftFloatABI(Args), "msoft-float", Flags); in findMIPSMultilibs()
2382 addMultilibFlag(!isSoftFloatABI(Args), "mhard-float", Flags); in findMIPSMultilibs()
2408 // Fallback to the regular toolchain-tree structure. in findMIPSMultilibs()
2409 Multilib Default; in findMIPSMultilibs()
2414 Result.BiarchSibling = Multilib(); in findMIPSMultilibs()
2425 // Find multilibs with subdirectories like armv7-a, thumb, armv7-a/thumb. in findAndroidArmMultilibs()
2427 Multilib ArmV7Multilib = makeMultilib("/armv7-a") in findAndroidArmMultilibs()
2429 .flag("-thumb"); in findAndroidArmMultilibs()
2430 Multilib ThumbMultilib = makeMultilib("/thumb") in findAndroidArmMultilibs()
2431 .flag("-armv7") in findAndroidArmMultilibs()
2433 Multilib ArmV7ThumbMultilib = makeMultilib("/armv7-a/thumb") in findAndroidArmMultilibs()
2436 Multilib DefaultMultilib = makeMultilib("") in findAndroidArmMultilibs()
2437 .flag("-armv7") in findAndroidArmMultilibs()
2438 .flag("-thumb"); in findAndroidArmMultilibs()
2445 Multilib::flags_list Flags; in findAndroidArmMultilibs()
2468 // Some versions of SUSE and Fedora on ppc64 put 32-bit libs in findBiarchMultilibs()
2469 // in what would normally be GCCInstallPath and put the 64-bit in findBiarchMultilibs()
2475 Multilib Default; in findBiarchMultilibs()
2476 Multilib Alt64 = Multilib() in findBiarchMultilibs()
2479 .flag("-m32") in findBiarchMultilibs()
2481 .flag("-mx32"); in findBiarchMultilibs()
2482 Multilib Alt32 = Multilib() in findBiarchMultilibs()
2486 .flag("-m64") in findBiarchMultilibs()
2487 .flag("-mx32"); in findBiarchMultilibs()
2488 Multilib Altx32 = Multilib() in findBiarchMultilibs()
2491 .flag("-m32") in findBiarchMultilibs()
2492 .flag("-m64") in findBiarchMultilibs()
2499 // Determine default multilib from: 32, 64, x32 in findBiarchMultilibs()
2519 Default.flag("+m32").flag("-m64").flag("-mx32"); in findBiarchMultilibs()
2521 Default.flag("-m32").flag("+m64").flag("-mx32"); in findBiarchMultilibs()
2523 Default.flag("-m32").flag("-m64").flag("+mx32"); in findBiarchMultilibs()
2534 Multilib::flags_list Flags; in findBiarchMultilibs()
2559 StringRef VersionText = llvm::sys::path::filename(LI->getName()); in scanLibDirForGCCTripleSolaris()
2562 if (CandidateVersion.Major != -1) // Filter obviously bad entries. in scanLibDirForGCCTripleSolaris()
2563 if (!CandidateGCCInstallPaths.insert(LI->getName()).second) in scanLibDirForGCCTripleSolaris()
2583 StringRef SubVersionText = llvm::sys::path::filename(LLI->getName()); in scanLibDirForGCCTripleSolaris()
2612 // Debian puts cross-compilers in gcc-cross in ScanLibDirForGCCTriple()
2613 {"/gcc-cross/" + CandidateTriple.str(), "/../../.."}, in ScanLibDirForGCCTriple()
2622 // Ubuntu has a strange mis-matched pair of triples that this happens to in ScanLibDirForGCCTriple()
2626 {"/i386-linux-gnu/gcc/" + CandidateTriple.str(), "/../../../.."}}; in ScanLibDirForGCCTriple()
2634 // Only look at the final, weird Ubuntu suffix for i386-linux-gnu. in ScanLibDirForGCCTriple()
2635 const unsigned NumLibSuffixes = (llvm::array_lengthof(LibAndInstallSuffixes) - in ScanLibDirForGCCTriple()
2644 StringRef VersionText = llvm::sys::path::filename(LI->getName()); in ScanLibDirForGCCTriple()
2646 if (CandidateVersion.Major != -1) // Filter obviously bad entries. in ScanLibDirForGCCTriple()
2647 if (!CandidateGCCInstallPaths.insert(LI->getName()).second) in ScanLibDirForGCCTriple()
2661 findAndroidArmMultilibs(D, TargetTriple, LI->getName(), Args, Detected); in ScanLibDirForGCCTriple()
2663 if (!findMIPSMultilibs(D, TargetTriple, LI->getName(), Args, Detected)) in ScanLibDirForGCCTriple()
2665 } else if (!findBiarchMultilibs(D, TargetTriple, LI->getName(), Args, in ScanLibDirForGCCTriple()
2782 // GCC surprisingly uses *both* the GCC triple with a multilib suffix and in addLibStdCXXIncludePaths()
2808 CC1Args.push_back("-fuse-init-array"); in addClangTargetOptions()
2816 // Select the correct multilib according to the given arguments. in MipsLLVMToolChain()
2876 StringRef Value = A->getValue(); in GetCXXStdlibType()
2879 << A->getAsString(Args); in GetCXXStdlibType()
2892 "Only -lc++ (aka libcxx) is suported in this toolchain."); in AddClangCXXStdlibIncludeArgs()
2909 "Only -lc++ (aka libxx) is suported in this toolchain."); in AddCXXStdlibLibArgs()
2911 CmdArgs.push_back("-lc++"); in AddCXXStdlibLibArgs()
2912 CmdArgs.push_back("-lc++abi"); in AddCXXStdlibLibArgs()
2913 CmdArgs.push_back("-lunwind"); in AddCXXStdlibLibArgs()
2922 llvm::sys::path::append(Path, Twine("libclang_rt." + Component + "-" + in getCompilerRT()
2951 Gn = A->getValue(); in getSmallDataThreshold()
2968 //---------------------------------------------------------------------------- in getHexagonLibraryPaths()
2969 // -L Args in getHexagonLibraryPaths()
2970 //---------------------------------------------------------------------------- in getHexagonLibraryPaths()
2972 for (const char *Value : A->getValues()) in getHexagonLibraryPaths()
2975 //---------------------------------------------------------------------------- in getHexagonLibraryPaths()
2977 //---------------------------------------------------------------------------- in getHexagonLibraryPaths()
2988 // Assume G0 with -shared. in getHexagonLibraryPaths()
3067 StringRef Value = A->getValue(); in GetCXXStdlibType()
3069 getDriver().Diag(diag::err_drv_invalid_stdlib_name) << A->getAsString(Args); in GetCXXStdlibType()
3076 // if no Hexagon processor is selected at the command-line.
3087 StringRef CPU = CpuArg ? CpuArg->getValue() : GetDefaultCPU(); in GetTargetCPUVersion()
3089 return CPU.substr(sizeof("hexagon") - 1); in GetTargetCPUVersion()
3129 file_paths.push_back(FilePath + "x86_64-nacl/lib32"); in NaClToolChain()
3130 file_paths.push_back(FilePath + "i686-nacl/usr/lib"); in NaClToolChain()
3131 prog_paths.push_back(ProgPath + "x86_64-nacl/bin"); in NaClToolChain()
3132 file_paths.push_back(ToolPath + "i686-nacl"); in NaClToolChain()
3135 file_paths.push_back(FilePath + "x86_64-nacl/lib"); in NaClToolChain()
3136 file_paths.push_back(FilePath + "x86_64-nacl/usr/lib"); in NaClToolChain()
3137 prog_paths.push_back(ProgPath + "x86_64-nacl/bin"); in NaClToolChain()
3138 file_paths.push_back(ToolPath + "x86_64-nacl"); in NaClToolChain()
3141 file_paths.push_back(FilePath + "arm-nacl/lib"); in NaClToolChain()
3142 file_paths.push_back(FilePath + "arm-nacl/usr/lib"); in NaClToolChain()
3143 prog_paths.push_back(ProgPath + "arm-nacl/bin"); in NaClToolChain()
3144 file_paths.push_back(ToolPath + "arm-nacl"); in NaClToolChain()
3147 file_paths.push_back(FilePath + "mipsel-nacl/lib"); in NaClToolChain()
3148 file_paths.push_back(FilePath + "mipsel-nacl/usr/lib"); in NaClToolChain()
3150 file_paths.push_back(ToolPath + "mipsel-nacl"); in NaClToolChain()
3156 NaClArmMacrosPath = GetFilePath("nacl-arm-macros.s"); in NaClToolChain()
3177 // x86 is special because multilib style uses x86_64-nacl/include for libc in AddClangSystemIncludeArgs()
3178 // headers but the SDK wants i686-nacl/usr/include. The other architectures in AddClangSystemIncludeArgs()
3180 llvm::sys::path::append(P, "i686-nacl/usr/include"); in AddClangSystemIncludeArgs()
3185 llvm::sys::path::append(P, "x86_64-nacl/include"); in AddClangSystemIncludeArgs()
3189 llvm::sys::path::append(P, "arm-nacl/usr/include"); in AddClangSystemIncludeArgs()
3192 llvm::sys::path::append(P, "x86_64-nacl/usr/include"); in AddClangSystemIncludeArgs()
3195 llvm::sys::path::append(P, "mipsel-nacl/usr/include"); in AddClangSystemIncludeArgs()
3210 // Check for -stdlib= flags. We only support libc++ but this consumes the arg in AddCXXStdlibLibArgs()
3213 CmdArgs.push_back("-lc++"); in AddCXXStdlibLibArgs()
3223 // Check for -stdlib= flags. We only support libc++ but this consumes the arg in AddClangCXXStdlibIncludeArgs()
3230 llvm::sys::path::append(P, "arm-nacl/include/c++/v1"); in AddClangCXXStdlibIncludeArgs()
3234 llvm::sys::path::append(P, "x86_64-nacl/include/c++/v1"); in AddClangCXXStdlibIncludeArgs()
3238 llvm::sys::path::append(P, "x86_64-nacl/include/c++/v1"); in AddClangCXXStdlibIncludeArgs()
3242 llvm::sys::path::append(P, "mipsel-nacl/include/c++/v1"); in AddClangCXXStdlibIncludeArgs()
3253 StringRef Value = A->getValue(); in GetCXXStdlibType()
3256 getDriver().Diag(diag::err_drv_invalid_stdlib_name) << A->getAsString(Args); in GetCXXStdlibType()
3283 /// TCEToolChain - A tool chain using the llvm bitcode tools to perform
3307 // CloudABI - CloudABI tool chain which can call ld(1) directly.
3330 CmdArgs.push_back("-lc++"); in AddCXXStdlibLibArgs()
3331 CmdArgs.push_back("-lc++abi"); in AddCXXStdlibLibArgs()
3332 CmdArgs.push_back("-lunwind"); in AddCXXStdlibLibArgs()
3349 /// Haiku - Haiku tool chain which can call as(1) and ld(1) directly.
3381 /// OpenBSD - OpenBSD tool chain which can call as(1) and ld(1) directly.
3396 /// Bitrig - Bitrig tool chain which can call as(1) and ld(1) directly.
3448 CmdArgs.push_back("-lc++"); in AddCXXStdlibLibArgs()
3449 CmdArgs.push_back("-lc++abi"); in AddCXXStdlibLibArgs()
3450 CmdArgs.push_back("-lpthread"); in AddCXXStdlibLibArgs()
3453 CmdArgs.push_back("-lstdc++"); in AddCXXStdlibLibArgs()
3458 /// FreeBSD - FreeBSD tool chain which can call as(1) and ld(1) directly.
3464 // When targeting 32-bit platforms, look for '/usr/lib32/crt1.o' and fall in FreeBSD()
3507 CmdArgs.push_back(Profiling ? "-lc++_p" : "-lc++"); in AddCXXStdlibLibArgs()
3511 CmdArgs.push_back(Profiling ? "-lstdc++_p" : "-lstdc++"); in AddCXXStdlibLibArgs()
3558 /// NetBSD - NetBSD tool chain which can call as(1) and ld(1) directly.
3563 // When targeting a 32-bit platform, try the special directory used on in NetBSD()
3564 // 64-bit hosts, and only fall back to the main library directory if that in NetBSD()
3662 /// Minix - Minix tool chain which can call as(1) and ld(1) directly.
3682 /// Solaris - Solaris tool chain which can call as(1) and ld(1) directly.
3749 /// Distribution (very bare-bones at the moment).
3803 llvm::MemoryBuffer::getFile("/etc/lsb-release"); in DetectDistro()
3805 StringRef Data = File.get()->getBuffer(); in DetectDistro()
3834 File = llvm::MemoryBuffer::getFile("/etc/redhat-release"); in DetectDistro()
3836 StringRef Data = File.get()->getBuffer(); in DetectDistro()
3854 StringRef Data = File.get()->getBuffer(); in DetectDistro()
3868 if (D.getVFS().exists("/etc/SuSE-release")) in DetectDistro()
3871 if (D.getVFS().exists("/etc/exherbo-release")) in DetectDistro()
3874 if (D.getVFS().exists("/etc/arch-release")) in DetectDistro()
3882 /// Debian-based systems are starting to use a multiarch setup where they use
3883 /// a target-triple directory in the library and header search paths.
3900 // 32-bit and 64-bit targets. Multiarch fixes its install triples to these in getMultiarchTriple()
3905 if (D.getVFS().exists(SysRoot + "/lib/arm-linux-gnueabihf")) in getMultiarchTriple()
3906 return "arm-linux-gnueabihf"; in getMultiarchTriple()
3908 if (D.getVFS().exists(SysRoot + "/lib/arm-linux-gnueabi")) in getMultiarchTriple()
3909 return "arm-linux-gnueabi"; in getMultiarchTriple()
3915 if (D.getVFS().exists(SysRoot + "/lib/armeb-linux-gnueabihf")) in getMultiarchTriple()
3916 return "armeb-linux-gnueabihf"; in getMultiarchTriple()
3918 if (D.getVFS().exists(SysRoot + "/lib/armeb-linux-gnueabi")) in getMultiarchTriple()
3919 return "armeb-linux-gnueabi"; in getMultiarchTriple()
3923 if (D.getVFS().exists(SysRoot + "/lib/i386-linux-gnu")) in getMultiarchTriple()
3924 return "i386-linux-gnu"; in getMultiarchTriple()
3929 D.getVFS().exists(SysRoot + "/lib/x86_64-linux-gnu")) in getMultiarchTriple()
3930 return "x86_64-linux-gnu"; in getMultiarchTriple()
3933 if (D.getVFS().exists(SysRoot + "/lib/aarch64-linux-gnu")) in getMultiarchTriple()
3934 return "aarch64-linux-gnu"; in getMultiarchTriple()
3937 if (D.getVFS().exists(SysRoot + "/lib/aarch64_be-linux-gnu")) in getMultiarchTriple()
3938 return "aarch64_be-linux-gnu"; in getMultiarchTriple()
3941 if (D.getVFS().exists(SysRoot + "/lib/mips-linux-gnu")) in getMultiarchTriple()
3942 return "mips-linux-gnu"; in getMultiarchTriple()
3945 if (D.getVFS().exists(SysRoot + "/lib/mipsel-linux-gnu")) in getMultiarchTriple()
3946 return "mipsel-linux-gnu"; in getMultiarchTriple()
3949 if (D.getVFS().exists(SysRoot + "/lib/mips64-linux-gnu")) in getMultiarchTriple()
3950 return "mips64-linux-gnu"; in getMultiarchTriple()
3951 if (D.getVFS().exists(SysRoot + "/lib/mips64-linux-gnuabi64")) in getMultiarchTriple()
3952 return "mips64-linux-gnuabi64"; in getMultiarchTriple()
3955 if (D.getVFS().exists(SysRoot + "/lib/mips64el-linux-gnu")) in getMultiarchTriple()
3956 return "mips64el-linux-gnu"; in getMultiarchTriple()
3957 if (D.getVFS().exists(SysRoot + "/lib/mips64el-linux-gnuabi64")) in getMultiarchTriple()
3958 return "mips64el-linux-gnuabi64"; in getMultiarchTriple()
3961 if (D.getVFS().exists(SysRoot + "/lib/powerpc-linux-gnuspe")) in getMultiarchTriple()
3962 return "powerpc-linux-gnuspe"; in getMultiarchTriple()
3963 if (D.getVFS().exists(SysRoot + "/lib/powerpc-linux-gnu")) in getMultiarchTriple()
3964 return "powerpc-linux-gnu"; in getMultiarchTriple()
3967 if (D.getVFS().exists(SysRoot + "/lib/powerpc64-linux-gnu")) in getMultiarchTriple()
3968 return "powerpc64-linux-gnu"; in getMultiarchTriple()
3971 if (D.getVFS().exists(SysRoot + "/lib/powerpc64le-linux-gnu")) in getMultiarchTriple()
3972 return "powerpc64le-linux-gnu"; in getMultiarchTriple()
3975 if (D.getVFS().exists(SysRoot + "/lib/sparc-linux-gnu")) in getMultiarchTriple()
3976 return "sparc-linux-gnu"; in getMultiarchTriple()
3979 if (D.getVFS().exists(SysRoot + "/lib/sparc64-linux-gnu")) in getMultiarchTriple()
3980 return "sparc64-linux-gnu"; in getMultiarchTriple()
3983 if (D.getVFS().exists(SysRoot + "/lib/s390x-linux-gnu")) in getMultiarchTriple()
3984 return "s390x-linux-gnu"; in getMultiarchTriple()
4030 const Multilib &Multilib, in addMultilibsFilePaths() argument
4034 for (const auto &Path : PathsCallback(Multilib)) in addMultilibsFilePaths()
4046 // Cross-compiling binutils and GCC installations (vanilla and openSUSE at in Linux()
4047 // least) put various tools in a triple-prefixed directory off of the parent in Linux()
4051 // targeting x86_64, but it is a bi-arch GCC installation, it can also be in Linux()
4053 // FIXME: This seems unlikely to be Linux-specific. in Linux()
4062 ExtraOpts.push_back("-z"); in Linux()
4067 ExtraOpts.push_back("-X"); in Linux()
4073 ExtraOpts.push_back("--sysroot=" + SysRoot); in Linux()
4083 ExtraOpts.push_back("--hash-style=gnu"); in Linux()
4087 ExtraOpts.push_back("--hash-style=both"); in Linux()
4091 ExtraOpts.push_back("--no-add-needed"); in Linux()
4094 ExtraOpts.push_back("--build-id"); in Linux()
4098 ExtraOpts.push_back("--enable-new-dtags"); in Linux()
4101 // the GCC driver itself uses, as this is part of the GCC-compatible driver. in Linux()
4110 // Add the multilib suffixed paths where they are available. in Linux()
4114 const Multilib &Multilib = GCCInstallation.getMultilib(); in Linux() local
4117 // Add toolchain / multilib specific file paths. in Linux()
4118 addMultilibsFilePaths(D, Multilibs, Multilib, in Linux()
4122 // a biarch-like suffix of the GCC installation. in Linux()
4123 addPathIfExists(D, GCCInstallation.getInstallPath() + Multilib.gccSuffix(), in Linux()
4145 OSLibDir + Multilib.osSuffix(), in Linux()
4187 Multilib BiarchSibling; in Linux()
4194 // See comments above on the multilib variant for details of why this is in Linux()
4198 const Multilib &Multilib = GCCInstallation.getMultilib(); in Linux() local
4200 Multilib.osSuffix(), in Linux()
4203 // See comments above on the multilib variant for details of why this is in Linux()
4242 const Multilib &Multilib = GCCInstallation.getMultilib(); in computeSysRoot() local
4245 (InstallDir + "/../../../../" + TripleStr + "/libc" + Multilib.osSuffix()) in computeSysRoot()
4251 Path = (InstallDir + "/../../../../sysroot" + Multilib.osSuffix()).str(); in computeSysRoot()
4282 return "/lib/ld-musl-" + ArchName + ".so.1"; in getDynamicLinker()
4294 Loader = "ld-linux-aarch64.so.1"; in getDynamicLinker()
4298 Loader = "ld-linux-aarch64_be.so.1"; in getDynamicLinker()
4309 Loader = HF ? "ld-linux-armhf.so.3" : "ld-linux.so.3"; in getDynamicLinker()
4323 Loader = IsNaN2008 ? "ld-uClibc-mipsn8.so.0" : "ld-uClibc.so.0"; in getDynamicLinker()
4326 Loader = LE ? "ld-musl-mipsel.so.1" : "ld-musl-mips.so.1"; in getDynamicLinker()
4328 Loader = IsNaN2008 ? "ld-linux-mipsn8.so.1" : "ld.so.1"; in getDynamicLinker()
4349 Loader = "ld-linux.so.2"; in getDynamicLinker()
4353 Loader = "ld-linux.so.2"; in getDynamicLinker()
4361 Loader = "ld-linux.so.2"; in getDynamicLinker()
4367 Loader = X32 ? "ld-linux-x32.so.2" : "ld-linux-x86-64.so.2"; in getDynamicLinker()
4398 // Check for configure-time C include directories. in AddClangSystemIncludeArgs()
4414 // Add include directories specific to the selected multilib set and multilib. in AddClangSystemIncludeArgs()
4426 "/usr/include/x86_64-linux-gnu", in AddClangSystemIncludeArgs()
4431 "/usr/include/i686-linux-gnu/64", "/usr/include/i486-linux-gnu/64"}; in AddClangSystemIncludeArgs()
4433 "/usr/include/i386-linux-gnu", in AddClangSystemIncludeArgs()
4438 "/usr/include/x86_64-linux-gnu/32", "/usr/include/i686-linux-gnu", in AddClangSystemIncludeArgs()
4439 "/usr/include/i486-linux-gnu"}; in AddClangSystemIncludeArgs()
4441 "/usr/include/aarch64-linux-gnu"}; in AddClangSystemIncludeArgs()
4443 "/usr/include/arm-linux-gnueabi"}; in AddClangSystemIncludeArgs()
4445 "/usr/include/arm-linux-gnueabihf"}; in AddClangSystemIncludeArgs()
4447 "/usr/include/armeb-linux-gnueabi"}; in AddClangSystemIncludeArgs()
4449 "/usr/include/armeb-linux-gnueabihf"}; in AddClangSystemIncludeArgs()
4450 const StringRef MIPSMultiarchIncludeDirs[] = {"/usr/include/mips-linux-gnu"}; in AddClangSystemIncludeArgs()
4452 "/usr/include/mipsel-linux-gnu"}; in AddClangSystemIncludeArgs()
4454 "/usr/include/mips64-linux-gnu", "/usr/include/mips64-linux-gnuabi64"}; in AddClangSystemIncludeArgs()
4456 "/usr/include/mips64el-linux-gnu", in AddClangSystemIncludeArgs()
4457 "/usr/include/mips64el-linux-gnuabi64"}; in AddClangSystemIncludeArgs()
4459 "/usr/include/powerpc-linux-gnu"}; in AddClangSystemIncludeArgs()
4461 "/usr/include/powerpc64-linux-gnu"}; in AddClangSystemIncludeArgs()
4463 "/usr/include/powerpc64le-linux-gnu"}; in AddClangSystemIncludeArgs()
4465 "/usr/include/sparc-linux-gnu"}; in AddClangSystemIncludeArgs()
4467 "/usr/include/sparc64-linux-gnu"}; in AddClangSystemIncludeArgs()
4469 "/usr/include/s390x-linux-gnu"}; in AddClangSystemIncludeArgs()
4540 // system GCCs, but is often used with cross-compiling GCCs, and harmless to in AddClangSystemIncludeArgs()
4541 // add even when Clang is acting as-if it were a system compiler. in AddClangSystemIncludeArgs()
4553 StringRef VersionText = llvm::sys::path::filename(LI->path()); in DetectLibcxxIncludePath()
4576 // If this is a development, non-installed, clang, libcxx will in AddClangCXXStdlibIncludeArgs()
4602 const Multilib &Multilib = GCCInstallation.getMultilib(); in AddClangCXXStdlibIncludeArgs() local
4613 Multilib.includeSuffix(), DriverArgs, CC1Args)) in AddClangCXXStdlibIncludeArgs()
4621 InstallDir.str() + "/include/g++-v" + Version.Text, in AddClangCXXStdlibIncludeArgs()
4622 InstallDir.str() + "/include/g++-v" + Version.MajorStr + "." + in AddClangCXXStdlibIncludeArgs()
4624 InstallDir.str() + "/include/g++-v" + Version.MajorStr, in AddClangCXXStdlibIncludeArgs()
4636 Multilib.includeSuffix(), DriverArgs, CC1Args)) in AddClangCXXStdlibIncludeArgs()
4652 CC1Args.push_back("-include"); in AddCudaIncludeArgs()
4659 CC1Args.push_back("-isystem"); in AddIAMCUIncludeArgs()
4702 // Add linker option -u__llvm_runtime_variable to cause runtime in addProfileRTLibs()
4706 Twine("-u", llvm::getInstrProfRuntimeHookVarName()))); in addProfileRTLibs()
4710 /// DragonFly - DragonFly tool chain which can call as(1) and ld(1) directly.
4749 CC1Args.push_back("-fcuda-is-device"); in addClangTargetOptions()
4753 CC1Args.push_back("-fcuda-flush-denormals-to-zero"); in addClangTargetOptions()
4757 CC1Args.push_back("-fcuda-approx-transcendentals"); in addClangTargetOptions()
4765 CC1Args.push_back("-mlink-cuda-bitcode"); in addClangTargetOptions()
4768 // Libdevice in CUDA-7.0 requires PTX version that's more recent in addClangTargetOptions()
4770 // came with CUDA-7.0. in addClangTargetOptions()
4771 CC1Args.push_back("-target-feature"); in addClangTargetOptions()
4795 if (A->getOption().matches(options::OPT_Xarch__)) { in TranslateArgs()
4797 if (!BoundArch || A->getValue(0) != StringRef(BoundArch)) in TranslateArgs()
4800 unsigned Index = Args.getBaseArgs().MakeIndex(A->getValue(1)); in TranslateArgs()
4805 // consumed, the -Xarch_ argument's parameter tried to consume in TranslateArgs()
4811 // like -O4 are going to slip through. in TranslateArgs()
4814 << A->getAsString(Args); in TranslateArgs()
4816 } else if (XarchArg->getOption().hasFlag(options::DriverOption)) { in TranslateArgs()
4818 << A->getAsString(Args); in TranslateArgs()
4821 XarchArg->setBaseArg(A); in TranslateArgs()
4823 DAL->AddSynthesizedArg(A); in TranslateArgs()
4825 DAL->append(A); in TranslateArgs()
4829 DAL->eraseArg(options::OPT_march_EQ); in TranslateArgs()
4830 DAL->AddJoinedArg(nullptr, Opts.getOption(options::OPT_march_EQ), BoundArch); in TranslateArgs()
4884 CC1Args.push_back("-nostdsysteminc"); in addClangTargetOptions()
4910 // If a target of 'sparc-myriad-elf' is specified to clang, it wants to use in MyriadToolChain()
4911 // 'sparc-myriad--elf' (note the unknown OS) as the canonical triple. in MyriadToolChain()
4915 // choose the myriad installation when targeting a non-myriad sparc install. in MyriadToolChain()
4923 GCCInstallation.init(Triple, Args, {"sparc-myriad-elf"}); in MyriadToolChain()
4931 llvm::sys::path::append(LibDir, "../sparc-myriad-elf/lib/le"); in MyriadToolChain()
4933 llvm::sys::path::append(LibDir, "../sparc-myriad-elf/lib"); in MyriadToolChain()
4965 const Multilib &Multilib = GCCInstallation.getMultilib(); in AddClangCXXStdlibIncludeArgs() local
4969 "", TripleStr, "", "", Multilib.includeSuffix(), DriverArgs, CC1Args); in AddClangCXXStdlibIncludeArgs()
4973 // {shave,sparc{,el}}-myriad-{rtems,unknown}-elf
5037 CC1Args.push_back("-fuse-init-array"); in addClangTargetOptions()
5070 D.Diag(diag::err_drv_unsupported_opt_for_target) << "-static" << "PS4"; in PS4CPU()
5088 // -Weverything or -Winvalid-or-nonexistent-directory options are passed. in PS4CPU()
5089 // If -isysroot was passed, use that as the SDK base path. in PS4CPU()
5092 PrefixDir = A->getValue(); in PS4CPU()