122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===- X86MCLinker.cpp ----------------------------------------------------===// 25460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 35460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// The MCLinker Project 45460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 55460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// This file is distributed under the University of Illinois Open Source 65460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// License. See LICENSE.TXT for details. 75460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 85460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===----------------------------------------------------------------------===// 95460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include "X86.h" 1022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao#include "X86ELFMCLinker.h" 1122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao#include <mcld/Module.h> 1222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao#include <mcld/Support/TargetRegistry.h> 1322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao#include <llvm/ADT/Triple.h> 145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaousing namespace mcld; 165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaonamespace mcld { 1822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao 1922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===// 2022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao/// createX86MCLinker - the help funtion to create corresponding X86MCLinker 215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===----------------------------------------------------------------------===// 2222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei LiaoMCLinker* createX86MCLinker(const std::string &pTriple, 2322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao LinkerConfig& pConfig, 2422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao mcld::Module& pModule, 25f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines FileHandle& pFileHandle) 265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 27f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines llvm::Triple theTriple(pTriple); 285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao if (theTriple.isOSDarwin()) { 295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(0 && "MachO linker has not supported yet"); 3067e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao return NULL; 315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao if (theTriple.isOSWindows()) { 335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(0 && "COFF linker has not supported yet"); 3467e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao return NULL; 355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 37f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines return new X86ELFMCLinker(pConfig, pModule, pFileHandle); 385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} // namespace of mcld 415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===// 4322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao// X86MCLinker 4422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===// 4522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaoextern "C" void MCLDInitializeX86MCLinker() { 465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao // Register the linker frontend 476f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines mcld::TargetRegistry::RegisterMCLinker(TheX86_32Target, createX86MCLinker); 486f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines mcld::TargetRegistry::RegisterMCLinker(TheX86_64Target, createX86MCLinker); 495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 50cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao 51