diff options
author | Daniel Dunbar <daniel@zuster.org> | 2010-09-07 17:50:41 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2010-09-07 17:50:41 +0000 |
commit | 9ced7049caf7c9543badb302f3bb43a6bc264705 (patch) | |
tree | 3495251940f8a3af8ed926afdc2d520791140e8f /lib/Driver/Tools.cpp | |
parent | bcf1da8ff6ab007a23a8d1be8e950d92cee4241e (diff) |
Driver/Darwin: Catch another case where ld ends up using ld_classic.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113226 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Driver/Tools.cpp')
-rw-r--r-- | lib/Driver/Tools.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 0215cdfa61..24d05c1b27 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -2209,6 +2209,16 @@ void darwin::Link::AddLinkArgs(const ArgList &Args, // FIXME: This is a temporary workaround, ld should be handling this. bool UsesLdClassic = (getToolChain().getArch() == llvm::Triple::x86 && Args.hasArg(options::OPT_static)); + if (getToolChain().getArch() == llvm::Triple::x86) { + for (arg_iterator it = Args.filtered_begin(options::OPT_Xlinker, + options::OPT_Wl_COMMA), + ie = Args.filtered_end(); it != ie; ++it) { + const Arg *A = *it; + for (unsigned i = 0, e = A->getNumValues(); i != e; ++i) + if (llvm::StringRef(A->getValue(Args, i)) == "-kext") + UsesLdClassic = true; + } + } if (!UsesLdClassic) CmdArgs.push_back("-demangle"); } |