]> granicus.if.org Git - llvm/commitdiff
DebugInfo: Make pubnames header printing similar to unit header printing
authorDavid Blaikie <dblaikie@gmail.com>
Fri, 1 Nov 2013 17:53:30 +0000 (17:53 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Fri, 1 Nov 2013 17:53:30 +0000 (17:53 +0000)
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

lib/DebugInfo/DWARFContext.cpp
test/DebugInfo/X86/gnu-public-names.ll
test/DebugInfo/dwarf-public-names.ll
test/DebugInfo/dwarfdump-pubnames.test

index 6056de7a35c2c151c436a0e9b0d98d0ff0be5522..e47719025c8074fc5d08855add24147519171cc4 100644 (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
index 2a6d99780587b4216c6aec709b1017ed6635d03f..a9fc0ed48bc2e0af71f343d4e75adc82f3ed6a19 100644 (file)
 ; 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"
 
 
 ; 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"
index ee9cbd5d8d115398910440004bc5c0bf2b4d9770..b5609eaf75950f92af5d88c771dede100beae11d 100644 (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
index 152003666077d2e6a19ae8d9863fc7147c805427..215953abe7ff49ebb2250cf75fd94a9748bcb3fb 100644 (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"