[llvm-commits] [llvm] r118962 - in /llvm/trunk: lib/MC/MCDwarf.cpp test/MC/ELF/debug-loc.s

Rafael Espindola rafael.espindola at gmail.com
Fri Nov 12 17:06:27 PST 2010


Author: rafael
Date: Fri Nov 12 19:06:27 2010
New Revision: 118962

URL: http://llvm.org/viewvc/llvm-project?rev=118962&view=rev
Log:
Fix the encoding of negative line deltas.

Added:
    llvm/trunk/test/MC/ELF/debug-loc.s
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=118962&r1=118961&r2=118962&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCDwarf.cpp (original)
+++ llvm/trunk/lib/MC/MCDwarf.cpp Fri Nov 12 19:06:27 2010
@@ -179,7 +179,7 @@
     if (it->getFlags() & DWARF2_FLAG_EPILOGUE_BEGIN)
       MCOS->EmitIntValue(dwarf::DW_LNS_set_epilogue_begin, 1);
 
-    int64_t LineDelta = it->getLine() - LastLine;
+    int64_t LineDelta = static_cast<int64_t>(it->getLine()) - LastLine;
     MCSymbol *Label = it->getLabel();
 
     // At this point we want to emit/create the sequence to encode the delta in

Added: llvm/trunk/test/MC/ELF/debug-loc.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ELF/debug-loc.s?rev=118962&view=auto
==============================================================================
--- llvm/trunk/test/MC/ELF/debug-loc.s (added)
+++ llvm/trunk/test/MC/ELF/debug-loc.s Fri Nov 12 19:06:27 2010
@@ -0,0 +1,32 @@
+// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump  | FileCheck %s
+
+// Test that we don't regress on the size of the line info section. We used
+// to handle negative line diffs incorrectly which manifested as very
+// large integers being passed to DW_LNS_advance_line.
+
+// FIXME: This size is the same as gnu as, but we can probably do a bit better.
+// FIXME2: We need a debug_line dumper so that we can test the actual contents.
+
+// CHECK:      # Section 0x00000004
+// CHECK-NEXT: (('sh_name', 0x00000012) # '.debug_line'
+// CHECK-NEXT:  ('sh_type', 0x00000001)
+// CHECK-NEXT:  ('sh_flags', 0x00000000)
+// CHECK-NEXT:  ('sh_addr', 0x00000000)
+// CHECK-NEXT:  ('sh_offset', 0x00000044)
+// CHECK-NEXT:  ('sh_size', 0x0000003d)
+// CHECK-NEXT:  ('sh_link', 0x00000000)
+// CHECK-NEXT:  ('sh_info', 0x00000000)
+// CHECK-NEXT:  ('sh_addralign', 0x00000001)
+// CHECK-NEXT:  ('sh_entsize', 0x00000000)
+// CHECK-NEXT: ),
+
+	.section	.debug_line,"", at progbits
+	.text
+foo:
+	.file 1 "Driver.ii"
+	.loc 1 2 0
+        nop
+	.loc 1 4 0
+        nop
+	.loc 1 3 0
+        nop





More information about the llvm-commits mailing list