[DebugInfo] Report the format of address tables [4/10]
authorIgor Kudrin <ikudrin@accesssoftek.com>
Tue, 2 Jun 2020 08:40:56 +0000 (15:40 +0700)
committerIgor Kudrin <ikudrin@accesssoftek.com>
Tue, 2 Jun 2020 10:55:30 +0000 (17:55 +0700)
Differential Revision: https://reviews.llvm.org/D80523

llvm/lib/DebugInfo/DWARF/DWARFDebugAddr.cpp
llvm/test/DebugInfo/X86/debug_addr.ll
llvm/test/tools/llvm-dwarfdump/X86/debug_addr.s
llvm/test/tools/llvm-dwarfdump/X86/debug_addr_64bit_address.s
llvm/test/tools/llvm-dwarfdump/X86/debug_addr_address_size_mismatch.s
llvm/test/tools/llvm-dwarfdump/X86/debug_addr_dwarf64.s
llvm/test/tools/llvm-dwarfdump/X86/debug_addr_rela.s
llvm/test/tools/llvm-dwarfdump/X86/debug_addr_unsupported_version.s

index e0f4a3b..dcf2aef 100644 (file)
@@ -138,11 +138,13 @@ void DWARFDebugAddrTable::dump(raw_ostream &OS, DIDumpOptions DumpOpts) const {
   if (DumpOpts.Verbose)
     OS << format("0x%8.8" PRIx64 ": ", Offset);
   if (Length) {
-    int LengthFieldWidth = (Format == dwarf::DwarfFormat::DWARF64) ? 16 : 8;
-    OS << format("Address table header: length = 0x%0*" PRIx64
-                 ", version = 0x%4.4" PRIx16 ", addr_size = 0x%2.2" PRIx8
-                 ", seg_size = 0x%2.2" PRIx8 "\n",
-                 LengthFieldWidth, Length, Version, AddrSize, SegSize);
+    int OffsetDumpWidth = 2 * dwarf::getDwarfOffsetByteSize(Format);
+    OS << "Address table header: "
+       << format("length = 0x%0*" PRIx64, OffsetDumpWidth, Length)
+       << ", format = " << dwarf::FormatString(Format)
+       << format(", version = 0x%4.4" PRIx16, Version)
+       << format(", addr_size = 0x%2.2" PRIx8, AddrSize)
+       << format(", seg_size = 0x%2.2" PRIx8, SegSize) << "\n";
   }
 
   if (Addrs.size() > 0) {
index a9efba0..1f56e58 100644 (file)
@@ -38,7 +38,7 @@
 ; DWARF5: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000000) address = 0x0000000000000000 ".text")
 ; DWARF5: DW_AT_call_return_pc [DW_FORM_addrx] (indexed (00000002) address = 0x0000000000000018 ".text")
 ; DWARF5: .debug_addr contents:
-; DWARF5-NEXT: 0x00000000: Address table header: length = 0x00000010, version = 0x0005, addr_size = 0x04, seg_size = 0x00
+; DWARF5-NEXT: 0x00000000: Address table header: length = 0x00000010, format = DWARF32, version = 0x0005, addr_size = 0x04, seg_size = 0x00
 ; DWARF5-NEXT: Addrs: [
 ; DWARF5-NEXT: 0x00000000
 ; DWARF5-NEXT: 0x00000010
index b0ee8be..47123f2 100644 (file)
@@ -3,12 +3,12 @@
 
 # CHECK:          .debug_addr contents
 
-# CHECK-NEXT:     length = 0x0000000c, version = 0x0005, addr_size = 0x04, seg_size = 0x00
+# CHECK-NEXT:     length = 0x0000000c, format = DWARF32, version = 0x0005, addr_size = 0x04, seg_size = 0x00
 # CHECK-NEXT:     Addrs: [
 # CHECK-NEXT:     0x00000000
 # CHECK-NEXT:     0x00000001
 # CHECK-NEXT:     ]
-# CHECK-NEXT:     length = 0x00000004, version = 0x0005, addr_size = 0x04, seg_size = 0x00
+# CHECK-NEXT:     length = 0x00000004, format = DWARF32, version = 0x0005, addr_size = 0x04, seg_size = 0x00
 # CHECK-NOT:      {{.}}
 
        .section        .debug_abbrev,"",@progbits
index 616d726..b1e3b2a 100644 (file)
@@ -2,7 +2,7 @@
 # RUN: llvm-dwarfdump -debug-addr %t.o | FileCheck %s
 
 # CHECK:          .debug_addr contents
-# CHECK-NEXT:     length = 0x00000014, version = 0x0005, addr_size = 0x08, seg_size = 0x00
+# CHECK-NEXT:     length = 0x00000014, format = DWARF32, version = 0x0005, addr_size = 0x08, seg_size = 0x00
 # CHECK-NEXT:     Addrs: [
 # CHECK-NEXT:     0x0000000100000000
 # CHECK-NEXT:     0x0000000100000001
index d5fdf5d..442059f 100644 (file)
@@ -6,11 +6,11 @@
 # WARN-NOT: {{.}}
 
 # CHECK: .debug_addr contents
-# CHECK-NEXT:     length = 0x0000000c, version = 0x0005, addr_size = 0x08, seg_size = 0x00
+# CHECK-NEXT:     length = 0x0000000c, format = DWARF32, version = 0x0005, addr_size = 0x08, seg_size = 0x00
 # CHECK-NEXT:     Addrs: [
 # CHECK-NEXT:     0x0000000100000000
 # CHECK-NEXT:     ]
-# CHECK-NEXT:     length = 0x0000000c, version = 0x0005, addr_size = 0x04, seg_size = 0x00
+# CHECK-NEXT:     length = 0x0000000c, format = DWARF32, version = 0x0005, addr_size = 0x04, seg_size = 0x00
 # CHECK-NEXT:     Addrs: [
 # CHECK-NEXT:     0x00000000
 # CHECK-NEXT:     0x00000001
index 6c97ae8..d894c21 100644 (file)
@@ -5,6 +5,7 @@
 # CHECK:      .debug_addr contents:
 # CHECK-NEXT: Address table header:
 # CHECK-SAME: length = 0x000000000000000c,
+# CHECK-SAME: format = DWARF64,
 # CHECK-SAME: version = 0x0005,
 # CHECK-SAME: addr_size = 0x04,
 # CHECK-SAME: seg_size = 0x00
index f0058b9..aa9efec 100644 (file)
@@ -8,7 +8,7 @@
 ## a RELA relocation to recover the real value.
 
 # CHECK:      .debug_addr contents
-# CHECK-NEXT: length = 0x0000000c, version = 0x0005, addr_size = 0x08, seg_size = 0x00
+# CHECK-NEXT: length = 0x0000000c, format = DWARF32, version = 0x0005, addr_size = 0x08, seg_size = 0x00
 # CHECK-NEXT: Addrs: [
 # CHECK-NEXT: 0x000000000000002a
 # CHECK-NEXT: ]
index dec91fe..7398182 100644 (file)
@@ -7,7 +7,7 @@
 # ERR-NOT: {{.}}
 
 # CHECK: .debug_addr contents
-# CHECK-NEXT:     length = 0x0000000c, version = 0x0005, addr_size = 0x04, seg_size = 0x00
+# CHECK-NEXT:     length = 0x0000000c, format = DWARF32, version = 0x0005, addr_size = 0x04, seg_size = 0x00
 # CHECK-NEXT:     Addrs: [
 # CHECK-NEXT:     0x00000002
 # CHECK-NEXT:     0x00000003