diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2014-01-23 22:49:25 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2014-01-23 22:49:25 +0000 |
commit | e0fd567df0c8b140f2da7a1f0e7114454b6634c2 (patch) | |
tree | 0df37b5d4775aa057ff4face6974a05aa9a0f13b /lib/MC | |
parent | 7772f9af13b753296227f380cee14080755250d1 (diff) | |
download | llvm-e0fd567df0c8b140f2da7a1f0e7114454b6634c2.tar.gz llvm-e0fd567df0c8b140f2da7a1f0e7114454b6634c2.tar.bz2 llvm-e0fd567df0c8b140f2da7a1f0e7114454b6634c2.tar.xz |
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
Diffstat (limited to 'lib/MC')
-rw-r--r-- | lib/MC/MCELFStreamer.cpp | 22 | ||||
-rw-r--r-- | lib/MC/MCMachOStreamer.cpp | 10 | ||||
-rw-r--r-- | lib/MC/WinCOFFStreamer.cpp | 24 |
3 files changed, 15 insertions, 41 deletions
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); |