[llvm] r359425 - [DWARF] Fix dump of local/foreign TU lists in .debug_names

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 29 01:55:10 PDT 2019


Author: maskray
Date: Mon Apr 29 01:55:10 2019
New Revision: 359425

URL: http://llvm.org/viewvc/llvm-project?rev=359425&view=rev
Log:
[DWARF] Fix dump of local/foreign TU lists in .debug_names

Differential Revision: https://reviews.llvm.org/D61241

Added:
    llvm/trunk/test/tools/llvm-dwarfdump/X86/debug-names-many-tu.s
Modified:
    llvm/trunk/lib/DebugInfo/DWARF/DWARFAcceleratorTable.cpp

Modified: llvm/trunk/lib/DebugInfo/DWARF/DWARFAcceleratorTable.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARF/DWARFAcceleratorTable.cpp?rev=359425&r1=359424&r2=359425&view=diff
==============================================================================
--- llvm/trunk/lib/DebugInfo/DWARF/DWARFAcceleratorTable.cpp (original)
+++ llvm/trunk/lib/DebugInfo/DWARF/DWARFAcceleratorTable.cpp Mon Apr 29 01:55:10 2019
@@ -585,13 +585,14 @@ uint32_t DWARFDebugNames::NameIndex::get
 
 uint32_t DWARFDebugNames::NameIndex::getLocalTUOffset(uint32_t TU) const {
   assert(TU < Hdr.LocalTypeUnitCount);
-  uint32_t Offset = CUsBase + Hdr.CompUnitCount * 4;
+  uint32_t Offset = CUsBase + 4 * (Hdr.CompUnitCount + TU);
   return Section.AccelSection.getRelocatedValue(4, &Offset);
 }
 
 uint64_t DWARFDebugNames::NameIndex::getForeignTUSignature(uint32_t TU) const {
   assert(TU < Hdr.ForeignTypeUnitCount);
-  uint32_t Offset = CUsBase + (Hdr.CompUnitCount + Hdr.LocalTypeUnitCount) * 4;
+  uint32_t Offset =
+      CUsBase + 4 * (Hdr.CompUnitCount + Hdr.LocalTypeUnitCount) + 8 * TU;
   return Section.AccelSection.getU64(&Offset);
 }
 

