summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC
diff options
context:
space:
mode:
authorjasonliu <jasonliu.development@gmail.com>2019-11-22 15:36:46 +0000
committerjasonliu <jasonliu.development@gmail.com>2019-11-22 15:49:37 +0000
commitaf8576ff9d5a66d30ce27176aff808b688c3ec85 (patch)
treedba4bd9ac2d9b13638930528fb4af476d2c2a379 /llvm/lib/MC
parent26fa9e31f58a7ff693f3a5d8c2eb1b6a5a13b133 (diff)
downloadbcm5719-llvm-af8576ff9d5a66d30ce27176aff808b688c3ec85.tar.gz
bcm5719-llvm-af8576ff9d5a66d30ce27176aff808b688c3ec85.zip
[XCOFF][AIX] Read-only data section object file generation
Summary: This patch is a follow up on read-only assembly patch D70182. It intends to enable object file generation for the read-only data section on AIX. Reviewers: DiggerLin, daltenty Differential Revision: https://reviews.llvm.org/D70455
Diffstat (limited to 'llvm/lib/MC')
-rw-r--r--llvm/lib/MC/XCOFFObjectWriter.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/MC/XCOFFObjectWriter.cpp b/llvm/lib/MC/XCOFFObjectWriter.cpp
index 34f75e2ccdf..95f950465c0 100644
--- a/llvm/lib/MC/XCOFFObjectWriter.cpp
+++ b/llvm/lib/MC/XCOFFObjectWriter.cpp
@@ -150,6 +150,7 @@ class XCOFFObjectWriter : public MCObjectWriter {
// the sections. Should have one for each set of csects that get mapped into
// the same section and get handled in a 'similar' way.
CsectGroup ProgramCodeCsects;
+ CsectGroup ReadOnlyCsects;
CsectGroup DataCsects;
CsectGroup FuncDSCsects;
CsectGroup TOCCsects;
@@ -219,7 +220,7 @@ XCOFFObjectWriter::XCOFFObjectWriter(
: W(OS, support::big), TargetObjectWriter(std::move(MOTW)),
Strings(StringTableBuilder::XCOFF),
Text(".text", XCOFF::STYP_TEXT, /* IsVirtual */ false,
- CsectGroups{&ProgramCodeCsects}),
+ CsectGroups{&ProgramCodeCsects, &ReadOnlyCsects}),
Data(".data", XCOFF::STYP_DATA, /* IsVirtual */ false,
CsectGroups{&DataCsects, &FuncDSCsects, &TOCCsects}),
BSS(".bss", XCOFF::STYP_BSS, /* IsVirtual */ true,
@@ -245,6 +246,10 @@ CsectGroup &XCOFFObjectWriter::getCsectGroup(const MCSectionXCOFF *MCSec) {
assert(XCOFF::XTY_SD == MCSec->getCSectType() &&
"Only an initialized csect can contain program code.");
return ProgramCodeCsects;
+ case XCOFF::XMC_RO:
+ assert(XCOFF::XTY_SD == MCSec->getCSectType() &&
+ "Only an initialized csect can contain read only data.");
+ return ReadOnlyCsects;
case XCOFF::XMC_RW:
if (XCOFF::XTY_CM == MCSec->getCSectType())
return BSSCsects;
OpenPOWER on IntegriCloud