[llvm-commits] [llvm] r134115 - /llvm/trunk/lib/MC/MCDwarf.cpp

Bill Wendling isanbard at gmail.com
Wed Jun 29 16:49:13 PDT 2011


Author: void
Date: Wed Jun 29 18:49:12 2011
New Revision: 134115

URL: http://llvm.org/viewvc/llvm-project?rev=134115&view=rev
Log:
We don't want to use relocations inside the compact unwind section. Just use the
symbols instead.

Modified:
    llvm/trunk/lib/MC/MCDwarf.cpp

Modified: llvm/trunk/lib/MC/MCDwarf.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCDwarf.cpp?rev=134115&r1=134114&r2=134115&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCDwarf.cpp (original)
+++ llvm/trunk/lib/MC/MCDwarf.cpp Wed Jun 29 18:49:12 2011
@@ -637,9 +637,6 @@
   const TargetAsmInfo &TAI = Context.getTargetAsmInfo();
   Streamer.SwitchSection(TAI.getCompactUnwindSection());
 
-  unsigned FDEEncoding = TAI.getFDEEncoding(UsingCFI);
-  unsigned Size = getSizeForEncoding(Streamer, FDEEncoding);
-
   // range-start range-length  compact-unwind-enc personality-func   lsda
   //  _foo       LfooEnd-_foo  0x00000023          0                 0
   //  _bar       LbarEnd-_bar  0x00000025         __gxx_personality  except_tab1
@@ -663,13 +660,31 @@
   //   .quad except_tab1
 
   // Range Start
-  EmitSymbol(Streamer, *Frame.Begin, FDEEncoding);
+  unsigned FDEEncoding = TAI.getFDEEncoding(UsingCFI);
+  unsigned Size = getSizeForEncoding(Streamer, FDEEncoding);
+  Streamer.EmitSymbolValue(Frame.Function, Size);
 
   // Range Length
   const MCExpr *Range = MakeStartMinusEndExpr(Streamer, *Frame.Begin,
                                               *Frame.End, 0);
   Streamer.EmitAbsValue(Range, Size);
 
+  // Personality Function
+  if (Frame.Personality) {
+    Size = getSizeForEncoding(Streamer, Frame.PersonalityEncoding);
+    Streamer.EmitSymbolValue(Frame.Personality, Size);
+  } else {
+    Streamer.EmitIntValue(Frame.PersonalityEncoding, 0); // No personality fn
+  }
+
+  // LSDA
+  if (Frame.Lsda) {
+    Size = getSizeForEncoding(Streamer, Frame.LsdaEncoding);
+    Streamer.EmitSymbolValue(Frame.Lsda, Size);
+  } else {
+    Streamer.EmitIntValue(Frame.LsdaEncoding, 0); // No LSDA
+  }
+
   return true;
 #endif
 }





More information about the llvm-commits mailing list