diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2011-05-10 13:39:48 +0000 |
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2011-05-10 13:39:48 +0000 |
| commit | ec53aa948547dae24e7efa6c604f530c2f13b16a (patch) | |
| tree | 0600f7bf19ac64c5115c481993a67a3d89f1068b /llvm | |
| parent | 72d74e4606c63538795507fd622e09e0205226d8 (diff) | |
| download | bcm5719-llvm-ec53aa948547dae24e7efa6c604f530c2f13b16a.tar.gz bcm5719-llvm-ec53aa948547dae24e7efa6c604f530c2f13b16a.zip | |
Add CFIStartSections to the asm printer. Add an assert that at least
one of the sections is created.
llvm-svn: 131124
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/MC/MCAsmStreamer.cpp | 19 | ||||
| -rw-r--r-- | llvm/lib/MC/MCStreamer.cpp | 1 |
2 files changed, 20 insertions, 0 deletions
diff --git a/llvm/lib/MC/MCAsmStreamer.cpp b/llvm/lib/MC/MCAsmStreamer.cpp index c7fc190b876..603ae837b6d 100644 --- a/llvm/lib/MC/MCAsmStreamer.cpp +++ b/llvm/lib/MC/MCAsmStreamer.cpp @@ -193,6 +193,7 @@ public: unsigned Isa, unsigned Discriminator, StringRef FileName); + virtual void EmitCFISections(bool EH, bool Debug); virtual void EmitCFIStartProc(); virtual void EmitCFIEndProc(); virtual void EmitCFIDefCfa(int64_t Register, int64_t Offset); @@ -764,6 +765,24 @@ void MCAsmStreamer::EmitDwarfLocDirective(unsigned FileNo, unsigned Line, EmitEOL(); } +void MCAsmStreamer::EmitCFISections(bool EH, bool Debug) { + MCStreamer::EmitCFISections(EH, Debug); + + if (!UseCFI) + return; + + OS << "\t.cfi_sections "; + if (EH) { + OS << ".eh_frame"; + if (Debug) + OS << ", .debug_frame"; + } else if (Debug) { + OS << ".debug_frame"; + } + + EmitEOL(); +} + void MCAsmStreamer::EmitCFIStartProc() { MCStreamer::EmitCFIStartProc(); diff --git a/llvm/lib/MC/MCStreamer.cpp b/llvm/lib/MC/MCStreamer.cpp index 689e408a1a0..9b644a91bd9 100644 --- a/llvm/lib/MC/MCStreamer.cpp +++ b/llvm/lib/MC/MCStreamer.cpp @@ -178,6 +178,7 @@ void MCStreamer::EmitLabel(MCSymbol *Symbol) { } void MCStreamer::EmitCFISections(bool EH, bool Debug) { + assert(EH || Debug); EmitEHFrame = EH; EmitDebugFrame = Debug; } |

