1 //===- X86MCLinker.cpp ----------------------------------------------------===//
2 //
3 // The MCLinker Project
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 #include "X86.h"
10 #include "X86ELFMCLinker.h"
11 #include <mcld/Module.h>
12 #include <mcld/Support/TargetRegistry.h>
13 #include <llvm/ADT/Triple.h>
14
15 using namespace mcld;
16
17 namespace mcld {
18
19 //===----------------------------------------------------------------------===//
20 /// createX86MCLinker - the help funtion to create corresponding X86MCLinker
21 //===----------------------------------------------------------------------===//
createX86MCLinker(const std::string & pTriple,LinkerConfig & pConfig,mcld::Module & pModule,FileHandle & pFileHandle)22 MCLinker* createX86MCLinker(const std::string &pTriple,
23 LinkerConfig& pConfig,
24 mcld::Module& pModule,
25 FileHandle& pFileHandle)
26 {
27 llvm::Triple theTriple(pTriple);
28 if (theTriple.isOSDarwin()) {
29 assert(0 && "MachO linker has not supported yet");
30 return NULL;
31 }
32 if (theTriple.isOSWindows()) {
33 assert(0 && "COFF linker has not supported yet");
34 return NULL;
35 }
36
37 return new X86ELFMCLinker(pConfig, pModule, pFileHandle);
38 }
39
40 } // namespace of mcld
41
42 //===----------------------------------------------------------------------===//
43 // X86MCLinker
44 //===----------------------------------------------------------------------===//
MCLDInitializeX86MCLinker()45 extern "C" void MCLDInitializeX86MCLinker() {
46 // Register the linker frontend
47 mcld::TargetRegistry::RegisterMCLinker(TheX86_32Target, createX86MCLinker);
48 mcld::TargetRegistry::RegisterMCLinker(TheX86_64Target, createX86MCLinker);
49 }
50
51