Move some code into a helper function. NFC.

llvm-svn: 215731
This commit is contained in:
Rafael Espindola 2014-08-15 17:14:35 +00:00
parent 368ac22358
commit 1e08577586
1 changed files with 48 additions and 45 deletions

View File

@ -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,
const InputInfo &Output,
const InputInfoList &Inputs,
@ -7306,51 +7353,7 @@ void gnutools::Link::ConstructJob(Compilation &C, const JobAction &JA,
}
CmdArgs.push_back("-m");
if (ToolChain.getArch() == llvm::Triple::x86)
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");
CmdArgs.push_back(getLDMOption(ToolChain.getTriple(), Args));
if (Args.hasArg(options::OPT_static)) {
if (ToolChain.getArch() == llvm::Triple::arm ||