Skip to content

Commit

Permalink
DebugInfo: Make pubnames header printing similar to unit header printing
Browse files Browse the repository at this point in the history
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".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193872 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
dwblaikie committed Nov 1, 2013
1 parent 26cc826 commit 2e110c3
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 18 deletions.
8 changes: 4 additions & 4 deletions lib/DebugInfo/DWARFContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
11 changes: 2 additions & 9 deletions test/DebugInfo/X86/gnu-public-names.ll
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion test/DebugInfo/dwarf-public-names.ll
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 1 addition & 4 deletions test/DebugInfo/dwarfdump-pubnames.test
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down

0 comments on commit 2e110c3

Please sign in to comment.