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
15using namespace mcld;
16
17namespace mcld {
18
19//===----------------------------------------------------------------------===//
20/// createX86MCLinker - the help funtion to create corresponding X86MCLinker
21//===----------------------------------------------------------------------===//
22MCLinker* 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//===----------------------------------------------------------------------===//
45extern "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