aboutsummaryrefslogtreecommitdiff
path: root/lib/Driver/Tools.h
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2010-11-03 04:37:51 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2010-11-03 04:37:51 +0000
commit29a88f441fb9d82cfa898774cf6711e54bcba2ff (patch)
treed293805dcfc3cefb20c2ca7c33d364c72c61e412 /lib/Driver/Tools.h
parent79ca1ee4b637c01458584bb571f1b309180c780d (diff)
Switch clang to run ld directly on linux. I tested this on all the linux
distros listed by running gcc main.o -o main g++ main.o -o main gcc main.o -o main -static g++ main.o -o main -static gcc f.o -o f.so -shared g++ f.o -o f.so -shared and comparing the ld line with the one created by clang. I also added -m32/m64 in distros that support it. While I tested many distros, there will always be more. If you are hit by this it should be somewhat easy to add your distro. If you are in a hurry, do revert this, but please inform how to detect you distro and the ld command lines produced by the above gcc invocations. Most distros have some patches on gcc :-( git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118149 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Driver/Tools.h')
-rw-r--r--lib/Driver/Tools.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/Driver/Tools.h b/lib/Driver/Tools.h
index 63faf91654..edfb2df38e 100644
--- a/lib/Driver/Tools.h
+++ b/lib/Driver/Tools.h
@@ -348,6 +348,18 @@ namespace linuxtools {
const ArgList &TCArgs,
const char *LinkingOutput) const;
};
+ class LLVM_LIBRARY_VISIBILITY Link : public Tool {
+ public:
+ Link(const ToolChain &TC) : Tool("linux::Link", "linker", TC) {}
+
+ virtual bool hasIntegratedCPP() const { return false; }
+
+ virtual void ConstructJob(Compilation &C, const JobAction &JA,
+ const InputInfo &Output,
+ const InputInfoList &Inputs,
+ const ArgList &TCArgs,
+ const char *LinkingOutput) const;
+ };
}
/// minix -- Directly call GNU Binutils assembler and linker
namespace minix {