diff options
Diffstat (limited to 'llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp')
-rw-r--r-- | llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp index 17bd024ad28..07d9576222e 100644 --- a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp +++ b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp @@ -228,25 +228,25 @@ const MCSection *TargetLoweringObjectFileELF::getExplicitSectionGlobal( /// DataSections. static StringRef getSectionPrefixForGlobal(SectionKind Kind) { if (Kind.isText()) - return ".text."; + return ".text"; if (Kind.isReadOnly()) - return ".rodata."; + return ".rodata"; if (Kind.isBSS()) - return ".bss."; + return ".bss"; if (Kind.isThreadData()) - return ".tdata."; + return ".tdata"; if (Kind.isThreadBSS()) - return ".tbss."; + return ".tbss"; if (Kind.isDataNoRel()) - return ".data."; + return ".data"; if (Kind.isDataRelLocal()) - return ".data.rel.local."; + return ".data.rel.local"; if (Kind.isDataRel()) - return ".data.rel."; + return ".data.rel"; if (Kind.isReadOnlyWithRelLocal()) - return ".data.rel.ro.local."; + return ".data.rel.ro.local"; assert(Kind.isReadOnlyWithRel() && "Unknown section kind"); - return ".data.rel.ro."; + return ".data.rel.ro"; } const MCSection *TargetLoweringObjectFileELF:: @@ -268,16 +268,19 @@ SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind, StringRef Prefix = getSectionPrefixForGlobal(Kind); SmallString<128> Name(Prefix); - TM.getNameWithPrefix(Name, GV, Mang, true); - + bool UniqueSectionNames = TM.getUniqueSectionNames(); + if (UniqueSectionNames) { + Name.push_back('.'); + TM.getNameWithPrefix(Name, GV, Mang, true); + } StringRef Group = ""; if (const Comdat *C = getELFComdat(GV)) { Flags |= ELF::SHF_GROUP; Group = C->getName(); } - return getContext().getELFSection( - Name.str(), getELFSectionType(Name.str(), Kind), Flags, 0, Group); + return getContext().getELFSection(Name, getELFSectionType(Name, Kind), + Flags, 0, Group, !UniqueSectionNames); } if (Kind.isText()) return TextSection; |