diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2013-11-25 16:00:32 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2013-11-25 16:00:32 +0000 |
commit | 3294e05762d478451e76ad566301b275ec4307cb (patch) | |
tree | 10a7aca4dd3890a2e37156c24493c7b4ee4d0394 /llvm/lib/MC/WinCOFFStreamer.cpp | |
parent | 5170bca73c2f7139fc28a7e3cecd4dadf0b61643 (diff) | |
download | bcm5719-llvm-3294e05762d478451e76ad566301b275ec4307cb.tar.gz bcm5719-llvm-3294e05762d478451e76ad566301b275ec4307cb.zip |
Refactor to make the .bss, .data and .text sections available for other uses.
No functionality change.
llvm-svn: 195653
Diffstat (limited to 'llvm/lib/MC/WinCOFFStreamer.cpp')
-rw-r--r-- | llvm/lib/MC/WinCOFFStreamer.cpp | 41 |
1 files changed, 22 insertions, 19 deletions
diff --git a/llvm/lib/MC/WinCOFFStreamer.cpp b/llvm/lib/MC/WinCOFFStreamer.cpp index 7fc114cbff8..0c205e50709 100644 --- a/llvm/lib/MC/WinCOFFStreamer.cpp +++ b/llvm/lib/MC/WinCOFFStreamer.cpp @@ -94,36 +94,39 @@ private: DF->getContents().append(Code.begin(), Code.end()); } - void SetSection(StringRef Section, - unsigned Characteristics, - SectionKind Kind) { - SwitchSection(getContext().getCOFFSection(Section, Characteristics, Kind)); + 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 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 MCSectionCOFF *getSectionBSS() { + return getContext().getCOFFSection( + ".bss", COFF::IMAGE_SCN_CNT_UNINITIALIZED_DATA | + COFF::IMAGE_SCN_MEM_READ | COFF::IMAGE_SCN_MEM_WRITE, + SectionKind::getBSS()); } void SetSectionText() { - SetSection(".text", - COFF::IMAGE_SCN_CNT_CODE - | COFF::IMAGE_SCN_MEM_EXECUTE - | COFF::IMAGE_SCN_MEM_READ, - SectionKind::getText()); + SwitchSection(getSectionText()); EmitCodeAlignment(4, 0); } void SetSectionData() { - SetSection(".data", - COFF::IMAGE_SCN_CNT_INITIALIZED_DATA - | COFF::IMAGE_SCN_MEM_READ - | COFF::IMAGE_SCN_MEM_WRITE, - SectionKind::getDataRel()); + SwitchSection(getSectionData()); EmitCodeAlignment(4, 0); } void SetSectionBSS() { - SetSection(".bss", - COFF::IMAGE_SCN_CNT_UNINITIALIZED_DATA - | COFF::IMAGE_SCN_MEM_READ - | COFF::IMAGE_SCN_MEM_WRITE, - SectionKind::getBSS()); + SwitchSection(getSectionBSS()); EmitCodeAlignment(4, 0); } }; |