aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/MC/MCAssembler.h
diff options
context:
space:
mode:
authorShih-wei Liao <sliao@google.com>2012-03-17 01:11:12 -0700
committerShih-wei Liao <sliao@google.com>2012-03-17 01:11:12 -0700
commit8b8825ac164c2e7cce8b6987cea78cd8b301360d (patch)
tree7e9bcf2a69a7e098bafffc5bd8c2fafb31eac6aa /include/llvm/MC/MCAssembler.h
parent06a2e67b00e6a7758c4e19aca02a1e90e9511f65 (diff)
downloadexternal_llvm-8b8825ac164c2e7cce8b6987cea78cd8b301360d.zip
external_llvm-8b8825ac164c2e7cce8b6987cea78cd8b301360d.tar.gz
external_llvm-8b8825ac164c2e7cce8b6987cea78cd8b301360d.tar.bz2
Integrated linker.
Change-Id: Iec22c1b717750cb428c61c5319cdd77378e4af1e
Diffstat (limited to 'include/llvm/MC/MCAssembler.h')
-rw-r--r--include/llvm/MC/MCAssembler.h21
1 files changed, 16 insertions, 5 deletions
diff --git a/include/llvm/MC/MCAssembler.h b/include/llvm/MC/MCAssembler.h
index 2566241..2df94e7 100644
--- a/include/llvm/MC/MCAssembler.h
+++ b/include/llvm/MC/MCAssembler.h
@@ -21,6 +21,10 @@
#include "llvm/Support/DataTypes.h"
#include <vector> // FIXME: Shouldn't be needed.
+namespace mcld {
+class Layout;
+}
+
namespace llvm {
class raw_ostream;
class MCAsmLayout;
@@ -40,6 +44,7 @@ class MCAsmBackend;
class MCFragment : public ilist_node<MCFragment> {
friend class MCAsmLayout;
+ friend class mcld::Layout;
MCFragment(const MCFragment&); // DO NOT IMPLEMENT
void operator=(const MCFragment&); // DO NOT IMPLEMENT
@@ -53,10 +58,13 @@ public:
FT_Org,
FT_Dwarf,
FT_DwarfFrame,
- FT_LEB
+ FT_LEB,
+ FT_Region,
+ FT_Reloc,
+ FT_Target
};
-private:
+protected:
FragmentType Kind;
/// Parent - The data for the section this fragment is in.
@@ -453,7 +461,7 @@ public:
typedef FragmentListType::const_reverse_iterator const_reverse_iterator;
typedef FragmentListType::reverse_iterator reverse_iterator;
-private:
+protected:
FragmentListType Fragments;
const MCSection *Section;
@@ -481,6 +489,7 @@ public:
// Only for use as sentinel.
MCSectionData();
MCSectionData(const MCSection &Section, MCAssembler *A = 0);
+ virtual ~MCSectionData() {}
const MCSection &getSection() const { return *Section; }
@@ -679,7 +688,7 @@ private:
MCCodeEmitter &Emitter;
- MCObjectWriter &Writer;
+ MCObjectWriter *m_pWriter;
raw_ostream &OS;
@@ -807,7 +816,9 @@ public:
MCCodeEmitter &getEmitter() const { return Emitter; }
- MCObjectWriter &getWriter() const { return Writer; }
+ MCObjectWriter &getWriter() const { return *m_pWriter; }
+
+ void setWriter(MCObjectWriter &pObjectWriter);
/// Finish - Do final processing and write the object to the output stream.
/// \arg Writer is used for custom object writer (as the MCJIT does),