now that getOrCreateSection is all object-file specific,

give the impls an object-file-specific name.  In the future
they can take different arguments etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78495 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2009-08-08 20:22:20 +00:00
parent fbf1d271e6
commit 0c0cb71233
4 changed files with 136 additions and 164 deletions

View File

@ -207,9 +207,8 @@ protected:
const MCSection *MergeableConst16Section;
protected:
const MCSection *getOrCreateSection(const char *Name,
bool isDirective,
SectionKind K) const;
const MCSection *getELFSection(const char *Name, bool isDirective,
SectionKind Kind) const;
public:
/// ELF Constructor - AtIsCommentChar is true if the CommentCharacter from TAI
/// is "@".
@ -250,10 +249,6 @@ class TargetLoweringObjectFileMachO : public TargetLoweringObjectFile {
const MCSection *FourByteConstantSection;
const MCSection *EightByteConstantSection;
const MCSection *SixteenByteConstantSection;
protected:
const MCSection *getOrCreateSection(const char *Name,
bool isDirective,
SectionKind K) const;
public:
virtual void Initialize(MCContext &Ctx, const TargetMachine &TM);
@ -277,16 +272,12 @@ public:
/// getMachOSection - Return the MCSection for the specified mach-o section.
/// FIXME: Switch this to a semantic view eventually.
const MCSection *getMachOSection(const char *Name, bool isDirective,
SectionKind K);
SectionKind K) const;
};
class TargetLoweringObjectFileCOFF : public TargetLoweringObjectFile {
protected:
const MCSection *getOrCreateSection(const char *Name,
bool isDirective,
SectionKind K) const;
public:
virtual void Initialize(MCContext &Ctx, const TargetMachine &TM);
@ -304,7 +295,7 @@ public:
/// getCOFFSection - Return the MCSection for the specified COFF section.
/// FIXME: Switch this to a semantic view eventually.
const MCSection *getCOFFSection(const char *Name, bool isDirective,
SectionKind K);
SectionKind K) const;
};
} // end namespace llvm

View File

@ -25,11 +25,11 @@ namespace llvm {
// That will allow not treating these as "directives".
if (TM.getSubtarget<ARMSubtarget>().isAAPCS_ABI()) {
StaticCtorSection =
getOrCreateSection("\t.section .init_array,\"aw\",%init_array", true,
SectionKind::getDataRel());
getELFSection("\t.section .init_array,\"aw\",%init_array", true,
SectionKind::getDataRel());
StaticDtorSection =
getOrCreateSection("\t.section .fini_array,\"aw\",%fini_array", true,
SectionKind::getDataRel());
getELFSection("\t.section .fini_array,\"aw\",%fini_array", true,
SectionKind::getDataRel());
}
}
};

View File

