mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-24 22:24:54 +00:00
Compute the ELF SectionKind from the flags.
Any code creating an MCSectionELF knows ELF and already provides the flags. SectionKind is an abstraction used by common code that uses a plain MCSection. Use the flags to compute the SectionKind. This removes a lot of guessing and boilerplate from the MCSectionELF construction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227476 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -21,66 +21,43 @@ using namespace llvm;
|
||||
void XCoreTargetObjectFile::Initialize(MCContext &Ctx, const TargetMachine &TM){
|
||||
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
|
||||
|
||||
BSSSection =
|
||||
Ctx.getELFSection(".dp.bss", ELF::SHT_NOBITS,
|
||||
ELF::SHF_ALLOC | ELF::SHF_WRITE |
|
||||
ELF::XCORE_SHF_DP_SECTION,
|
||||
SectionKind::getBSS());
|
||||
BSSSectionLarge =
|
||||
Ctx.getELFSection(".dp.bss.large", ELF::SHT_NOBITS,
|
||||
ELF::SHF_ALLOC | ELF::SHF_WRITE |
|
||||
ELF::XCORE_SHF_DP_SECTION,
|
||||
SectionKind::getBSS());
|
||||
DataSection =
|
||||
Ctx.getELFSection(".dp.data", ELF::SHT_PROGBITS,
|
||||
ELF::SHF_ALLOC | ELF::SHF_WRITE |
|
||||
ELF::XCORE_SHF_DP_SECTION,
|
||||
SectionKind::getDataRel());
|
||||
DataSectionLarge =
|
||||
Ctx.getELFSection(".dp.data.large", ELF::SHT_PROGBITS,
|
||||
ELF::SHF_ALLOC | ELF::SHF_WRITE |
|
||||
ELF::XCORE_SHF_DP_SECTION,
|
||||
SectionKind::getDataRel());
|
||||
DataRelROSection =
|
||||
Ctx.getELFSection(".dp.rodata", ELF::SHT_PROGBITS,
|
||||
ELF::SHF_ALLOC | ELF::SHF_WRITE |
|
||||
ELF::XCORE_SHF_DP_SECTION,
|
||||
SectionKind::getReadOnlyWithRel());
|
||||
DataRelROSectionLarge =
|
||||
Ctx.getELFSection(".dp.rodata.large", ELF::SHT_PROGBITS,
|
||||
ELF::SHF_ALLOC | ELF::SHF_WRITE |
|
||||
ELF::XCORE_SHF_DP_SECTION,
|
||||
SectionKind::getReadOnlyWithRel());
|
||||
BSSSection = Ctx.getELFSection(".dp.bss", ELF::SHT_NOBITS,
|
||||
ELF::SHF_ALLOC | ELF::SHF_WRITE |
|
||||
ELF::XCORE_SHF_DP_SECTION);
|
||||
BSSSectionLarge = Ctx.getELFSection(".dp.bss.large", ELF::SHT_NOBITS,
|
||||
ELF::SHF_ALLOC | ELF::SHF_WRITE |
|
||||
ELF::XCORE_SHF_DP_SECTION);
|
||||
DataSection = Ctx.getELFSection(".dp.data", ELF::SHT_PROGBITS,
|
||||
ELF::SHF_ALLOC | ELF::SHF_WRITE |
|
||||
ELF::XCORE_SHF_DP_SECTION);
|
||||
DataSectionLarge = Ctx.getELFSection(".dp.data.large", ELF::SHT_PROGBITS,
|
||||
ELF::SHF_ALLOC | ELF::SHF_WRITE |
|
||||
ELF::XCORE_SHF_DP_SECTION);
|
||||
DataRelROSection = Ctx.getELFSection(".dp.rodata", ELF::SHT_PROGBITS,
|
||||
ELF::SHF_ALLOC | ELF::SHF_WRITE |
|
||||
ELF::XCORE_SHF_DP_SECTION);
|
||||
DataRelROSectionLarge = Ctx.getELFSection(
|
||||
".dp.rodata.large", ELF::SHT_PROGBITS,
|
||||
ELF::SHF_ALLOC | ELF::SHF_WRITE | ELF::XCORE_SHF_DP_SECTION);
|
||||
ReadOnlySection =
|
||||
Ctx.getELFSection(".cp.rodata", ELF::SHT_PROGBITS,
|
||||
ELF::SHF_ALLOC |
|
||||
ELF::XCORE_SHF_CP_SECTION,
|
||||
SectionKind::getReadOnlyWithRel());
|
||||
Ctx.getELFSection(".cp.rodata", ELF::SHT_PROGBITS,
|
||||
ELF::SHF_ALLOC | ELF::XCORE_SHF_CP_SECTION);
|
||||
ReadOnlySectionLarge =
|
||||
Ctx.getELFSection(".cp.rodata.large", ELF::SHT_PROGBITS,
|
||||
ELF::SHF_ALLOC |
|
||||
ELF::XCORE_SHF_CP_SECTION,
|
||||
SectionKind::getReadOnlyWithRel());
|
||||
MergeableConst4Section =
|
||||
Ctx.getELFSection(".cp.rodata.cst4", ELF::SHT_PROGBITS,
|
||||
ELF::SHF_ALLOC | ELF::SHF_MERGE |
|
||||
ELF::XCORE_SHF_CP_SECTION,
|
||||
SectionKind::getMergeableConst4());
|
||||
MergeableConst8Section =
|
||||
Ctx.getELFSection(".cp.rodata.cst8", ELF::SHT_PROGBITS,
|
||||
ELF::SHF_ALLOC | ELF::SHF_MERGE |
|
||||
ELF::XCORE_SHF_CP_SECTION,
|
||||
SectionKind::getMergeableConst8());
|
||||
MergeableConst16Section =
|
||||
Ctx.getELFSection(".cp.rodata.cst16", ELF::SHT_PROGBITS,
|
||||
ELF::SHF_ALLOC | ELF::SHF_MERGE |
|
||||
ELF::XCORE_SHF_CP_SECTION,
|
||||
SectionKind::getMergeableConst16());
|
||||
Ctx.getELFSection(".cp.rodata.large", ELF::SHT_PROGBITS,
|
||||
ELF::SHF_ALLOC | ELF::XCORE_SHF_CP_SECTION);
|
||||
MergeableConst4Section = Ctx.getELFSection(
|
||||
".cp.rodata.cst4", ELF::SHT_PROGBITS,
|
||||
ELF::SHF_ALLOC | ELF::SHF_MERGE | ELF::XCORE_SHF_CP_SECTION, 4, "");
|
||||
MergeableConst8Section = Ctx.getELFSection(
|
||||
".cp.rodata.cst8", ELF::SHT_PROGBITS,
|
||||
ELF::SHF_ALLOC | ELF::SHF_MERGE | ELF::XCORE_SHF_CP_SECTION, 8, "");
|
||||
MergeableConst16Section = Ctx.getELFSection(
|
||||
".cp.rodata.cst16", ELF::SHT_PROGBITS,
|
||||
ELF::SHF_ALLOC | ELF::SHF_MERGE | ELF::XCORE_SHF_CP_SECTION, 16, "");
|
||||
CStringSection =
|
||||
Ctx.getELFSection(".cp.rodata.string", ELF::SHT_PROGBITS,
|
||||
ELF::SHF_ALLOC | ELF::SHF_MERGE | ELF::SHF_STRINGS |
|
||||
ELF::XCORE_SHF_CP_SECTION,
|
||||
SectionKind::getReadOnlyWithRel());
|
||||
Ctx.getELFSection(".cp.rodata.string", ELF::SHT_PROGBITS,
|
||||
ELF::SHF_ALLOC | ELF::SHF_MERGE | ELF::SHF_STRINGS |
|
||||
ELF::XCORE_SHF_CP_SECTION);
|
||||
// TextSection - see MObjectFileInfo.cpp
|
||||
// StaticCtorSection - see MObjectFileInfo.cpp
|
||||
// StaticDtorSection - see MObjectFileInfo.cpp
|
||||
@@ -128,7 +105,7 @@ XCoreTargetObjectFile::getExplicitSectionGlobal(const GlobalValue *GV,
|
||||
if (IsCPRel && !Kind.isReadOnly())
|
||||
report_fatal_error("Using .cp. section for writeable object.");
|
||||
return getContext().getELFSection(SectionName, getXCoreSectionType(Kind),
|
||||
getXCoreSectionFlags(Kind, IsCPRel), Kind);
|
||||
getXCoreSectionFlags(Kind, IsCPRel));
|
||||
}
|
||||
|
||||
const MCSection *XCoreTargetObjectFile::
|
||||
|
Reference in New Issue
Block a user