Added: llvm/trunk/test/tools/llvm-dwarfdump/X86/debug-names-many-tu.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-dwarfdump/X86/debug-names-many-tu.s?rev=359425&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-dwarfdump/X86/debug-names-many-tu.s (added)
+++ llvm/trunk/test/tools/llvm-dwarfdump/X86/debug-names-many-tu.s Mon Apr 29 01:55:10 2019
@@ -0,0 +1,107 @@
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t
+# RUN: llvm-dwarfdump -debug-names %t | FileCheck %s
+
+# CHECK:      LocalTU[0]: 0x0000000d
+# CHECK-NEXT: LocalTU[1]: 0x00000028
+# CHECK:      ForeignTU[0]: 0x0011223344556677
+# CHECK-NEXT: ForeignTU[1]: 0x1122334455667788
+
+	.section	.debug_abbrev,"", at progbits
+	.byte	1                       # Abbreviation Code
+	.byte	17                      # DW_TAG_compile_unit
+	.byte	0                       # DW_CHILDREN_no
+	.byte	0                       # EOM(1)
+	.byte	0                       # EOM(2)
+	.byte	2                       # Abbreviation Code
+	.byte	19                      # DW_TAG_structure_type
+	.byte	0                       # DW_CHILDREN_no
+	.byte	3                       # DW_AT_name
+	.byte	8                       # DW_FORM_string
+	.byte	0                       # EOM(1)
+	.byte	0                       # EOM(2)
+	.byte	0
+
+	.section	.debug_names,"", at progbits
+	.long	.Lnames_end0-.Lnames_start0 # Header: unit length
+.Lnames_start0:
+	.short	5                       # Header: version
+	.short	0                       # Header: padding
+	.long	1                       # Header: compilation unit count
+	.long	2                       # Header: local type unit count
+	.long	2                       # Header: foreign type unit count
+	.long	0                       # Header: bucket count
+	.long	2                       # Header: name count
+	.long	.Lnames_abbrev_end0-.Lnames_abbrev_start0 # Header: abbreviation table size
+	.long	0                       # Header: augmentation string size
+	.long	.Lcu_begin0             # Compilation unit 0
+	.long	.Ltu_begin0             # Local TU 0
+	.long	.Ltu_begin1             # Local TU 1
+	.quad	0x0011223344556677      # Foreign TU 0
+	.quad	0x1122334455667788      # Foreign TU 1
+	.long	.Lstring0               # String in Bucket 0: A
+	.long	.Lstring1               # String in Bucket 1: B
+	.long	.Lnames0-.Lnames_entries0 # Offset in Bucket 0
+	.long	.Lnames1-.Lnames_entries0 # Offset in Bucket 1
+
+.Lnames_abbrev_start0:
+	.byte	1                       # Abbrev code
+	.byte	19                      # DW_TAG_structure_type
+	.byte	3                       # DW_IDX_die_offset
+	.byte	19                      # DW_FORM_ref4
+	.byte	0                       # End of abbrev
+	.byte	0                       # End of abbrev
+	.byte	0                       # End of abbrev list
+.Lnames_abbrev_end0:
+.Lnames_entries0:
+.Lnames0:
+	.byte	1                       # Abbreviation code
+	.long	.Ltu_die0-.Lcu_begin0   # DW_IDX_die_offset
+	.long	0                       # End of list: A
+.Lnames1:
+	.byte	1                       # Abbreviation code
+	.long	.Ltu_die1-.Lcu_begin0   # DW_IDX_die_offset
+	.long	0                       # End of list: B
+	.p2align 2
+.Lnames_end0:
+
+	.section	.debug_info,"", at progbits
+.Lcu_begin0:
+	.long	.Lcu_end0-.Lcu_begin0-4 # Length of Unit
+	.short	5                       # DWARF version number
+	.byte	1                       # DW_UT_compile
+	.byte	8                       # Address Size (in bytes)
+	.long	.debug_abbrev           # Offset Into Abbrev. Section
+	.byte	1                       # Abbrev [1] DW_TAG_compile_unit
+.Lcu_end0:
+
+.Ltu_begin0:
+	.long	.Ltu_end0-.Ltu_begin0-4 # Length of Unit
+	.short	5                       # DWARF version number
+	.byte	2                       # DW_UT_type
+	.byte	8                       # Address Size (in bytes)
+	.long	.debug_abbrev           # Offset Into Abbrev. Section
+	.quad	0x0011223344556677      # Type Signature
+	.long	.Ltu_die0-.Ltu_begin0   # Type Offset
+.Ltu_die0:
+	.byte	2                       # Abbrev [2] DW_TAG_structure_type
+	.asciz "A"
+.Ltu_end0:
+
+.Ltu_begin1:
+	.long	.Ltu_end1-.Ltu_begin1-4 # Length of Unit
+	.short	5                       # DWARF version number
+	.byte	2                       # DW_UT_type
+	.byte	8                       # Address Size (in bytes)
+	.long	.debug_abbrev           # Offset Into Abbrev. Section
+	.quad	0x1122334455667788      # Type Signature
+	.long	.Ltu_die1-.Ltu_begin1   # Type Offset
+.Ltu_die1:
+	.byte	2                       # Abbrev [1] 0xc:0x48 DW_TAG_structure_type
+	.asciz "B"
+.Ltu_end1:
+
+	.section	.debug_str,"MS", at progbits,1
+.Lstring0:
+	.asciz	"A"
+.Lstring1:
+	.asciz	"B"




More information about the llvm-commits mailing list