DebugInfo: Make pubnames header printing similar to unit header printing

In a failed attempt to allow the gnu-public-names.ll test case to not
hardcode the size of the unit that the pubnames section referred to I've
at least managed to have unit headers and pubnames headers print out in
a similar style.

This failed to achieve the desired goal because the header in a unit
specifies the length of the unit without the length element of the
header whereas the length in the pubnames includes this element, so the
numbers are off by 4 bytes. I don't know of any arithmetic powers in
FileCheck so the test case can't simply say "CU_LENGTH + 4".

llvm-svn: 193872
This commit is contained in:
David Blaikie 2013-11-01 17:53:30 +00:00
parent 1d4449f32d
commit 263e05531f
4 changed files with 8 additions and 18 deletions

View File

@ -34,10 +34,10 @@ static void dumpPubSection(raw_ostream &OS, StringRef Name, StringRef Data,
OS << "\n." << Name << " contents:\n";
DataExtractor pubNames(Data, LittleEndian, 0);
uint32_t offset = 0;
OS << "Length: " << pubNames.getU32(&offset) << "\n";
OS << "Version: " << pubNames.getU16(&offset) << "\n";
OS << "Offset in .debug_info: " << pubNames.getU32(&offset) << "\n";
OS << "Size: " << pubNames.getU32(&offset) << "\n";
OS << "length = " << format("0x%08x", pubNames.getU32(&offset));
OS << " version = " << format("0x%04x", pubNames.getU16(&offset));
OS << " unit_offset = " << format("0x%08x", pubNames.getU32(&offset));
OS << " unit_size = " << format("0x%08x", pubNames.getU32(&offset)) << '\n';
if (GnuStyle)
OS << "Offset Linkage Kind Name\n";
else

View File

@ -104,10 +104,7 @@
; CHECK-NEXT: DW_AT_name {{.*}} "global_function"
; CHECK-LABEL: .debug_gnu_pubnames contents:
; CHECK-NEXT: Length: 231
; CHECK-NEXT: Version: 2
; CHECK-NEXT: Offset in .debug_info: 0
; CHECK-NEXT: Size: 379
; CHECK-NEXT: length = 0x000000e7 version = 0x0002 unit_offset = 0x00000000 unit_size = 0x0000017b
; CHECK-NEXT: Offset Linkage Kind Name
; CHECK-DAG: [[GLOBAL_FUNC]] EXTERNAL FUNCTION "global_function"
; CHECK-DAG: [[NS]] EXTERNAL TYPE "ns"
@ -121,11 +118,7 @@
; CHECK-LABEL: debug_gnu_pubtypes contents:
; CHECK-NEXT: Length:
; CHECK-NEXT: Version:
; CHECK-NEXT: Offset in .debug_info:
; CHECK-NEXT: Size:
; CHECK-NEXT: Offset Linkage Kind Name
; CHECK: Offset Linkage Kind Name
; CHECK-DAG: [[C]] EXTERNAL TYPE "C"
; CHECK-DAG: [[D]] EXTERNAL TYPE "ns::D"
; CHECK-DAG: [[INT]] STATIC TYPE "int"

View File

@ -37,7 +37,7 @@
; Skip the output to the header of the pubnames section.
; CHECK: debug_pubnames
; CHECK: Version: 2
; CHECK: version = 0x0002
; Check for each name in the output.
; CHECK: global_namespace_variable

View File

@ -2,10 +2,7 @@ RUN: llvm-dwarfdump %p/Inputs/dwarfdump-pubnames.elf-x86-64 \
RUN: -debug-dump=pubnames | FileCheck %s
CHECK: .debug_pubnames contents:
CHECK: Length: 161
CHECK: Version: 2
CHECK: Offset in .debug_info: 0
CHECK: Size: 321
CHECK: length = 0x000000a1 version = 0x0002 unit_offset = 0x00000000 unit_size = 0x00000141
CHECK: Offset Name
CHECK: 0x00000098 "global_namespace_variable"