Add CFIStartSections to the asm printer. Add an assert that at least
authorRafael Espindola <rafael.espindola@gmail.com>
Tue, 10 May 2011 13:39:48 +0000 (13:39 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Tue, 10 May 2011 13:39:48 +0000 (13:39 +0000)
one of the sections is created.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131124 91177308-0d34-0410-b5e6-96231b3b80d8

lib/MC/MCAsmStreamer.cpp
lib/MC/MCStreamer.cpp

index c7fc190b87608549d98e126c0afd5dc8520680e7..603ae837b6deb51a3da569b1725c15f915315571 100644 (file)
@@ -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();
 
index 689e408a1a04b564e5217c8f2024a460b63b9a50..9b644a91bd9d4a754cbd40e90169825d848caa0d 100644 (file)
@@ -178,6 +178,7 @@ void MCStreamer::EmitLabel(MCSymbol *Symbol) {
 }
 
 void MCStreamer::EmitCFISections(bool EH, bool Debug) {
+  assert(EH || Debug);
   EmitEHFrame = EH;
   EmitDebugFrame = Debug;
 }