Loading llvm/include/llvm/MC/MCObjectFileInfo.h +89 −88 Original line number Diff line number Diff line Loading @@ -27,20 +27,20 @@ class MCObjectFileInfo { protected: /// True if .comm supports alignment. This is a hack for as long as we /// support 10.4 Tiger, whose assembler doesn't support alignment on comm. bool CommDirectiveSupportsAlignment; bool CommDirectiveSupportsAlignment = false; /// True if target object file supports a weak_definition of constant 0 for an /// omitted EH frame. bool SupportsWeakOmittedEHFrame; bool SupportsWeakOmittedEHFrame = false; /// True if the target object file supports emitting a compact unwind section /// without an associated EH frame section. bool SupportsCompactUnwindWithoutEHFrame; bool SupportsCompactUnwindWithoutEHFrame = false; /// OmitDwarfIfHaveCompactUnwind - True if the target object file /// supports having some functions with compact unwind and other with /// dwarf unwind. bool OmitDwarfIfHaveCompactUnwind; bool OmitDwarfIfHaveCompactUnwind = false; /// FDE CFI encoding. Controls the encoding of the begin label in the /// .eh_frame section. Unlike the LSDA encoding, personality encoding, and Loading @@ -49,134 +49,134 @@ protected: unsigned FDECFIEncoding = 0; /// Compact unwind encoding indicating that we should emit only an EH frame. unsigned CompactUnwindDwarfEHFrameOnly; unsigned CompactUnwindDwarfEHFrameOnly = 0; /// Section directive for standard text. MCSection *TextSection; MCSection *TextSection = nullptr; /// Section directive for standard data. MCSection *DataSection; MCSection *DataSection = nullptr; /// Section that is default initialized to zero. MCSection *BSSSection; MCSection *BSSSection = nullptr; /// Section that is readonly and can contain arbitrary initialized data. /// Targets are not required to have a readonly section. If they don't, /// various bits of code will fall back to using the data section for /// constants. MCSection *ReadOnlySection; MCSection *ReadOnlySection = nullptr; /// If exception handling is supported by the target, this is the section the /// Language Specific Data Area information is emitted to. MCSection *LSDASection; MCSection *LSDASection = nullptr; /// If exception handling is supported by the target and the target can /// support a compact representation of the CIE and FDE, this is the section /// to emit them into. MCSection *CompactUnwindSection; MCSection *CompactUnwindSection = nullptr; // Dwarf sections for debug info. If a target supports debug info, these must // be set. MCSection *DwarfAbbrevSection; MCSection *DwarfInfoSection; MCSection *DwarfLineSection; MCSection *DwarfLineStrSection; MCSection *DwarfFrameSection; MCSection *DwarfPubTypesSection; const MCSection *DwarfDebugInlineSection; MCSection *DwarfStrSection; MCSection *DwarfLocSection; MCSection *DwarfARangesSection; MCSection *DwarfRangesSection; MCSection *DwarfMacinfoSection; MCSection *DwarfAbbrevSection = nullptr; MCSection *DwarfInfoSection = nullptr; MCSection *DwarfLineSection = nullptr; MCSection *DwarfLineStrSection = nullptr; MCSection *DwarfFrameSection = nullptr; MCSection *DwarfPubTypesSection = nullptr; const MCSection *DwarfDebugInlineSection = nullptr; MCSection *DwarfStrSection = nullptr; MCSection *DwarfLocSection = nullptr; MCSection *DwarfARangesSection = nullptr; MCSection *DwarfRangesSection = nullptr; MCSection *DwarfMacinfoSection = nullptr; // The pubnames section is no longer generated by default. The generation // can be enabled by a compiler flag. MCSection *DwarfPubNamesSection; MCSection *DwarfPubNamesSection = nullptr; /// Accelerator table sections. DwarfDebugNamesSection is the DWARF v5 /// accelerator table, while DwarfAccelNamesSection, DwarfAccelObjCSection, /// DwarfAccelNamespaceSection, DwarfAccelTypesSection are pre-DWARF v5 /// extensions. MCSection *DwarfDebugNamesSection; MCSection *DwarfAccelNamesSection; MCSection *DwarfAccelObjCSection; MCSection *DwarfAccelNamespaceSection; MCSection *DwarfAccelTypesSection; MCSection *DwarfDebugNamesSection = nullptr; MCSection *DwarfAccelNamesSection = nullptr; MCSection *DwarfAccelObjCSection = nullptr; MCSection *DwarfAccelNamespaceSection = nullptr; MCSection *DwarfAccelTypesSection = nullptr; // These are used for the Fission separate debug information files. MCSection *DwarfInfoDWOSection; MCSection *DwarfTypesDWOSection; MCSection *DwarfAbbrevDWOSection; MCSection *DwarfStrDWOSection; MCSection *DwarfLineDWOSection; MCSection *DwarfLocDWOSection; MCSection *DwarfStrOffDWOSection; MCSection *DwarfInfoDWOSection = nullptr; MCSection *DwarfTypesDWOSection = nullptr; MCSection *DwarfAbbrevDWOSection = nullptr; MCSection *DwarfStrDWOSection = nullptr; MCSection *DwarfLineDWOSection = nullptr; MCSection *DwarfLocDWOSection = nullptr; MCSection *DwarfStrOffDWOSection = nullptr; /// The DWARF v5 string offset and address table sections. MCSection *DwarfStrOffSection; MCSection *DwarfAddrSection; MCSection *DwarfStrOffSection = nullptr; MCSection *DwarfAddrSection = nullptr; /// The DWARF v5 range list section. MCSection *DwarfRnglistsSection; MCSection *DwarfRnglistsSection = nullptr; /// The DWARF v5 locations list section. MCSection *DwarfLoclistsSection; MCSection *DwarfLoclistsSection = nullptr; /// The DWARF v5 range list section for fission. MCSection *DwarfRnglistsDWOSection; MCSection *DwarfRnglistsDWOSection = nullptr; // These are for Fission DWP files. MCSection *DwarfCUIndexSection; MCSection *DwarfTUIndexSection; MCSection *DwarfCUIndexSection = nullptr; MCSection *DwarfTUIndexSection = nullptr; /// Section for newer gnu pubnames. MCSection *DwarfGnuPubNamesSection; MCSection *DwarfGnuPubNamesSection = nullptr; /// Section for newer gnu pubtypes. MCSection *DwarfGnuPubTypesSection; MCSection *DwarfGnuPubTypesSection = nullptr; // Section for Swift AST MCSection *DwarfSwiftASTSection; MCSection *DwarfSwiftASTSection = nullptr; MCSection *COFFDebugSymbolsSection; MCSection *COFFDebugTypesSection; MCSection *COFFGlobalTypeHashesSection; MCSection *COFFDebugSymbolsSection = nullptr; MCSection *COFFDebugTypesSection = nullptr; MCSection *COFFGlobalTypeHashesSection = nullptr; /// Extra TLS Variable Data section. /// /// If the target needs to put additional information for a TLS variable, /// it'll go here. MCSection *TLSExtraDataSection; MCSection *TLSExtraDataSection = nullptr; /// Section directive for Thread Local data. ELF, MachO, COFF, and Wasm. MCSection *TLSDataSection; // Defaults to ".tdata". MCSection *TLSDataSection = nullptr; // Defaults to ".tdata". /// Section directive for Thread Local uninitialized data. /// /// Null if this target doesn't support a BSS section. ELF and MachO only. MCSection *TLSBSSSection; // Defaults to ".tbss". MCSection *TLSBSSSection = nullptr; // Defaults to ".tbss". /// StackMap section. MCSection *StackMapSection; MCSection *StackMapSection = nullptr; /// FaultMap section. MCSection *FaultMapSection; MCSection *FaultMapSection = nullptr; /// Remarks section. MCSection *RemarksSection; MCSection *RemarksSection = nullptr; /// EH frame section. /// /// It is initialized on demand so it can be overwritten (with uniquing). MCSection *EHFrameSection; MCSection *EHFrameSection = nullptr; /// Section containing metadata on function stack sizes. MCSection *StackSizesSection; MCSection *StackSizesSection = nullptr; mutable DenseMap<const MCSymbol *, unsigned> StackSizesUniquing; // ELF specific sections. MCSection *DataRelROSection; MCSection *MergeableConst4Section; MCSection *MergeableConst8Section; MCSection *MergeableConst16Section; MCSection *MergeableConst32Section; MCSection *DataRelROSection = nullptr; MCSection *MergeableConst4Section = nullptr; MCSection *MergeableConst8Section = nullptr; MCSection *MergeableConst16Section = nullptr; MCSection *MergeableConst32Section = nullptr; // MachO specific sections. Loading @@ -184,34 +184,35 @@ protected: /// /// Contains the source code name of the variable, visibility and a pointer to /// the initial value (.tdata or .tbss). MCSection *TLSTLVSection; // Defaults to ".tlv". MCSection *TLSTLVSection = nullptr; // Defaults to ".tlv". /// Section for thread local data initialization functions. const MCSection *TLSThreadInitSection; // Defaults to ".thread_init_func". MCSection *CStringSection; MCSection *UStringSection; MCSection *TextCoalSection; MCSection *ConstTextCoalSection; MCSection *ConstDataSection; MCSection *DataCoalSection; MCSection *ConstDataCoalSection; MCSection *DataCommonSection; MCSection *DataBSSSection; MCSection *FourByteConstantSection; MCSection *EightByteConstantSection; MCSection *SixteenByteConstantSection; MCSection *LazySymbolPointerSection; MCSection *NonLazySymbolPointerSection; MCSection *ThreadLocalPointerSection; // Defaults to ".thread_init_func". const MCSection *TLSThreadInitSection = nullptr; MCSection *CStringSection = nullptr; MCSection *UStringSection = nullptr; MCSection *TextCoalSection = nullptr; MCSection *ConstTextCoalSection = nullptr; MCSection *ConstDataSection = nullptr; MCSection *DataCoalSection = nullptr; MCSection *ConstDataCoalSection = nullptr; MCSection *DataCommonSection = nullptr; MCSection *DataBSSSection = nullptr; MCSection *FourByteConstantSection = nullptr; MCSection *EightByteConstantSection = nullptr; MCSection *SixteenByteConstantSection = nullptr; MCSection *LazySymbolPointerSection = nullptr; MCSection *NonLazySymbolPointerSection = nullptr; MCSection *ThreadLocalPointerSection = nullptr; /// COFF specific sections. MCSection *DrectveSection; MCSection *PDataSection; MCSection *XDataSection; MCSection *SXDataSection; MCSection *GFIDsSection; MCSection *GLJMPSection; MCSection *DrectveSection = nullptr; MCSection *PDataSection = nullptr; MCSection *XDataSection = nullptr; MCSection *SXDataSection = nullptr; MCSection *GFIDsSection = nullptr; MCSection *GLJMPSection = nullptr; public: void InitMCObjectFileInfo(const Triple &TT, bool PIC, MCContext &ctx, Loading Loading @@ -393,8 +394,8 @@ public: private: Environment Env; bool PositionIndependent; MCContext *Ctx; bool PositionIndependent = false; MCContext *Ctx = nullptr; Triple TT; VersionTuple SDKVersion; Loading Loading
llvm/include/llvm/MC/MCObjectFileInfo.h +89 −88 Original line number Diff line number Diff line Loading @@ -27,20 +27,20 @@ class MCObjectFileInfo { protected: /// True if .comm supports alignment. This is a hack for as long as we /// support 10.4 Tiger, whose assembler doesn't support alignment on comm. bool CommDirectiveSupportsAlignment; bool CommDirectiveSupportsAlignment = false; /// True if target object file supports a weak_definition of constant 0 for an /// omitted EH frame. bool SupportsWeakOmittedEHFrame; bool SupportsWeakOmittedEHFrame = false; /// True if the target object file supports emitting a compact unwind section /// without an associated EH frame section. bool SupportsCompactUnwindWithoutEHFrame; bool SupportsCompactUnwindWithoutEHFrame = false; /// OmitDwarfIfHaveCompactUnwind - True if the target object file /// supports having some functions with compact unwind and other with /// dwarf unwind. bool OmitDwarfIfHaveCompactUnwind; bool OmitDwarfIfHaveCompactUnwind = false; /// FDE CFI encoding. Controls the encoding of the begin label in the /// .eh_frame section. Unlike the LSDA encoding, personality encoding, and Loading @@ -49,134 +49,134 @@ protected: unsigned FDECFIEncoding = 0; /// Compact unwind encoding indicating that we should emit only an EH frame. unsigned CompactUnwindDwarfEHFrameOnly; unsigned CompactUnwindDwarfEHFrameOnly = 0; /// Section directive for standard text. MCSection *TextSection; MCSection *TextSection = nullptr; /// Section directive for standard data. MCSection *DataSection; MCSection *DataSection = nullptr; /// Section that is default initialized to zero. MCSection *BSSSection; MCSection *BSSSection = nullptr; /// Section that is readonly and can contain arbitrary initialized data. /// Targets are not required to have a readonly section. If they don't, /// various bits of code will fall back to using the data section for /// constants. MCSection *ReadOnlySection; MCSection *ReadOnlySection = nullptr; /// If exception handling is supported by the target, this is the section the /// Language Specific Data Area information is emitted to. MCSection *LSDASection; MCSection *LSDASection = nullptr; /// If exception handling is supported by the target and the target can /// support a compact representation of the CIE and FDE, this is the section /// to emit them into. MCSection *CompactUnwindSection; MCSection *CompactUnwindSection = nullptr; // Dwarf sections for debug info. If a target supports debug info, these must // be set. MCSection *DwarfAbbrevSection; MCSection *DwarfInfoSection; MCSection *DwarfLineSection; MCSection *DwarfLineStrSection; MCSection *DwarfFrameSection; MCSection *DwarfPubTypesSection; const MCSection *DwarfDebugInlineSection; MCSection *DwarfStrSection; MCSection *DwarfLocSection; MCSection *DwarfARangesSection; MCSection *DwarfRangesSection; MCSection *DwarfMacinfoSection; MCSection *DwarfAbbrevSection = nullptr; MCSection *DwarfInfoSection = nullptr; MCSection *DwarfLineSection = nullptr; MCSection *DwarfLineStrSection = nullptr; MCSection *DwarfFrameSection = nullptr; MCSection *DwarfPubTypesSection = nullptr; const MCSection *DwarfDebugInlineSection = nullptr; MCSection *DwarfStrSection = nullptr; MCSection *DwarfLocSection = nullptr; MCSection *DwarfARangesSection = nullptr; MCSection *DwarfRangesSection = nullptr; MCSection *DwarfMacinfoSection = nullptr; // The pubnames section is no longer generated by default. The generation // can be enabled by a compiler flag. MCSection *DwarfPubNamesSection; MCSection *DwarfPubNamesSection = nullptr; /// Accelerator table sections. DwarfDebugNamesSection is the DWARF v5 /// accelerator table, while DwarfAccelNamesSection, DwarfAccelObjCSection, /// DwarfAccelNamespaceSection, DwarfAccelTypesSection are pre-DWARF v5 /// extensions. MCSection *DwarfDebugNamesSection; MCSection *DwarfAccelNamesSection; MCSection *DwarfAccelObjCSection; MCSection *DwarfAccelNamespaceSection; MCSection *DwarfAccelTypesSection; MCSection *DwarfDebugNamesSection = nullptr; MCSection *DwarfAccelNamesSection = nullptr; MCSection *DwarfAccelObjCSection = nullptr; MCSection *DwarfAccelNamespaceSection = nullptr; MCSection *DwarfAccelTypesSection = nullptr; // These are used for the Fission separate debug information files. MCSection *DwarfInfoDWOSection; MCSection *DwarfTypesDWOSection; MCSection *DwarfAbbrevDWOSection; MCSection *DwarfStrDWOSection; MCSection *DwarfLineDWOSection; MCSection *DwarfLocDWOSection; MCSection *DwarfStrOffDWOSection; MCSection *DwarfInfoDWOSection = nullptr; MCSection *DwarfTypesDWOSection = nullptr; MCSection *DwarfAbbrevDWOSection = nullptr; MCSection *DwarfStrDWOSection = nullptr; MCSection *DwarfLineDWOSection = nullptr; MCSection *DwarfLocDWOSection = nullptr; MCSection *DwarfStrOffDWOSection = nullptr; /// The DWARF v5 string offset and address table sections. MCSection *DwarfStrOffSection; MCSection *DwarfAddrSection; MCSection *DwarfStrOffSection = nullptr; MCSection *DwarfAddrSection = nullptr; /// The DWARF v5 range list section. MCSection *DwarfRnglistsSection; MCSection *DwarfRnglistsSection = nullptr; /// The DWARF v5 locations list section. MCSection *DwarfLoclistsSection; MCSection *DwarfLoclistsSection = nullptr; /// The DWARF v5 range list section for fission. MCSection *DwarfRnglistsDWOSection; MCSection *DwarfRnglistsDWOSection = nullptr; // These are for Fission DWP files. MCSection *DwarfCUIndexSection; MCSection *DwarfTUIndexSection; MCSection *DwarfCUIndexSection = nullptr; MCSection *DwarfTUIndexSection = nullptr; /// Section for newer gnu pubnames. MCSection *DwarfGnuPubNamesSection; MCSection *DwarfGnuPubNamesSection = nullptr; /// Section for newer gnu pubtypes. MCSection *DwarfGnuPubTypesSection; MCSection *DwarfGnuPubTypesSection = nullptr; // Section for Swift AST MCSection *DwarfSwiftASTSection; MCSection *DwarfSwiftASTSection = nullptr; MCSection *COFFDebugSymbolsSection; MCSection *COFFDebugTypesSection; MCSection *COFFGlobalTypeHashesSection; MCSection *COFFDebugSymbolsSection = nullptr; MCSection *COFFDebugTypesSection = nullptr; MCSection *COFFGlobalTypeHashesSection = nullptr; /// Extra TLS Variable Data section. /// /// If the target needs to put additional information for a TLS variable, /// it'll go here. MCSection *TLSExtraDataSection; MCSection *TLSExtraDataSection = nullptr; /// Section directive for Thread Local data. ELF, MachO, COFF, and Wasm. MCSection *TLSDataSection; // Defaults to ".tdata". MCSection *TLSDataSection = nullptr; // Defaults to ".tdata". /// Section directive for Thread Local uninitialized data. /// /// Null if this target doesn't support a BSS section. ELF and MachO only. MCSection *TLSBSSSection; // Defaults to ".tbss". MCSection *TLSBSSSection = nullptr; // Defaults to ".tbss". /// StackMap section. MCSection *StackMapSection; MCSection *StackMapSection = nullptr; /// FaultMap section. MCSection *FaultMapSection; MCSection *FaultMapSection = nullptr; /// Remarks section. MCSection *RemarksSection; MCSection *RemarksSection = nullptr; /// EH frame section. /// /// It is initialized on demand so it can be overwritten (with uniquing). MCSection *EHFrameSection; MCSection *EHFrameSection = nullptr; /// Section containing metadata on function stack sizes. MCSection *StackSizesSection; MCSection *StackSizesSection = nullptr; mutable DenseMap<const MCSymbol *, unsigned> StackSizesUniquing; // ELF specific sections. MCSection *DataRelROSection; MCSection *MergeableConst4Section; MCSection *MergeableConst8Section; MCSection *MergeableConst16Section; MCSection *MergeableConst32Section; MCSection *DataRelROSection = nullptr; MCSection *MergeableConst4Section = nullptr; MCSection *MergeableConst8Section = nullptr; MCSection *MergeableConst16Section = nullptr; MCSection *MergeableConst32Section = nullptr; // MachO specific sections. Loading @@ -184,34 +184,35 @@ protected: /// /// Contains the source code name of the variable, visibility and a pointer to /// the initial value (.tdata or .tbss). MCSection *TLSTLVSection; // Defaults to ".tlv". MCSection *TLSTLVSection = nullptr; // Defaults to ".tlv". /// Section for thread local data initialization functions. const MCSection *TLSThreadInitSection; // Defaults to ".thread_init_func". MCSection *CStringSection; MCSection *UStringSection; MCSection *TextCoalSection; MCSection *ConstTextCoalSection; MCSection *ConstDataSection; MCSection *DataCoalSection; MCSection *ConstDataCoalSection; MCSection *DataCommonSection; MCSection *DataBSSSection; MCSection *FourByteConstantSection; MCSection *EightByteConstantSection; MCSection *SixteenByteConstantSection; MCSection *LazySymbolPointerSection; MCSection *NonLazySymbolPointerSection; MCSection *ThreadLocalPointerSection; // Defaults to ".thread_init_func". const MCSection *TLSThreadInitSection = nullptr; MCSection *CStringSection = nullptr; MCSection *UStringSection = nullptr; MCSection *TextCoalSection = nullptr; MCSection *ConstTextCoalSection = nullptr; MCSection *ConstDataSection = nullptr; MCSection *DataCoalSection = nullptr; MCSection *ConstDataCoalSection = nullptr; MCSection *DataCommonSection = nullptr; MCSection *DataBSSSection = nullptr; MCSection *FourByteConstantSection = nullptr; MCSection *EightByteConstantSection = nullptr; MCSection *SixteenByteConstantSection = nullptr; MCSection *LazySymbolPointerSection = nullptr; MCSection *NonLazySymbolPointerSection = nullptr; MCSection *ThreadLocalPointerSection = nullptr; /// COFF specific sections. MCSection *DrectveSection; MCSection *PDataSection; MCSection *XDataSection; MCSection *SXDataSection; MCSection *GFIDsSection; MCSection *GLJMPSection; MCSection *DrectveSection = nullptr; MCSection *PDataSection = nullptr; MCSection *XDataSection = nullptr; MCSection *SXDataSection = nullptr; MCSection *GFIDsSection = nullptr; MCSection *GLJMPSection = nullptr; public: void InitMCObjectFileInfo(const Triple &TT, bool PIC, MCContext &ctx, Loading Loading @@ -393,8 +394,8 @@ public: private: Environment Env; bool PositionIndependent; MCContext *Ctx; bool PositionIndependent = false; MCContext *Ctx = nullptr; Triple TT; VersionTuple SDKVersion; Loading