diff options
Diffstat (limited to 'llvm/lib/MC')
-rw-r--r-- | llvm/lib/MC/MCObjectFileInfo.cpp | 4 | ||||
-rw-r--r-- | llvm/lib/MC/MCSectionXCOFF.cpp | 7 |
2 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/MC/MCObjectFileInfo.cpp b/llvm/lib/MC/MCObjectFileInfo.cpp index be195928320..53a9467041c 100644 --- a/llvm/lib/MC/MCObjectFileInfo.cpp +++ b/llvm/lib/MC/MCObjectFileInfo.cpp @@ -777,6 +777,10 @@ void MCObjectFileInfo::initXCOFFMCObjectFileInfo(const Triple &T) { DataSection = Ctx->getXCOFFSection( ".data", XCOFF::StorageMappingClass::XMC_RW, XCOFF::XTY_SD, XCOFF::C_HIDEXT, SectionKind::getData()); + + ReadOnlySection = Ctx->getXCOFFSection( + ".rodata", XCOFF::StorageMappingClass::XMC_RO, XCOFF::XTY_SD, + XCOFF::C_HIDEXT, SectionKind::getReadOnly()); } void MCObjectFileInfo::InitMCObjectFileInfo(const Triple &TheTriple, bool PIC, diff --git a/llvm/lib/MC/MCSectionXCOFF.cpp b/llvm/lib/MC/MCSectionXCOFF.cpp index d00e9322897..f646168d3a4 100644 --- a/llvm/lib/MC/MCSectionXCOFF.cpp +++ b/llvm/lib/MC/MCSectionXCOFF.cpp @@ -27,6 +27,13 @@ void MCSectionXCOFF::PrintSwitchToSection(const MCAsmInfo &MAI, const Triple &T, return; } + if (getKind().isReadOnly()) { + if (getMappingClass() != XCOFF::XMC_RO) + report_fatal_error("Unhandled storage-mapping class for .rodata csect."); + OS << "\t.csect " << QualName->getName() << '\n'; + return; + } + if (getKind().isData()) { switch (getMappingClass()) { case XCOFF::XMC_RW: |