• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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