From e0fd567df0c8b140f2da7a1f0e7114454b6634c2 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Thu, 23 Jan 2014 22:49:25 +0000 Subject: Remove duplicated info on what .text, .data and .bss look like. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199951 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/MC/MCELFStreamer.h | 3 --- lib/CodeGen/LLVMTargetMachine.cpp | 1 - lib/MC/MCELFStreamer.cpp | 22 ++++------------------ lib/MC/MCMachOStreamer.cpp | 10 +++------- lib/MC/WinCOFFStreamer.cpp | 24 ++++++++---------------- 5 files changed, 15 insertions(+), 45 deletions(-) diff --git a/include/llvm/MC/MCELFStreamer.h b/include/llvm/MC/MCELFStreamer.h index 4e24dcfacd..72b7075c6f 100644 --- a/include/llvm/MC/MCELFStreamer.h +++ b/include/llvm/MC/MCELFStreamer.h @@ -108,9 +108,6 @@ private: SmallPtrSet BindingExplicitlySet; - - void SetSection(StringRef Section, unsigned Type, unsigned Flags, - SectionKind Kind); void SetSectionData(); void SetSectionText(); void SetSectionBss(); diff --git a/lib/CodeGen/LLVMTargetMachine.cpp b/lib/CodeGen/LLVMTargetMachine.cpp index 27a4022ff7..2a92e2312a 100644 --- a/lib/CodeGen/LLVMTargetMachine.cpp +++ b/lib/CodeGen/LLVMTargetMachine.cpp @@ -283,7 +283,6 @@ bool LLVMTargetMachine::addPassesToEmitMC(PassManagerBase &PM, *MAB, Out, MCE, hasMCRelaxAll(), hasMCNoExecStack())); - AsmStreamer.get()->InitSections(); // Create the AsmPrinter, which takes ownership of AsmStreamer if successful. FunctionPass *Printer = getTarget().createAsmPrinter(*this, *AsmStreamer); diff --git a/lib/MC/MCELFStreamer.cpp b/lib/MC/MCELFStreamer.cpp index 180a58cf6d..5fbbdd4b3e 100644 --- a/lib/MC/MCELFStreamer.cpp +++ b/lib/MC/MCELFStreamer.cpp @@ -22,6 +22,7 @@ #include "llvm/MC/MCELFSymbolFlags.h" #include "llvm/MC/MCExpr.h" #include "llvm/MC/MCInst.h" +#include "llvm/MC/MCObjectFileInfo.h" #include "llvm/MC/MCObjectStreamer.h" #include "llvm/MC/MCSection.h" #include "llvm/MC/MCSectionELF.h" @@ -34,33 +35,18 @@ using namespace llvm; - -inline void MCELFStreamer::SetSection(StringRef Section, unsigned Type, - unsigned Flags, SectionKind Kind) { - SwitchSection(getContext().getELFSection(Section, Type, Flags, Kind)); -} - inline void MCELFStreamer::SetSectionData() { - SetSection(".data", - ELF::SHT_PROGBITS, - ELF::SHF_WRITE | ELF::SHF_ALLOC, - SectionKind::getDataRel()); + SwitchSection(getContext().getObjectFileInfo()->getDataSection()); EmitCodeAlignment(4, 0); } inline void MCELFStreamer::SetSectionText() { - SetSection(".text", - ELF::SHT_PROGBITS, - ELF::SHF_EXECINSTR | ELF::SHF_ALLOC, - SectionKind::getText()); + SwitchSection(getContext().getObjectFileInfo()->getTextSection()); EmitCodeAlignment(4, 0); } inline void MCELFStreamer::SetSectionBss() { - SetSection(".bss", - ELF::SHT_NOBITS, - ELF::SHF_WRITE | ELF::SHF_ALLOC, - SectionKind::getBSS()); + SwitchSection(getContext().getObjectFileInfo()->getBSSSection()); EmitCodeAlignment(4, 0); } diff --git a/lib/MC/MCMachOStreamer.cpp b/lib/MC/MCMachOStreamer.cpp index 2924dcd876..6fe4663766 100644 --- a/lib/MC/MCMachOStreamer.cpp +++ b/lib/MC/MCMachOStreamer.cpp @@ -16,6 +16,7 @@ #include "llvm/MC/MCExpr.h" #include "llvm/MC/MCInst.h" #include "llvm/MC/MCMachOSymbolFlags.h" +#include "llvm/MC/MCObjectFileInfo.h" #include "llvm/MC/MCObjectStreamer.h" #include "llvm/MC/MCSection.h" #include "llvm/MC/MCSectionMachO.h" @@ -99,10 +100,7 @@ void MCMachOStreamer::InitSections() { } void MCMachOStreamer::InitToTextSection() { - SwitchSection(getContext().getMachOSection( - "__TEXT", "__text", - MCSectionMachO::S_ATTR_PURE_INSTRUCTIONS, 0, - SectionKind::getText())); + SwitchSection(getContext().getObjectFileInfo()->getTextSection()); } void MCMachOStreamer::EmitEHSymAttributes(const MCSymbol *Symbol, @@ -335,9 +333,7 @@ void MCMachOStreamer::EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size, void MCMachOStreamer::EmitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size, unsigned ByteAlignment) { // '.lcomm' is equivalent to '.zerofill'. - return EmitZerofill(getContext().getMachOSection("__DATA", "__bss", - MCSectionMachO::S_ZEROFILL, - 0, SectionKind::getBSS()), + return EmitZerofill(getContext().getObjectFileInfo()->getDataBSSSection(), Symbol, Size, ByteAlignment); } diff --git a/lib/MC/WinCOFFStreamer.cpp b/lib/MC/WinCOFFStreamer.cpp index cb4e9b1c37..b7d5574145 100644 --- a/lib/MC/WinCOFFStreamer.cpp +++ b/lib/MC/WinCOFFStreamer.cpp @@ -20,6 +20,7 @@ #include "llvm/MC/MCCodeEmitter.h" #include "llvm/MC/MCContext.h" #include "llvm/MC/MCExpr.h" +#include "llvm/MC/MCObjectFileInfo.h" #include "llvm/MC/MCObjectStreamer.h" #include "llvm/MC/MCSection.h" #include "llvm/MC/MCSectionCOFF.h" @@ -95,25 +96,16 @@ private: DF->getContents().append(Code.begin(), Code.end()); } - const MCSectionCOFF *getSectionText() { - return getContext().getCOFFSection( - ".text", COFF::IMAGE_SCN_CNT_CODE | COFF::IMAGE_SCN_MEM_EXECUTE | - COFF::IMAGE_SCN_MEM_READ, - SectionKind::getText()); + const MCSection *getSectionText() { + return getContext().getObjectFileInfo()->getTextSection(); } - const MCSectionCOFF *getSectionData() { - return getContext().getCOFFSection( - ".data", COFF::IMAGE_SCN_CNT_INITIALIZED_DATA | - COFF::IMAGE_SCN_MEM_READ | COFF::IMAGE_SCN_MEM_WRITE, - SectionKind::getDataRel()); + const MCSection *getSectionData() { + return getContext().getObjectFileInfo()->getDataSection(); } - const MCSectionCOFF *getSectionBSS() { - return getContext().getCOFFSection( - ".bss", COFF::IMAGE_SCN_CNT_UNINITIALIZED_DATA | - COFF::IMAGE_SCN_MEM_READ | COFF::IMAGE_SCN_MEM_WRITE, - SectionKind::getBSS()); + const MCSection *getSectionBSS() { + return getContext().getObjectFileInfo()->getBSSSection(); } void SetSectionText() { @@ -141,7 +133,7 @@ void WinCOFFStreamer::AddCommonSymbol(MCSymbol *Symbol, uint64_t Size, unsigned ByteAlignment, bool External) { assert(!Symbol->isInSection() && "Symbol must not already have a section!"); - const MCSectionCOFF *Section = getSectionBSS(); + const MCSection *Section = getSectionBSS(); MCSectionData &SectionData = getAssembler().getOrCreateSectionData(*Section); if (SectionData.getAlignment() < ByteAlignment) SectionData.setAlignment(ByteAlignment); -- cgit v1.2.3