forked from OSchip/llvm-project
Move some code into a helper function. NFC.
llvm-svn: 215731
This commit is contained in:
parent
368ac22358
commit
1e08577586
|
@ -7257,6 +7257,53 @@ static void AddRunTimeLibs(const ToolChain &TC, const Driver &D,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char *getLDMOption(const llvm::Triple &T, const ArgList &Args) {
|
||||||
|
switch (T.getArch()) {
|
||||||
|
case llvm::Triple::x86:
|
||||||
|
return "elf_i386";
|
||||||
|
case llvm::Triple::aarch64:
|
||||||
|
return "aarch64linux";
|
||||||
|
case llvm::Triple::aarch64_be:
|
||||||
|
return "aarch64_be_linux";
|
||||||
|
case llvm::Triple::arm:
|
||||||
|
case llvm::Triple::thumb:
|
||||||
|
return "armelf_linux_eabi";
|
||||||
|
case llvm::Triple::armeb:
|
||||||
|
case llvm::Triple::thumbeb:
|
||||||
|
return "armebelf_linux_eabi"; /* TODO: check which NAME. */
|
||||||
|
case llvm::Triple::ppc:
|
||||||
|
return "elf32ppclinux";
|
||||||
|
case llvm::Triple::ppc64:
|
||||||
|
return "elf64ppc";
|
||||||
|
case llvm::Triple::ppc64le:
|
||||||
|
return "elf64lppc";
|
||||||
|
case llvm::Triple::sparc:
|
||||||
|
return "elf32_sparc";
|
||||||
|
case llvm::Triple::sparcv9:
|
||||||
|
return "elf64_sparc";
|
||||||
|
case llvm::Triple::mips:
|
||||||
|
return "elf32btsmip";
|
||||||
|
case llvm::Triple::mipsel:
|
||||||
|
return "elf32ltsmip";
|
||||||
|
case llvm::Triple::mips64:
|
||||||
|
if (mips::hasMipsAbiArg(Args, "n32"))
|
||||||
|
return "elf32btsmipn32";
|
||||||
|
return "elf64btsmip";
|
||||||
|
case llvm::Triple::mips64el:
|
||||||
|
if (mips::hasMipsAbiArg(Args, "n32"))
|
||||||
|
return "elf32ltsmipn32";
|
||||||
|
return "elf64ltsmip";
|
||||||
|
case llvm::Triple::systemz:
|
||||||
|
return "elf64_s390";
|
||||||
|
case llvm::Triple::x86_64:
|
||||||
|
if (T.getEnvironment() == llvm::Triple::GNUX32)
|
||||||
|
return "elf32_x86_64";
|
||||||
|
return "elf_x86_64";
|
||||||
|
default:
|
||||||
|
llvm_unreachable("Unexpected arch");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void gnutools::Link::ConstructJob(Compilation &C, const JobAction &JA,
|
void gnutools::Link::ConstructJob(Compilation &C, const JobAction &JA,
|
||||||
const InputInfo &Output,
|
const InputInfo &Output,
|
||||||
const InputInfoList &Inputs,
|
const InputInfoList &Inputs,
|
||||||
|
@ -7306,51 +7353,7 @@ void gnutools::Link::ConstructJob(Compilation &C, const JobAction &JA,
|
||||||
}
|
}
|
||||||
|
|
||||||
CmdArgs.push_back("-m");
|
CmdArgs.push_back("-m");
|
||||||
if (ToolChain.getArch() == llvm::Triple::x86)
|
CmdArgs.push_back(getLDMOption(ToolChain.getTriple(), Args));
|
||||||
CmdArgs.push_back("elf_i386");
|
|
||||||
else if (ToolChain.getArch() == llvm::Triple::aarch64)
|
|
||||||
CmdArgs.push_back("aarch64linux");
|
|
||||||
else if (ToolChain.getArch() == llvm::Triple::aarch64_be)
|
|
||||||
CmdArgs.push_back("aarch64_be_linux");
|
|
||||||
else if (ToolChain.getArch() == llvm::Triple::arm
|
|
||||||
|| ToolChain.getArch() == llvm::Triple::thumb)
|
|
||||||
CmdArgs.push_back("armelf_linux_eabi");
|
|
||||||
else if (ToolChain.getArch() == llvm::Triple::armeb
|
|
||||||
|| ToolChain.getArch() == llvm::Triple::thumbeb)
|
|
||||||
CmdArgs.push_back("armebelf_linux_eabi"); /* TODO: check which NAME. */
|
|
||||||
else if (ToolChain.getArch() == llvm::Triple::ppc)
|
|
||||||
CmdArgs.push_back("elf32ppclinux");
|
|
||||||
else if (ToolChain.getArch() == llvm::Triple::ppc64)
|
|
||||||
CmdArgs.push_back("elf64ppc");
|
|
||||||
else if (ToolChain.getArch() == llvm::Triple::ppc64le)
|
|
||||||
CmdArgs.push_back("elf64lppc");
|
|
||||||
else if (ToolChain.getArch() == llvm::Triple::sparc)
|
|
||||||
CmdArgs.push_back("elf32_sparc");
|
|
||||||
else if (ToolChain.getArch() == llvm::Triple::sparcv9)
|
|
||||||
CmdArgs.push_back("elf64_sparc");
|
|
||||||
else if (ToolChain.getArch() == llvm::Triple::mips)
|
|
||||||
CmdArgs.push_back("elf32btsmip");
|
|
||||||
else if (ToolChain.getArch() == llvm::Triple::mipsel)
|
|
||||||
CmdArgs.push_back("elf32ltsmip");
|
|
||||||
else if (ToolChain.getArch() == llvm::Triple::mips64) {
|
|
||||||
if (mips::hasMipsAbiArg(Args, "n32"))
|
|
||||||
CmdArgs.push_back("elf32btsmipn32");
|
|
||||||
else
|
|
||||||
CmdArgs.push_back("elf64btsmip");
|
|
||||||
}
|
|
||||||
else if (ToolChain.getArch() == llvm::Triple::mips64el) {
|
|
||||||
if (mips::hasMipsAbiArg(Args, "n32"))
|
|
||||||
CmdArgs.push_back("elf32ltsmipn32");
|
|
||||||
else
|
|
||||||
CmdArgs.push_back("elf64ltsmip");
|
|
||||||
}
|
|
||||||
else if (ToolChain.getArch() == llvm::Triple::systemz)
|
|
||||||
CmdArgs.push_back("elf64_s390");
|
|
||||||
else if (ToolChain.getArch() == llvm::Triple::x86_64 &&
|
|
||||||
ToolChain.getTriple().getEnvironment() == llvm::Triple::GNUX32)
|
|
||||||
CmdArgs.push_back("elf32_x86_64");
|
|
||||||
else
|
|
||||||
CmdArgs.push_back("elf_x86_64");
|
|
||||||
|
|
||||||
if (Args.hasArg(options::OPT_static)) {
|
if (Args.hasArg(options::OPT_static)) {
|
||||||
if (ToolChain.getArch() == llvm::Triple::arm ||
|
if (ToolChain.getArch() == llvm::Triple::arm ||
|
||||||
|
|
Loading…
Reference in New Issue