diff --git a/llvm/include/llvm/MC/MCSection.h b/llvm/include/llvm/MC/MCSection.h --- a/llvm/include/llvm/MC/MCSection.h +++ b/llvm/include/llvm/MC/MCSection.h @@ -110,6 +110,8 @@ MCSection(const MCSection &) = delete; MCSection &operator=(const MCSection &) = delete; + virtual StringRef getName() const = 0; + SectionKind getKind() const { return Kind; } SectionVariant getVariant() const { return Variant; } diff --git a/llvm/include/llvm/MC/MCSectionCOFF.h b/llvm/include/llvm/MC/MCSectionCOFF.h --- a/llvm/include/llvm/MC/MCSectionCOFF.h +++ b/llvm/include/llvm/MC/MCSectionCOFF.h @@ -66,7 +66,7 @@ /// section name bool ShouldOmitSectionDirective(StringRef Name, const MCAsmInfo &MAI) const; - StringRef getSectionName() const { return SectionName; } + StringRef getName() const override { return SectionName; } unsigned getCharacteristics() const { return Characteristics; } MCSymbol *getCOMDATSymbol() const { return COMDATSymbol; } int getSelection() const { return Selection; } diff --git a/llvm/include/llvm/MC/MCSectionELF.h b/llvm/include/llvm/MC/MCSectionELF.h --- a/llvm/include/llvm/MC/MCSectionELF.h +++ b/llvm/include/llvm/MC/MCSectionELF.h @@ -68,7 +68,7 @@ /// section name bool ShouldOmitSectionDirective(StringRef Name, const MCAsmInfo &MAI) const; - StringRef getSectionName() const { return SectionName; } + StringRef getName() const override { return SectionName; } unsigned getType() const { return Type; } unsigned getFlags() const { return Flags; } unsigned getEntrySize() const { return EntrySize; } diff --git a/llvm/include/llvm/MC/MCSectionMachO.h b/llvm/include/llvm/MC/MCSectionMachO.h --- a/llvm/include/llvm/MC/MCSectionMachO.h +++ b/llvm/include/llvm/MC/MCSectionMachO.h @@ -44,7 +44,7 @@ return StringRef(SegmentName, 16); return StringRef(SegmentName); } - StringRef getSectionName() const { + StringRef getName() const override { // SectionName is not necessarily null terminated! if (SectionName[15]) return StringRef(SectionName, 16); diff --git a/llvm/include/llvm/MC/MCSectionWasm.h b/llvm/include/llvm/MC/MCSectionWasm.h --- a/llvm/include/llvm/MC/MCSectionWasm.h +++ b/llvm/include/llvm/MC/MCSectionWasm.h @@ -56,7 +56,7 @@ /// section name bool shouldOmitSectionDirective(StringRef Name, const MCAsmInfo &MAI) const; - StringRef getSectionName() const { return SectionName; } + StringRef getName() const override { return SectionName; } const MCSymbolWasm *getGroup() const { return Group; } void PrintSwitchToSection(const MCAsmInfo &MAI, const Triple &T, diff --git a/llvm/include/llvm/MC/MCSectionXCOFF.h b/llvm/include/llvm/MC/MCSectionXCOFF.h --- a/llvm/include/llvm/MC/MCSectionXCOFF.h +++ b/llvm/include/llvm/MC/MCSectionXCOFF.h @@ -58,7 +58,7 @@ return S->getVariant() == SV_XCOFF; } - StringRef getSectionName() const { return Name; } + StringRef getName() const override { return Name; } XCOFF::StorageMappingClass getMappingClass() const { return MappingClass; } XCOFF::StorageClass getStorageClass() const { return StorageClass; } XCOFF::SymbolType getCSectType() const { return Type; } diff --git a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp --- a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp +++ b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp @@ -771,8 +771,8 @@ const TargetMachine &TM) const { assert(MBB.isBeginSection() && "Basic block does not start a section!"); SmallString<128> Name; - Name = (static_cast(MBB.getParent()->getSection())) - ->getSectionName(); + Name = + (static_cast(MBB.getParent()->getSection()))->getName(); unsigned UniqueID = MCContext::GenericSectionID; switch (MBB.getSectionID().Type) { diff --git a/llvm/lib/MC/ELFObjectWriter.cpp b/llvm/lib/MC/ELFObjectWriter.cpp --- a/llvm/lib/MC/ELFObjectWriter.cpp +++ b/llvm/lib/MC/ELFObjectWriter.cpp @@ -73,7 +73,7 @@ struct ELFWriter; bool isDwoSection(const MCSectionELF &Sec) { - return Sec.getSectionName().endswith(".dwo"); + return Sec.getName().endswith(".dwo"); } class SymbolTableWriter { @@ -343,7 +343,7 @@ unsigned ELFWriter::addToSectionTable(const MCSectionELF *Sec) { SectionTable.push_back(Sec); - StrTabBuilder.add(Sec->getSectionName()); + StrTabBuilder.add(Sec->getName()); return SectionTable.size(); } @@ -784,7 +784,7 @@ if (OWriter.Relocations[&Sec].empty()) return nullptr; - const StringRef SectionName = Sec.getSectionName(); + const StringRef SectionName = Sec.getName(); std::string RelaSectionName = hasRelocationAddend() ? ".rela" : ".rel"; RelaSectionName += SectionName; @@ -843,7 +843,7 @@ void ELFWriter::writeSectionData(const MCAssembler &Asm, MCSection &Sec, const MCAsmLayout &Layout) { MCSectionELF &Section = static_cast(Sec); - StringRef SectionName = Section.getSectionName(); + StringRef SectionName = Section.getName(); auto &MC = Asm.getContext(); const auto &MAI = MC.getAsmInfo(); @@ -1029,7 +1029,7 @@ sh_link = SectionIndexMap.lookup(Sec); } - WriteSecHdrEntry(StrTabBuilder.getOffset(Section.getSectionName()), + WriteSecHdrEntry(StrTabBuilder.getOffset(Section.getName()), Section.getType(), Section.getFlags(), 0, Offset, Size, sh_link, sh_info, Section.getAlignment(), Section.getEntrySize()); diff --git a/llvm/lib/MC/MCAsmInfoDarwin.cpp b/llvm/lib/MC/MCAsmInfoDarwin.cpp --- a/llvm/lib/MC/MCAsmInfoDarwin.cpp +++ b/llvm/lib/MC/MCAsmInfoDarwin.cpp @@ -29,11 +29,10 @@ if (SMO.getType() == MachO::S_CSTRING_LITERALS) return false; - if (SMO.getSegmentName() == "__DATA" && SMO.getSectionName() == "__cfstring") + if (SMO.getSegmentName() == "__DATA" && SMO.getName() == "__cfstring") return false; - if (SMO.getSegmentName() == "__DATA" && - SMO.getSectionName() == "__objc_classrefs") + if (SMO.getSegmentName() == "__DATA" && SMO.getName() == "__objc_classrefs") return false; switch (SMO.getType()) { diff --git a/llvm/lib/MC/MCAsmStreamer.cpp b/llvm/lib/MC/MCAsmStreamer.cpp --- a/llvm/lib/MC/MCAsmStreamer.cpp +++ b/llvm/lib/MC/MCAsmStreamer.cpp @@ -848,7 +848,7 @@ // This is a mach-o specific directive. const MCSectionMachO *MOSection = ((const MCSectionMachO*)Section); - OS << MOSection->getSegmentName() << "," << MOSection->getSectionName(); + OS << MOSection->getSegmentName() << "," << MOSection->getName(); if (Symbol) { OS << ','; diff --git a/llvm/lib/MC/MCAssembler.cpp b/llvm/lib/MC/MCAssembler.cpp --- a/llvm/lib/MC/MCAssembler.cpp +++ b/llvm/lib/MC/MCAssembler.cpp @@ -686,11 +686,8 @@ report_fatal_error("cannot have fixups in virtual section!"); for (unsigned i = 0, e = DF.getContents().size(); i != e; ++i) if (DF.getContents()[i]) { - if (auto *ELFSec = dyn_cast(Sec)) - report_fatal_error("non-zero initializer found in section '" + - ELFSec->getSectionName() + "'"); - else - report_fatal_error("non-zero initializer found in virtual section"); + report_fatal_error("non-zero initializer found in section '" + + Sec->getName() + "'"); } break; } diff --git a/llvm/lib/MC/MCContext.cpp b/llvm/lib/MC/MCContext.cpp --- a/llvm/lib/MC/MCContext.cpp +++ b/llvm/lib/MC/MCContext.cpp @@ -330,7 +330,7 @@ // SHF_LINK_ORDER flag. unsigned UniqueID = Section->getUniqueID(); ELFUniquingMap.erase( - ELFSectionKey{Section->getSectionName(), GroupName, "", UniqueID}); + ELFSectionKey{Section->getName(), GroupName, "", UniqueID}); auto I = ELFUniquingMap .insert(std::make_pair( ELFSectionKey{Name, GroupName, "", UniqueID}, Section)) @@ -500,13 +500,13 @@ unsigned Characteristics = Sec->getCharacteristics(); if (KeySym) { Characteristics |= COFF::IMAGE_SCN_LNK_COMDAT; - return getCOFFSection(Sec->getSectionName(), Characteristics, - Sec->getKind(), KeySym->getName(), + return getCOFFSection(Sec->getName(), Characteristics, Sec->getKind(), + KeySym->getName(), COFF::IMAGE_COMDAT_SELECT_ASSOCIATIVE, UniqueID); } - return getCOFFSection(Sec->getSectionName(), Characteristics, Sec->getKind(), - "", 0, UniqueID); + return getCOFFSection(Sec->getName(), Characteristics, Sec->getKind(), "", 0, + UniqueID); } MCSectionWasm *MCContext::getWasmSection(const Twine &Section, SectionKind K, diff --git a/llvm/lib/MC/MCMachOStreamer.cpp b/llvm/lib/MC/MCMachOStreamer.cpp --- a/llvm/lib/MC/MCMachOStreamer.cpp +++ b/llvm/lib/MC/MCMachOStreamer.cpp @@ -123,7 +123,7 @@ // These sections are created by the assembler itself after the end of // the .s file. StringRef SegName = MSec.getSegmentName(); - StringRef SecName = MSec.getSectionName(); + StringRef SecName = MSec.getName(); if (SegName == "__LD" && SecName == "__compact_unwind") return true; diff --git a/llvm/lib/MC/MCParser/COFFAsmParser.cpp b/llvm/lib/MC/MCParser/COFFAsmParser.cpp --- a/llvm/lib/MC/MCParser/COFFAsmParser.cpp +++ b/llvm/lib/MC/MCParser/COFFAsmParser.cpp @@ -591,8 +591,8 @@ return Error(Loc, "cannot make section associative with .linkonce"); if (Current->getCharacteristics() & COFF::IMAGE_SCN_LNK_COMDAT) - return Error(Loc, Twine("section '") + Current->getSectionName() + - "' is already linkonce"); + return Error(Loc, Twine("section '") + Current->getName() + + "' is already linkonce"); Current->setSelection(Type); diff --git a/llvm/lib/MC/MCSectionCOFF.cpp b/llvm/lib/MC/MCSectionCOFF.cpp --- a/llvm/lib/MC/MCSectionCOFF.cpp +++ b/llvm/lib/MC/MCSectionCOFF.cpp @@ -39,11 +39,11 @@ const MCExpr *Subsection) const { // standard sections don't require the '.section' if (ShouldOmitSectionDirective(SectionName, MAI)) { - OS << '\t' << getSectionName() << '\n'; + OS << '\t' << getName() << '\n'; return; } - OS << "\t.section\t" << getSectionName() << ",\""; + OS << "\t.section\t" << getName() << ",\""; if (getCharacteristics() & COFF::IMAGE_SCN_CNT_INITIALIZED_DATA) OS << 'd'; if (getCharacteristics() & COFF::IMAGE_SCN_CNT_UNINITIALIZED_DATA) diff --git a/llvm/lib/MC/MCSectionELF.cpp b/llvm/lib/MC/MCSectionELF.cpp --- a/llvm/lib/MC/MCSectionELF.cpp +++ b/llvm/lib/MC/MCSectionELF.cpp @@ -54,7 +54,7 @@ raw_ostream &OS, const MCExpr *Subsection) const { if (ShouldOmitSectionDirective(SectionName, MAI)) { - OS << '\t' << getSectionName(); + OS << '\t' << getName(); if (Subsection) { OS << '\t'; Subsection->print(OS, &MAI); @@ -64,7 +64,7 @@ } OS << "\t.section\t"; - printName(OS, getSectionName()); + printName(OS, getName()); // Handle the weird solaris syntax if desired. if (MAI.usesSunStyleELFSectionSwitchSyntax() && @@ -158,7 +158,7 @@ OS << "llvm_sympart"; else report_fatal_error("unsupported type 0x" + Twine::utohexstr(Type) + - " for section " + getSectionName()); + " for section " + getName()); if (EntrySize) { assert(Flags & ELF::SHF_MERGE); diff --git a/llvm/lib/MC/MCSectionMachO.cpp b/llvm/lib/MC/MCSectionMachO.cpp --- a/llvm/lib/MC/MCSectionMachO.cpp +++ b/llvm/lib/MC/MCSectionMachO.cpp @@ -103,7 +103,7 @@ void MCSectionMachO::PrintSwitchToSection(const MCAsmInfo &MAI, const Triple &T, raw_ostream &OS, const MCExpr *Subsection) const { - OS << "\t.section\t" << getSegmentName() << ',' << getSectionName(); + OS << "\t.section\t" << getSegmentName() << ',' << getName(); // Get the section type and attributes. unsigned TAA = getTypeAndAttributes(); diff --git a/llvm/lib/MC/MCSectionWasm.cpp b/llvm/lib/MC/MCSectionWasm.cpp --- a/llvm/lib/MC/MCSectionWasm.cpp +++ b/llvm/lib/MC/MCSectionWasm.cpp @@ -49,7 +49,7 @@ const MCExpr *Subsection) const { if (shouldOmitSectionDirective(SectionName, MAI)) { - OS << '\t' << getSectionName(); + OS << '\t' << getName(); if (Subsection) { OS << '\t'; Subsection->print(OS, &MAI); @@ -59,7 +59,7 @@ } OS << "\t.section\t"; - printName(OS, getSectionName()); + printName(OS, getName()); OS << ",\""; if (IsPassive) diff --git a/llvm/lib/MC/MCStreamer.cpp b/llvm/lib/MC/MCStreamer.cpp --- a/llvm/lib/MC/MCStreamer.cpp +++ b/llvm/lib/MC/MCStreamer.cpp @@ -779,10 +779,9 @@ // GCC does, which is to make plain comdat selectany section named like // ".[px]data$_Z3foov". if (!Context.getAsmInfo()->hasCOFFAssociativeComdats()) { - std::string SectionName = - (MainCFISecCOFF->getSectionName() + "$" + - TextSecCOFF->getSectionName().split('$').second) - .str(); + std::string SectionName = (MainCFISecCOFF->getName() + "$" + + TextSecCOFF->getName().split('$').second) + .str(); return Context.getCOFFSection( SectionName, MainCFISecCOFF->getCharacteristics() | COFF::IMAGE_SCN_LNK_COMDAT, diff --git a/llvm/lib/MC/MachObjectWriter.cpp b/llvm/lib/MC/MachObjectWriter.cpp --- a/llvm/lib/MC/MachObjectWriter.cpp +++ b/llvm/lib/MC/MachObjectWriter.cpp @@ -231,7 +231,7 @@ uint64_t Start = W.OS.tell(); (void) Start; - writeWithPadding(Section.getSectionName(), 16); + writeWithPadding(Section.getName(), 16); writeWithPadding(Section.getSegmentName(), 16); if (is64Bit()) { W.write(VMAddr); // address diff --git a/llvm/lib/MC/WasmObjectWriter.cpp b/llvm/lib/MC/WasmObjectWriter.cpp --- a/llvm/lib/MC/WasmObjectWriter.cpp +++ b/llvm/lib/MC/WasmObjectWriter.cpp @@ -152,7 +152,7 @@ void print(raw_ostream &Out) const { Out << wasm::relocTypetoString(Type) << " Off=" << Offset << ", Sym=" << *Symbol << ", Addend=" << Addend - << ", FixupSection=" << FixupSection->getSectionName(); + << ", FixupSection=" << FixupSection->getName(); } #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) @@ -417,7 +417,7 @@ auto Pair = SectionFunctions.insert(std::make_pair(&Sec, &S)); if (!Pair.second) report_fatal_error("section already has a defining function: " + - Sec.getSectionName()); + Sec.getName()); } } } @@ -453,7 +453,7 @@ const auto *SymA = cast(&RefA->getSymbol()); // The .init_array isn't translated as data, so don't do relocations in it. - if (FixupSection.getSectionName().startswith(".init_array")) { + if (FixupSection.getName().startswith(".init_array")) { SymA->setUsedInInitArray(); return; } @@ -587,7 +587,7 @@ static void addData(SmallVectorImpl &DataBytes, MCSectionWasm &DataSection) { - LLVM_DEBUG(errs() << "addData: " << DataSection.getSectionName() << "\n"); + LLVM_DEBUG(errs() << "addData: " << DataSection.getName() << "\n"); DataBytes.resize(alignTo(DataBytes.size(), DataSection.getAlignment())); @@ -1216,7 +1216,7 @@ // populating DataLocations. for (MCSection &Sec : Asm) { auto &Section = static_cast(Sec); - StringRef SectionName = Section.getSectionName(); + StringRef SectionName = Section.getName(); // .init_array sections are handled specially elsewhere. if (SectionName.startswith(".init_array")) @@ -1508,9 +1508,9 @@ // Translate .init_array section contents into start functions. for (const MCSection &S : Asm) { const auto &WS = static_cast(S); - if (WS.getSectionName().startswith(".fini_array")) + if (WS.getName().startswith(".fini_array")) report_fatal_error(".fini_array sections are unsupported"); - if (!WS.getSectionName().startswith(".init_array")) + if (!WS.getName().startswith(".init_array")) continue; if (WS.getFragmentList().empty()) continue; @@ -1537,13 +1537,11 @@ uint16_t Priority = UINT16_MAX; unsigned PrefixLength = strlen(".init_array"); - if (WS.getSectionName().size() > PrefixLength) { - if (WS.getSectionName()[PrefixLength] != '.') + if (WS.getName().size() > PrefixLength) { + if (WS.getName()[PrefixLength] != '.') report_fatal_error( ".init_array section priority should start with '.'"); - if (WS.getSectionName() - .substr(PrefixLength + 1) - .getAsInteger(10, Priority)) + if (WS.getName().substr(PrefixLength + 1).getAsInteger(10, Priority)) report_fatal_error("invalid .init_array section priority"); } const auto &DataFrag = cast(Frag); diff --git a/llvm/lib/MC/WinCOFFObjectWriter.cpp b/llvm/lib/MC/WinCOFFObjectWriter.cpp --- a/llvm/lib/MC/WinCOFFObjectWriter.cpp +++ b/llvm/lib/MC/WinCOFFObjectWriter.cpp @@ -298,8 +298,8 @@ /// This function takes a section data object from the assembler /// and creates the associated COFF section staging object. void WinCOFFObjectWriter::defineSection(const MCSectionCOFF &MCSec) { - COFFSection *Section = createSection(MCSec.getSectionName()); - COFFSymbol *Symbol = createSymbol(MCSec.getSectionName()); + COFFSection *Section = createSection(MCSec.getName()); + COFFSymbol *Symbol = createSymbol(MCSec.getName()); Section->Symbol = Symbol; Symbol->Section = Section; Symbol->Data.StorageClass = COFF::IMAGE_SYM_CLASS_STATIC; @@ -1063,7 +1063,7 @@ // without a section. if (!AssocMCSym->isInSection()) { Asm.getContext().reportError( - SMLoc(), Twine("cannot make section ") + MCSec.getSectionName() + + SMLoc(), Twine("cannot make section ") + MCSec.getName() + Twine(" associative with sectionless symbol ") + AssocMCSym->getName()); continue; diff --git a/llvm/lib/MC/XCOFFObjectWriter.cpp b/llvm/lib/MC/XCOFFObjectWriter.cpp --- a/llvm/lib/MC/XCOFFObjectWriter.cpp +++ b/llvm/lib/MC/XCOFFObjectWriter.cpp @@ -80,7 +80,7 @@ SmallVector Syms; SmallVector Relocations; - StringRef getName() const { return MCCsect->getSectionName(); } + StringRef getName() const { return MCCsect->getName(); } ControlSection(const MCSectionXCOFF *MCSec) : MCCsect(MCSec), SymbolTableIndex(-1), Address(-1), Size(0) {} }; @@ -333,8 +333,8 @@ // If the name does not fit in the storage provided in the symbol table // entry, add it to the string table. - if (nameShouldBeInStringTable(MCSec->getSectionName())) - Strings.add(MCSec->getSectionName()); + if (nameShouldBeInStringTable(MCSec->getName())) + Strings.add(MCSec->getName()); CsectGroup &Group = getCsectGroup(MCSec); Group.emplace_back(MCSec); diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp --- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp +++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp @@ -139,7 +139,7 @@ return false; if (RefSec.getSegmentName() == "__DATA" && - RefSec.getSectionName() == "__objc_classrefs") + RefSec.getName() == "__objc_classrefs") return false; // FIXME: ld64 currently handles internal pointer-sized relocations diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp --- a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp +++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp @@ -1194,7 +1194,7 @@ static_cast(Fn.getSection()); // Create the name for new section - StringRef FnSecName(FnSection.getSectionName()); + StringRef FnSecName(FnSection.getName()); SmallString<128> EHSecName(Prefix); if (FnSecName != ".text") { EHSecName += FnSecName; diff --git a/llvm/lib/Target/BPF/BTFDebug.cpp b/llvm/lib/Target/BPF/BTFDebug.cpp --- a/llvm/lib/Target/BPF/BTFDebug.cpp +++ b/llvm/lib/Target/BPF/BTFDebug.cpp @@ -915,7 +915,7 @@ MCSection &Section = FuncLabel->getSection(); const MCSectionELF *SectionELF = dyn_cast(&Section); assert(SectionELF && "Null section for Function Label"); - SecNameOff = addString(SectionELF->getSectionName()); + SecNameOff = addString(SectionELF->getName()); } else { SecNameOff = addString(".text"); }