Stub out explicit MCELFObjectTargetWriter interface.
authorRafael Espindola <rafael.espindola@gmail.com>
Fri, 17 Dec 2010 17:45:22 +0000 (17:45 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Fri, 17 Dec 2010 17:45:22 +0000 (17:45 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122067 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/MC/MCELFObjectWriter.h
lib/MC/CMakeLists.txt
lib/MC/ELFObjectWriter.cpp
lib/MC/MCELFObjectTargetWriter.cpp [new file with mode: 0644]
lib/Target/ARM/ARMAsmBackend.cpp
lib/Target/MBlaze/MBlazeAsmBackend.cpp
lib/Target/X86/X86AsmBackend.cpp

index 2a82ec197fa9f16cb66bee2e394fd4d37c2de38e..a5555e38e049f9e29897234776c4a75f35b8d051 100644 (file)
 #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);
index 6f73df883005c40aa5852db81c5ccbf433769a28..ccec2dc426735e55c496f64d0c7cb5f0dbd5a201 100644 (file)
@@ -8,6 +8,7 @@ add_llvm_library(LLVMMC
   MCCodeEmitter.cpp
   MCContext.cpp
   MCDisassembler.cpp
+  MCELFObjectTargetWriter.cpp
   MCELFStreamer.cpp
   MCExpr.cpp
   MCInst.cpp
index 57ec5492cdad36d3152fca97bc0c20dc62c8382a..4c67efdaf9c1d9f23a69aa2d17fdc2e6cdd1fcea 100644 (file)
@@ -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 (file)
index 0000000..a2715de
--- /dev/null
@@ -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() {
+}
index 414c2605f5619f4e9a9994d4e1ddc920f2b986ea..230364d32c0b4cc494403cf979dd1ad114b47e3c 100644 (file)
@@ -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);
index 94b8fd8d71b20fbda6a9ddb1e4903a6067af4724..34ecf8d3b52091a88397072f6dd22f41b15b304b 100644 (file)
@@ -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);
index 2b13c0a0049656a6026071c6f7de1d8c07f7ed34..934cd1c4f1363e8afe6e75f92aa75514450c92cd 100644 (file)
@@ -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);