Fix an issue in some Thumb fixups, where the effective PC address needs to be 4-byte...
[oota-llvm.git] / lib / MC / MCDwarf.cpp
index 1b1d50970420d6338d98a47408110cee682f76be..3e10f9502dbe8dd47b5126d27eea2f962038e398 100644 (file)
@@ -213,15 +213,8 @@ void MCDwarfFileTable::Emit(MCStreamer *MCOS,
 
   // The first 4 bytes is the total length of the information for this
   // compilation unit (not including these 4 bytes for the length).
-  // FIXME: We create the dummy TotalLength variable because LineEndSym points
-  // to the end of the section and the darwin assembler doesn't consider that
-  // difference an assembly time constant. It might be better for this to be
-  // proected by a flag.
-  MCSymbol *TotalLength = MCOS->getContext().CreateTempSymbol();
-  MCOS->EmitAssignment(TotalLength,
-                      MakeStartMinusEndExpr(MCOS, LineStartSym, LineEndSym,
-                                            4));
-  MCOS->EmitSymbolValue(TotalLength, 4, 0);
+  MCOS->EmitAbsValue(MakeStartMinusEndExpr(MCOS, LineStartSym, LineEndSym,4),
+                     4);
 
   // Next 2 bytes is the Version, which is Dwarf 2.
   MCOS->EmitIntValue(2, 2);
@@ -233,7 +226,7 @@ void MCDwarfFileTable::Emit(MCStreamer *MCOS,
   // section to the end of the prologue.  Not including the 4 bytes for the
   // total length, the 2 bytes for the version, and these 4 bytes for the
   // length of the prologue.
-  MCOS->EmitValue(MakeStartMinusEndExpr(MCOS, LineStartSym, ProEndSym,
+  MCOS->EmitAbsValue(MakeStartMinusEndExpr(MCOS, LineStartSym, ProEndSym,
                                         (4 + 2 + 4)),
                   4, 0);
 
@@ -320,14 +313,6 @@ void MCDwarfFileTable::Emit(MCStreamer *MCOS,
   MCOS->EmitLabel(LineEndSym);
 }
 
-/// Utility function to compute the size of the encoding.
-uint64_t MCDwarfLineAddr::ComputeSize(int64_t LineDelta, uint64_t AddrDelta) {
-  SmallString<256> Tmp;
-  raw_svector_ostream OS(Tmp);
-  MCDwarfLineAddr::Encode(LineDelta, AddrDelta, OS);
-  return OS.GetNumBytesInBuffer();
-}
-
 /// Utility function to write the encoding to an object writer.
 void MCDwarfLineAddr::Write(MCObjectWriter *OW, int64_t LineDelta,
                             uint64_t AddrDelta) {