1//===- ARMMCLinker.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 "ARMELFMCLinker.h"
10
11#include "ARM.h"
12#include <llvm/ADT/Triple.h>
13#include <mcld/Module.h>
14#include <mcld/Support/TargetRegistry.h>
15
16using namespace mcld;
17
18namespace mcld {
19//===----------------------------------------------------------------------===//
20// createARMMCLinker - the help function to create corresponding ARMMCLinker
21//===----------------------------------------------------------------------===//
22MCLinker* createARMMCLinker(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 ARMELFMCLinker(pConfig, pModule, pFileHandle);
38}
39
40} // namespace of mcld
41
42//===----------------------------------------------------------------------===//
43// ARMMCLinker
44//===----------------------------------------------------------------------===//
45extern "C" void MCLDInitializeARMMCLinker() {
46  // Register the linker frontend
47  mcld::TargetRegistry::RegisterMCLinker(TheARMTarget, createARMMCLinker);
48  mcld::TargetRegistry::RegisterMCLinker(TheThumbTarget, createARMMCLinker);
49}
50
51