aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm
diff options
context:
space:
mode:
Diffstat (limited to 'include/llvm')
-rw-r--r--include/llvm/MC/MCSection.h29
1 files changed, 25 insertions, 4 deletions
diff --git a/include/llvm/MC/MCSection.h b/include/llvm/MC/MCSection.h
index 024bc6c..3223858 100644
--- a/include/llvm/MC/MCSection.h
+++ b/include/llvm/MC/MCSection.h
@@ -17,24 +17,45 @@
#include <string>
#include "llvm/ADT/StringRef.h"
-namespace llvm {
+// FIXME: HORRIBLE HACK: major layering violation to get an enum.
+#include "llvm/Target/TargetLoweringObjectFile.h"
+namespace llvm {
+ class MCContext;
+
/// MCSection - Instances of this class represent a uniqued identifier for a
/// section in the current translation unit. The MCContext class uniques and
/// creates these.
class MCSection {
std::string Name;
- private:
MCSection(const MCSection&); // DO NOT IMPLEMENT
void operator=(const MCSection&); // DO NOT IMPLEMENT
- MCSection(const StringRef &_Name, MCContext &Ctx);
+ protected:
+ MCSection(const StringRef &Name, MCContext &Ctx);
public:
+ virtual ~MCSection();
- static MCSection *Create(const StringRef &_Name, MCContext &Ctx);
+ static MCSection *Create(const StringRef &Name, MCContext &Ctx);
const std::string &getName() const { return Name; }
};
+ /// MCSectionWithKind - This is used by targets that use the SectionKind enum
+ /// to classify their sections.
+ class MCSectionWithKind : public MCSection {
+ SectionKind Kind;
+ MCSectionWithKind(const StringRef &Name, SectionKind K, MCContext &Ctx)
+ : MCSection(Name, Ctx), Kind(K) {}
+ public:
+
+ static MCSectionWithKind *Create(const StringRef &Name, SectionKind K,
+ MCContext &Ctx);
+
+ SectionKind getKind() const { return Kind; }
+ };
+
+
+
} // end namespace llvm
#endif