================ @@ -16,34 +16,94 @@ #define LLVM_MC_MCSECTIONGOFF_H #include "llvm/BinaryFormat/GOFF.h" +#include "llvm/MC/MCGOFFAttributes.h" #include "llvm/MC/MCSection.h" +#include "llvm/Support/ErrorHandling.h" #include "llvm/Support/raw_ostream.h" namespace llvm { class MCExpr; class MCSectionGOFF final : public MCSection { -private: - MCSection *Parent; - uint32_t Subsection; + // Parent of this section. Implies that the parent is emitted first. + MCSectionGOFF *Parent; + + // The attributes of the GOFF symbols. + GOFF::SDAttr SDAttributes; + GOFF::EDAttr EDAttributes; + GOFF::PRAttr PRAttributes; + + // The type of this section. + GOFF::ESDSymbolType SymbolType; + + // Indicates that the PR symbol needs to set the length of the section to a + // non-zero value. This is only a problem with the ADA PR - the binder will + // generate an error in this case. + unsigned RequiresNonZeroLength : 1; friend class MCContext; - MCSectionGOFF(StringRef Name, SectionKind K, MCSection *P, uint32_t Sub) + MCSectionGOFF(StringRef Name, SectionKind K, GOFF::ESDSymbolType SymbolType, + GOFF::SDAttr SDAttributes, GOFF::EDAttr EDAttributes, + GOFF::PRAttr PRAttributes, MCSectionGOFF *Parent = nullptr) : MCSection(SV_GOFF, Name, K.isText(), /*IsVirtual=*/false, nullptr), - Parent(P), Subsection(Sub) {} + Parent(Parent), SDAttributes(SDAttributes), EDAttributes(EDAttributes), + PRAttributes(PRAttributes), SymbolType(SymbolType) {} public: void printSwitchToSection(const MCAsmInfo &MAI, const Triple &T, raw_ostream &OS, - uint32_t /*Subsection*/) const override { - OS << "\t.section\t\"" << getName() << "\"\n"; + uint32_t Subsection) const override { + switch (SymbolType) { + case GOFF::ESD_ST_SectionDefinition: + OS << Name << " CSECT\n"; + break; + case GOFF::ESD_ST_ElementDefinition: + getParent()->printSwitchToSection(MAI, T, OS, Subsection); + OS << Name << " CATTR\n"; + break; + case GOFF::ESD_ST_PartReference: + getParent()->printSwitchToSection(MAI, T, OS, Subsection); + OS << Name << " XATTR\n"; ---------------- redstar wrote:
Yes, true, I need to update my HLASM skills..... https://github.com/llvm/llvm-project/pull/133799 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits