[llvm] r289925 - Update .debug_line section version information to match DWARF version.
Ekaterina Romanova via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 15 21:10:11 PST 2016
Author: kromanova
Date: Thu Dec 15 23:10:11 2016
New Revision: 289925
URL: http://llvm.org/viewvc/llvm-project?rev=289925&view=rev
Log:
Update .debug_line section version information to match DWARF version.
One more attempt to re-commit the patch r285355, which I had to revert in r285362, because some tests were failing (the reason is because the size of the line_table varied depending on the full file name).
In the past the compiler always emitted .debug_line version 2, though some opcodes from DWARF 3 (e.g. DW_LNS_set_prologue_end, DW_LNS_set_epilogue_begin or DW_LNS_set_isa) and from DWARF 4 could be emitted by the compiler.
This patch changes version information of .debug_line to exactly match the DWARF version. For .debug_line version 4, a new field maximum_operations_per_instruction is emitted.
Differential Revision: https://reviews.llvm.org/D16697
Added:
llvm/trunk/test/DebugInfo/X86/debug-line-version.s
Modified:
llvm/trunk/lib/MC/MCDwarf.cpp
llvm/trunk/test/DebugInfo/AArch64/line-header.ll
llvm/trunk/test/DebugInfo/Generic/empty.ll
llvm/trunk/test/DebugInfo/X86/empty.ll
llvm/trunk/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll
llvm/trunk/test/MC/ELF/debug-line.s
llvm/trunk/test/MC/ELF/debug-line2.s
llvm/trunk/test/MC/ELF/debug-loc.s
llvm/trunk/test/MC/ELF/discriminator.s
llvm/trunk/test/MC/ELF/empty-dwarf-lines.s
llvm/trunk/test/MC/MachO/file.s
llvm/trunk/test/MC/MachO/gen-dwarf.s
llvm/trunk/test/MC/MachO/loc.s
Modified: llvm/trunk/lib/MC/MCDwarf.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCDwarf.cpp?rev=289925&r1=289924&r2=289925&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCDwarf.cpp (original)
+++ llvm/trunk/lib/MC/MCDwarf.cpp Thu Dec 15 23:10:11 2016
@@ -263,8 +263,8 @@ MCDwarfLineTableHeader::Emit(MCStreamer
emitAbsValue(*MCOS,
MakeStartMinusEndExpr(*MCOS, *LineStartSym, *LineEndSym, 4), 4);
- // Next 2 bytes is the Version, which is Dwarf 2.
- MCOS->EmitIntValue(2, 2);
+ // Next 2 bytes is the Version.
+ MCOS->EmitIntValue(context.getDwarfVersion(), 2);
// Create a symbol for the end of the prologue (to be set when we get there).
MCSymbol *ProEndSym = context.createTempSymbol(); // Lprologue_end
@@ -279,6 +279,11 @@ MCDwarfLineTableHeader::Emit(MCStreamer
// Parameters of the state machine, are next.
MCOS->EmitIntValue(context.getAsmInfo()->getMinInstAlignment(), 1);
+ // maximum_operations_per_instruction
+ // For non-VLIW architectures this field is always 1.
+ // FIXME: VLIW architectures need to update this field accordingly.
+ if (context.getDwarfVersion() >= 4)
+ MCOS->EmitIntValue(1, 1);
MCOS->EmitIntValue(DWARF2_LINE_DEFAULT_IS_STMT, 1);
MCOS->EmitIntValue(Params.DWARF2LineBase, 1);
MCOS->EmitIntValue(Params.DWARF2LineRange, 1);
Modified: llvm/trunk/test/DebugInfo/AArch64/line-header.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/AArch64/line-header.ll?rev=289925&r1=289924&r2=289925&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/AArch64/line-header.ll (original)
+++ llvm/trunk/test/DebugInfo/AArch64/line-header.ll Thu Dec 15 23:10:11 2016
@@ -3,4 +3,4 @@
; check line table length is correctly calculated for both big and little endian
CHECK-LABEL: .debug_line contents:
-CHECK: total_length: 0x0000003e
+CHECK: total_length: 0x0000003f
Modified: llvm/trunk/test/DebugInfo/Generic/empty.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/Generic/empty.ll?rev=289925&r1=289924&r2=289925&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/Generic/empty.ll (original)
+++ llvm/trunk/test/DebugInfo/Generic/empty.ll Thu Dec 15 23:10:11 2016
@@ -9,7 +9,7 @@
; Expect no line table entry since there are no functions and file references in this compile unit
; CHECK: .debug_line contents:
; CHECK: Line table prologue:
-; CHECK: total_length: 0x00000019
+; CHECK: total_length: 0x0000001a
; CHECK-NOT: file_names[
; CHECK: .debug_pubnames contents:
Added: llvm/trunk/test/DebugInfo/X86/debug-line-version.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/debug-line-version.s?rev=289925&view=auto
==============================================================================
--- llvm/trunk/test/DebugInfo/X86/debug-line-version.s (added)
+++ llvm/trunk/test/DebugInfo/X86/debug-line-version.s Thu Dec 15 23:10:11 2016
@@ -0,0 +1,39 @@
+// RUN: llvm-mc -dwarf-version 2 -triple i686-pc-linux-gnu %s -filetype=obj -o - | llvm-readobj -r -s -sd | FileCheck --check-prefixes=DWARF,DWARF2 %s
+// RUN: llvm-mc -dwarf-version 3 -triple i686-pc-linux-gnu %s -filetype=obj -o - | llvm-readobj -r -s -sd | FileCheck --check-prefixes=DWARF,DWARF3 %s
+// RUN: llvm-mc -dwarf-version 4 -triple i686-pc-linux-gnu %s -filetype=obj -o - | llvm-readobj -r -s -sd | FileCheck --check-prefixes=DWARF,DWARF4 %s
+
+// DWARF: Name: .debug_line (11)
+// DWARF-NEXT: Type: SHT_PROGBITS (0x1)
+// DWARF-NEXT: Flags [ (0x0)
+// DWARF-NEXT: ]
+// DWARF-NEXT: Address: 0x0
+// DWARF-NEXT: Offset: 0x35
+// DWARF2-NEXT: Size: 51
+// DWARF3-NEXT: Size: 51
+// DWARF4-NEXT: Size: 52
+// DWARF-NEXT: Link: 0
+// DWARF-NEXT: Info: 0
+// DWARF-NEXT: AddressAlignment: 1
+// DWARF-NEXT: EntrySize: 0
+// DWARF2-NEXT: SectionData (
+// DWARF2-NEXT: 0000: 2F000000 02001A00 00000101 FB0E0D00 |/...............|
+// DWARF2-NEXT: 0010: 01010101 00000001 00000100 666F6F00 |............foo.|
+// DWARF2-NEXT: 0020: 00000000 00050200 00000003 3F010201 |............?...|
+// DWARF2-NEXT: 0030: 000101 |...|
+// DWARF2-NEXT: )
+// DWARF3-NEXT: SectionData (
+// DWARF3-NEXT: 0000: 2F000000 03001A00 00000101 FB0E0D00 |/...............|
+// DWARF3-NEXT: 0010: 01010101 00000001 00000100 666F6F00 |............foo.|
+// DWARF3-NEXT: 0020: 00000000 00050200 00000003 3F010201 |............?...|
+// DWARF3-NEXT: 0030: 000101 |...|
+// DWARF3-NEXT: )
+// DWARF4-NEXT: SectionData (
+// DWARF4-NEXT: 0000: 30000000 04001B00 00000101 01FB0E0D |0...............|
+// DWARF4-NEXT: 0010: 00010101 01000000 01000001 00666F6F |.............foo|
+// DWARF4-NEXT: 0020: 00000000 00000502 00000000 033F0102 |.............?..|
+// DWARF4-NEXT: 0030: 01000101 |....|
+// DWARF4-NEXT: )
+
+ .file 1 "foo"
+ .loc 1 64 0
+ nop
Modified: llvm/trunk/test/DebugInfo/X86/empty.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/empty.ll?rev=289925&r1=289924&r2=289925&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/X86/empty.ll (original)
+++ llvm/trunk/test/DebugInfo/X86/empty.ll Thu Dec 15 23:10:11 2016
@@ -4,7 +4,7 @@
; Expect no line table entry since there are no functions and file references in this compile unit
; CHECK: .debug_line contents:
; CHECK: Line table prologue:
-; CHECK: total_length: 0x00000019
+; CHECK: total_length: 0x0000001a
; CHECK-NOT: file_names[
; CHECK: .debug_pubnames contents:
Modified: llvm/trunk/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll?rev=289925&r1=289924&r2=289925&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll (original)
+++ llvm/trunk/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll Thu Dec 15 23:10:11 2016
@@ -15,7 +15,7 @@
; CHECK: DW_AT_high_pc [DW_FORM_data4] (0x00000010)
; CHECK: DW_TAG_compile_unit
-; CHECK: DW_AT_stmt_list [DW_FORM_sec_offset] (0x0000003c)
+; CHECK: DW_AT_stmt_list [DW_FORM_sec_offset] (0x0000003d)
; CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000010)
; CHECK: DW_AT_high_pc [DW_FORM_data4] (0x00000009)
; CHECK: DW_TAG_subprogram
@@ -25,10 +25,10 @@
; CHECK: .debug_line contents:
; CHECK-NEXT: Line table prologue:
-; CHECK-NEXT: total_length: 0x00000038
+; CHECK-NEXT: total_length: 0x00000039
; CHECK: file_names[ 1] 0 0x00000000 0x00000000 simple.c
; CHECK: Line table prologue:
-; CHECK-NEXT: total_length: 0x00000039
+; CHECK-NEXT: total_length: 0x0000003a
; CHECK: file_names[ 1] 0 0x00000000 0x00000000 simple2.c
; CHECK-NOT: file_names
Modified: llvm/trunk/test/MC/ELF/debug-line.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ELF/debug-line.s?rev=289925&r1=289924&r2=289925&view=diff
==============================================================================
--- llvm/trunk/test/MC/ELF/debug-line.s (original)
+++ llvm/trunk/test/MC/ELF/debug-line.s Thu Dec 15 23:10:11 2016
@@ -18,17 +18,17 @@
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x0
// CHECK-NEXT: Offset:
-// CHECK-NEXT: Size: 57
+// CHECK-NEXT: Size: 58
// CHECK-NEXT: Link: 0
// CHECK-NEXT: Info: 0
// CHECK-NEXT: AddressAlignment: 1
// CHECK-NEXT: EntrySize: 0
// CHECK-NEXT: SectionData (
-// CHECK-NEXT: 0000: 35000000 02001C00 00000101 FB0E0D00
-// CHECK-NEXT: 0010: 01010101 00000001 00000100 666F6F2E
-// CHECK-NEXT: 0020: 63000000 00000009 02000000 00000000
-// CHECK-NEXT: 0030: 00154B21 02080001 01
+// CHECK-NEXT: 0000: 36000000 04001D00 00000101 01FB0E0D
+// CHECK-NEXT: 0010: 00010101 01000000 01000001 00666F6F
+// CHECK-NEXT: 0020: 2E630000 00000000 09020000 00000000
+// CHECK-NEXT: 0030: 0000154B 21020800 0101
// CHECK-NEXT: )
// CHECK-NEXT: }
Modified: llvm/trunk/test/MC/ELF/debug-line2.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ELF/debug-line2.s?rev=289925&r1=289924&r2=289925&view=diff
==============================================================================
--- llvm/trunk/test/MC/ELF/debug-line2.s (original)
+++ llvm/trunk/test/MC/ELF/debug-line2.s Thu Dec 15 23:10:11 2016
@@ -10,16 +10,16 @@
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x0
// CHECK-NEXT: Offset:
-// CHECK-NEXT: Size: 56
+// CHECK-NEXT: Size: 57
// CHECK-NEXT: Link: 0
// CHECK-NEXT: Info: 0
// CHECK-NEXT: AddressAlignment: 1
// CHECK-NEXT: EntrySize: 0
// CHECK-NEXT: SectionData (
-// CHECK-NEXT: 0000: 34000000 02001C00 00000101 FB0E0D00
-// CHECK-NEXT: 0010: 01010101 00000001 00000100 666F6F2E
-// CHECK-NEXT: 0020: 63000000 00000009 02000000 00000000
-// CHECK-NEXT: 0030: 00011302 01000101
+// CHECK-NEXT: 0000: 35000000 04001D00 00000101 01FB0E0D |5...............|
+// CHECK-NEXT: 0010: 00010101 01000000 01000001 00666F6F |.............foo|
+// CHECK-NEXT: 0020: 2E630000 00000000 09020000 00000000 |.c..............|
+// CHECK-NEXT: 0030: 00000113 02010001 01 |.........|
// CHECK-NEXT: )
// CHECK-NEXT: }
Modified: llvm/trunk/test/MC/ELF/debug-loc.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ELF/debug-loc.s?rev=289925&r1=289924&r2=289925&view=diff
==============================================================================
--- llvm/trunk/test/MC/ELF/debug-loc.s (original)
+++ llvm/trunk/test/MC/ELF/debug-loc.s Thu Dec 15 23:10:11 2016
@@ -15,7 +15,7 @@
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x0
// CHECK-NEXT: Offset:
-// CHECK-NEXT: Size: 61
+// CHECK-NEXT: Size: 62
// CHECK-NEXT: Link: 0
// CHECK-NEXT: Info: 0
// CHECK-NEXT: AddressAlignment: 1
Modified: llvm/trunk/test/MC/ELF/discriminator.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ELF/discriminator.s?rev=289925&r1=289924&r2=289925&view=diff
==============================================================================
--- llvm/trunk/test/MC/ELF/discriminator.s (original)
+++ llvm/trunk/test/MC/ELF/discriminator.s Thu Dec 15 23:10:11 2016
@@ -53,7 +53,7 @@ foo:
# CHECK: Relocations [
# CHECK: Section ({{[^ ]+}}) .rel.debug_line {
-# CHECK-NEXT: 0x2D R_386_32 .text 0x0
+# CHECK-NEXT: 0x2E R_386_32 .text 0x0
# CHECK-NEXT: }
# DWARF-DUMP: Address Line Column File ISA Discriminator Flags
Modified: llvm/trunk/test/MC/ELF/empty-dwarf-lines.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ELF/empty-dwarf-lines.s?rev=289925&r1=289924&r2=289925&view=diff
==============================================================================
--- llvm/trunk/test/MC/ELF/empty-dwarf-lines.s (original)
+++ llvm/trunk/test/MC/ELF/empty-dwarf-lines.s Thu Dec 15 23:10:11 2016
@@ -15,7 +15,7 @@ c:
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x0
// CHECK-NEXT: Offset: 0x44
-// CHECK-NEXT: Size: 39
+// CHECK-NEXT: Size: 40
// CHECK-NEXT: Link: 0
// CHECK-NEXT: Info: 0
// CHECK-NEXT: AddressAlignment: 1
Modified: llvm/trunk/test/MC/MachO/file.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/MachO/file.s?rev=289925&r1=289924&r2=289925&view=diff
==============================================================================
--- llvm/trunk/test/MC/MachO/file.s (original)
+++ llvm/trunk/test/MC/MachO/file.s Thu Dec 15 23:10:11 2016
@@ -8,7 +8,7 @@
// CHECK-NEXT: Name: __debug_line
// CHECK-NEXT: Segment: __DWARF
// CHECK-NEXT: Address: 0x1
-// CHECK-NEXT: Size: 0x28
+// CHECK-NEXT: Size: 0x29
// CHECK-NEXT: Offset: 237
// CHECK-NEXT: Alignment: 0
// CHECK-NEXT: RelocationOffset: 0x0
@@ -20,8 +20,8 @@
// CHECK-NEXT: Reserved1: 0x0
// CHECK-NEXT: Reserved2: 0x0
// CHECK-NEXT: SectionData (
-// CHECK-NEXT: 0000: 24000000 02001E00 00000101 FB0E0D00
-// CHECK-NEXT: 0010: 01010101 00000001 00000164 69720000
-// CHECK-NEXT: 0020: 666F6F00 01000000
+// CHECK-NEXT: 0000: 25000000 04001F00 00000101 01FB0E0D |%...............|
+// CHECK-NEXT: 0010: 00010101 01000000 01000001 64697200 |............dir.|
+// CHECK-NEXT: 0020: 00666F6F 00010000 00 |.foo.....|
// CHECK-NEXT: )
// CHECK-NEXT: }
Modified: llvm/trunk/test/MC/MachO/gen-dwarf.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/MachO/gen-dwarf.s?rev=289925&r1=289924&r2=289925&view=diff
==============================================================================
--- llvm/trunk/test/MC/MachO/gen-dwarf.s (original)
+++ llvm/trunk/test/MC/MachO/gen-dwarf.s Thu Dec 15 23:10:11 2016
@@ -89,7 +89,7 @@ _x: .long 1
// CHECK: .debug_line contents:
// CHECK: Line table prologue:
// We don't check the total_length as it includes lengths of temp paths
-// CHECK: version: 2
+// CHECK: version: 4
// We don't check the prologue_length as it too includes lengths of temp paths
// CHECK: min_inst_length: 1
// CHECK: default_is_stmt: 1
Modified: llvm/trunk/test/MC/MachO/loc.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/MachO/loc.s?rev=289925&r1=289924&r2=289925&view=diff
==============================================================================
--- llvm/trunk/test/MC/MachO/loc.s (original)
+++ llvm/trunk/test/MC/MachO/loc.s Thu Dec 15 23:10:11 2016
@@ -9,10 +9,10 @@
// CHECK: Name: __debug_line (5F 5F 64 65 62 75 67 5F 6C 69 6E 65 00 00 00 00)
// CHECK: Segment: __DWARF (5F 5F 44 57 41 52 46 00 00 00 00 00 00 00 00 00)
// CHECK: Address: 0x1
-// CHECK: Size: 0x33
+// CHECK: Size: 0x34
// CHECK: Offset: 237
// CHECK: Alignment: 0
-// CHECK: RelocationOffset: 0x120
+// CHECK: RelocationOffset: 0x124
// CHECK: RelocationCount: 1
// CHECK: Type: 0x0
// CHECK: Attributes [ (0x20000)
@@ -21,15 +21,15 @@
// CHECK: Reserved1: 0x0
// CHECK: Reserved2: 0x0
// CHECK: SectionData (
-// CHECK: 0000: 2F000000 02001A00 00000101 FB0E0D00 |/...............|
-// CHECK: 0010: 01010101 00000001 00000100 666F6F00 |............foo.|
-// CHECK: 0020: 00000000 00050200 00000003 3F010201 |............?...|
-// CHECK: 0030: 000101 |...|
+// CHECK: 0000: 30000000 04001B00 00000101 01FB0E0D |0...............|
+// CHECK: 0010: 00010101 01000000 01000001 00666F6F |.............foo|
+// CHECK: 0020: 00000000 00000502 00000000 033F0102 |.............?..|
+// CHECK: 0030: 01000101
// CHECK: )
// CHECK: }
// CHECK: ]
// CHECK: Relocations [
// CHECK: Section __debug_line {
-// CHECK: 0x27 0 2 0 GENERIC_RELOC_VANILLA 0 __text
+// CHECK: 0x28 0 2 0 GENERIC_RELOC_VANILLA 0 __text
// CHECK: }
// CHECK: ]
More information about the llvm-commits
mailing list