diff options
author | Bob Wilson <bob.wilson@apple.com> | 2009-09-30 22:25:37 +0000 |
---|---|---|
committer | Bob Wilson <bob.wilson@apple.com> | 2009-09-30 22:25:37 +0000 |
commit | 29e066965fb84b3aad2840815c6d0602dafb0b17 (patch) | |
tree | 372c2f7b8a7eb6cddb079bf4b4325727041e25de | |
parent | 812209a58c5520c604bc9279aa069e5ae066e860 (diff) |
Use OutStreamer.SwitchSection instead of writing out textual section directives.
Add a new TargetLoweringObjectFileMachO::getConstTextCoalSection method to
get access to that section.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83178 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Target/TargetLoweringObjectFile.h | 8 | ||||
-rw-r--r-- | lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp | 25 |
2 files changed, 25 insertions, 8 deletions
diff --git a/include/llvm/Target/TargetLoweringObjectFile.h b/include/llvm/Target/TargetLoweringObjectFile.h index 454a0940b9..821e53783c 100644 --- a/include/llvm/Target/TargetLoweringObjectFile.h +++ b/include/llvm/Target/TargetLoweringObjectFile.h @@ -301,11 +301,17 @@ public: SectionKind K) const; /// getTextCoalSection - Return the "__TEXT,__textcoal_nt" section we put weak - /// symbols into. + /// text symbols into. const MCSection *getTextCoalSection() const { return TextCoalSection; } + /// getConstTextCoalSection - Return the "__TEXT,__const_coal" section + /// we put weak read-only symbols into. + const MCSection *getConstTextCoalSection() const { + return ConstTextCoalSection; + } + /// getLazySymbolPointerSection - Return the section corresponding to /// the .lazy_symbol_pointer directive. const MCSection *getLazySymbolPointerSection() const { diff --git a/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp b/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp index b496a810b0..5d14a9b4d3 100644 --- a/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp +++ b/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp @@ -1053,13 +1053,24 @@ void ARMAsmPrinter::EmitStartOfAsmFile(Module &M) { // avoid out-of-range branches that are due a fundamental limitation of // the way symbol offsets are encoded with the current Darwin ARM // relocations. - O << "\t.section __TEXT,__text,regular\n" - << "\t.section __TEXT,__textcoal_nt,coalesced\n" - << "\t.section __TEXT,__const_coal,coalesced\n"; - if (RelocM == Reloc::DynamicNoPIC) - O << "\t.section __TEXT,__symbol_stub4,symbol_stubs,none,12\n"; - else - O << "\t.section __TEXT,__picsymbolstub4,symbol_stubs,none,16\n"; + TargetLoweringObjectFileMachO &TLOFMacho = + static_cast<TargetLoweringObjectFileMachO &>(getObjFileLowering()); + OutStreamer.SwitchSection(TLOFMacho.getTextSection()); + OutStreamer.SwitchSection(TLOFMacho.getTextCoalSection()); + OutStreamer.SwitchSection(TLOFMacho.getConstTextCoalSection()); + if (RelocM == Reloc::DynamicNoPIC) { + const MCSection *sect = + TLOFMacho.getMachOSection("__TEXT", "__symbol_stub4", + MCSectionMachO::S_SYMBOL_STUBS, + 12, SectionKind::getText()); + OutStreamer.SwitchSection(sect); + } else { + const MCSection *sect = + TLOFMacho.getMachOSection("__TEXT", "__picsymbolstub4", + MCSectionMachO::S_SYMBOL_STUBS, + 16, SectionKind::getText()); + OutStreamer.SwitchSection(sect); + } } } |