Split MCELFStreamer into a header file.
[oota-llvm.git] / include / llvm / MC / MCSectionELF.h
index 26951725e497912ed173fbd4bd52cc0e7d32ba2b..329c75cb1d7d9479d0f0dcd906cc0f5f7036d0e0 100644 (file)
@@ -14,6 +14,7 @@
 #ifndef LLVM_MC_MCSECTIONELF_H
 #define LLVM_MC_MCSECTIONELF_H
 
+#include "llvm/ADT/StringRef.h"
 #include "llvm/MC/MCSection.h"
 #include "llvm/Support/ELF.h"
 
@@ -66,10 +67,15 @@ public:
   virtual bool UseCodeAlign() const;
   virtual bool isVirtualSection() const;
 
+  /// isBaseAddressKnownZero - We know that non-allocatable sections (like
+  /// debug info) have a base of zero.
+  virtual bool isBaseAddressKnownZero() const {
+    return (getFlags() & ELF::SHF_ALLOC) == 0;
+  }
+
   static bool classof(const MCSection *S) {
     return S->getVariant() == SV_ELF;
   }
-  static bool classof(const MCSectionELF *) { return true; }
 
   // Return the entry size for sections with fixed-width data.
   static unsigned DetermineEntrySize(SectionKind Kind);