diff options
Diffstat (limited to 'include/llvm')
-rw-r--r-- | include/llvm/MC/MCSection.h | 29 |
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 |