aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/MC/MCSectionELF.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/llvm/MC/MCSectionELF.h')
-rw-r--r--include/llvm/MC/MCSectionELF.h19
1 files changed, 14 insertions, 5 deletions
diff --git a/include/llvm/MC/MCSectionELF.h b/include/llvm/MC/MCSectionELF.h
index 434a5b6..9efe102 100644
--- a/include/llvm/MC/MCSectionELF.h
+++ b/include/llvm/MC/MCSectionELF.h
@@ -39,7 +39,7 @@ class MCSectionELF : public MCSection {
/// below.
unsigned Flags;
- bool Unique;
+ unsigned UniqueID;
/// EntrySize - The size of each entry in this section. This size only
/// makes sense for sections that contain fixed-sized entries. If a
@@ -48,14 +48,18 @@ class MCSectionELF : public MCSection {
const MCSymbol *Group;
+ /// Depending on the type of the section this is sh_link or sh_info.
+ const MCSectionELF *Associated;
+
private:
friend class MCContext;
MCSectionELF(StringRef Section, unsigned type, unsigned flags, SectionKind K,
- unsigned entrySize, const MCSymbol *group, bool Unique,
- MCSymbol *Begin)
+ unsigned entrySize, const MCSymbol *group, unsigned UniqueID,
+ MCSymbol *Begin, const MCSectionELF *Associated)
: MCSection(SV_ELF, K, Begin), SectionName(Section), Type(type),
- Flags(flags), Unique(Unique), EntrySize(entrySize), Group(group) {}
- ~MCSectionELF();
+ Flags(flags), UniqueID(UniqueID), EntrySize(entrySize), Group(group),
+ Associated(Associated) {}
+ ~MCSectionELF() override;
void setSectionName(StringRef Name) { SectionName = Name; }
@@ -76,6 +80,11 @@ public:
bool UseCodeAlign() const override;
bool isVirtualSection() const override;
+ bool isUnique() const { return UniqueID != ~0U; }
+ unsigned getUniqueID() const { return UniqueID; }
+
+ const MCSectionELF *getAssociatedSection() const { return Associated; }
+
static bool classof(const MCSection *S) {
return S->getVariant() == SV_ELF;
}