@ -280,7 +280,7 @@ TargetLoweringObjectFile::getSectionForConstant(SectionKind Kind) const {
//===----------------------------------------------------------------------===//
const MCSection *TargetLoweringObjectFileELF::
getOrCreateSection(const char *Name, bool isDirective, SectionKind Kind) const {
getELFSection(const char *Name, bool isDirective, SectionKind Kind) const {
if (MCSection *S = getContext().GetSection(Name))
return S;
return MCSection::Create(Name, isDirective, Kind, getContext());
@ -290,47 +290,47 @@ void TargetLoweringObjectFileELF::Initialize(MCContext &Ctx,
const TargetMachine &TM) {
TargetLoweringObjectFile::Initialize(Ctx, TM);
if (!HasCrazyBSS)
BSSSection = getOrCreateSection("\t.bss", true, SectionKind::getBSS());
BSSSection = getELFSection("\t.bss", true, SectionKind::getBSS());
else
// PPC/Linux doesn't support the .bss directive, it needs .section .bss.
// FIXME: Does .section .bss work everywhere??
// FIXME2: this should just be handle by the section printer. We should get
// away from syntactic view of the sections and MCSection should just be a
// semantic view.
BSSSection = getOrCreateSection("\t.bss", false, SectionKind::getBSS());
BSSSection = getELFSection("\t.bss", false, SectionKind::getBSS());
TextSection = getOrCreateSection("\t.text", true, SectionKind::getText());
DataSection = getOrCreateSection("\t.data", true, SectionKind::getDataRel());
TextSection = getELFSection("\t.text", true, SectionKind::getText());
DataSection = getELFSection("\t.data", true, SectionKind::getDataRel());
ReadOnlySection =
getOrCreateSection("\t.rodata", false, SectionKind::getReadOnly());
getELFSection("\t.rodata", false, SectionKind::getReadOnly());
TLSDataSection =
getOrCreateSection("\t.tdata", false, SectionKind::getThreadData());
getELFSection("\t.tdata", false, SectionKind::getThreadData());
TLSBSSSection = getOrCreateSection("\t.tbss", false,
TLSBSSSection = getELFSection("\t.tbss", false,
SectionKind::getThreadBSS());
DataRelSection = getOrCreateSection("\t.data.rel", false,
DataRelSection = getELFSection("\t.data.rel", false,
SectionKind::getDataRel());
DataRelLocalSection = getOrCreateSection("\t.data.rel.local", false,
DataRelLocalSection = getELFSection("\t.data.rel.local", false,
SectionKind::getDataRelLocal());
DataRelROSection = getOrCreateSection("\t.data.rel.ro", false,
DataRelROSection = getELFSection("\t.data.rel.ro", false,
SectionKind::getReadOnlyWithRel());
DataRelROLocalSection =
getOrCreateSection("\t.data.rel.ro.local", false,
getELFSection("\t.data.rel.ro.local", false,
SectionKind::getReadOnlyWithRelLocal());
MergeableConst4Section = getOrCreateSection(".rodata.cst4", false,
MergeableConst4Section = getELFSection(".rodata.cst4", false,
SectionKind::getMergeableConst4());
MergeableConst8Section = getOrCreateSection(".rodata.cst8", false,
MergeableConst8Section = getELFSection(".rodata.cst8", false,
SectionKind::getMergeableConst8());
MergeableConst16Section = getOrCreateSection(".rodata.cst16", false,
MergeableConst16Section = getELFSection(".rodata.cst16", false,
SectionKind::getMergeableConst16());
StaticCtorSection =
getOrCreateSection(".ctors", false, SectionKind::getDataRel());
getELFSection(".ctors", false, SectionKind::getDataRel());
StaticDtorSection =
getOrCreateSection(".dtors", false, SectionKind::getDataRel());
getELFSection(".dtors", false, SectionKind::getDataRel());
// Exception Handling Sections.
@ -339,33 +339,33 @@ void TargetLoweringObjectFileELF::Initialize(MCContext &Ctx,
// runtime hit for C++ apps. Either the contents of the LSDA need to be
// adjusted or this should be a data section.
LSDASection =
getOrCreateSection(".gcc_except_table", false, SectionKind::getReadOnly());
getELFSection(".gcc_except_table", false, SectionKind::getReadOnly());
EHFrameSection =
getOrCreateSection(".eh_frame", false, SectionKind::getDataRel());
getELFSection(".eh_frame", false, SectionKind::getDataRel());
// Debug Info Sections.
DwarfAbbrevSection =
getOrCreateSection(".debug_abbrev", false, SectionKind::getMetadata());
getELFSection(".debug_abbrev", false, SectionKind::getMetadata());
DwarfInfoSection =
getOrCreateSection(".debug_info", false, SectionKind::getMetadata());
getELFSection(".debug_info", false, SectionKind::getMetadata());
DwarfLineSection =
getOrCreateSection(".debug_line", false, SectionKind::getMetadata());
getELFSection(".debug_line", false, SectionKind::getMetadata());
DwarfFrameSection =
getOrCreateSection(".debug_frame", false, SectionKind::getMetadata());
getELFSection(".debug_frame", false, SectionKind::getMetadata());
DwarfPubNamesSection =
getOrCreateSection(".debug_pubnames", false, SectionKind::getMetadata());
getELFSection(".debug_pubnames", false, SectionKind::getMetadata());
DwarfPubTypesSection =
getOrCreateSection(".debug_pubtypes", false, SectionKind::getMetadata());
getELFSection(".debug_pubtypes", false, SectionKind::getMetadata());
DwarfStrSection =
getOrCreateSection(".debug_str", false, SectionKind::getMetadata());
getELFSection(".debug_str", false, SectionKind::getMetadata());
DwarfLocSection =
getOrCreateSection(".debug_loc", false, SectionKind::getMetadata());
getELFSection(".debug_loc", false, SectionKind::getMetadata());
DwarfARangesSection =
getOrCreateSection(".debug_aranges", false, SectionKind::getMetadata());
getELFSection(".debug_aranges", false, SectionKind::getMetadata());
DwarfRangesSection =
getOrCreateSection(".debug_ranges", false, SectionKind::getMetadata());
getELFSection(".debug_ranges", false, SectionKind::getMetadata());
DwarfMacroInfoSection =
getOrCreateSection(".debug_macinfo", false, SectionKind::getMetadata());
getELFSection(".debug_macinfo", false, SectionKind::getMetadata());
}
@ -401,7 +401,7 @@ getExplicitSectionGlobal(const GlobalValue *GV, SectionKind Kind,
// Infer section flags from the section name if we can.
Kind = getELFKindForNamedSection(GV->getSection().c_str(), Kind);
return getOrCreateSection(GV->getSection().c_str(), false, Kind);
return getELFSection(GV->getSection().c_str(), false, Kind);
}
@ -497,7 +497,7 @@ SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
if (GV->isWeakForLinker()) {
const char *Prefix = getSectionPrefixForUniqueGlobal(Kind);
std::string Name = Mang->makeNameProper(GV->getNameStr());
return getOrCreateSection((Prefix+Name).c_str(), false, Kind);
return getELFSection((Prefix+Name).c_str(), false, Kind);
}
if (Kind.isText()) return TextSection;
@ -522,7 +522,7 @@ SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
std::string Name = SizeSpec + utostr(Align);
return getOrCreateSection(Name.c_str(), false, Kind);
return getELFSection(Name.c_str(), false, Kind);
}
if (Kind.isMergeableConst()) {
@ -574,36 +574,29 @@ getSectionForConstant(SectionKind Kind) const {
// MachO
//===----------------------------------------------------------------------===//
const MCSection *TargetLoweringObjectFileMachO::
getOrCreateSection(const char *Name, bool isDirective, SectionKind Kind) const {
getMachOSection(const char *Name, bool isDirective, SectionKind Kind) const {
if (MCSection *S = getContext().GetSection(Name))
return S;
return MCSection::Create(Name, isDirective, Kind, getContext());
}
const MCSection *TargetLoweringObjectFileMachO::
getMachOSection(const char *Name, bool isDirective, SectionKind K) {
// FOR NOW, Just forward.
return getOrCreateSection(Name, isDirective, K);
}
void TargetLoweringObjectFileMachO::Initialize(MCContext &Ctx,
const TargetMachine &TM) {
TargetLoweringObjectFile::Initialize(Ctx, TM);
TextSection = getOrCreateSection("\t.text", true,
SectionKind::getText());
DataSection = getOrCreateSection("\t.data", true,
SectionKind::getDataRel());
TextSection = getMachOSection("\t.text", true, SectionKind::getText());
DataSection = getMachOSection("\t.data", true, SectionKind::getDataRel());
CStringSection = getOrCreateSection("\t.cstring", true,
SectionKind::getMergeable1ByteCString());
UStringSection = getOrCreateSection("__TEXT,__ustring", false,
SectionKind::getMergeable2ByteCString());
FourByteConstantSection = getOrCreateSection("\t.literal4\n", true,
SectionKind::getMergeableConst4());
EightByteConstantSection = getOrCreateSection("\t.literal8\n", true,
CStringSection = getMachOSection("\t.cstring", true,
SectionKind::getMergeable1ByteCString());
UStringSection = getMachOSection("__TEXT,__ustring", false,
SectionKind::getMergeable2ByteCString());
FourByteConstantSection = getMachOSection("\t.literal4\n", true,
SectionKind::getMergeableConst4());
EightByteConstantSection = getMachOSection("\t.literal8\n", true,
SectionKind::getMergeableConst8());
// ld_classic doesn't support .literal16 in 32-bit mode, and ld64 falls back
@ -611,93 +604,90 @@ void TargetLoweringObjectFileMachO::Initialize(MCContext &Ctx,
if (TM.getRelocationModel() != Reloc::Static &&
TM.getTargetData()->getPointerSize() == 32)
SixteenByteConstantSection =
getOrCreateSection("\t.literal16\n", true,
SectionKind::getMergeableConst16());
getMachOSection("\t.literal16\n", true,
SectionKind::getMergeableConst16());
else
SixteenByteConstantSection = 0;
ReadOnlySection = getOrCreateSection("\t.const", true,
SectionKind::getReadOnly());
ReadOnlySection = getMachOSection("\t.const", true,
SectionKind::getReadOnly());
TextCoalSection =
getOrCreateSection("\t__TEXT,__textcoal_nt,coalesced,pure_instructions",
false, SectionKind::getText());
ConstTextCoalSection = getOrCreateSection("\t__TEXT,__const_coal,coalesced",
false,
SectionKind::getText());
ConstDataCoalSection = getOrCreateSection("\t__DATA,__const_coal,coalesced",
false,
SectionKind::getText());
ConstDataSection = getOrCreateSection("\t.const_data", true,
SectionKind::getReadOnlyWithRel());
DataCoalSection = getOrCreateSection("\t__DATA,__datacoal_nt,coalesced",
false,
SectionKind::getDataRel());
getMachOSection("\t__TEXT,__textcoal_nt,coalesced,pure_instructions",
false, SectionKind::getText());
ConstTextCoalSection = getMachOSection("\t__TEXT,__const_coal,coalesced",
false, SectionKind::getText());
ConstDataCoalSection = getMachOSection("\t__DATA,__const_coal,coalesced",
false, SectionKind::getText());
ConstDataSection = getMachOSection("\t.const_data", true,
SectionKind::getReadOnlyWithRel());
DataCoalSection = getMachOSection("\t__DATA,__datacoal_nt,coalesced",
false, SectionKind::getDataRel());
if (TM.getRelocationModel() == Reloc::Static) {
StaticCtorSection =
getOrCreateSection(".constructor", true, SectionKind::getDataRel());
getMachOSection(".constructor", true, SectionKind::getDataRel());
StaticDtorSection =
getOrCreateSection(".destructor", true, SectionKind::getDataRel());
getMachOSection(".destructor", true, SectionKind::getDataRel());
} else {
StaticCtorSection =
getOrCreateSection(".mod_init_func", true, SectionKind::getDataRel());
getMachOSection(".mod_init_func", true, SectionKind::getDataRel());
StaticDtorSection =
getOrCreateSection(".mod_term_func", true, SectionKind::getDataRel());
getMachOSection(".mod_term_func", true, SectionKind::getDataRel());
}
// Exception Handling.
LSDASection = getOrCreateSection("__DATA,__gcc_except_tab", false,
SectionKind::getDataRel());
LSDASection = getMachOSection("__DATA,__gcc_except_tab", false,
SectionKind::getDataRel());
EHFrameSection =
getOrCreateSection("__TEXT,__eh_frame,coalesced,no_toc+strip_static_syms"
"+live_support", false, SectionKind::getReadOnly());
getMachOSection("__TEXT,__eh_frame,coalesced,no_toc+strip_static_syms"
"+live_support", false, SectionKind::getReadOnly());
// Debug Information.
// FIXME: Don't use 'directive' syntax: need flags for debug/regular??
// FIXME: Need __DWARF segment.
DwarfAbbrevSection =
getOrCreateSection(".section __DWARF,__debug_abbrev,regular,debug", true,
SectionKind::getMetadata());
getMachOSection(".section __DWARF,__debug_abbrev,regular,debug", true,
SectionKind::getMetadata());
DwarfInfoSection =
getOrCreateSection(".section __DWARF,__debug_info,regular,debug", true,
SectionKind::getMetadata());
getMachOSection(".section __DWARF,__debug_info,regular,debug", true,
SectionKind::getMetadata());
DwarfLineSection =
getOrCreateSection(".section __DWARF,__debug_line,regular,debug", true,
SectionKind::getMetadata());
getMachOSection(".section __DWARF,__debug_line,regular,debug", true,
SectionKind::getMetadata());
DwarfFrameSection =
getOrCreateSection(".section __DWARF,__debug_frame,regular,debug", true,
SectionKind::getMetadata());
getMachOSection(".section __DWARF,__debug_frame,regular,debug", true,
SectionKind::getMetadata());
DwarfPubNamesSection =
getOrCreateSection(".section __DWARF,__debug_pubnames,regular,debug", true,
SectionKind::getMetadata());
getMachOSection(".section __DWARF,__debug_pubnames,regular,debug", true,
SectionKind::getMetadata());
DwarfPubTypesSection =
getOrCreateSection(".section __DWARF,__debug_pubtypes,regular,debug", true,
SectionKind::getMetadata());
getMachOSection(".section __DWARF,__debug_pubtypes,regular,debug", true,
SectionKind::getMetadata());
DwarfStrSection =
getOrCreateSection(".section __DWARF,__debug_str,regular,debug", true,
SectionKind::getMetadata());
getMachOSection(".section __DWARF,__debug_str,regular,debug", true,
SectionKind::getMetadata());
DwarfLocSection =
getOrCreateSection(".section __DWARF,__debug_loc,regular,debug", true,
SectionKind::getMetadata());
getMachOSection(".section __DWARF,__debug_loc,regular,debug", true,
SectionKind::getMetadata());
DwarfARangesSection =
getOrCreateSection(".section __DWARF,__debug_aranges,regular,debug", true,
SectionKind::getMetadata());
getMachOSection(".section __DWARF,__debug_aranges,regular,debug", true,
SectionKind::getMetadata());
DwarfRangesSection =
getOrCreateSection(".section __DWARF,__debug_ranges,regular,debug", true,
SectionKind::getMetadata());
getMachOSection(".section __DWARF,__debug_ranges,regular,debug", true,
SectionKind::getMetadata());
DwarfMacroInfoSection =
getOrCreateSection(".section __DWARF,__debug_macinfo,regular,debug", true,
SectionKind::getMetadata());
getMachOSection(".section __DWARF,__debug_macinfo,regular,debug", true,
SectionKind::getMetadata());
DwarfDebugInlineSection =
getOrCreateSection(".section __DWARF,__debug_inlined,regular,debug", true,
SectionKind::getMetadata());
getMachOSection(".section __DWARF,__debug_inlined,regular,debug", true,
SectionKind::getMetadata());
}
const MCSection *TargetLoweringObjectFileMachO::
getExplicitSectionGlobal(const GlobalValue *GV, SectionKind Kind,
Mangler *Mang, const TargetMachine &TM) const {
return getOrCreateSection(GV->getSection().c_str(), false, Kind);
return getMachOSection(GV->getSection().c_str(), false, Kind);
}
const MCSection *TargetLoweringObjectFileMachO::
@ -794,72 +784,66 @@ shouldEmitUsedDirectiveFor(const GlobalValue *GV, Mangler *Mang) const {
// COFF
//===----------------------------------------------------------------------===//
const MCSection *TargetLoweringObjectFileCOFF::
getOrCreateSection(const char *Name, bool isDirective, SectionKind Kind) const {
getCOFFSection(const char *Name, bool isDirective, SectionKind Kind) const {
if (MCSection *S = getContext().GetSection(Name))
return S;
return MCSection::Create(Name, isDirective, Kind, getContext());
}
const MCSection *TargetLoweringObjectFileCOFF::
getCOFFSection(const char *Name, bool isDirective, SectionKind K) {
return getOrCreateSection(Name, isDirective, K);
}
void TargetLoweringObjectFileCOFF::Initialize(MCContext &Ctx,
const TargetMachine &TM) {
TargetLoweringObjectFile::Initialize(Ctx, TM);
TextSection = getOrCreateSection("\t.text", true,
SectionKind::getText());
DataSection = getOrCreateSection("\t.data", true,
SectionKind::getDataRel());
TextSection = getCOFFSection("\t.text", true, SectionKind::getText());
DataSection = getCOFFSection("\t.data", true, SectionKind::getDataRel());
StaticCtorSection =
getOrCreateSection(".ctors", false, SectionKind::getDataRel());
getCOFFSection(".ctors", false, SectionKind::getDataRel());
StaticDtorSection =
getOrCreateSection(".dtors", false, SectionKind::getDataRel());
getCOFFSection(".dtors", false, SectionKind::getDataRel());
// Debug info.
// FIXME: Don't use 'directive' mode here.
DwarfAbbrevSection =
getOrCreateSection("\t.section\t.debug_abbrev,\"dr\"",
true, SectionKind::getMetadata());
getCOFFSection("\t.section\t.debug_abbrev,\"dr\"",
true, SectionKind::getMetadata());
DwarfInfoSection =
getOrCreateSection("\t.section\t.debug_info,\"dr\"",
true, SectionKind::getMetadata());
getCOFFSection("\t.section\t.debug_info,\"dr\"",
true, SectionKind::getMetadata());
DwarfLineSection =
getOrCreateSection("\t.section\t.debug_line,\"dr\"",
true, SectionKind::getMetadata());
getCOFFSection("\t.section\t.debug_line,\"dr\"",
true, SectionKind::getMetadata());
DwarfFrameSection =
getOrCreateSection("\t.section\t.debug_frame,\"dr\"",
true, SectionKind::getMetadata());
getCOFFSection("\t.section\t.debug_frame,\"dr\"",
true, SectionKind::getMetadata());
DwarfPubNamesSection =
getOrCreateSection("\t.section\t.debug_pubnames,\"dr\"",
true, SectionKind::getMetadata());
getCOFFSection("\t.section\t.debug_pubnames,\"dr\"",
true, SectionKind::getMetadata());
DwarfPubTypesSection =
getOrCreateSection("\t.section\t.debug_pubtypes,\"dr\"",
true, SectionKind::getMetadata());
getCOFFSection("\t.section\t.debug_pubtypes,\"dr\"",
true, SectionKind::getMetadata());
DwarfStrSection =
getOrCreateSection("\t.section\t.debug_str,\"dr\"",
true, SectionKind::getMetadata());
getCOFFSection("\t.section\t.debug_str,\"dr\"",
true, SectionKind::getMetadata());
DwarfLocSection =
getOrCreateSection("\t.section\t.debug_loc,\"dr\"",
true, SectionKind::getMetadata());
getCOFFSection("\t.section\t.debug_loc,\"dr\"",
true, SectionKind::getMetadata());
DwarfARangesSection =
getOrCreateSection("\t.section\t.debug_aranges,\"dr\"",
true, SectionKind::getMetadata());
getCOFFSection("\t.section\t.debug_aranges,\"dr\"",
true, SectionKind::getMetadata());
DwarfRangesSection =
getOrCreateSection("\t.section\t.debug_ranges,\"dr\"",
true, SectionKind::getMetadata());
getCOFFSection("\t.section\t.debug_ranges,\"dr\"",
true, SectionKind::getMetadata());
DwarfMacroInfoSection =
getOrCreateSection("\t.section\t.debug_macinfo,\"dr\"",
true, SectionKind::getMetadata());
getCOFFSection("\t.section\t.debug_macinfo,\"dr\"",
true, SectionKind::getMetadata());
}
const MCSection *TargetLoweringObjectFileCOFF::
getExplicitSectionGlobal(const GlobalValue *GV, SectionKind Kind,
Mangler *Mang, const TargetMachine &TM) const {
return getOrCreateSection(GV->getSection().c_str(), false, Kind);
return getCOFFSection(GV->getSection().c_str(), false, Kind);
}
@ -895,7 +879,7 @@ SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
if (GV->isWeakForLinker()) {
const char *Prefix = getCOFFSectionPrefixForUniqueGlobal(Kind);
std::string Name = Mang->makeNameProper(GV->getNameStr());
return getOrCreateSection((Prefix+Name).c_str(), false, Kind);
return getCOFFSection((Prefix+Name).c_str(), false, Kind);
}
if (Kind.isText())

View File

@ -16,12 +16,9 @@ using namespace llvm;
void XCoreTargetObjectFile::Initialize(MCContext &Ctx, const TargetMachine &TM){
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
TextSection = getOrCreateSection("\t.text", true,
SectionKind::getText());
DataSection = getOrCreateSection("\t.dp.data", false,
SectionKind::getDataRel());
BSSSection = getOrCreateSection("\t.dp.bss", false,
SectionKind::getBSS());
TextSection = getELFSection("\t.text", true, SectionKind::getText());
DataSection = getELFSection("\t.dp.data", false, SectionKind::getDataRel());
BSSSection = getELFSection("\t.dp.bss", false, SectionKind::getBSS());
// TLS globals are lowered in the backend to arrays indexed by the current
// thread id. After lowering they require no special handling by the linker
@ -31,9 +28,9 @@ void XCoreTargetObjectFile::Initialize(MCContext &Ctx, const TargetMachine &TM){
if (TM.getSubtarget<XCoreSubtarget>().isXS1A())
// FIXME: Why is this writable ("datarel")???
ReadOnlySection = getOrCreateSection("\t.dp.rodata", false,
SectionKind::getDataRel());
ReadOnlySection = getELFSection("\t.dp.rodata", false,
SectionKind::getDataRel());
else
ReadOnlySection = getOrCreateSection("\t.cp.rodata", false,
SectionKind::getReadOnly());
ReadOnlySection = getELFSection("\t.cp.rodata", false,
SectionKind::getReadOnly());
}