From 6024c97ffa15766bc0f200ffd309d9e017ae0d4b Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Fri, 17 Dec 2010 17:45:22 +0000 Subject: [PATCH] Stub out explicit MCELFObjectTargetWriter interface. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122067 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/MC/MCELFObjectWriter.h | 12 +++++++++++- lib/MC/CMakeLists.txt | 1 + lib/MC/ELFObjectWriter.cpp | 3 ++- lib/MC/MCELFObjectTargetWriter.cpp | 18 ++++++++++++++++++ lib/Target/ARM/ARMAsmBackend.cpp | 8 +++++++- lib/Target/MBlaze/MBlazeAsmBackend.cpp | 8 +++++++- lib/Target/X86/X86AsmBackend.cpp | 10 ++++++++-- 7 files changed, 54 insertions(+), 6 deletions(-) create mode 100644 lib/MC/MCELFObjectTargetWriter.cpp diff --git a/include/llvm/MC/MCELFObjectWriter.h b/include/llvm/MC/MCELFObjectWriter.h index 2a82ec197fa..a5555e38e04 100644 --- a/include/llvm/MC/MCELFObjectWriter.h +++ b/include/llvm/MC/MCELFObjectWriter.h @@ -14,11 +14,21 @@ #include "llvm/Support/DataTypes.h" namespace llvm { +class MCELFObjectTargetWriter { +protected: + MCELFObjectTargetWriter(); + +public: + virtual ~MCELFObjectTargetWriter(); +}; + /// \brief Construct a new ELF writer instance. /// +/// \param MOTW - The target specific ELF writer subclass. /// \param OS - The stream to write to. /// \returns The constructed object writer. -MCObjectWriter *createELFObjectWriter(raw_ostream &OS, bool is64Bit, +MCObjectWriter *createELFObjectWriter(MCELFObjectTargetWriter *MOTW, + raw_ostream &OS, bool is64Bit, Triple::OSType OSType, uint16_t EMachine, bool IsLittleEndian, bool HasRelocationAddend); diff --git a/lib/MC/CMakeLists.txt b/lib/MC/CMakeLists.txt index 6f73df88300..ccec2dc4267 100644 --- a/lib/MC/CMakeLists.txt +++ b/lib/MC/CMakeLists.txt @@ -8,6 +8,7 @@ add_llvm_library(LLVMMC MCCodeEmitter.cpp MCContext.cpp MCDisassembler.cpp + MCELFObjectTargetWriter.cpp MCELFStreamer.cpp MCExpr.cpp MCInst.cpp diff --git a/lib/MC/ELFObjectWriter.cpp b/lib/MC/ELFObjectWriter.cpp index 57ec5492cda..4c67efdaf9c 100644 --- a/lib/MC/ELFObjectWriter.cpp +++ b/lib/MC/ELFObjectWriter.cpp @@ -1467,7 +1467,8 @@ void ELFObjectWriter::WriteObject(MCAssembler &Asm, } } -MCObjectWriter *llvm::createELFObjectWriter(raw_ostream &OS, +MCObjectWriter *llvm::createELFObjectWriter(MCELFObjectTargetWriter *MOTW, + raw_ostream &OS, bool Is64Bit, Triple::OSType OSType, uint16_t EMachine, diff --git a/lib/MC/MCELFObjectTargetWriter.cpp b/lib/MC/MCELFObjectTargetWriter.cpp new file mode 100644 index 00000000000..a2715dedf41 --- /dev/null +++ b/lib/MC/MCELFObjectTargetWriter.cpp @@ -0,0 +1,18 @@ +//===-- MCELFObjectTargetWriter.cpp - ELF Target Writer Subclass ----------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "llvm/MC/MCELFObjectWriter.h" + +using namespace llvm; + +MCELFObjectTargetWriter::MCELFObjectTargetWriter() { +} + +MCELFObjectTargetWriter::~MCELFObjectTargetWriter() { +} diff --git a/lib/Target/ARM/ARMAsmBackend.cpp b/lib/Target/ARM/ARMAsmBackend.cpp index 414c2605f56..230364d32c0 100644 --- a/lib/Target/ARM/ARMAsmBackend.cpp +++ b/lib/Target/ARM/ARMAsmBackend.cpp @@ -37,6 +37,11 @@ public: /*UseAggressiveSymbolFolding=*/true) {} }; +class ARMELFObjectWriter : public MCELFObjectTargetWriter { +public: + ARMELFObjectWriter() : MCELFObjectTargetWriter() {} +}; + class ARMAsmBackend : public TargetAsmBackend { bool isThumbMode; // Currently emitting Thumb code. public: @@ -348,7 +353,8 @@ public: uint64_t Value) const; MCObjectWriter *createObjectWriter(raw_ostream &OS) const { - return createELFObjectWriter(OS, /*Is64Bit=*/false, + return createELFObjectWriter(new ARMELFObjectWriter(), OS, + /*Is64Bit=*/false, OSType, ELF::EM_ARM, /*IsLittleEndian=*/true, /*HasRelocationAddend=*/false); diff --git a/lib/Target/MBlaze/MBlazeAsmBackend.cpp b/lib/Target/MBlaze/MBlazeAsmBackend.cpp index 94b8fd8d71b..34ecf8d3b52 100644 --- a/lib/Target/MBlaze/MBlazeAsmBackend.cpp +++ b/lib/Target/MBlaze/MBlazeAsmBackend.cpp @@ -42,6 +42,11 @@ static unsigned getFixupKindSize(unsigned Kind) { namespace { +class MBlazeELFObjectWriter : public MCELFObjectTargetWriter { +public: + MBlazeELFObjectWriter() : MCELFObjectTargetWriter() {} +}; + class MBlazeAsmBackend : public TargetAsmBackend { public: MBlazeAsmBackend(const Target &T) @@ -117,7 +122,8 @@ public: uint64_t Value) const; MCObjectWriter *createObjectWriter(raw_ostream &OS) const { - return createELFObjectWriter(OS,/*Is64Bit=*/false, + return createELFObjectWriter(new MBlazeELFObjectWriter(), + OS,/*Is64Bit=*/false, OSType, ELF::EM_MBLAZE, /*IsLittleEndian=*/false, /*HasRelocationAddend=*/true); diff --git a/lib/Target/X86/X86AsmBackend.cpp b/lib/Target/X86/X86AsmBackend.cpp index 2b13c0a0049..934cd1c4f13 100644 --- a/lib/Target/X86/X86AsmBackend.cpp +++ b/lib/Target/X86/X86AsmBackend.cpp @@ -55,6 +55,11 @@ public: /*UseAggressiveSymbolFolding=*/Is64Bit) {} }; +class X86ELFObjectWriter : public MCELFObjectTargetWriter { +public: + X86ELFObjectWriter() : MCELFObjectTargetWriter() {} +}; + class X86AsmBackend : public TargetAsmBackend { public: X86AsmBackend(const Target &T) @@ -310,7 +315,8 @@ public: : ELFX86AsmBackend(T, OSType) {} MCObjectWriter *createObjectWriter(raw_ostream &OS) const { - return createELFObjectWriter(OS, /*Is64Bit=*/false, + return createELFObjectWriter(new X86ELFObjectWriter(), OS, + /*Is64Bit=*/false, OSType, ELF::EM_386, /*IsLittleEndian=*/true, /*HasRelocationAddend=*/false); @@ -323,7 +329,7 @@ public: : ELFX86AsmBackend(T, OSType) {} MCObjectWriter *createObjectWriter(raw_ostream &OS) const { - return createELFObjectWriter(OS, /*Is64Bit=*/true, + return createELFObjectWriter(new X86ELFObjectWriter(), OS, /*Is64Bit=*/true, OSType, ELF::EM_X86_64, /*IsLittleEndian=*/true, /*HasRelocationAddend=*/true);