Lines Matching +full:cross +full:- +full:toolchain

1 //===--- Linux.h - Linux ToolChain Implementations --------------*- C++ -*-===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
37 /// Debian-based systems are starting to use a multiarch setup where they use
38 /// a target-triple directory in the library and header search paths.
58 // 32-bit and 64-bit targets. Multiarch fixes its install triples to these in getMultiarchTriple()
63 return "arm-linux-androideabi"; in getMultiarchTriple()
67 return "arm-linux-gnueabihf"; in getMultiarchTriple()
68 return "arm-linux-gnueabi"; in getMultiarchTriple()
74 return "armeb-linux-gnueabihf"; in getMultiarchTriple()
75 return "armeb-linux-gnueabi"; in getMultiarchTriple()
78 return "i686-linux-android"; in getMultiarchTriple()
79 return "i386-linux-gnu"; in getMultiarchTriple()
82 return "x86_64-linux-android"; in getMultiarchTriple()
84 return "x86_64-linux-gnux32"; in getMultiarchTriple()
85 return "x86_64-linux-gnu"; in getMultiarchTriple()
88 return "aarch64-linux-android"; in getMultiarchTriple()
91 return "aarch64-linux-pauthtest"; in getMultiarchTriple()
92 return "aarch64-linux-gnu"; in getMultiarchTriple()
94 return "aarch64_be-linux-gnu"; in getMultiarchTriple()
119 // This was going to be "f64" in an earlier Toolchain Conventions in getMultiarchTriple()
126 return (Twine("loongarch64-linux-") + Libc + FPFlavor).str(); in getMultiarchTriple()
130 return "m68k-linux-gnu"; in getMultiarchTriple()
133 return IsMipsR6 ? "mipsisa32r6-linux-gnu" : "mips-linux-gnu"; in getMultiarchTriple()
135 return IsMipsR6 ? "mipsisa32r6el-linux-gnu" : "mipsel-linux-gnu"; in getMultiarchTriple()
138 "-linux-" + (IsMipsN32Abi ? "gnuabin32" : "gnuabi64"); in getMultiarchTriple()
141 if (D.getVFS().exists(concat(SysRoot, "/lib/mips64-linux-gnu"))) in getMultiarchTriple()
142 return "mips64-linux-gnu"; in getMultiarchTriple()
147 "-linux-" + (IsMipsN32Abi ? "gnuabin32" : "gnuabi64"); in getMultiarchTriple()
150 if (D.getVFS().exists(concat(SysRoot, "/lib/mips64el-linux-gnu"))) in getMultiarchTriple()
151 return "mips64el-linux-gnu"; in getMultiarchTriple()
155 if (D.getVFS().exists(concat(SysRoot, "/lib/powerpc-linux-gnuspe"))) in getMultiarchTriple()
156 return "powerpc-linux-gnuspe"; in getMultiarchTriple()
157 return "powerpc-linux-gnu"; in getMultiarchTriple()
159 return "powerpcle-linux-gnu"; in getMultiarchTriple()
161 return "powerpc64-linux-gnu"; in getMultiarchTriple()
163 return "powerpc64le-linux-gnu"; in getMultiarchTriple()
166 return "riscv64-linux-android"; in getMultiarchTriple()
167 return "riscv64-linux-gnu"; in getMultiarchTriple()
169 return "sparc-linux-gnu"; in getMultiarchTriple()
171 return "sparc64-linux-gnu"; in getMultiarchTriple()
173 return "s390x-linux-gnu"; in getMultiarchTriple()
226 ToolChain::path_list &PPaths = getProgramPaths(); in Linux()
233 ExtraOpts.push_back("-z"); in Linux()
239 ExtraOpts.push_back("-z"); in Linux()
243 // Note, lld from 11 onwards default max-page-size to 65536 for both ARM and in Linux()
247 // Android ARM uses max-page-size=4096 to reduce VMA usage. in Linux()
248 ExtraOpts.push_back("-z"); in Linux()
249 ExtraOpts.push_back("max-page-size=4096"); in Linux()
251 // Android AArch64 uses max-page-size=16384 to support 4k/16k page sizes. in Linux()
253 ExtraOpts.push_back("-z"); in Linux()
254 ExtraOpts.push_back("max-page-size=16384"); in Linux()
267 ExtraOpts.push_back("-X"); in Linux()
279 ExtraOpts.push_back("--sysroot=" + SysRoot); in Linux()
291 ExtraOpts.push_back("--hash-style=both"); in Linux()
293 ExtraOpts.push_back("--hash-style=gnu"); in Linux()
297 ExtraOpts.push_back("--build-id"); in Linux()
301 // the GCC driver itself uses, as this is part of the GCC-compatible driver. in Linux()
334 // 64-bit OpenEmbedded sysroots may not have a /usr/lib dir. So they cannot in Linux()
354 ToolChain::RuntimeLibType Linux::GetDefaultRuntimeLibType() const { in GetDefaultRuntimeLibType()
356 return ToolChain::RLT_CompilerRT; in GetDefaultRuntimeLibType()
363 return ToolChain::GetDefaultDwarfVersion(); in GetDefaultDwarfVersion()
366 ToolChain::CXXStdlibType Linux::GetDefaultCXXStdlibType() const { in GetDefaultCXXStdlibType()
368 return ToolChain::CST_Libcxx; in GetDefaultCXXStdlibType()
369 return ToolChain::CST_Libstdcxx; in GetDefaultCXXStdlibType()
402 // $GCCToolchainPath/lib/gcc/csky-linux-gnuabiv2/6.3.0 in computeSysRoot()
403 // Path = $GCCToolchainPath/csky-linux-gnuabiv2/libc in computeSysRoot()
448 // allows to run HWASan binaries on non-HWASan system images. This in getDynamicLinker()
485 ArchName = "powerpc-sf"; in getDynamicLinker()
487 return "/lib/ld-musl-" + ArchName + ".so.1"; in getDynamicLinker()
499 Loader = "ld-linux-aarch64.so.1"; in getDynamicLinker()
503 Loader = "ld-linux-aarch64_be.so.1"; in getDynamicLinker()
515 Loader = HF ? "ld-linux-armhf.so.3" : "ld-linux.so.3"; in getDynamicLinker()
521 ("ld-linux-loongarch-" + in getDynamicLinker()
529 ("ld-linux-loongarch-" + in getDynamicLinker()
547 Loader = IsNaN2008 ? "ld-uClibc-mipsn8.so.0" : "ld-uClibc.so.0"; in getDynamicLinker()
551 Triple.isLittleEndian() ? "ld-musl-mipsel.so.1" : "ld-musl-mips.so.1"; in getDynamicLinker()
553 Loader = IsNaN2008 ? "ld-linux-mipsn8.so.1" : "ld.so.1"; in getDynamicLinker()
580 Loader = ("ld-linux-" + ArchName + "-" + ABIName + ".so.1").str(); in getDynamicLinker()
586 Loader = "ld-linux.so.2"; in getDynamicLinker()
590 Loader = "ld-linux.so.2"; in getDynamicLinker()
598 Loader = "ld-linux.so.2"; in getDynamicLinker()
604 Loader = X32 ? "ld-linux-x32.so.2" : "ld-linux-x86-64.so.2"; in getDynamicLinker()
608 return "/opt/nec/ve/lib/ld-linux-ve.so.1"; in getDynamicLinker()
649 // Check for configure-time C include directories. in AddClangSystemIncludeArgs()
675 // system GCCs, but is often used with cross-compiling GCCs, and harmless to in AddClangSystemIncludeArgs()
676 // add even when Clang is acting as-if it were a system compiler. in AddClangSystemIncludeArgs()
692 // Detect Debian g++-multiarch-incdir.diff. in addLibStdCxxIncludePaths()
696 ? "i386-linux-gnu" in addLibStdCxxIncludePaths()
709 // Android standalone toolchain has C++ headers in yet another place. in addLibStdCxxIncludePaths()
728 CudaInstallation->AddCudaIncludeArgs(DriverArgs, CC1Args); in AddCudaIncludeArgs()
733 RocmInstallation->AddHIPIncludeArgs(DriverArgs, CC1Args); in AddHIPIncludeArgs()
739 Args.MakeArgString(StringRef("-L") + RocmInstallation->getLibPath())); in AddHIPRuntimeLibArgs()
744 {"-rpath", Args.MakeArgString(RocmInstallation->getLibPath())}); in AddHIPRuntimeLibArgs()
746 CmdArgs.push_back("-lamdhip64"); in AddHIPRuntimeLibArgs()
752 CC1Args.push_back("-isystem"); in AddIAMCUIncludeArgs()
765 // Outline atomics for AArch64 are supported by compiler-rt in IsAArch64OutlineAtomicsDefault()
768 ToolChain::RuntimeLibType RtLib = GetRuntimeLibType(Args); in IsAArch64OutlineAtomicsDefault()
769 if (RtLib == ToolChain::RLT_CompilerRT) in IsAArch64OutlineAtomicsDefault()
771 assert(RtLib == ToolChain::RLT_Libgcc && "unexpected runtime library type!"); in IsAArch64OutlineAtomicsDefault()
800 SanitizerMask Res = ToolChain::getSupportedSanitizers(); in getSupportedSanitizers()
840 // Add linker option -u__llvm_profile_runtime to cause runtime in addProfileRTLibs()
844 Twine("-u", llvm::getInstrProfRuntimeHookVarName()))); in addProfileRTLibs()
845 ToolChain::addProfileRTLibs(Args, CmdArgs); in addProfileRTLibs()