summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2010-12-18 05:37:28 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2010-12-18 05:37:28 +0000
commit1ec5bd31fe491e610839ea448bd99fd171785837 (patch)
tree7d7198b7dd08a147c37708b965589230ad88fd72
parent54f08852f6c45a1165295d66bd072e2d1da7a6d1 (diff)
downloadllvm-1ec5bd31fe491e610839ea448bd99fd171785837.tar.gz
llvm-1ec5bd31fe491e610839ea448bd99fd171785837.tar.bz2
llvm-1ec5bd31fe491e610839ea448bd99fd171785837.tar.xz
Remove the MCObjectFormat class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122147 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/MC/MCObjectFormat.h54
-rw-r--r--include/llvm/MC/MCObjectWriter.h4
-rw-r--r--include/llvm/Target/TargetAsmBackend.h3
-rw-r--r--lib/MC/CMakeLists.txt1
-rw-r--r--lib/MC/ELFObjectWriter.cpp6
-rw-r--r--lib/MC/MCExpr.cpp5
-rw-r--r--lib/MC/MCObjectFormat.cpp34
-rw-r--r--lib/MC/MachObjectWriter.cpp6
-rw-r--r--lib/MC/WinCOFFObjectWriter.cpp6
-rw-r--r--lib/Target/ARM/ARMAsmBackend.cpp12
-rw-r--r--lib/Target/MBlaze/MBlazeAsmBackend.cpp8
-rw-r--r--lib/Target/PowerPC/PPCAsmBackend.cpp6
-rw-r--r--lib/Target/X86/X86AsmBackend.cpp18
13 files changed, 24 insertions, 139 deletions
diff --git a/include/llvm/MC/MCObjectFormat.h b/include/llvm/MC/MCObjectFormat.h
deleted file mode 100644
index 5c3f003696..0000000000
--- a/include/llvm/MC/MCObjectFormat.h
+++ /dev/null
@@ -1,54 +0,0 @@
-//===-- llvm/MC/MCObjectFormat.h - Object Format Info -----------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_MC_MCOBJECTFORMAT_H
-#define LLVM_MC_MCOBJECTFORMAT_H
-
-namespace llvm {
-class MCSymbol;
-
-class MCObjectFormat {
-public:
- virtual ~MCObjectFormat();
-
- /// isAbsolute - Check if A - B is an absolute value
- ///
- /// \param InSet - True if this expression is in a set. For example:
- /// a:
- /// ...
- /// b:
- /// tmp = a - b
- /// .long tmp
- /// \param A - LHS
- /// \param B - RHS
- virtual bool isAbsolute(bool InSet, const MCSymbol &A,
- const MCSymbol &B) const = 0;
-};
-
-class MCELFObjectFormat : public MCObjectFormat {
-public:
- virtual bool isAbsolute(bool InSet, const MCSymbol &A,
- const MCSymbol &B) const;
-};
-
-class MCMachOObjectFormat : public MCObjectFormat {
-public:
- virtual bool isAbsolute(bool InSet, const MCSymbol &A,
- const MCSymbol &B) const;
-};
-
-class MCCOFFObjectFormat : public MCObjectFormat {
-public:
- virtual bool isAbsolute(bool InSet, const MCSymbol &A,
- const MCSymbol &B) const;
-};
-
-} // End llvm namespace
-
-#endif
diff --git a/include/llvm/MC/MCObjectWriter.h b/include/llvm/MC/MCObjectWriter.h
index 73bad2a179..ef1a969b8c 100644
--- a/include/llvm/MC/MCObjectWriter.h
+++ b/include/llvm/MC/MCObjectWriter.h
@@ -20,6 +20,7 @@ class MCAsmLayout;
class MCAssembler;
class MCFixup;
class MCFragment;
+class MCSymbol;
class MCSymbolRefExpr;
class MCValue;
class raw_ostream;
@@ -98,6 +99,9 @@ public:
bool IsPCRel,
const MCFragment *DF) const = 0;
+ virtual bool isAbsolute(bool IsSet, const MCSymbol &A,
+ const MCSymbol &B) const = 0;
+
/// Write the object file.
///
/// This routine is called by the assembler after layout and relaxation is
diff --git a/include/llvm/Target/TargetAsmBackend.h b/include/llvm/Target/TargetAsmBackend.h
index 50904b135f..7527298efa 100644
--- a/include/llvm/Target/TargetAsmBackend.h
+++ b/include/llvm/Target/TargetAsmBackend.h
@@ -18,7 +18,6 @@
namespace llvm {
class MCFixup;
class MCInst;
-class MCObjectFormat;
class MCObjectWriter;
class MCSection;
template<typename T>
@@ -37,8 +36,6 @@ protected: // Can only create subclasses.
public:
virtual ~TargetAsmBackend();
- virtual const MCObjectFormat &getObjectFormat() const = 0;
-
/// createObjectWriter - Create a new MCObjectWriter instance for use by the
/// assembler backend to emit the final object file.
virtual MCObjectWriter *createObjectWriter(raw_ostream &OS) const = 0;
diff --git a/lib/MC/CMakeLists.txt b/lib/MC/CMakeLists.txt
index ccec2dc426..c17e1505b0 100644
--- a/lib/MC/CMakeLists.txt
+++ b/lib/MC/CMakeLists.txt
@@ -20,7 +20,6 @@ add_llvm_library(LLVMMC
MCMachObjectTargetWriter.cpp
MCNullStreamer.cpp
MCObjectStreamer.cpp
- MCObjectFormat.cpp
MCObjectWriter.cpp
MCPureStreamer.cpp
MCSection.cpp
diff --git a/lib/MC/ELFObjectWriter.cpp b/lib/MC/ELFObjectWriter.cpp
index 10e67d20d5..a6503b7cac 100644
--- a/lib/MC/ELFObjectWriter.cpp
+++ b/lib/MC/ELFObjectWriter.cpp
@@ -352,6 +352,12 @@ namespace {
return false;
}
+ virtual bool isAbsolute(bool IsSet, const MCSymbol &A,
+ const MCSymbol &B) const {
+ // On ELF A - B is absolute if A and B are in the same section.
+ return &A.getSection() == &B.getSection();
+ }
+
virtual bool IsFixupFullyResolved(const MCAssembler &Asm,
const MCValue Target,
bool IsPCRel,
diff --git a/lib/MC/MCExpr.cpp b/lib/MC/MCExpr.cpp
index 3533da2cf6..22d8740a19 100644
--- a/lib/MC/MCExpr.cpp
+++ b/lib/MC/MCExpr.cpp
@@ -14,7 +14,6 @@
#include "llvm/MC/MCAsmLayout.h"
#include "llvm/MC/MCAssembler.h"
#include "llvm/MC/MCContext.h"
-#include "llvm/MC/MCObjectFormat.h"
#include "llvm/MC/MCSymbol.h"
#include "llvm/MC/MCValue.h"
#include "llvm/Support/Debug.h"
@@ -388,8 +387,8 @@ static bool EvaluateSymbolicAdd(const MCAssembler *Asm,
if (Asm && A && B) {
const MCSymbol &SA = A->getSymbol();
const MCSymbol &SB = B->getSymbol();
- const MCObjectFormat &F = Asm->getBackend().getObjectFormat();
- if (SA.isDefined() && SB.isDefined() && F.isAbsolute(InSet, SA, SB)) {
+ if (SA.isDefined() && SB.isDefined() &&
+ Asm->getWriter().isAbsolute(InSet, SA, SB)) {
MCSymbolData &AD = Asm->getSymbolData(A->getSymbol());
MCSymbolData &BD = Asm->getSymbolData(B->getSymbol());
diff --git a/lib/MC/MCObjectFormat.cpp b/lib/MC/MCObjectFormat.cpp
deleted file mode 100644
index aeff334718..0000000000
--- a/lib/MC/MCObjectFormat.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-//===- lib/MC/MCObjectFormat.cpp - MCObjectFormat implementation ----------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/MC/MCObjectFormat.h"
-#include "llvm/MC/MCSymbol.h"
-
-using namespace llvm;
-
-MCObjectFormat::~MCObjectFormat() {
-}
-
-bool MCELFObjectFormat::isAbsolute(bool IsSet, const MCSymbol &A,
- const MCSymbol &B) const {
- // On ELF A - B is absolute if A and B are in the same section.
- return &A.getSection() == &B.getSection();
-}
-
-bool MCMachOObjectFormat::isAbsolute(bool IsSet, const MCSymbol &A,
- const MCSymbol &B) const {
- // On MachO A - B is absolute only if in a set.
- return IsSet;
-}
-
-bool MCCOFFObjectFormat::isAbsolute(bool IsSet, const MCSymbol &A,
- const MCSymbol &B) const {
- // On COFF A - B is absolute if A and B are in the same section.
- return &A.getSection() == &B.getSection();
-}
diff --git a/lib/MC/MachObjectWriter.cpp b/lib/MC/MachObjectWriter.cpp
index 6ebc782c8e..42cf43fea3 100644
--- a/lib/MC/MachObjectWriter.cpp
+++ b/lib/MC/MachObjectWriter.cpp
@@ -1123,6 +1123,12 @@ public:
UndefinedSymbolData);
}
+ bool isAbsolute(bool IsSet, const MCSymbol &A,
+ const MCSymbol &B) const {
+ // On MachO A - B is absolute only if in a set.
+ return IsSet;
+ }
+
bool IsSymbolRefDifferenceFullyResolved(const MCAssembler &Asm,
const MCSymbolRefExpr *A,
const MCSymbolRefExpr *B) const {
diff --git a/lib/MC/WinCOFFObjectWriter.cpp b/lib/MC/WinCOFFObjectWriter.cpp
index 0ad086cbee..7f75662219 100644
--- a/lib/MC/WinCOFFObjectWriter.cpp
+++ b/lib/MC/WinCOFFObjectWriter.cpp
@@ -187,6 +187,12 @@ public:
return false;
}
+ virtual bool isAbsolute(bool IsSet, const MCSymbol &A,
+ const MCSymbol &B) const {
+ // On COFF A - B is absolute if A and B are in the same section.
+ return &A.getSection() == &B.getSection();
+ }
+
virtual bool IsFixupFullyResolved(const MCAssembler &Asm,
const MCValue Target,
bool IsPCRel,
diff --git a/lib/Target/ARM/ARMAsmBackend.cpp b/lib/Target/ARM/ARMAsmBackend.cpp
index b7274ca0f5..c72e790829 100644
--- a/lib/Target/ARM/ARMAsmBackend.cpp
+++ b/lib/Target/ARM/ARMAsmBackend.cpp
@@ -16,7 +16,6 @@
#include "llvm/MC/MCELFObjectWriter.h"
#include "llvm/MC/MCExpr.h"
#include "llvm/MC/MCMachObjectWriter.h"
-#include "llvm/MC/MCObjectFormat.h"
#include "llvm/MC/MCObjectWriter.h"
#include "llvm/MC/MCSectionELF.h"
#include "llvm/MC/MCSectionMachO.h"
@@ -350,17 +349,11 @@ namespace {
// FIXME: This should be in a separate file.
// ELF is an ELF of course...
class ELFARMAsmBackend : public ARMAsmBackend {
- MCELFObjectFormat Format;
-
public:
Triple::OSType OSType;
ELFARMAsmBackend(const Target &T, Triple::OSType _OSType)
: ARMAsmBackend(T), OSType(_OSType) { }
- virtual const MCObjectFormat &getObjectFormat() const {
- return Format;
- }
-
void ApplyFixup(const MCFixup &Fixup, char *Data, unsigned DataSize,
uint64_t Value) const;
@@ -389,14 +382,9 @@ void ELFARMAsmBackend::ApplyFixup(const MCFixup &Fixup, char *Data,
// FIXME: This should be in a separate file.
class DarwinARMAsmBackend : public ARMAsmBackend {
- MCMachOObjectFormat Format;
public:
DarwinARMAsmBackend(const Target &T) : ARMAsmBackend(T) { }
- virtual const MCObjectFormat &getObjectFormat() const {
- return Format;
- }
-
void ApplyFixup(const MCFixup &Fixup, char *Data, unsigned DataSize,
uint64_t Value) const;
diff --git a/lib/Target/MBlaze/MBlazeAsmBackend.cpp b/lib/Target/MBlaze/MBlazeAsmBackend.cpp
index 8a799f2f96..a4b21afa59 100644
--- a/lib/Target/MBlaze/MBlazeAsmBackend.cpp
+++ b/lib/Target/MBlaze/MBlazeAsmBackend.cpp
@@ -16,7 +16,6 @@
#include "llvm/MC/MCELFObjectWriter.h"
#include "llvm/MC/MCELFSymbolFlags.h"
#include "llvm/MC/MCExpr.h"
-#include "llvm/MC/MCObjectFormat.h"
#include "llvm/MC/MCObjectWriter.h"
#include "llvm/MC/MCSectionELF.h"
#include "llvm/MC/MCSectionMachO.h"
@@ -108,18 +107,11 @@ bool MBlazeAsmBackend::WriteNopData(uint64_t Count, MCObjectWriter *OW) const {
namespace {
class ELFMBlazeAsmBackend : public MBlazeAsmBackend {
- MCELFObjectFormat Format;
-
public:
Triple::OSType OSType;
ELFMBlazeAsmBackend(const Target &T, Triple::OSType _OSType)
: MBlazeAsmBackend(T), OSType(_OSType) { }
- virtual const MCObjectFormat &getObjectFormat() const {
- return Format;
- }
-
-
void ApplyFixup(const MCFixup &Fixup, char *Data, unsigned DataSize,
uint64_t Value) const;
diff --git a/lib/Target/PowerPC/PPCAsmBackend.cpp b/lib/Target/PowerPC/PPCAsmBackend.cpp
index 9dfc6fce94..c4d4ac9b3e 100644
--- a/lib/Target/PowerPC/PPCAsmBackend.cpp
+++ b/lib/Target/PowerPC/PPCAsmBackend.cpp
@@ -12,7 +12,6 @@
#include "PPCFixupKinds.h"
#include "llvm/MC/MCMachObjectWriter.h"
#include "llvm/MC/MCSectionMachO.h"
-#include "llvm/MC/MCObjectFormat.h"
#include "llvm/MC/MCObjectWriter.h"
#include "llvm/Object/MachOFormat.h"
#include "llvm/Target/TargetRegistry.h"
@@ -82,14 +81,9 @@ public:
// FIXME: This should be in a separate file.
namespace {
class DarwinPPCAsmBackend : public PPCAsmBackend {
- MCMachOObjectFormat Format;
public:
DarwinPPCAsmBackend(const Target &T) : PPCAsmBackend(T) { }
- virtual const MCObjectFormat &getObjectFormat() const {
- return Format;
- }
-
void ApplyFixup(const MCFixup &Fixup, char *Data, unsigned DataSize,
uint64_t Value) const {
assert(0 && "UNIMP");
diff --git a/lib/Target/X86/X86AsmBackend.cpp b/lib/Target/X86/X86AsmBackend.cpp
index 5e7ce0bd1f..c39d07b12e 100644
--- a/lib/Target/X86/X86AsmBackend.cpp
+++ b/lib/Target/X86/X86AsmBackend.cpp
@@ -16,7 +16,6 @@
#include "llvm/MC/MCExpr.h"
#include "llvm/MC/MCFixupKindInfo.h"
#include "llvm/MC/MCMachObjectWriter.h"
-#include "llvm/MC/MCObjectFormat.h"
#include "llvm/MC/MCObjectWriter.h"
#include "llvm/MC/MCSectionCOFF.h"
#include "llvm/MC/MCSectionELF.h"
@@ -295,8 +294,6 @@ bool X86AsmBackend::WriteNopData(uint64_t Count, MCObjectWriter *OW) const {
namespace {
class ELFX86AsmBackend : public X86AsmBackend {
- MCELFObjectFormat Format;
-
public:
Triple::OSType OSType;
ELFX86AsmBackend(const Target &T, Triple::OSType _OSType)
@@ -304,10 +301,6 @@ public:
HasReliableSymbolDifference = true;
}
- virtual const MCObjectFormat &getObjectFormat() const {
- return Format;
- }
-
virtual bool doesSectionRequireSymbols(const MCSection &Section) const {
const MCSectionELF &ES = static_cast<const MCSectionELF&>(Section);
return ES.getFlags() & MCSectionELF::SHF_MERGE;
@@ -340,7 +333,6 @@ public:
class WindowsX86AsmBackend : public X86AsmBackend {
bool Is64Bit;
- MCCOFFObjectFormat Format;
public:
WindowsX86AsmBackend(const Target &T, bool is64Bit)
@@ -348,25 +340,15 @@ public:
, Is64Bit(is64Bit) {
}
- virtual const MCObjectFormat &getObjectFormat() const {
- return Format;
- }
-
MCObjectWriter *createObjectWriter(raw_ostream &OS) const {
return createWinCOFFObjectWriter(OS, Is64Bit);
}
};
class DarwinX86AsmBackend : public X86AsmBackend {
- MCMachOObjectFormat Format;
-
public:
DarwinX86AsmBackend(const Target &T)
: X86AsmBackend(T) { }
-
- virtual const MCObjectFormat &getObjectFormat() const {
- return Format;
- }
};
class DarwinX86_32AsmBackend : public DarwinX86AsmBackend {