diff options
| author | Joerg Sonnenberger <joerg@bec.de> | 2014-02-02 22:59:16 +0000 |
|---|---|---|
| committer | Joerg Sonnenberger <joerg@bec.de> | 2014-02-02 22:59:16 +0000 |
| commit | e7f9759fd962a411a2f50e6a017ad0073ab5a963 (patch) | |
| tree | 6588a6f9c9458c97802fbc9c8d38643023decee4 /clang/lib | |
| parent | d68c6504892b74535096264800c502a0d04b07f3 (diff) | |
| download | bcm5719-llvm-e7f9759fd962a411a2f50e6a017ad0073ab5a963.tar.gz bcm5719-llvm-e7f9759fd962a411a2f50e6a017ad0073ab5a963.zip | |
Handle O32/N64 ABIs for NetBSD/MIPS64. From Matt Thomas.
llvm-svn: 200668
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/Driver/ToolChains.cpp | 7 | ||||
| -rw-r--r-- | clang/lib/Driver/Tools.cpp | 16 |
2 files changed, 23 insertions, 0 deletions
diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp index 00341728b1e..9c4213bc18d 100644 --- a/clang/lib/Driver/ToolChains.cpp +++ b/clang/lib/Driver/ToolChains.cpp @@ -2248,6 +2248,13 @@ NetBSD::NetBSD(const Driver &D, const llvm::Triple& Triple, const ArgList &Args) break; } break; + case llvm::Triple::mips64: + case llvm::Triple::mips64el: + if (hasMipsABIArg(Args, "o32")) + getFilePaths().push_back("=/usr/lib/o32"); + else if (hasMipsABIArg(Args, "64")) + getFilePaths().push_back("=/usr/lib/64"); + break; default: break; } diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 4bfc272f743..10194b1dda7 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -6132,6 +6132,22 @@ void netbsd::Link::ConstructJob(Compilation &C, const JobAction &JA, break; } break; + case llvm::Triple::mips64: + case llvm::Triple::mips64el: + if (hasMipsABIArg(Args, "32")) { + CmdArgs.push_back("-m"); + if (getToolChain().getArch() == llvm::Triple::mips64) + CmdArgs.push_back("elf32btsmip"); + else + CmdArgs.push_back("elf32ltsmip"); + } else if (hasMipsABIArg(Args, "64")) { + CmdArgs.push_back("-m"); + if (getToolChain().getArch() == llvm::Triple::mips64) + CmdArgs.push_back("elf64btsmip"); + else + CmdArgs.push_back("elf64ltsmip"); + } + break; default: break; } |

