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 | e308c0cd0d305801f447114e509c8a75bebbd299 (patch) | |
| tree | 442a8adb28d371728c62b6f576e742e0a00a9d60 /llvm/lib/MC | |
| parent | d32e28c87a91b038cf4d3860e29e741566d7a66f (diff) | |
| download | bcm5719-llvm-e308c0cd0d305801f447114e509c8a75bebbd299.tar.gz bcm5719-llvm-e308c0cd0d305801f447114e509c8a75bebbd299.zip | |
Remove duplicated info on what .text, .data and .bss look like.
llvm-svn: 199951
Diffstat (limited to 'llvm/lib/MC')
| -rw-r--r-- | llvm/lib/MC/MCELFStreamer.cpp | 22 | ||||
| -rw-r--r-- | llvm/lib/MC/MCMachOStreamer.cpp | 10 | ||||
| -rw-r--r-- | llvm/lib/MC/WinCOFFStreamer.cpp | 24 |
3 files changed, 15 insertions, 41 deletions
diff --git a/llvm/lib/MC/MCELFStreamer.cpp b/llvm/lib/MC/MCELFStreamer.cpp index 180a58cf6d1..5fbbdd4b3e9 100644 --- a/llvm/lib/MC/MCELFStreamer.cpp +++ b/llvm/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/llvm/lib/MC/MCMachOStreamer.cpp b/llvm/lib/MC/MCMachOStreamer.cpp index 2924dcd8763..6fe46637667 100644 --- a/llvm/lib/MC/MCMachOStreamer.cpp +++ b/llvm/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/llvm/lib/MC/WinCOFFStreamer.cpp b/llvm/lib/MC/WinCOFFStreamer.cpp index cb4e9b1c37b..b7d55741456 100644 --- a/llvm/lib/MC/WinCOFFStreamer.cpp +++ b/llvm/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); |

