aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2013-09-19 23:43:46 +0000
committerDavid Blaikie <dblaikie@gmail.com>2013-09-19 23:43:46 +0000
commit5cfcb3677ade67e563f2746bce67904a9c0d842b (patch)
tree5d6f8c809dfa83c848e6baf5f77cfd0bae5723b9
parent0bb2c300a339531b5df3e8c12dbed4e8770e2833 (diff)
downloadexternal_llvm-5cfcb3677ade67e563f2746bce67904a9c0d842b.zip
external_llvm-5cfcb3677ade67e563f2746bce67904a9c0d842b.tar.gz
external_llvm-5cfcb3677ade67e563f2746bce67904a9c0d842b.tar.bz2
DebugInfo: constrain gnu pubnames test further
Ensures that the pubnames entries actually refer to the intended entities. This test could be more flexible if there was a way to do multiline FileCheck matches with captures (in that way the test wouldn't need to have hardcoded offset values and would thus be resilient to changes in the layout of the DIEs in this CU). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191055 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/DebugInfo/DWARFContext.cpp4
-rw-r--r--test/DebugInfo/X86/gnu-public-names.ll42
2 files changed, 34 insertions, 12 deletions
diff --git a/lib/DebugInfo/DWARFContext.cpp b/lib/DebugInfo/DWARFContext.cpp
index c87855e..db0d21f 100644
--- a/lib/DebugInfo/DWARFContext.cpp
+++ b/lib/DebugInfo/DWARFContext.cpp
@@ -136,8 +136,8 @@ void DWARFContext::dump(raw_ostream &OS, DIDumpType DumpType) {
PubIndexEntryDescriptor desc(pubNames.getU8(&offset));
OS << format("0x%8.8x ", dieRef)
<< format("%-8s", dwarf::GDBIndexEntryLinkageString(desc.Linkage))
- << ' ' << dwarf::GDBIndexEntryKindString(desc.Kind) << ' '
- << pubNames.getCStr(&offset) << "\n";
+ << ' ' << dwarf::GDBIndexEntryKindString(desc.Kind) << " \""
+ << pubNames.getCStr(&offset) << "\"\n";
}
}
diff --git a/test/DebugInfo/X86/gnu-public-names.ll b/test/DebugInfo/X86/gnu-public-names.ll
index 9d4e6b6..0dd668a 100644
--- a/test/DebugInfo/X86/gnu-public-names.ll
+++ b/test/DebugInfo/X86/gnu-public-names.ll
@@ -36,18 +36,40 @@
; ASM: .byte 32 # Kind: VARIABLE, EXTERNAL
-; CHECK: .debug_gnu_pubnames contents:
-; CHECK-NEXT: Length: 167
-; CHECK-NEXT: Version: 2
+; CHECK: .debug_info contents:
+; CHECK: 0x00000046: DW_TAG_subprogram
+; CHECK-NEXT: DW_AT_MIPS_linkage_name
+; CHECK-NEXT: DW_AT_name {{.*}} "member_function"
+; CHECK: 0x00000058: DW_TAG_subprogram
+; CHECK-NEXT: DW_AT_MIPS_linkage_name
+; CHECK-NEXT: DW_AT_name {{.*}} "static_member_function"
+; CHECK: 0x0000007c: DW_TAG_variable
+; CHECK-NEXT: DW_AT_name {{.*}} "global_variable"
+; CHECK: 0x00000094: DW_TAG_variable
+; CHECK-NEXT: DW_AT_name {{.*}} "global_namespace_variable"
+; CHECK: 0x000000a3: DW_TAG_subprogram
+; CHECK-NEXT: DW_AT_MIPS_linkage_name
+; CHECK-NEXT: DW_AT_name {{.*}} "global_namespace_function"
+; CHECK: 0x000000be: DW_TAG_subprogram
+; CHECK-NEXT: DW_AT_specification {{.*}}0x00000046}
+; CHECK: 0x000000e8: DW_TAG_subprogram
+; CHECK-NEXT: DW_AT_specification {{.*}}0x00000058}
+; CHECK: 0x000000ff: DW_TAG_subprogram
+; CHECK-NEXT: DW_AT_MIPS_linkage_name
+; CHECK-NEXT: DW_AT_name {{.*}} "global_function"
+
+; CHECK-LABEL: .debug_gnu_pubnames contents:
+; CHECK-NEXT: Length: 167
+; CHECK-NEXT: Version: 2
; CHECK-NEXT: Offset in .debug_info: 0
-; CHECK-NEXT: Size: 317
+; CHECK-NEXT: Size: 317
; CHECK-NEXT: Offset Linkage Kind Name
-; CHECK-DAG: 0x00000094 EXTERNAL VARIABLE global_namespace_variable
-; CHECK-DAG: 0x000000a3 EXTERNAL FUNCTION global_namespace_function
-; CHECK-DAG: 0x000000e8 STATIC FUNCTION static_member_function
-; CHECK-DAG: 0x0000007c EXTERNAL VARIABLE global_variable
-; CHECK-DAG: 0x000000ff EXTERNAL FUNCTION global_function
-; CHECK-DAG: 0x000000be STATIC FUNCTION member_function
+; CHECK-DAG: 0x00000094 EXTERNAL VARIABLE "global_namespace_variable"
+; CHECK-DAG: 0x000000a3 EXTERNAL FUNCTION "global_namespace_function"
+; CHECK-DAG: 0x000000e8 STATIC FUNCTION "static_member_function"
+; CHECK-DAG: 0x0000007c EXTERNAL VARIABLE "global_variable"
+; CHECK-DAG: 0x000000ff EXTERNAL FUNCTION "global_function"
+; CHECK-DAG: 0x000000be STATIC FUNCTION "member_function"
%struct.C = type { i8 }