public:
bool isNamed() const { return Flags & SectionFlags::Named; }
unsigned getEntitySize() const { return (Flags >> 24) & 0xFF; }
+
const std::string& getName() const { return Name; }
+ unsigned getFlags() const { return Flags; }
};
/// TargetAsmInfo - This class is intended to be used as a base class for asm
private:
mutable StringMap<Section> Sections;
mutable SectionFlags::FlagsStringsMapType FlagsStrings;
+ void fillDefaultValues();
protected:
+ /// TM - The current TargetMachine.
+ const TargetMachine &TM;
+
//===------------------------------------------------------------------===//
// Properties to be set by the target writer, used to configure asm printer.
//
/// TextSection - Section directive for standard text.
///
- const char *TextSection; // Defaults to ".text".
- const Section *TextSection_;
+ const Section *TextSection; // Defaults to ".text".
/// DataSection - Section directive for standard data.
///
- const char *DataSection; // Defaults to ".data".
- const Section *DataSection_;
+ const Section *DataSection; // Defaults to ".data".
/// BSSSection - Section directive for uninitialized data. Null if this
/// target doesn't support a BSS section.
/// ReadOnlySection - This is the directive that is emitted to switch to a
/// read-only section for constant data (e.g. data declared const,
/// jump tables).
- const char *ReadOnlySection; // Defaults to NULL
- const Section *ReadOnlySection_;
+ const Section *ReadOnlySection; // Defaults to NULL
/// SmallDataSection - This is the directive that is emitted to switch to a
/// small data section.
/// TLSDataSection - Section directive for Thread Local data.
///
- const char *TLSDataSection;// Defaults to ".section .tdata,"awT",@progbits".
- const Section *TLSDataSection_;
+ const Section *TLSDataSection; // Defaults to ".tdata".
/// TLSBSSSection - Section directive for Thread Local uninitialized data.
/// Null if this target doesn't support a BSS section.
///
- const char *TLSBSSSection;// Default to ".section .tbss,"awT",@nobits".
- const Section *TLSBSSSection_;
+ const Section *TLSBSSSection; // Defaults to ".tbss".
/// ZeroFillDirective - Directive for emitting a global to the ZeroFill
/// section on this target. Null if this target doesn't support zerofill.
/// Defaults to "\t.section .dtors,\"aw\",@progbits".
const char *StaticDtorsSection;
- /// FourByteConstantSection, EightByteConstantSection,
- /// SixteenByteConstantSection - These are special sections where we place
- /// 4-, 8-, and 16- byte constant literals.
- const char *FourByteConstantSection;
- const Section *FourByteConstantSection_;
- const char *EightByteConstantSection;
- const Section *EightByteConstantSection_;
- const char *SixteenByteConstantSection;
- const Section *SixteenByteConstantSection_;
-
//===--- Global Variable Emission Directives --------------------------===//
/// GlobalDirective - This is the directive used to declare a global entity.
const char *const *AsmTransCBE; // Defaults to empty
public:
- TargetAsmInfo();
+ explicit TargetAsmInfo(const TargetMachine &TM);
virtual ~TargetAsmInfo();
const Section* getNamedSection(const char *Name,
/// SectionForGlobal - This hooks returns proper section name for given
/// global with all necessary flags and marks.
- virtual std::string SectionForGlobal(const GlobalValue *GV) const;
+ virtual const Section* SectionForGlobal(const GlobalValue *GV) const;
// Helper methods for SectionForGlobal
virtual std::string UniqueSectionForGlobal(const GlobalValue* GV,
// Accessors.
//
- const char *getTextSection() const {
+ const Section *getTextSection() const {
return TextSection;
}
- const Section *getTextSection_() const {
- return TextSection_;
- }
- const char *getDataSection() const {
+ const Section *getDataSection() const {
return DataSection;
}
- const Section *getDataSection_() const {
- return DataSection_;
- }
const char *getBSSSection() const {
return BSSSection;
}
const Section *getBSSSection_() const {
return BSSSection_;
}
- const char *getReadOnlySection() const {
+ const Section *getReadOnlySection() const {
return ReadOnlySection;
}
- const Section *getReadOnlySection_() const {
- return ReadOnlySection_;
- }
const Section *getSmallDataSection() const {
return SmallDataSection;
}
const Section *getSmallRODataSection() const {
return SmallRODataSection;
}
- const char *getTLSDataSection() const {
+ const Section *getTLSDataSection() const {
return TLSDataSection;
}
- const Section *getTLSDataSection_() const {
- return TLSDataSection_;
- }
- const char *getTLSBSSSection() const {
+ const Section *getTLSBSSSection() const {
return TLSBSSSection;
}
- const Section *getTLSBSSSection_() const {
- return TLSBSSSection_;
- }
const char *getZeroFillDirective() const {
return ZeroFillDirective;
}
const char *getStaticDtorsSection() const {
return StaticDtorsSection;
}
- const char *getFourByteConstantSection() const {
- return FourByteConstantSection;
- }
- const Section *getFourByteConstantSection_() const {
- return FourByteConstantSection_;
- }
- const char *getEightByteConstantSection() const {
- return EightByteConstantSection;
- }
- const Section *getEightByteConstantSection_() const {
- return EightByteConstantSection_;
- }
- const char *getSixteenByteConstantSection() const {
- return SixteenByteConstantSection;
- }
- const Section *getSixteenByteConstantSection_() const {
- return SixteenByteConstantSection_;
- }
const char *getGlobalDirective() const {
return GlobalDirective;
}