aboutsummaryrefslogtreecommitdiff
path: root/test/DebugInfo
diff options
context:
space:
mode:
Diffstat (limited to 'test/DebugInfo')
-rw-r--r--test/DebugInfo/COFF/asm.ll6
-rw-r--r--test/DebugInfo/COFF/cpp-mangling.ll4
-rw-r--r--test/DebugInfo/COFF/fp-stack.ll2
-rw-r--r--test/DebugInfo/COFF/globals.ll6
-rw-r--r--test/DebugInfo/COFF/inlining-files.ll4
-rw-r--r--test/DebugInfo/COFF/inlining-header.ll8
-rw-r--r--test/DebugInfo/COFF/inlining-levels.ll8
-rw-r--r--test/DebugInfo/COFF/inlining-same-name.ll6
-rw-r--r--test/DebugInfo/COFF/inlining.ll6
-rw-r--r--test/DebugInfo/COFF/int8-char-type.ll4
-rw-r--r--test/DebugInfo/COFF/local-constant.ll5
-rw-r--r--test/DebugInfo/COFF/local-variable-gap.ll7
-rw-r--r--test/DebugInfo/COFF/local-variables.ll26
-rw-r--r--test/DebugInfo/COFF/long-name.ll2
-rw-r--r--test/DebugInfo/COFF/multifile.ll8
-rw-r--r--test/DebugInfo/COFF/multifunction.ll12
-rw-r--r--test/DebugInfo/COFF/pieces.ll34
-rw-r--r--test/DebugInfo/COFF/register-variables.ll30
-rw-r--r--test/DebugInfo/COFF/simple.ll8
-rw-r--r--test/DebugInfo/COFF/typedef.ll4
-rw-r--r--test/DebugInfo/COFF/types-array.ll6
-rw-r--r--test/DebugInfo/COFF/types-basic.ll46
-rw-r--r--test/DebugInfo/COFF/udts.ll22
-rw-r--r--test/DebugInfo/Inputs/dwarfdump-str-offsets-macho.obin0 -> 1584 bytes
-rw-r--r--test/DebugInfo/Inputs/dwarfdump-str-offsets-macho.s201
-rwxr-xr-xtest/DebugInfo/Inputs/dwarfdump-test3.elf-x86-64-space (renamed from test/DebugInfo/Inputs/dwarfdump-test3.elf-x86-64 space)bin8944 -> 8944 bytes
-rw-r--r--test/DebugInfo/PDB/Inputs/every-type.cpp63
-rw-r--r--test/DebugInfo/PDB/Inputs/every-type.pdbbin0 -> 102400 bytes
-rw-r--r--test/DebugInfo/PDB/Inputs/every-type.yaml272
-rw-r--r--test/DebugInfo/PDB/every-type.test261
-rw-r--r--test/DebugInfo/PDB/pdbdump-headers.test116
-rw-r--r--test/DebugInfo/PDB/pdbdump-merge-ids-and-types.test3
-rw-r--r--test/DebugInfo/PDB/pdbdump-mergetypes.test6
-rw-r--r--test/DebugInfo/X86/dbg-declare-inalloca.ll14
-rw-r--r--test/DebugInfo/dwarfdump-str-offsets.test148
-rw-r--r--test/DebugInfo/invalid-relocations.test35
-rw-r--r--test/DebugInfo/llvm-symbolizer.test7
37 files changed, 1127 insertions, 263 deletions
diff --git a/test/DebugInfo/COFF/asm.ll b/test/DebugInfo/COFF/asm.ll
index 3d245e9d396d..a55eec2782a6 100644
--- a/test/DebugInfo/COFF/asm.ll
+++ b/test/DebugInfo/COFF/asm.ll
@@ -35,7 +35,7 @@
; OBJ32: CodeViewDebugInfo [
; OBJ32: Subsection [
; OBJ32-NEXT: SubSectionType: Symbols (0xF1)
-; OBJ32: ProcStart {
+; OBJ32: {{.*}}Proc{{.*}}Sym {
; OBJ32: CodeSize: 0x6
; OBJ32: DisplayName: f
; OBJ32: LinkageName: _f
@@ -94,13 +94,13 @@
; OBJ64: ]
; OBJ64: Subsection [
; OBJ64-NEXT: SubSectionType: Symbols (0xF1)
-; OBJ64: ProcStart {
+; OBJ64: {{.*}}Proc{{.*}}Sym {
; OBJ64: CodeSize: 0xE
; OBJ64: DisplayName: f
; OBJ64: LinkageName: f
; OBJ64: }
; OBJ64-NEXT: ProcEnd {
-; OBJ64-NEXT: }
+; OBJ64: }
; OBJ64-NEXT: ]
; OBJ64: FunctionLineTable [
; OBJ64-NEXT: Name: f
diff --git a/test/DebugInfo/COFF/cpp-mangling.ll b/test/DebugInfo/COFF/cpp-mangling.ll
index 8d1a136ec5fc..6f8b5a21ffba 100644
--- a/test/DebugInfo/COFF/cpp-mangling.ll
+++ b/test/DebugInfo/COFF/cpp-mangling.ll
@@ -12,12 +12,12 @@
; fn_tmpl<int, foo::bar>();
; }
-; CHECK: ProcStart {
+; CHECK: {{.*}}Proc{{.*}}Sym {
; CHECK: FunctionType: bar ({{.*}})
; CHECK: DisplayName: foo::bar{{$}}
; CHECK-NEXT: LinkageName: ?bar@foo@@YAHH@Z
-; CHECK: ProcStart {
+; CHECK: {{.*}}Proc{{.*}}Sym {
; CHECK: FunctionType: fn_tmpl ({{.*}})
; CHECK: DisplayName: foo::fn_tmpl<int,&foo::bar>
; CHECK-NEXT: LinkageName: ??$fn_tmpl@H$1?bar@foo@@YAHH@Z@foo@@YAXXZ
diff --git a/test/DebugInfo/COFF/fp-stack.ll b/test/DebugInfo/COFF/fp-stack.ll
index 4a30a49a3768..8061e2ee23d1 100644
--- a/test/DebugInfo/COFF/fp-stack.ll
+++ b/test/DebugInfo/COFF/fp-stack.ll
@@ -11,7 +11,7 @@ entry:
}
; ASM: .cv_def_range Lfunc_begin0 Lfunc_end0, "A\021\200\000\000\000"
-; OBJ: DefRangeRegister {
+; OBJ: DefRangeRegisterSym {
; OBJ: Register: 128
; OBJ: MayHaveNoName: 0
; OBJ: LocalVariableAddrRange {
diff --git a/test/DebugInfo/COFF/globals.ll b/test/DebugInfo/COFF/globals.ll
index 0d1b9413e3d8..f5d6906e181e 100644
--- a/test/DebugInfo/COFF/globals.ll
+++ b/test/DebugInfo/COFF/globals.ll
@@ -81,13 +81,13 @@
; OBJ: DisplayName: first
; OBJ: LinkageName: ?first@@3HA
; OBJ: }
-; OBJ: ThreadLocalDataSym {
+; OBJ: GlobalTLS {
; OBJ: DataOffset: ?middle@@3PEBHEB+0x0
; OBJ: Type: const int* (0x1001)
; OBJ: DisplayName: middle
; OBJ: LinkageName: ?middle@@3PEBHEB
; OBJ: }
-; OBJ: DataSym {
+; OBJ: GlobalData {
; OBJ: Kind: S_GDATA32 (0x110D)
; OBJ: DataOffset: ?last@@3HA+0x0
; OBJ: Type: int (0x74)
@@ -101,7 +101,7 @@
; OBJ: Magic: 0x4
; OBJ: Subsection [
; OBJ: SubSectionType: Symbols (0xF1)
-; OBJ: DataSym {
+; OBJ: GlobalData {
; OBJ: DataOffset: ?comdat@?$A@X@@2HB+0x0
; OBJ: Type: const int (0x1000)
; OBJ: DisplayName: comdat
diff --git a/test/DebugInfo/COFF/inlining-files.ll b/test/DebugInfo/COFF/inlining-files.ll
index a6f5d281eb09..e3e616b618da 100644
--- a/test/DebugInfo/COFF/inlining-files.ll
+++ b/test/DebugInfo/COFF/inlining-files.ll
@@ -18,10 +18,10 @@
; OBJ: Subsection [
; OBJ: SubSectionType: Symbols (0xF1)
-; OBJ: ProcStart {
+; OBJ: {{.*}}Proc{{.*}}Sym {
; OBJ: DisplayName: f
; OBJ: }
-; OBJ: InlineSite {
+; OBJ: InlineSiteSym {
; OBJ: PtrParent: 0x0
; OBJ: PtrEnd: 0x0
; OBJ: Inlinee: file_change (0x1002)
diff --git a/test/DebugInfo/COFF/inlining-header.ll b/test/DebugInfo/COFF/inlining-header.ll
index 0981825e0d3b..7e19f14716f0 100644
--- a/test/DebugInfo/COFF/inlining-header.ll
+++ b/test/DebugInfo/COFF/inlining-header.ll
@@ -63,7 +63,7 @@
; OBJ: Subsection [
; OBJ: SubSectionType: Symbols (0xF1)
-; OBJ: ProcStart {
+; OBJ: {{.*}}Proc{{.*}}Sym {
; OBJ: Kind: S_GPROC32_ID (0x1147)
; OBJ: FunctionType: main (0x1005)
; OBJ: CodeOffset: _main+0x0
@@ -74,8 +74,8 @@
; OBJ: LinkageName: _main
; OBJ: }
-; Previously, g's InlineSite referenced t.h, which was wasteful.
-; OBJ: InlineSite {
+; Previously, g's InlineSiteSym referenced t.h, which was wasteful.
+; OBJ: InlineSiteSym {
; OBJ: Inlinee: g (0x1002)
; OBJ: BinaryAnnotations [
; OBJ-NEXT: ChangeCodeOffsetAndLineOffset: {CodeOffset: 0x6, LineOffset: 1}
@@ -85,7 +85,7 @@
; OBJ-NEXT: ]
; OBJ: }
-; OBJ: InlineSite {
+; OBJ: InlineSiteSym {
; OBJ: Inlinee: f (0x1003)
; OBJ: BinaryAnnotations [
; OBJ-NEXT: ChangeCodeOffsetAndLineOffset: {CodeOffset: 0xD, LineOffset: 1}
diff --git a/test/DebugInfo/COFF/inlining-levels.ll b/test/DebugInfo/COFF/inlining-levels.ll
index 0c5c73c8fdbe..7f93dbb850a2 100644
--- a/test/DebugInfo/COFF/inlining-levels.ll
+++ b/test/DebugInfo/COFF/inlining-levels.ll
@@ -18,14 +18,14 @@
; OBJ: Subsection [
; OBJ: SubSectionType: Symbols (0xF1)
-; OBJ: ProcStart {
-; OBJ: InlineSite {
+; OBJ: {{.*}}Proc{{.*}}Sym {
+; OBJ: InlineSiteSym {
; OBJ: Inlinee: h (0x1002)
; OBJ: }
-; OBJ: InlineSite {
+; OBJ: InlineSiteSym {
; OBJ: Inlinee: g (0x1003)
; OBJ: }
-; OBJ: InlineSite {
+; OBJ: InlineSiteSym {
; OBJ: Inlinee: f (0x1004)
; OBJ: }
; OBJ: InlineSiteEnd {
diff --git a/test/DebugInfo/COFF/inlining-same-name.ll b/test/DebugInfo/COFF/inlining-same-name.ll
index 4a9c9924135d..3700b7060a7a 100644
--- a/test/DebugInfo/COFF/inlining-same-name.ll
+++ b/test/DebugInfo/COFF/inlining-same-name.ll
@@ -14,15 +14,15 @@
; CHECK: CodeViewDebugInfo [
; CHECK: Section: .debug$S
; CHECK: Subsection [
-; CHECK: ProcStart {
+; CHECK: {{.*}}Proc{{.*}}Sym {
; CHECK: DisplayName: main
; CHECK: }
-; CHECK: InlineSite {
+; CHECK: InlineSiteSym {
; CHECK: Inlinee: same_name (0x1002)
; CHECK: }
; CHECK: InlineSiteEnd {
; CHECK: }
-; CHECK: InlineSite {
+; CHECK: InlineSiteSym {
; CHECK: Inlinee: same_name (0x1002)
; CHECK: }
; CHECK: InlineSiteEnd {
diff --git a/test/DebugInfo/COFF/inlining.ll b/test/DebugInfo/COFF/inlining.ll
index 76b8f8c88ee2..ddfd5e056a1b 100644
--- a/test/DebugInfo/COFF/inlining.ll
+++ b/test/DebugInfo/COFF/inlining.ll
@@ -166,7 +166,7 @@
; OBJ: ]
; OBJ: Subsection [
; OBJ: SubSectionType: Symbols (0xF1)
-; OBJ: ProcStart {
+; OBJ: {{.*}}Proc{{.*}}Sym {
; OBJ: PtrParent: 0x0
; OBJ: PtrEnd: 0x0
; OBJ: PtrNext: 0x0
@@ -181,7 +181,7 @@
; OBJ: DisplayName: baz
; OBJ: LinkageName: ?baz@@YAXXZ
; OBJ: }
-; OBJ: InlineSite {
+; OBJ: InlineSiteSym {
; OBJ: PtrParent: 0x0
; OBJ: PtrEnd: 0x0
; OBJ: Inlinee: bar (0x1002)
@@ -193,7 +193,7 @@
; OBJ-NEXT: ChangeCodeLength: 0x7
; OBJ: ]
; OBJ: }
-; OBJ: InlineSite {
+; OBJ: InlineSiteSym {
; OBJ: PtrParent: 0x0
; OBJ: PtrEnd: 0x0
; OBJ: Inlinee: foo (0x1003)
diff --git a/test/DebugInfo/COFF/int8-char-type.ll b/test/DebugInfo/COFF/int8-char-type.ll
index 82972a452819..2e4395b4a599 100644
--- a/test/DebugInfo/COFF/int8-char-type.ll
+++ b/test/DebugInfo/COFF/int8-char-type.ll
@@ -5,7 +5,7 @@
; DW_ATE_[un]signed encoding for all integer types if they don't have distinct
; integer types for characters types. This was PR30552.
-; CHECK-LABEL: DataSym {
+; CHECK-LABEL: GlobalData {
; CHECK-NEXT: Kind: S_GDATA32 (0x110D)
; CHECK-NEXT: DataOffset:
; CHECK-NEXT: Type: signed char (0x10)
@@ -13,7 +13,7 @@
; CHECK-NEXT: LinkageName: x
; CHECK-NEXT: }
-; CHECK-LABEL: DataSym {
+; CHECK-LABEL: GlobalData {
; CHECK-NEXT: Kind: S_GDATA32 (0x110D)
; CHECK-NEXT: DataOffset:
; CHECK-NEXT: Type: unsigned char (0x20)
diff --git a/test/DebugInfo/COFF/local-constant.ll b/test/DebugInfo/COFF/local-constant.ll
index bf8ba8446a6d..c99dd32e22e4 100644
--- a/test/DebugInfo/COFF/local-constant.ll
+++ b/test/DebugInfo/COFF/local-constant.ll
@@ -11,10 +11,11 @@
; FIXME: Find a way to describe variables optimized to constants.
-; OBJ: ProcStart {
+; OBJ: {{.*}}Proc{{.*}}Sym {
; OBJ: DisplayName: constant_var
; OBJ: }
-; OBJ: Local {
+; OBJ: LocalSym {
+; OBJ-NEXT: Kind:
; OBJ-NEXT: Type: int (0x74)
; OBJ-NEXT: Flags [ (0x100)
; OBJ-NEXT: IsOptimizedOut (0x100)
diff --git a/test/DebugInfo/COFF/local-variable-gap.ll b/test/DebugInfo/COFF/local-variable-gap.ll
index a2d05eaa03e4..ab38bbd8c13f 100644
--- a/test/DebugInfo/COFF/local-variable-gap.ll
+++ b/test/DebugInfo/COFF/local-variable-gap.ll
@@ -66,12 +66,13 @@
; ASM: .short 2 # Record length
; ASM: .short 4431 # Record kind: S_PROC_ID_END
-; OBJ: Local {
+; OBJ: LocalSym {
; OBJ: Type: int (0x74)
; OBJ: VarName: p
; OBJ: }
-; OBJ-NOT: Local {
-; OBJ: DefRangeRegister {
+; OBJ-NOT: LocalSym {
+; OBJ: DefRangeRegisterSym {
+; OBJ-NEXT: Kind:
; OBJ-NEXT: Register: 23
; OBJ-NEXT: MayHaveNoName: 0
; OBJ-NEXT: LocalVariableAddrRange {
diff --git a/test/DebugInfo/COFF/local-variables.ll b/test/DebugInfo/COFF/local-variables.ll
index 249b6e1103db..f7087f76f4c1 100644
--- a/test/DebugInfo/COFF/local-variables.ll
+++ b/test/DebugInfo/COFF/local-variables.ll
@@ -99,18 +99,18 @@
; OBJ: Subsection [
; OBJ: SubSectionType: Symbols (0xF1)
-; OBJ: ProcStart {
+; OBJ: {{.*}}Proc{{.*}}Sym {
; OBJ: DisplayName: f
; OBJ: LinkageName: f
; OBJ: }
-; OBJ: Local {
+; OBJ: LocalSym {
; OBJ: Type: int (0x74)
; OBJ: Flags [ (0x1)
; OBJ: IsParameter (0x1)
; OBJ: ]
; OBJ: VarName: param
; OBJ: }
-; OBJ: DefRangeRegisterRel {
+; OBJ: DefRangeRegisterRelSym {
; OBJ: BaseRegister: 335
; OBJ: HasSpilledUDTMember: No
; OBJ: OffsetInParent: 0
@@ -121,13 +121,13 @@
; OBJ: Range: 0x4F
; OBJ: }
; OBJ: }
-; OBJ: Local {
+; OBJ: LocalSym {
; OBJ: Type: int (0x74)
; OBJ: Flags [ (0x0)
; OBJ: ]
; OBJ: VarName: a
; OBJ: }
-; OBJ: DefRangeRegisterRel {
+; OBJ: DefRangeRegisterRelSym {
; OBJ: BaseRegister: 335
; OBJ: HasSpilledUDTMember: No
; OBJ: OffsetInParent: 0
@@ -138,13 +138,13 @@
; OBJ: Range: 0x21
; OBJ: }
; OBJ: }
-; OBJ: Local {
+; OBJ: LocalSym {
; OBJ: Type: int (0x74)
; OBJ: Flags [ (0x0)
; OBJ: ]
; OBJ: VarName: b
; OBJ: }
-; OBJ: DefRangeRegisterRel {
+; OBJ: DefRangeRegisterRelSym {
; OBJ: BaseRegister: 335
; OBJ: HasSpilledUDTMember: No
; OBJ: OffsetInParent: 0
@@ -155,7 +155,7 @@
; OBJ: Range: 0x1F
; OBJ: }
; OBJ: }
-; OBJ: InlineSite {
+; OBJ: InlineSiteSym {
; OBJ: PtrParent: 0x0
; OBJ: PtrEnd: 0x0
; OBJ: Inlinee: will_be_inlined (0x1002)
@@ -166,13 +166,13 @@
; OBJ: ChangeCodeLength: 0xC
; OBJ: ]
; OBJ: }
-; OBJ: Local {
+; OBJ: LocalSym {
; OBJ: Type: int (0x74)
; OBJ: Flags [ (0x0)
; OBJ: ]
; OBJ: VarName: v
; OBJ: }
-; OBJ: DefRangeRegisterRel {
+; OBJ: DefRangeRegisterRelSym {
; OBJ: BaseRegister: 335
; OBJ: HasSpilledUDTMember: No
; OBJ: OffsetInParent: 0
@@ -185,7 +185,7 @@
; OBJ: }
; OBJ: InlineSiteEnd {
; OBJ: }
-; OBJ: InlineSite {
+; OBJ: InlineSiteSym {
; OBJ: PtrParent: 0x0
; OBJ: PtrEnd: 0x0
; OBJ: Inlinee: will_be_inlined (0x1002)
@@ -196,13 +196,13 @@
; OBJ: ChangeCodeLength: 0xA
; OBJ: ]
; OBJ: }
-; OBJ: Local {
+; OBJ: LocalSym {
; OBJ: Type: int (0x74)
; OBJ: Flags [ (0x0)
; OBJ: ]
; OBJ: VarName: v
; OBJ: }
-; OBJ: DefRangeRegisterRel {
+; OBJ: DefRangeRegisterRelSym {
; OBJ: BaseRegister: 335
; OBJ: HasSpilledUDTMember: No
; OBJ: OffsetInParent: 0
diff --git a/test/DebugInfo/COFF/long-name.ll b/test/DebugInfo/COFF/long-name.ll
index 998d77f7ca06..65bd4c16f750 100644
--- a/test/DebugInfo/COFF/long-name.ll
+++ b/test/DebugInfo/COFF/long-name.ll
@@ -1,6 +1,6 @@
; RUN: llc < %s -filetype=obj | llvm-readobj -codeview | FileCheck %s
-; CHECK: ProcStart {
+; CHECK: {{.*}}Proc{{.*}}Sym {
; CHECK: Kind: S_GPROC32_ID (0x1147)
; CHECK: FunctionType: {{A+}} (0x1002)
; CHECK: CodeOffset: f+0x0
diff --git a/test/DebugInfo/COFF/multifile.ll b/test/DebugInfo/COFF/multifile.ll
index 5e53fa57acc4..8af99a6063e6 100644
--- a/test/DebugInfo/COFF/multifile.ll
+++ b/test/DebugInfo/COFF/multifile.ll
@@ -43,13 +43,13 @@
; OBJ32: ]
; OBJ32: Subsection [
; OBJ32-NEXT: SubSectionType: Symbols (0xF1)
-; OBJ32: ProcStart {
+; OBJ32: {{.*}}Proc{{.*}}Sym {
; OBJ32: CodeSize: 0x10
; OBJ32: DisplayName: f
; OBJ32: LinkageName: _f
; OBJ32: }
; OBJ32-NEXT: ProcEnd {
-; OBJ32-NEXT: }
+; OBJ32: }
; OBJ32-NEXT: ]
; OBJ32: FunctionLineTable [
; OBJ32-NEXT: Name: _f
@@ -115,13 +115,13 @@
; OBJ64: ]
; OBJ64: Subsection [
; OBJ64-NEXT: SubSectionType: Symbols (0xF1)
-; OBJ64: ProcStart {
+; OBJ64: {{.*}}Proc{{.*}}Sym {
; OBJ64: CodeSize: 0x18
; OBJ64: DisplayName: f
; OBJ64: LinkageName: f
; OBJ64: }
; OBJ64-NEXT: ProcEnd {
-; OBJ64-NEXT: }
+; OBJ64: }
; OBJ64-NEXT: ]
; OBJ64: FunctionLineTable [
; OBJ64-NEXT: Name: f
diff --git a/test/DebugInfo/COFF/multifunction.ll b/test/DebugInfo/COFF/multifunction.ll
index a6290e8f021d..87db2a20eaa6 100644
--- a/test/DebugInfo/COFF/multifunction.ll
+++ b/test/DebugInfo/COFF/multifunction.ll
@@ -145,7 +145,7 @@
; OBJ32: ]
; OBJ32: Subsection [
; OBJ32-NEXT: SubSectionType: Symbols (0xF1)
-; OBJ32: ProcStart {
+; OBJ32: {{.*}}Proc{{.*}}Sym {
; OBJ32: Kind: S_LPROC32_ID (0x1146)
; OBJ32: CodeSize: 0x6
; OBJ32: DisplayName: x
@@ -159,7 +159,7 @@
; OBJ32: ]
; OBJ32: Subsection [
; OBJ32-NEXT: SubSectionType: Symbols (0xF1)
-; OBJ32: ProcStart {
+; OBJ32: {{.*}}Proc{{.*}}Sym {
; OBJ32: Kind: S_GPROC32_ID (0x1147)
; OBJ32: CodeSize: 0x6
; OBJ32: DisplayName: y
@@ -173,7 +173,7 @@
; OBJ32: ]
; OBJ32: Subsection [
; OBJ32-NEXT: SubSectionType: Symbols (0xF1)
-; OBJ32: ProcStart {
+; OBJ32: {{.*}}Proc{{.*}}Sym {
; OBJ32: Kind: S_GPROC32_ID (0x1147)
; OBJ32: CodeSize: 0x10
; OBJ32: DisplayName: f
@@ -419,7 +419,7 @@
; OBJ64-NEXT: ]
; OBJ64: Subsection [
; OBJ64-NEXT: SubSectionType: Symbols (0xF1)
-; OBJ64: ProcStart {
+; OBJ64: {{.*}}Proc{{.*}}Sym {
; OBJ64: Kind: S_LPROC32_ID (0x1146)
; OBJ64: CodeSize: 0xE
; OBJ64: DisplayName: x
@@ -433,7 +433,7 @@
; OBJ64: ]
; OBJ64: Subsection [
; OBJ64-NEXT: SubSectionType: Symbols (0xF1)
-; OBJ64: ProcStart {
+; OBJ64: {{.*}}Proc{{.*}}Sym {
; OBJ64: Kind: S_GPROC32_ID (0x1147)
; OBJ64: CodeSize: 0xE
; OBJ64: DisplayName: y
@@ -447,7 +447,7 @@
; OBJ64: ]
; OBJ64: Subsection [
; OBJ64-NEXT: SubSectionType: Symbols (0xF1)
-; OBJ64: ProcStart {
+; OBJ64: {{.*}}Proc{{.*}}Sym {
; OBJ64: Kind: S_GPROC32_ID (0x1147)
; OBJ64: CodeSize: 0x18
; OBJ64: DisplayName: f
diff --git a/test/DebugInfo/COFF/pieces.ll b/test/DebugInfo/COFF/pieces.ll
index 60330e057726..098f2ae62f0b 100644
--- a/test/DebugInfo/COFF/pieces.ll
+++ b/test/DebugInfo/COFF/pieces.ll
@@ -105,21 +105,21 @@
; ASM: .cv_def_range [[oy_start]] [[oy_end]], "C\021\027\000\000\000\004\000\000\000"
-; OBJ-LABEL: ProcStart {
+; OBJ-LABEL: {{.*}}Proc{{.*}}Sym {
; OBJ: Kind: S_GPROC32_ID (0x1147)
; OBJ: DisplayName: loop_csr
; OBJ: }
-; OBJ: Local {
+; OBJ: LocalSym {
; OBJ: VarName: o
; OBJ: }
-; OBJ: DefRangeSubfieldRegister {
+; OBJ: DefRangeSubfieldRegisterSym {
; OBJ: Register: 24
; OBJ: MayHaveNoName: 0
; OBJ: OffsetInParent: 0
; OBJ: LocalVariableAddrRange {
; OBJ: }
; OBJ: }
-; OBJ: DefRangeSubfieldRegister {
+; OBJ: DefRangeSubfieldRegisterSym {
; OBJ: Register: 23
; OBJ: MayHaveNoName: 0
; OBJ: OffsetInParent: 4
@@ -135,14 +135,14 @@
; ASM: .asciz "o"
; ASM: .cv_def_range .Lfunc_begin1 .Lfunc_end1, "C\021\022\000\000\000\004\000\000\000"
-; OBJ-LABEL: ProcStart {
+; OBJ-LABEL: {{.*}}Proc{{.*}}Sym {
; OBJ: Kind: S_GPROC32_ID (0x1147)
; OBJ: DisplayName: pad_right
; OBJ: }
-; OBJ: Local {
+; OBJ: LocalSym {
; OBJ: VarName: o
; OBJ: }
-; OBJ: DefRangeSubfieldRegister {
+; OBJ: DefRangeSubfieldRegisterSym {
; OBJ: Register: 18
; OBJ: MayHaveNoName: 0
; OBJ: OffsetInParent: 4
@@ -158,14 +158,14 @@
; ASM: .asciz "o"
; ASM: .cv_def_range .Lfunc_begin2 .Lfunc_end2, "C\021\022\000\000\000\000\000\000\000"
-; OBJ-LABEL: ProcStart {
+; OBJ-LABEL: {{.*}}Proc{{.*}}Sym {
; OBJ: Kind: S_GPROC32_ID (0x1147)
; OBJ: DisplayName: pad_left
; OBJ: }
-; OBJ: Local {
+; OBJ: LocalSym {
; OBJ: VarName: o
; OBJ: }
-; OBJ: DefRangeSubfieldRegister {
+; OBJ: DefRangeSubfieldRegisterSym {
; OBJ: Register: 18
; OBJ: MayHaveNoName: 0
; OBJ: OffsetInParent: 0
@@ -185,17 +185,17 @@
; ASM: .asciz "p"
; ASM: .cv_def_range [[p_start]] .Lfunc_end3, "C\021\021\000\000\000\004\000\000\000"
-; OBJ-LABEL: ProcStart {
+; OBJ-LABEL: {{.*}}Proc{{.*}}Sym {
; OBJ: Kind: S_GPROC32_ID (0x1147)
; OBJ: DisplayName: nested
; OBJ: }
-; OBJ: Local {
+; OBJ: LocalSym {
; OBJ: VarName: o
; OBJ: }
-; OBJ: Local {
+; OBJ: LocalSym {
; OBJ: VarName: p
; OBJ: }
-; OBJ: DefRangeSubfieldRegister {
+; OBJ: DefRangeSubfieldRegisterSym {
; OBJ: Register: 17
; OBJ: MayHaveNoName: 0
; OBJ: OffsetInParent: 4
@@ -212,14 +212,14 @@
; ASM: .asciz "o"
; ASM: .cv_def_range [[spill_o_x_start]] [[spill_o_x_end]], "E\021O\001A\000$\000\000\000"
-; OBJ-LABEL: ProcStart {
+; OBJ-LABEL: {{.*}}Proc{{.*}}Sym {
; OBJ: Kind: S_GPROC32_ID (0x1147)
; OBJ: DisplayName: bitpiece_spill
; OBJ: }
-; OBJ: Local {
+; OBJ: LocalSym {
; OBJ: VarName: o
; OBJ: }
-; OBJ: DefRangeRegisterRel {
+; OBJ: DefRangeRegisterRelSym {
; OBJ: BaseRegister: 335
; OBJ: HasSpilledUDTMember: Yes
; OBJ: OffsetInParent: 4
diff --git a/test/DebugInfo/COFF/register-variables.ll b/test/DebugInfo/COFF/register-variables.ll
index d0ca5ca2afad..f8cd5c4fc3c1 100644
--- a/test/DebugInfo/COFF/register-variables.ll
+++ b/test/DebugInfo/COFF/register-variables.ll
@@ -81,17 +81,17 @@
; OBJ: Subsection [
; OBJ: SubSectionType: Symbols (0xF1)
-; OBJ: ProcStart {
+; OBJ: {{.*}}Proc{{.*}}Sym {
; OBJ: DisplayName: f
; OBJ: }
-; OBJ: Local {
+; OBJ: LocalSym {
; OBJ: Type: int (0x74)
; OBJ: Flags [ (0x1)
; OBJ: IsParameter (0x1)
; OBJ: ]
; OBJ: VarName: p
; OBJ: }
-; OBJ: DefRangeRegister {
+; OBJ: DefRangeRegisterSym {
; OBJ: Register: 18
; OBJ: LocalVariableAddrRange {
; OBJ: OffsetStart: .text+0x0
@@ -99,7 +99,7 @@
; OBJ: Range: 0x7
; OBJ: }
; OBJ: }
-; OBJ: DefRangeRegister {
+; OBJ: DefRangeRegisterSym {
; OBJ: Register: 23
; OBJ: LocalVariableAddrRange {
; OBJ: OffsetStart: .text+0x7
@@ -107,13 +107,13 @@
; OBJ: Range: 0x18
; OBJ: }
; OBJ: }
-; OBJ: Local {
+; OBJ: LocalSym {
; OBJ: Type: int (0x74)
; OBJ: Flags [ (0x0)
; OBJ: ]
; OBJ: VarName: a
; OBJ: }
-; OBJ: DefRangeRegister {
+; OBJ: DefRangeRegisterSym {
; OBJ: Register: 17
; OBJ: LocalVariableAddrRange {
; OBJ: OffsetStart: .text+0xC
@@ -121,13 +121,13 @@
; OBJ: Range: 0x6
; OBJ: }
; OBJ: }
-; OBJ: Local {
+; OBJ: LocalSym {
; OBJ: Type: int (0x74)
; OBJ: Flags [ (0x0)
; OBJ: ]
; OBJ: VarName: c
; OBJ: }
-; OBJ: DefRangeRegister {
+; OBJ: DefRangeRegisterSym {
; OBJ: Register: 17
; OBJ: LocalVariableAddrRange {
; OBJ: OffsetStart: .text+0xC
@@ -135,13 +135,13 @@
; OBJ: Range: 0x4
; OBJ: }
; OBJ: }
-; OBJ: Local {
+; OBJ: LocalSym {
; OBJ: Type: int (0x74)
; OBJ: Flags [ (0x0)
; OBJ: ]
; OBJ: VarName: b
; OBJ: }
-; OBJ: DefRangeRegister {
+; OBJ: DefRangeRegisterSym {
; OBJ: Register: 17
; OBJ: MayHaveNoName: 0
; OBJ: OffsetStart: .text+0x12
@@ -149,19 +149,19 @@
; OBJ: Range: 0x6
; OBJ: }
; OBJ: }
-; OBJ: InlineSite {
+; OBJ: InlineSiteSym {
; OBJ: PtrParent: 0x0
; OBJ: PtrEnd: 0x0
; OBJ: Inlinee: inlineinc (0x1002)
; OBJ: }
-; OBJ: Local {
+; OBJ: LocalSym {
; OBJ: Type: int (0x74)
; OBJ: Flags [ (0x1)
; OBJ: IsParameter (0x1)
; OBJ: ]
; OBJ: VarName: a
; OBJ: }
-; OBJ: DefRangeRegister {
+; OBJ: DefRangeRegisterSym {
; OBJ: Register: 17
; OBJ: LocalVariableAddrRange {
; OBJ: OffsetStart: .text+0xC
@@ -169,13 +169,13 @@
; OBJ: Range: 0x6
; OBJ: }
; OBJ: }
-; OBJ: Local {
+; OBJ: LocalSym {
; OBJ: Type: int (0x74)
; OBJ: Flags [ (0x0)
; OBJ: ]
; OBJ: VarName: b
; OBJ: }
-; OBJ: DefRangeRegister {
+; OBJ: DefRangeRegisterSym {
; OBJ: Register: 17
; OBJ: LocalVariableAddrRange {
; OBJ: OffsetStart: .text+0x12
diff --git a/test/DebugInfo/COFF/simple.ll b/test/DebugInfo/COFF/simple.ll
index 3a0b1c9fa7cd..50d121be6942 100644
--- a/test/DebugInfo/COFF/simple.ll
+++ b/test/DebugInfo/COFF/simple.ll
@@ -77,13 +77,13 @@
; OBJ32-NEXT: ]
; OBJ32: Subsection [
; OBJ32-NEXT: SubSectionType: Symbols (0xF1)
-; OBJ32: ProcStart {
+; OBJ32: {{.*}}Proc{{.*}}Sym {
; OBJ32: CodeSize: 0x6
; OBJ32: DisplayName: f
; OBJ32: LinkageName: _f
; OBJ32: }
; OBJ32-NEXT: ProcEnd {
-; OBJ32-NEXT: }
+; OBJ32: }
; OBJ32-NEXT: ]
; OBJ32: FunctionLineTable [
; OBJ32-NEXT: Name: _f
@@ -174,13 +174,13 @@
; OBJ64-NEXT: ]
; OBJ64: Subsection [
; OBJ64-NEXT: SubSectionType: Symbols (0xF1)
-; OBJ64: ProcStart {
+; OBJ64: {{.*}}Proc{{.*}}Sym {
; OBJ64: CodeSize: 0xE
; OBJ64: DisplayName: f
; OBJ64: LinkageName: f
; OBJ64: }
; OBJ64-NEXT: ProcEnd {
-; OBJ64-NEXT: }
+; OBJ64: }
; OBJ64-NEXT: ]
; OBJ64: FunctionLineTable [
; OBJ64-NEXT: Name: f
diff --git a/test/DebugInfo/COFF/typedef.ll b/test/DebugInfo/COFF/typedef.ll
index cf4e3df257de..9d841419c561 100644
--- a/test/DebugInfo/COFF/typedef.ll
+++ b/test/DebugInfo/COFF/typedef.ll
@@ -2,7 +2,7 @@
; CHECK: CodeViewDebugInfo [
; CHECK: Subsection [
-; CHECK: Local {
+; CHECK: LocalSym {
; CHECK: Type: wchar_t (0x71)
; CHECK: Flags [ (0x0)
; CHECK: ]
@@ -10,7 +10,7 @@
; CHECK: }
; CHECK: Subsection [
; CHECK: SubSectionType: Symbols (0xF1)
-; CHECK: UDT {
+; CHECK: UDTSym {
; CHECK: Type: wchar_t (0x71)
; CHECK: UDTName: XYZ
; CHECK: }
diff --git a/test/DebugInfo/COFF/types-array.ll b/test/DebugInfo/COFF/types-array.ll
index dca3884b1d09..1a4afa8bd219 100644
--- a/test/DebugInfo/COFF/types-array.ll
+++ b/test/DebugInfo/COFF/types-array.ll
@@ -46,7 +46,7 @@
; CHECK: Magic: 0x4
; CHECK: Subsection [
; CHECK: SubSectionType: Symbols (0xF1)
-; CHECK: ProcStart {
+; CHECK: {{.*}}Proc{{.*}}Sym {
; CHECK: PtrParent: 0x0
; CHECK: PtrEnd: 0x0
; CHECK: PtrNext: 0x0
@@ -61,13 +61,13 @@
; CHECK: DisplayName: f
; CHECK: LinkageName: ?f@@YAXXZ
; CHECK: }
-; CHECK: Local {
+; CHECK: LocalSym {
; CHECK: Type: 0x1003
; CHECK: Flags [ (0x0)
; CHECK: ]
; CHECK: VarName: a
; CHECK: }
-; CHECK: DefRangeRegisterRel {
+; CHECK: DefRangeRegisterRelSym {
; CHECK: BaseRegister: 22
; CHECK: HasSpilledUDTMember: No
; CHECK: OffsetInParent: 0
diff --git a/test/DebugInfo/COFF/types-basic.ll b/test/DebugInfo/COFF/types-basic.ll
index 4ead4bfc1c4c..4b9fcd864c27 100644
--- a/test/DebugInfo/COFF/types-basic.ll
+++ b/test/DebugInfo/COFF/types-basic.ll
@@ -218,7 +218,7 @@
; CHECK: CodeViewDebugInfo [
; CHECK: Subsection [
; CHECK: SubSectionType: Symbols (0xF1)
-; CHECK: ProcStart {
+; CHECK: {{.*}}Proc{{.*}}Sym {
; CHECK: DbgStart: 0x0
; CHECK: DbgEnd: 0x0
; CHECK: FunctionType: f (0x1002)
@@ -229,68 +229,68 @@
; CHECK: DisplayName: f
; CHECK: LinkageName: ?f@@YAXMN_J@Z
; CHECK: }
-; CHECK: Local {
+; CHECK: LocalSym {
; CHECK: Type: float (0x40)
; CHECK: Flags [ (0x1)
; CHECK: IsParameter (0x1)
; CHECK: ]
; CHECK: VarName: p1
; CHECK: }
-; CHECK: Local {
+; CHECK: LocalSym {
; CHECK: Type: double (0x41)
; CHECK: Flags [ (0x1)
; CHECK: IsParameter (0x1)
; CHECK: ]
; CHECK: VarName: p2
; CHECK: }
-; CHECK: Local {
+; CHECK: LocalSym {
; CHECK: Type: __int64 (0x13)
; CHECK: Flags [ (0x1)
; CHECK: IsParameter (0x1)
; CHECK: ]
; CHECK: VarName: p3
; CHECK: }
-; CHECK: Local {
+; CHECK: LocalSym {
; CHECK: Type: int (0x74)
; CHECK: VarName: v1
; CHECK: }
-; CHECK: Local {
+; CHECK: LocalSym {
; CHECK: Type: int* (0x674)
; CHECK: VarName: v2
; CHECK: }
-; CHECK: Local {
+; CHECK: LocalSym {
; CHECK: Type: const int* (0x1004)
; CHECK: VarName: v21
; CHECK: }
-; CHECK: Local {
+; CHECK: LocalSym {
; CHECK: Type: void* (0x603)
; CHECK: VarName: v3
; CHECK: }
-; CHECK: Local {
+; CHECK: LocalSym {
; CHECK: Type: int A::* (0x1006)
; CHECK: VarName: v4
; CHECK: }
-; CHECK: Local {
+; CHECK: LocalSym {
; CHECK: Type: void A::() A::* (0x100E)
; CHECK: VarName: v5
; CHECK: }
-; CHECK: Local {
+; CHECK: LocalSym {
; CHECK: Type: long (0x12)
; CHECK: VarName: l1
; CHECK: }
-; CHECK: Local {
+; CHECK: LocalSym {
; CHECK: Type: long (0x12)
; CHECK: VarName: l2
; CHECK: }
-; CHECK: Local {
+; CHECK: LocalSym {
; CHECK: Type: unsigned long (0x22)
; CHECK: VarName: l3
; CHECK: }
-; CHECK: Local {
+; CHECK: LocalSym {
; CHECK: Type: unsigned long (0x22)
; CHECK: VarName: l4
; CHECK: }
-; CHECK: Local {
+; CHECK: LocalSym {
; CHECK: Type: const void* (0x1010)
; CHECK: VarName: v6
; CHECK: }
@@ -298,48 +298,48 @@
; CHECK: }
; CHECK: ]
; CHECK: Subsection [
-; CHECK: ProcStart {
+; CHECK: {{.*}}Proc{{.*}}Sym {
; CHECK: Type: CharTypes (0x1012)
; CHECK: DisplayName: CharTypes
; CHECK: LinkageName: ?CharTypes@@YAXXZ
; CHECK: }
-; CHECK: Local {
+; CHECK: LocalSym {
; CHECK: Type: wchar_t (0x71)
; CHECK: Flags [ (0x0)
; CHECK: ]
; CHECK: VarName: w
; CHECK: }
-; CHECK: Local {
+; CHECK: LocalSym {
; CHECK: Type: unsigned short (0x21)
; CHECK: Flags [ (0x0)
; CHECK: ]
; CHECK: VarName: us
; CHECK: }
-; CHECK: Local {
+; CHECK: LocalSym {
; CHECK: Type: char (0x70)
; CHECK: Flags [ (0x0)
; CHECK: ]
; CHECK: VarName: c
; CHECK: }
-; CHECK: Local {
+; CHECK: LocalSym {
; CHECK: Type: unsigned char (0x20)
; CHECK: Flags [ (0x0)
; CHECK: ]
; CHECK: VarName: uc
; CHECK: }
-; CHECK: Local {
+; CHECK: LocalSym {
; CHECK: Type: signed char (0x10)
; CHECK: Flags [ (0x0)
; CHECK: ]
; CHECK: VarName: sc
; CHECK: }
-; CHECK: Local {
+; CHECK: LocalSym {
; CHECK: Type: char16_t (0x7A)
; CHECK: Flags [ (0x0)
; CHECK: ]
; CHECK: VarName: c16
; CHECK: }
-; CHECK: Local {
+; CHECK: LocalSym {
; CHECK: Type: char32_t (0x7B)
; CHECK: Flags [ (0x0)
; CHECK: ]
diff --git a/test/DebugInfo/COFF/udts.ll b/test/DebugInfo/COFF/udts.ll
index abc688d70a61..735901f7571c 100644
--- a/test/DebugInfo/COFF/udts.ll
+++ b/test/DebugInfo/COFF/udts.ll
@@ -18,37 +18,39 @@ target triple = "i686-pc-windows-msvc18.0.0"
; typedef struct { int x; } U;
; U u;
-; CHECK: ProcStart {
+; CHECK: {{.*}}Proc{{.*}}Sym {
; CHECK: DisplayName: f
; CHECK: LinkageName: ?f@@YAXXZ
; CHECK: }
-; CHECK: UDT {
+; CHECK: UDTSym {
+; CHECK-NEXT: Kind: S_UDT (0x1108)
; CHECK-NEXT: Type: int (0x74)
; CHECK-NEXT: UDTName: f::FOO
; CHECK-NEXT: }
; CHECK-NEXT: ProcEnd {
-; CHECK-NEXT: }
-; CHECK: ProcStart {
+; CHECK: {{.*}}Proc{{.*}}Sym {
; CHECK: DisplayName: g
; CHECK: LinkageName: ?g@@YAMPEAUS@@@Z
; CHECK: }
-; CHECK: UDT {
+; CHECK: UDTSym {
+; CHECK-NEXT: Kind: S_UDT (0x1108)
; CHECK-NEXT: Type: g::pun (0x{{[0-9A-F]+}})
; CHECK-NEXT: UDTName: g::pun
; CHECK-NEXT: }
; CHECK-NEXT: ProcEnd {
-; CHECK-NEXT: }
; CHECK: Subsection
-; CHECK-NOT: ProcStart
-; CHECK: UDT {
+; CHECK-NOT: {{.*}}Proc{{.*}}Sym
+; CHECK: UDTSym {
+; CHECK-NEXT: Kind: S_UDT (0x1108)
; CHECK-NEXT: Type: S (0x{{[0-9A-F]+}})
; CHECK-NEXT: UDTName: S
-; CHECK: UDT {
+; CHECK: UDTSym {
+; CHECK-NEXT: Kind: S_UDT (0x1108)
; CHECK-NEXT: Type: <unnamed-tag> (0x{{[0-9A-F]+}})
; CHECK-NEXT: UDTName: U
-; CHECK-NOT: UDT {
+; CHECK-NOT: UDTSym {
%struct.U = type { i32 }
%struct.S = type { i32 }
diff --git a/test/DebugInfo/Inputs/dwarfdump-str-offsets-macho.o b/test/DebugInfo/Inputs/dwarfdump-str-offsets-macho.o
new file mode 100644
index 000000000000..c0ed489d846c
--- /dev/null
+++ b/test/DebugInfo/Inputs/dwarfdump-str-offsets-macho.o
Binary files differ
diff --git a/test/DebugInfo/Inputs/dwarfdump-str-offsets-macho.s b/test/DebugInfo/Inputs/dwarfdump-str-offsets-macho.s
new file mode 100644
index 000000000000..9ee9ad234d84
--- /dev/null
+++ b/test/DebugInfo/Inputs/dwarfdump-str-offsets-macho.s
@@ -0,0 +1,201 @@
+# Test object to verify dwarfdump handles v5 string offset tables in Mach-O.
+# This is similar to dwarfdump-str-offsets.s with 2 CUs and 1 TU, but no
+# split sections.
+#
+# To generate the test object:
+# llvm-mc -triple i386-apple-darwin9 dwarfdump-str-offsets-macho.s -filetype=obj \
+# -o dwarfdump-str-offsets-macho.o
+
+ .section __DWARF,__debug_str,regular,debug
+Linfo_string:
+ .asciz "Handmade DWARF producer"
+str_CU1:
+ .asciz "Compile_Unit_1"
+str_CU1_dir:
+ .asciz "/home/test/CU1"
+str_CU2:
+ .asciz "Compile_Unit_2"
+str_CU2_dir:
+ .asciz "/home/test/CU2"
+str_TU:
+ .asciz "Type_Unit"
+str_TU_type:
+ .asciz "MyStruct"
+str_Subprogram:
+ .asciz "MyFunc"
+str_Variable1:
+ .asciz "MyVar1"
+str_Variable2:
+ .asciz "MyVar2"
+str_Variable3:
+ .asciz "MyVar3"
+
+ .section __DWARF,__debug_str_offs,regular,debug
+Ldebug_str_offsets:
+ .long Ldebug_str_offsets_segment0_end-Ldebug_str_offsets_base0
+ .short 5 # DWARF version
+ .short 0 # Padding
+Ldebug_str_offsets_base0:
+ .long str_producer
+ .long str_CU1
+ .long str_CU1_dir
+ .long str_Subprogram
+ .long str_Variable1
+ .long str_Variable2
+ .long str_Variable3
+Ldebug_str_offsets_segment0_end:
+# CU2's contribution
+ .long Ldebug_str_offsets_segment1_end-Ldebug_str_offsets_base1
+ .short 5 # DWARF version
+ .short 0 # Padding
+Ldebug_str_offsets_base1:
+ .long str_producer
+ .long str_CU2
+ .long str_CU2_dir
+Ldebug_str_offsets_segment1_end:
+# The TU's contribution
+ .long Ldebug_str_offsets_segment2_end-Ldebug_str_offsets_base2
+ .short 5 # DWARF version
+ .short 0 # Padding
+Ldebug_str_offsets_base2:
+ .long str_TU
+ .long str_TU_type
+Ldebug_str_offsets_segment2_end:
+
+ .section __DWARF,__debug_abbrev,regular,debug
+Lsection_abbrev:
+ .byte 0x01 # Abbrev code
+ .byte 0x11 # DW_TAG_compile_unit
+ .byte 0x01 # DW_CHILDREN_yes
+ .byte 0x25 # DW_AT_producer
+ .byte 0x1a # DW_FORM_strx
+ .byte 0x03 # DW_AT_name
+ .byte 0x1a # DW_FORM_strx
+ .byte 0x72 # DW_AT_str_offsets_base
+ .byte 0x17 # DW_FORM_sec_offset
+ .byte 0x1b # DW_AT_comp_dir
+ .byte 0x1a # DW_FORM_strx
+ .byte 0x00 # EOM(1)
+ .byte 0x00 # EOM(2)
+ .byte 0x02 # Abbrev code
+ .byte 0x41 # DW_TAG_type_unit
+ .byte 0x01 # DW_CHILDREN_yes
+ .byte 0x03 # DW_AT_name
+ .byte 0x1a # DW_FORM_strx
+ .byte 0x72 # DW_AT_str_offsets_base
+ .byte 0x17 # DW_FORM_sec_offset
+ .byte 0x00 # EOM(1)
+ .byte 0x00 # EOM(2)
+ .byte 0x03 # Abbrev code
+ .byte 0x13 # DW_TAG_structure_type
+ .byte 0x00 # DW_CHILDREN_no (no members)
+ .byte 0x03 # DW_AT_name
+ .byte 0x1a # DW_FORM_strx
+ .byte 0x00 # EOM(1)
+ .byte 0x00 # EOM(2)
+ .byte 0x04 # Abbrev code
+ .byte 0x2e # DW_TAG_subprogram
+ .byte 0x01 # DW_CHILDREN_yes
+ .byte 0x03 # DW_AT_name
+ .byte 0x25 # DW_FORM_strx1
+ .byte 0x00 # EOM(1)
+ .byte 0x00 # EOM(2)
+ .byte 0x05 # Abbrev code
+ .byte 0x34 # DW_TAG_variable
+ .byte 0x00 # DW_CHILDREN_no
+ .byte 0x03 # DW_AT_name
+ .byte 0x26 # DW_FORM_strx2
+ .byte 0x00 # EOM(1)
+ .byte 0x00 # EOM(2)
+ .byte 0x06 # Abbrev code
+ .byte 0x34 # DW_TAG_variable
+ .byte 0x00 # DW_CHILDREN_no
+ .byte 0x03 # DW_AT_name
+ .byte 0x27 # DW_FORM_strx3
+ .byte 0x00 # EOM(1)
+ .byte 0x00 # EOM(2)
+ .byte 0x07 # Abbrev code
+ .byte 0x34 # DW_TAG_variable
+ .byte 0x00 # DW_CHILDREN_no
+ .byte 0x03 # DW_AT_name
+ .byte 0x28 # DW_FORM_strx4
+ .byte 0x00 # EOM(1)
+ .byte 0x00 # EOM(2)
+ .byte 0x00 # EOM(3)
+
+ .section __DWARF,__debug_info,regular,debug
+Lsection_info:
+# DWARF v5 CU header.
+ .long CU1_5_end-CU1_5_version # Length of Unit
+CU1_5_version:
+ .short 5 # DWARF version number
+ .byte 1 # DWARF Unit Type
+ .byte 8 # Address Size (in bytes)
+ .long 0 # Offset Into Abbrev. Section
+# The compile-unit DIE, which has a DW_AT_producer, DW_AT_name,
+# DW_AT_str_offsets and DW_AT_compdir.
+ .byte 1 # Abbreviation code
+ .byte 0 # The index of the producer string
+ .byte 1 # The index of the CU name string
+ .long Ldebug_str_offsets_base0-Ldebug_str_offsets
+ .byte 2 # The index of the comp dir string
+# A subprogram DIE with DW_AT_name, using DW_FORM_strx1.
+ .byte 4 # Abbreviation code
+ .byte 3 # Subprogram name string (DW_FORM_strx1)
+# A variable DIE with DW_AT_name, using DW_FORM_strx2.
+ .byte 5 # Abbreviation code
+ .short 0x0004 # Subprogram name string (DW_FORM_strx2)
+# A variable DIE with DW_AT_name, using DW_FORM_strx3.
+ .byte 6 # Abbreviation code
+ .byte 5 # Subprogram name string (DW_FORM_strx3)
+ .short 0 # Subprogram name string (DW_FORM_strx3)
+# A variable DIE with DW_AT_name, using DW_FORM_strx4.
+ .byte 7 # Abbreviation code
+ .quad 0x00000006 # Subprogram name string (DW_FORM_strx4)
+ .byte 0 # NULL
+ .byte 0 # NULL
+ .byte 0 # NULL
+CU1_5_end:
+
+# DWARF v5 CU header
+ .long CU2_5_end-CU2_5_version # Length of Unit
+CU2_5_version:
+ .short 5 # DWARF version number
+ .byte 1 # DWARF Unit Type
+ .byte 8 # Address Size (in bytes)
+ .long 0 # Offset Into Abbrev. Section
+# The compile-unit DIE, which has a DW_AT_producer, DW_AT_name,
+# DW_AT_str_offsets and DW_AT_compdir.
+ .byte 1 # Abbreviation code
+ .byte 0 # The index of the producer string
+ .byte 1 # The index of the CU name string
+ .long Ldebug_str_offsets_base1-Ldebug_str_offsets
+ .byte 2 # The index of the comp dir string
+ .byte 0 # NULL
+CU2_5_end:
+
+ .section __DWARF,__debug_types,regular,debug
+# DWARF v5 Type unit header.
+TU_5_start:
+ .long TU_5_end-TU_5_version # Length of Unit
+TU_5_version:
+ .short 5 # DWARF version number
+ .byte 2 # DWARF Unit Type
+ .byte 8 # Address Size (in bytes)
+ .long 0 # Offset Into Abbrev. Section
+ .quad 0x0011223344556677 # Type Signature
+ .long TU_5_type-TU_5_start # Type offset
+# The type-unit DIE, which has a name.
+ .byte 2 # Abbreviation code
+ .byte 0 # Index of the unit type name string
+ .long Ldebug_str_offsets_base2-Ldebug_str_offsets # offset into the str_offsets section
+# The type DIE, which has a name.
+TU_5_type:
+ .byte 3 # Abbreviation code
+ .byte 1 # Index of the type name string
+ .byte 0 # NULL
+ .byte 0 # NULL
+TU_5_end:
+
+
+.subsections_via_symbols
diff --git a/test/DebugInfo/Inputs/dwarfdump-test3.elf-x86-64 space b/test/DebugInfo/Inputs/dwarfdump-test3.elf-x86-64-space
index 7330cd8baa1e..7330cd8baa1e 100755
--- a/test/DebugInfo/Inputs/dwarfdump-test3.elf-x86-64 space
+++ b/test/DebugInfo/Inputs/dwarfdump-test3.elf-x86-64-space
Binary files differ
diff --git a/test/DebugInfo/PDB/Inputs/every-type.cpp b/test/DebugInfo/PDB/Inputs/every-type.cpp
new file mode 100644
index 000000000000..ed715b034300
--- /dev/null
+++ b/test/DebugInfo/PDB/Inputs/every-type.cpp
@@ -0,0 +1,63 @@
+// Build with "cl.exe /Zi /GR- /GX- every-type.cpp /link /debug /nodefaultlib /entry:main"
+
+// clang-format off
+void *__purecall = 0;
+
+void __cdecl operator delete(void *,unsigned int) {}
+
+struct FooStruct { }; // LF_STRUCTURE
+
+class FooClass { // LF_CLASS
+ // LF_FIELDLIST
+ enum NestedEnum { // LF_ENUM
+ // LF_NESTTYPE
+ A, B, C // LF_ENUMERATE
+ };
+
+ void RegularMethod() {} // LF_ARGLIST
+ // LF_ONEMETHOD
+ // LF_MFUNCTION
+
+ void OverloadedMethod(int) {} // LF_METHODLIST
+ // LF_METHOD
+ void OverloadedMethod(int, int) {}
+
+ int HiNibble : 4; // LF_BITFIELD
+ int LoNibble : 4;
+ NestedEnum EnumVariable; // LF_MEMBER
+ static void *StaticMember; // LF_POINTER
+ // LF_STMEMBER
+};
+
+void *FooClass::StaticMember = nullptr;
+
+class Inherit : public FooClass { // LF_BCLASS
+public:
+ virtual ~Inherit() {} // LF_VTSHAPE
+ // LF_VFUNCTAB
+};
+
+class VInherit : public virtual FooClass { // LF_VBCLASS
+
+};
+
+class IVInherit : public VInherit { // LF_IVBCLASS
+};
+
+union TheUnion {
+ int X; // LF_UNION
+};
+
+int SomeArray[7] = {1, 2, 3, 4, 5, 6, 7}; // LF_ARRAY
+
+int main(int argc, char **argv) { // LF_PROCEDURE
+ const int X = 7; // LF_MODIFIER
+
+ FooStruct FooStructInstance;
+ FooClass FooClassInstance;
+ Inherit InheritInstance;
+ VInherit VInheritInstance;
+ IVInherit IVInheritInstance;
+ TheUnion UnionInstance;
+ return SomeArray[argc];
+}
diff --git a/test/DebugInfo/PDB/Inputs/every-type.pdb b/test/DebugInfo/PDB/Inputs/every-type.pdb
new file mode 100644
index 000000000000..64996d61d3e7
--- /dev/null
+++ b/test/DebugInfo/PDB/Inputs/every-type.pdb
Binary files differ
diff --git a/test/DebugInfo/PDB/Inputs/every-type.yaml b/test/DebugInfo/PDB/Inputs/every-type.yaml
new file mode 100644
index 000000000000..8f23e8ad5e89
--- /dev/null
+++ b/test/DebugInfo/PDB/Inputs/every-type.yaml
@@ -0,0 +1,272 @@
+---
+TpiStream:
+ Records:
+ # int* [Index: 0x1000]
+ - Kind: LF_POINTER
+ Pointer:
+ ReferentType: 116 # int
+ Attrs: 32778
+ # const int* [Index: 0x1001]
+ - Kind: LF_MODIFIER
+ Modifier:
+ ModifiedType: 0x1000
+ Modifiers: [ Const ]
+ # char* [Index: 0x1002]
+ - Kind: LF_POINTER
+ Pointer:
+ ReferentType: 1136 # char*
+ Attrs: 32778
+ # (int, char **) [Index: 0x1003]
+ - Kind: LF_ARGLIST
+ ArgList:
+ ArgIndicies: [ 116, 0x1002 ]
+ # (int, double) [Index: 0x1004]
+ - Kind: LF_ARGLIST
+ ArgList:
+ ArgIndicies: [ 116, 65 ] # (int, double)
+ # int main(int argc, char **argv) [Index: 0x1005]
+ - Kind: LF_PROCEDURE
+ Procedure:
+ ReturnType: 117 # int
+ CallConv: NearC # __cdecl
+ Options: [ None ]
+ ParameterCount: 2
+ ArgumentList: 0x1003 # (int, char**)
+ # <label> [Index: 0x1006]
+ - Kind: LF_LABEL
+ Label:
+ Mode: Near
+ # <forward decl>
+ # class FooClass; [Index: 0x1007]
+ - Kind: LF_STRUCTURE
+ Class:
+ MemberCount: 0
+ Options: [ None, ForwardReference ]
+ FieldList: 0
+ Name: 'FooClass'
+ DerivationList: 0
+ VTableShape: 0
+ Size: 0
+ # char* [Index: 0x1008]
+ - Kind: LF_POINTER
+ Pointer:
+ ReferentType: 0x1007 # FooClass
+ Attrs: 33802 # const
+ # int (FooClass::)(int, char **) [Index: 0x1009]
+ - Kind: LF_MFUNCTION
+ MemberFunction:
+ ReturnType: 116 # int
+ ClassType: 0x1007 # FooClass
+ ThisType: 0x1008 # const FooClass*
+ CallConv: ThisCall
+ Options: [ None ]
+ ParameterCount: 2
+ ArgumentList: 0x1003 # (int, char**)
+ ThisPointerAdjustment: 0
+ # int (FooClass::)(int, double) [Index: 0x100A]
+ - Kind: LF_MFUNCTION
+ MemberFunction:
+ ReturnType: 116 # int
+ ClassType: 0x1007 # FooClass
+ ThisType: 0x1008 # const FooClass*
+ CallConv: ThisCall
+ Options: [ None ]
+ ParameterCount: 2
+ ArgumentList: 0x1004 # (int, double)
+ ThisPointerAdjustment: 0
+ # <method overload list>
+ # int (FooClass::)(int, char **)
+ # int (FooClass::)(int, double) [Index: 0x100B]
+ - Kind: LF_METHODLIST
+ MethodOverloadList:
+ Methods:
+ - Type: 0x1009 # int (FooClass::)(int, char **)
+ Attrs: 3 # public
+ VFTableOffset: -1
+ Name: ''
+ - Type: 0x100A # int (FooClass::)(int, double)
+ Attrs: 3 # public
+ VFTableOffset: -1
+ Name: ''
+ # <Field List>
+ # A, B, C [Index: 0x100C]
+ - Kind: LF_FIELDLIST
+ FieldList:
+ - Kind: LF_ENUMERATE
+ Enumerator:
+ Attrs: 3
+ Value: 0
+ Name: A
+ - Kind: LF_ENUMERATE
+ Enumerator:
+ Attrs: 3
+ Value: 1
+ Name: B
+ - Kind: LF_ENUMERATE
+ Enumerator:
+ Attrs: 3
+ Value: 2
+ Name: C
+ # enum FooClass::Enum : uint32_t {
+ # A, B, C
+ # }; [Index: 0x100D]
+ - Kind: LF_ENUM
+ Enum:
+ NumEnumerators: 3
+ Options: [ None, Nested ]
+ FieldList: 0x100C
+ Name: 'FooClass::Enum'
+ UnderlyingType: 117
+ # <Field List>
+ # public:
+ # enum FooEnum : uint32_t {
+ # A, B, C
+ # };
+ # FooEnum EnumMember;
+ # static int StaticInt;
+ # int FooClass::OverloadedMethod(int, char **);
+ # int FooClass::OverloadedMethod(int, double);
+ # int FooClass::RegularMethod(int, double);
+ # [Index: 0x100E]
+ - Kind: LF_FIELDLIST
+ FieldList:
+ # enum FooEnum : uint32_t {
+ # A, B, C
+ # };
+ - Kind: LF_NESTTYPE
+ NestedType:
+ Type: 0x100D
+ Name: FooEnum
+ # FooEnum EnumMember;
+ - Kind: LF_MEMBER
+ DataMember:
+ Attrs: 3 # public
+ Type: 0x100D # void*
+ FieldOffset: 0
+ Name: EnumMember
+ # static int StaticInt;
+ - Kind: LF_STMEMBER
+ StaticDataMember:
+ Attrs: 3 # public
+ Type: 116 # int
+ Name: StaticInt
+ # int FooClass::OverloadedMethod(int, char **);
+ # int FooClass::OverloadedMethod(int, double);
+ - Kind: LF_METHOD
+ OverloadedMethod:
+ NumOverloads: 2
+ MethodList: 0x100B
+ Name: OverloadedMethod
+ # int FooClass::RegularMethod(int, double);
+ - Kind: LF_ONEMETHOD
+ OneMethod:
+ Type: 0x100A
+ Attrs: 3 # public
+ VFTableOffset: -1
+ Name: RegularMethod
+ # class FooClass {
+ # public:
+ # enum FooEnum : uint32_t {
+ # A, B, C
+ # };
+ # FooEnum EnumMember;
+ # static int StaticInt;
+ # int FooClass::OverloadedMethod(int, char **);
+ # int FooClass::OverloadedMethod(int, double);
+ # int FooClass::RegularMethod(int, double);
+ # }; [Index: 0x100F]
+ - Kind: LF_CLASS
+ Class:
+ MemberCount: 6
+ Options: [ None ]
+ FieldList: 0x100E
+ Name: 'FooClass'
+ DerivationList: 0
+ VTableShape: 0
+ Size: 4
+ # struct FooStructure; [Index: 0x1010]
+ - Kind: LF_STRUCTURE
+ Class:
+ MemberCount: 6
+ Options: [ None ]
+ FieldList: 0x100E
+ Name: 'FooStructure'
+ DerivationList: 0
+ VTableShape: 0
+ Size: 4
+ # interface FooInterface; [Index: 0x1011]
+ - Kind: LF_INTERFACE
+ Class:
+ MemberCount: 6
+ Options: [ None ]
+ FieldList: 0x100E
+ Name: 'FooInterface'
+ DerivationList: 0
+ VTableShape: 0
+ Size: 4
+ # <field list>
+ # : public FooClass [Index: 0x1012]
+ - Kind: LF_FIELDLIST
+ FieldList:
+ - Kind: LF_BCLASS
+ Attrs: 3 # public
+ Type: 0x100F # FooClass
+ Offset: 0
+ # <field list>
+ # : public virtual FooClass [Index: 0x1013]
+ - Kind: LF_FIELDLIST
+ FieldList:
+ - Kind: LF_VBCLASS
+ Attrs: 3 # public
+ BaseType: 0x100F # FooClass
+ VBPtrType: 0x1001 # const int *
+ VBPtrOffset: 0
+ VTableIndex: 1
+ # class Inherit : public FooClass {}; [Index: 0x1014]
+ - Kind: LF_STRUCTURE
+ Class:
+ MemberCount: 1
+ Options: [ None ]
+ FieldList: 0x100E
+ Name: 'Inherit'
+ DerivationList: 0x1012
+ VTableShape: 0
+ Size: 4
+ # class VInherit : public virtual FooClass {}; [Index: 0x1015]
+ - Kind: LF_STRUCTURE
+ Class:
+ MemberCount: 1
+ Options: [ None ]
+ FieldList: 0x100E
+ Name: 'Inherit'
+ DerivationList: 0x1012
+ VTableShape: 0
+ Size: 4
+
+# // Member type records. These are generally not length prefixed, and appear
+# // inside of a field list record.
+# MEMBER_RECORD(LF_VFUNCTAB, 0x1409, VFPtr)
+
+# MEMBER_RECORD_ALIAS(LF_BINTERFACE, 0x151a, BaseInterface, BaseClass)
+
+# MEMBER_RECORD_ALIAS(LF_IVBCLASS, 0x1402, IndirectVirtualBaseClass,
+# VirtualBaseClass)
+
+
+# TYPE_RECORD(LF_ARRAY, 0x1503, Array)
+# TYPE_RECORD(LF_UNION, 0x1506, Union)
+# TYPE_RECORD(LF_TYPESERVER2, 0x1515, TypeServer2)
+# TYPE_RECORD(LF_VFTABLE, 0x151d, VFTable)
+# TYPE_RECORD(LF_VTSHAPE, 0x000a, VFTableShape)
+
+# TYPE_RECORD(LF_BITFIELD, 0x1205, BitField)
+
+
+# // ID leaf records. Subsequent leaf types may be referenced from .debug$S.
+# TYPE_RECORD(LF_FUNC_ID, 0x1601, FuncId)
+# TYPE_RECORD(LF_MFUNC_ID, 0x1602, MemberFuncId)
+# TYPE_RECORD(LF_BUILDINFO, 0x1603, BuildInfo)
+# TYPE_RECORD(LF_SUBSTR_LIST, 0x1604, StringList)
+# TYPE_RECORD(LF_STRING_ID, 0x1605, StringId)
+# TYPE_RECORD(LF_UDT_SRC_LINE, 0x1606, UdtSourceLine)
+# TYPE_RECORD(LF_UDT_MOD_SRC_LINE, 0x1607, UdtModSourceLine)
diff --git a/test/DebugInfo/PDB/every-type.test b/test/DebugInfo/PDB/every-type.test
new file mode 100644
index 000000000000..e6b9c15815d0
--- /dev/null
+++ b/test/DebugInfo/PDB/every-type.test
@@ -0,0 +1,261 @@
+The test input (every-type.pdb) is generated from some short and trivial C++ code
+that exercises the entire type system to generate every possible type record that
+we claim to understand. We then test this in two ways:
+ 1) We just dump the output for the purposes of readability. This tests that we
+ we can dump every possible type record.
+ 2) We dump the output to yaml, and then re-generate a PDB with the same type
+ stream, and then run test 1 on the new PDB. This verifies that the PDB
+ hasn't changed.
+
+
+RUN: llvm-pdbutil dump -type-index=0x1018,0x102A,0x103B,0x1093,0x1095,0x1096,0x1098 \
+RUN: -dependents %p/Inputs/every-type.pdb | FileCheck --check-prefix=TYPES %s
+
+RUN: llvm-pdbutil pdb2yaml -tpi-stream -ipi-stream %p/Inputs/every-type.pdb > %t.pdb.yaml
+RUN: llvm-pdbutil yaml2pdb -pdb=%t.yaml.pdb %t.pdb.yaml
+RUN: llvm-pdbutil dump -type-index=0x1018,0x102A,0x103B,0x1093,0x1095,0x1096,0x1098 \
+RUN: -dependents %t.yaml.pdb | FileCheck --check-prefix=TYPES %s
+
+TYPES: Types (TPI Stream)
+TYPES-NEXT: ============================================================
+TYPES-NEXT: Showing 7 records and their dependents (73 records total)
+TYPES-NEXT: 0x1005 | LF_MODIFIER [size = 12]
+TYPES-NEXT: referent = 0x0074 (int), modifiers = const
+TYPES-NEXT: 0x1006 | LF_CLASS [size = 48] `FooClass`
+TYPES-NEXT: unique name: `.?AVFooClass@@`
+TYPES-NEXT: vtable: <no type>, base list: <no type>, field list: <no type>
+TYPES-NEXT: options: forward ref | has unique name
+TYPES-NEXT: 0x1007 | LF_VTSHAPE [size = 8]
+TYPES-NEXT: 0x1008 | LF_POINTER [size = 12]
+TYPES-NEXT: referent = 0x1007, mode = pointer, opts = None, kind = ptr32
+TYPES-NEXT: 0x1009 | LF_CLASS [size = 44] `Inherit`
+TYPES-NEXT: unique name: `.?AVInherit@@`
+TYPES-NEXT: vtable: <no type>, base list: <no type>, field list: <no type>
+TYPES-NEXT: options: forward ref | has unique name
+TYPES-NEXT: 0x100A | LF_POINTER [size = 12]
+TYPES-NEXT: referent = 0x1009, mode = pointer, opts = const, kind = ptr32
+TYPES-NEXT: 0x100B | LF_ARGLIST [size = 8]
+TYPES-NEXT: 0x100C | LF_MFUNCTION [size = 28]
+TYPES-NEXT: return type = 0x0003 (void), # args = 0, param list = 0x100B
+TYPES-NEXT: class type = 0x1009, this type = 0x100A, this adjust = 0
+TYPES-NEXT: calling conv = thiscall, options = None
+TYPES-NEXT: 0x100D | LF_MODIFIER [size = 12]
+TYPES-NEXT: referent = 0x1009, modifiers = const
+TYPES-NEXT: 0x100E | LF_POINTER [size = 12]
+TYPES-NEXT: referent = 0x100D, mode = ref, opts = None, kind = ptr32
+TYPES-NEXT: 0x100F | LF_ARGLIST [size = 12]
+TYPES-NEXT: 0x100E: `const Inherit&`
+TYPES-NEXT: 0x1010 | LF_MFUNCTION [size = 28]
+TYPES-NEXT: return type = 0x0003 (void), # args = 1, param list = 0x100F
+TYPES-NEXT: class type = 0x1009, this type = 0x100A, this adjust = 0
+TYPES-NEXT: calling conv = thiscall, options = constructor
+TYPES-NEXT: 0x1011 | LF_MFUNCTION [size = 28]
+TYPES-NEXT: return type = 0x0003 (void), # args = 0, param list = 0x100B
+TYPES-NEXT: class type = 0x1009, this type = 0x100A, this adjust = 0
+TYPES-NEXT: calling conv = thiscall, options = constructor
+TYPES-NEXT: 0x1012 | LF_METHODLIST [size = 20]
+TYPES-NEXT: - Method [type = 0x1010, vftable offset = -1, attrs = public compiler-generated]
+TYPES-NEXT: - Method [type = 0x1011, vftable offset = -1, attrs = public compiler-generated]
+TYPES-NEXT: 0x1013 | LF_POINTER [size = 12]
+TYPES-NEXT: referent = 0x1009, mode = ref, opts = None, kind = ptr32
+TYPES-NEXT: 0x1014 | LF_MFUNCTION [size = 28]
+TYPES-NEXT: return type = 0x1013, # args = 1, param list = 0x100F
+TYPES-NEXT: class type = 0x1009, this type = 0x100A, this adjust = 0
+TYPES-NEXT: calling conv = thiscall, options = None
+TYPES-NEXT: 0x1015 | LF_ARGLIST [size = 12]
+TYPES-NEXT: 0x0075 (unsigned): `unsigned`
+TYPES-NEXT: 0x1016 | LF_MFUNCTION [size = 28]
+TYPES-NEXT: return type = 0x0403 (void*), # args = 1, param list = 0x1015
+TYPES-NEXT: class type = 0x1009, this type = 0x100A, this adjust = 0
+TYPES-NEXT: calling conv = thiscall, options = None
+TYPES-NEXT: 0x1017 | LF_FIELDLIST [size = 152]
+TYPES-NEXT: - LF_BCLASS
+TYPES-NEXT: type = 0x1006, offset = 4, attrs = public
+TYPES-NEXT: - LF_VFUNCTAB type = 0x1008
+TYPES-NEXT: - LF_ONEMETHOD [name = `~Inherit`]
+TYPES-NEXT: type = 0x100C, vftable offset = 0, attrs = public intro virtual
+TYPES-NEXT: - LF_METHOD [name = `Inherit`, # overloads = 2, overload list = 0x1012]
+TYPES-NEXT: - LF_ONEMETHOD [name = `operator=`]
+TYPES-NEXT: type = 0x1014, vftable offset = -1, attrs = public compiler-generated
+TYPES-NEXT: - LF_ONEMETHOD [name = `__local_vftable_ctor_closure`]
+TYPES-NEXT: type = 0x100C, vftable offset = -1, attrs = public compiler-generated
+TYPES-NEXT: - LF_ONEMETHOD [name = `__vecDelDtor`]
+TYPES-NEXT: type = 0x1016, vftable offset = 0, attrs = public intro virtual compiler-generated
+TYPES-NEXT: 0x1018 | LF_CLASS [size = 44] `Inherit`
+TYPES-NEXT: unique name: `.?AVInherit@@`
+TYPES-NEXT: vtable: 0x1007, base list: <no type>, field list: 0x1017
+TYPES-NEXT: options: has ctor / dtor | has unique name | overloaded operator | overloaded operator=
+TYPES-NEXT: 0x1019 | LF_POINTER [size = 12]
+TYPES-NEXT: referent = 0x1005, mode = pointer, opts = None, kind = ptr32
+TYPES-NEXT: 0x101A | LF_CLASS [size = 48] `VInherit`
+TYPES-NEXT: unique name: `.?AVVInherit@@`
+TYPES-NEXT: vtable: <no type>, base list: <no type>, field list: <no type>
+TYPES-NEXT: options: forward ref | has unique name
+TYPES-NEXT: 0x101B | LF_POINTER [size = 12]
+TYPES-NEXT: referent = 0x101A, mode = pointer, opts = const, kind = ptr32
+TYPES-NEXT: 0x101C | LF_POINTER [size = 12]
+TYPES-NEXT: referent = 0x101A, mode = rvalue ref, opts = None, kind = ptr32
+TYPES-NEXT: 0x101D | LF_ARGLIST [size = 12]
+TYPES-NEXT: 0x101C: `VInherit&&`
+TYPES-NEXT: 0x101E | LF_MFUNCTION [size = 28]
+TYPES-NEXT: return type = 0x0003 (void), # args = 1, param list = 0x101D
+TYPES-NEXT: class type = 0x101A, this type = 0x101B, this adjust = 0
+TYPES-NEXT: calling conv = thiscall, options = constructor with virtual bases | constructor
+TYPES-NEXT: 0x101F | LF_MODIFIER [size = 12]
+TYPES-NEXT: referent = 0x101A, modifiers = const
+TYPES-NEXT: 0x1020 | LF_POINTER [size = 12]
+TYPES-NEXT: referent = 0x101F, mode = ref, opts = None, kind = ptr32
+TYPES-NEXT: 0x1021 | LF_ARGLIST [size = 12]
+TYPES-NEXT: 0x1020: `const VInherit&`
+TYPES-NEXT: 0x1022 | LF_MFUNCTION [size = 28]
+TYPES-NEXT: return type = 0x0003 (void), # args = 1, param list = 0x1021
+TYPES-NEXT: class type = 0x101A, this type = 0x101B, this adjust = 0
+TYPES-NEXT: calling conv = thiscall, options = constructor with virtual bases | constructor
+TYPES-NEXT: 0x1023 | LF_MFUNCTION [size = 28]
+TYPES-NEXT: return type = 0x0003 (void), # args = 0, param list = 0x100B
+TYPES-NEXT: class type = 0x101A, this type = 0x101B, this adjust = 0
+TYPES-NEXT: calling conv = thiscall, options = constructor with virtual bases | constructor
+TYPES-NEXT: 0x1024 | LF_METHODLIST [size = 28]
+TYPES-NEXT: - Method [type = 0x101E, vftable offset = -1, attrs = public compiler-generated]
+TYPES-NEXT: - Method [type = 0x1022, vftable offset = -1, attrs = public compiler-generated]
+TYPES-NEXT: - Method [type = 0x1023, vftable offset = -1, attrs = public compiler-generated]
+TYPES-NEXT: 0x1025 | LF_POINTER [size = 12]
+TYPES-NEXT: referent = 0x101A, mode = ref, opts = None, kind = ptr32
+TYPES-NEXT: 0x1026 | LF_MFUNCTION [size = 28]
+TYPES-NEXT: return type = 0x1025, # args = 1, param list = 0x101D
+TYPES-NEXT: class type = 0x101A, this type = 0x101B, this adjust = 0
+TYPES-NEXT: calling conv = thiscall, options = None
+TYPES-NEXT: 0x1027 | LF_MFUNCTION [size = 28]
+TYPES-NEXT: return type = 0x1025, # args = 1, param list = 0x1021
+TYPES-NEXT: class type = 0x101A, this type = 0x101B, this adjust = 0
+TYPES-NEXT: calling conv = thiscall, options = None
+TYPES-NEXT: 0x1028 | LF_METHODLIST [size = 20]
+TYPES-NEXT: - Method [type = 0x1026, vftable offset = -1, attrs = public compiler-generated]
+TYPES-NEXT: - Method [type = 0x1027, vftable offset = -1, attrs = public compiler-generated]
+TYPES-NEXT: 0x1029 | LF_FIELDLIST [size = 60]
+TYPES-NEXT: - LF_VBCLASS
+TYPES-NEXT: base = 0x1006, vbptr = 0x1019, vbptr offset = 0, vtable index = 1
+TYPES-NEXT: attrs = public
+TYPES-NEXT: - LF_METHOD [name = `VInherit`, # overloads = 3, overload list = 0x1024]
+TYPES-NEXT: - LF_METHOD [name = `operator=`, # overloads = 2, overload list = 0x1028]
+TYPES-NEXT: 0x102A | LF_CLASS [size = 48] `VInherit`
+TYPES-NEXT: unique name: `.?AVVInherit@@`
+TYPES-NEXT: vtable: <no type>, base list: <no type>, field list: 0x1029
+TYPES-NEXT: options: has ctor / dtor | has unique name | overloaded operator | overloaded operator=
+TYPES-NEXT: 0x102B | LF_CLASS [size = 48] `IVInherit`
+TYPES-NEXT: unique name: `.?AVIVInherit@@`
+TYPES-NEXT: vtable: <no type>, base list: <no type>, field list: <no type>
+TYPES-NEXT: options: forward ref | has unique name
+TYPES-NEXT: 0x102C | LF_POINTER [size = 12]
+TYPES-NEXT: referent = 0x102B, mode = pointer, opts = const, kind = ptr32
+TYPES-NEXT: 0x102D | LF_POINTER [size = 12]
+TYPES-NEXT: referent = 0x102B, mode = rvalue ref, opts = None, kind = ptr32
+TYPES-NEXT: 0x102E | LF_ARGLIST [size = 12]
+TYPES-NEXT: 0x102D: `IVInherit&&`
+TYPES-NEXT: 0x102F | LF_MFUNCTION [size = 28]
+TYPES-NEXT: return type = 0x0003 (void), # args = 1, param list = 0x102E
+TYPES-NEXT: class type = 0x102B, this type = 0x102C, this adjust = 0
+TYPES-NEXT: calling conv = thiscall, options = constructor with virtual bases | constructor
+TYPES-NEXT: 0x1030 | LF_MODIFIER [size = 12]
+TYPES-NEXT: referent = 0x102B, modifiers = const
+TYPES-NEXT: 0x1031 | LF_POINTER [size = 12]
+TYPES-NEXT: referent = 0x1030, mode = ref, opts = None, kind = ptr32
+TYPES-NEXT: 0x1032 | LF_ARGLIST [size = 12]
+TYPES-NEXT: 0x1031: `const IVInherit&`
+TYPES-NEXT: 0x1033 | LF_MFUNCTION [size = 28]
+TYPES-NEXT: return type = 0x0003 (void), # args = 1, param list = 0x1032
+TYPES-NEXT: class type = 0x102B, this type = 0x102C, this adjust = 0
+TYPES-NEXT: calling conv = thiscall, options = constructor with virtual bases | constructor
+TYPES-NEXT: 0x1034 | LF_MFUNCTION [size = 28]
+TYPES-NEXT: return type = 0x0003 (void), # args = 0, param list = 0x100B
+TYPES-NEXT: class type = 0x102B, this type = 0x102C, this adjust = 0
+TYPES-NEXT: calling conv = thiscall, options = constructor with virtual bases | constructor
+TYPES-NEXT: 0x1035 | LF_METHODLIST [size = 28]
+TYPES-NEXT: - Method [type = 0x102F, vftable offset = -1, attrs = public compiler-generated]
+TYPES-NEXT: - Method [type = 0x1033, vftable offset = -1, attrs = public compiler-generated]
+TYPES-NEXT: - Method [type = 0x1034, vftable offset = -1, attrs = public compiler-generated]
+TYPES-NEXT: 0x1036 | LF_POINTER [size = 12]
+TYPES-NEXT: referent = 0x102B, mode = ref, opts = None, kind = ptr32
+TYPES-NEXT: 0x1037 | LF_MFUNCTION [size = 28]
+TYPES-NEXT: return type = 0x1036, # args = 1, param list = 0x102E
+TYPES-NEXT: class type = 0x102B, this type = 0x102C, this adjust = 0
+TYPES-NEXT: calling conv = thiscall, options = None
+TYPES-NEXT: 0x1038 | LF_MFUNCTION [size = 28]
+TYPES-NEXT: return type = 0x1036, # args = 1, param list = 0x1032
+TYPES-NEXT: class type = 0x102B, this type = 0x102C, this adjust = 0
+TYPES-NEXT: calling conv = thiscall, options = None
+TYPES-NEXT: 0x1039 | LF_METHODLIST [size = 20]
+TYPES-NEXT: - Method [type = 0x1037, vftable offset = -1, attrs = public compiler-generated]
+TYPES-NEXT: - Method [type = 0x1038, vftable offset = -1, attrs = public compiler-generated]
+TYPES-NEXT: 0x103A | LF_FIELDLIST [size = 72]
+TYPES-NEXT: - LF_BCLASS
+TYPES-NEXT: type = 0x101A, offset = 0, attrs = public
+TYPES-NEXT: - LF_IVBCLASS
+TYPES-NEXT: base = 0x1006, vbptr = 0x1019, vbptr offset = 0, vtable index = 1
+TYPES-NEXT: attrs = public
+TYPES-NEXT: - LF_METHOD [name = `IVInherit`, # overloads = 3, overload list = 0x1035]
+TYPES-NEXT: - LF_METHOD [name = `operator=`, # overloads = 2, overload list = 0x1039]
+TYPES-NEXT: 0x103B | LF_CLASS [size = 48] `IVInherit`
+TYPES-NEXT: unique name: `.?AVIVInherit@@`
+TYPES-NEXT: vtable: <no type>, base list: <no type>, field list: 0x103A
+TYPES-NEXT: options: has ctor / dtor | has unique name | overloaded operator | overloaded operator=
+TYPES-NEXT: 0x1087 | LF_FIELDLIST [size = 28]
+TYPES-NEXT: - LF_ENUMERATE [A = 0]
+TYPES-NEXT: - LF_ENUMERATE [B = 1]
+TYPES-NEXT: - LF_ENUMERATE [C = 2]
+TYPES-NEXT: 0x1088 | LF_ENUM [size = 64] `FooClass::NestedEnum`
+TYPES-NEXT: unique name: `.?AW4NestedEnum@FooClass@@`
+TYPES-NEXT: field list: 0x1087, underlying type: 0x0074 (int)
+TYPES-NEXT: options: has unique name | is nested
+TYPES-NEXT: 0x1089 | LF_POINTER [size = 12]
+TYPES-NEXT: referent = 0x1006, mode = pointer, opts = const, kind = ptr32
+TYPES-NEXT: 0x108A | LF_MFUNCTION [size = 28]
+TYPES-NEXT: return type = 0x0003 (void), # args = 0, param list = 0x100B
+TYPES-NEXT: class type = 0x1006, this type = 0x1089, this adjust = 0
+TYPES-NEXT: calling conv = thiscall, options = None
+TYPES-NEXT: 0x108B | LF_ARGLIST [size = 16]
+TYPES-NEXT: 0x0074 (int): `int`
+TYPES-NEXT: 0x0074 (int): `int`
+TYPES-NEXT: 0x108C | LF_MFUNCTION [size = 28]
+TYPES-NEXT: return type = 0x0003 (void), # args = 2, param list = 0x108B
+TYPES-NEXT: class type = 0x1006, this type = 0x1089, this adjust = 0
+TYPES-NEXT: calling conv = thiscall, options = None
+TYPES-NEXT: 0x108D | LF_ARGLIST [size = 12]
+TYPES-NEXT: 0x0074 (int): `int`
+TYPES-NEXT: 0x108E | LF_MFUNCTION [size = 28]
+TYPES-NEXT: return type = 0x0003 (void), # args = 1, param list = 0x108D
+TYPES-NEXT: class type = 0x1006, this type = 0x1089, this adjust = 0
+TYPES-NEXT: calling conv = thiscall, options = None
+TYPES-NEXT: 0x108F | LF_METHODLIST [size = 20]
+TYPES-NEXT: - Method [type = 0x108C, vftable offset = -1, attrs = private]
+TYPES-NEXT: - Method [type = 0x108E, vftable offset = -1, attrs = private]
+TYPES-NEXT: 0x1090 | LF_BITFIELD [size = 12]
+TYPES-NEXT: type = 0x0074 (int), bit offset = 0, # bits = 4
+TYPES-NEXT: 0x1091 | LF_BITFIELD [size = 12]
+TYPES-NEXT: type = 0x0074 (int), bit offset = 4, # bits = 4
+TYPES-NEXT: 0x1092 | LF_FIELDLIST [size = 164]
+TYPES-NEXT: - LF_NESTTYPE [name = `NestedEnum`, parent = 0x1088]
+TYPES-NEXT: - LF_ONEMETHOD [name = `RegularMethod`]
+TYPES-NEXT: type = 0x108A, vftable offset = -1, attrs = private
+TYPES-NEXT: - LF_METHOD [name = `OverloadedMethod`, # overloads = 2, overload list = 0x108F]
+TYPES-NEXT: - LF_MEMBER [name = `HiNibble`, Type = 0x1090, offset = 0, attrs = private]
+TYPES-NEXT: - LF_MEMBER [name = `LoNibble`, Type = 0x1091, offset = 0, attrs = private]
+TYPES-NEXT: - LF_MEMBER [name = `EnumVariable`, Type = 0x1088, offset = 4, attrs = private]
+TYPES-NEXT: - LF_STMEMBER [name = `StaticMember`, type = 0x0403 (void*), attrs = private]
+TYPES-NEXT: 0x1093 | LF_CLASS [size = 48] `FooClass`
+TYPES-NEXT: unique name: `.?AVFooClass@@`
+TYPES-NEXT: vtable: <no type>, base list: <no type>, field list: 0x1092
+TYPES-NEXT: options: contains nested class | has unique name
+TYPES-NEXT: 0x1094 | LF_FIELDLIST [size = 16]
+TYPES-NEXT: - LF_MEMBER [name = `X`, Type = 0x0074 (int), offset = 0, attrs = public]
+TYPES-NEXT: 0x1095 | LF_UNION [size = 40] `TheUnion`
+TYPES-NEXT: unique name: `.?ATTheUnion@@`
+TYPES-NEXT: field list: 0x1094
+TYPES-NEXT: options: has unique name | sealed
+TYPES-NEXT: 0x1096 | LF_PROCEDURE [size = 16]
+TYPES-NEXT: return type = 0x0003 (void), # args = 0, param list = 0x100B
+TYPES-NEXT: calling conv = cdecl, options = None
+TYPES-NEXT: 0x1097 | LF_POINTER [size = 12]
+TYPES-NEXT: referent = 0x1096, mode = pointer, opts = const, kind = ptr32
+TYPES-NEXT: 0x1098 | LF_ARRAY [size = 16]
+TYPES-NEXT: size: 4, index type: 0x0022 (unsigned long), element type: 0x1097
diff --git a/test/DebugInfo/PDB/pdbdump-headers.test b/test/DebugInfo/PDB/pdbdump-headers.test
index 3b7895e06b77..1887af2e8268 100644
--- a/test/DebugInfo/PDB/pdbdump-headers.test
+++ b/test/DebugInfo/PDB/pdbdump-headers.test
@@ -67,9 +67,11 @@ ALL-NEXT: ============================================================
ALL-NEXT: Mod 0000 | Name: `d:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj`:
ALL-NEXT: Obj: `d:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj`:
ALL-NEXT: debug stream: 12, # files: 1, has ec info: false
+ALL-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
ALL-NEXT: Mod 0001 | Name: `* Linker *`:
ALL-NEXT: Obj: ``:
ALL-NEXT: debug stream: 14, # files: 0, has ec info: false
+ALL-NEXT: pdb file ni: 1 `{{.*empty.pdb}}`, src file ni: 0 ``
ALL: Files
ALL-NEXT: ============================================================
ALL-NEXT: Mod 0000 | `d:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj`:
@@ -99,13 +101,11 @@ ALL-NEXT: - LF_ENUMERATE [single = 2]
ALL-NEXT: - LF_ENUMERATE [free = 3]
ALL-NEXT: - LF_ENUMERATE [neutral = 4]
ALL-NEXT: - LF_ENUMERATE [both = 5]
-ALL-NEXT: 0x1003 | LF_ENUM [size = 120, hash = 208239]
-ALL-NEXT: name: `__vc_attributes::threadingAttribute::threading_e`
+ALL-NEXT: 0x1003 | LF_ENUM [size = 120, hash = 208239] `__vc_attributes::threadingAttribute::threading_e`
ALL-NEXT: unique name: `.?AW4threading_e@threadingAttribute@__vc_attributes@@`
ALL-NEXT: field list: 0x1002, underlying type: 0x0074 (int)
ALL-NEXT: options: has unique name | is nested
-ALL-NEXT: 0x1004 | LF_STRUCTURE [size = 100, hash = 16377]
-ALL-NEXT: class name: `__vc_attributes::threadingAttribute`
+ALL-NEXT: 0x1004 | LF_STRUCTURE [size = 100, hash = 16377] `__vc_attributes::threadingAttribute`
ALL-NEXT: unique name: `.?AUthreadingAttribute@__vc_attributes@@`
ALL-NEXT: vtable: <no type>, base list: <no type>, field list: <no type>
ALL-NEXT: options: forward ref | has unique name
@@ -128,8 +128,7 @@ ALL-NEXT: 0x100A | LF_FIELDLIST [size = 68, hash = 185421]
ALL-NEXT: - LF_NESTTYPE [name = `threading_e`, parent = 0x1003]
ALL-NEXT: - LF_METHOD [name = `threadingAttribute`, # overloads = 2, overload list = 0x1009]
ALL-NEXT: - LF_MEMBER [name = `value`, Type = 0x1003, offset = 0, attrs = public]
-ALL-NEXT: 0x100B | LF_STRUCTURE [size = 100, hash = 119540]
-ALL-NEXT: class name: `__vc_attributes::threadingAttribute`
+ALL-NEXT: 0x100B | LF_STRUCTURE [size = 100, hash = 119540] `__vc_attributes::threadingAttribute`
ALL-NEXT: unique name: `.?AUthreadingAttribute@__vc_attributes@@`
ALL-NEXT: vtable: <no type>, base list: <no type>, field list: 0x100A
ALL-NEXT: options: has ctor / dtor | contains nested class | has unique name
@@ -137,13 +136,11 @@ ALL-NEXT: 0x100C | LF_FIELDLIST [size = 48, hash = 261871]
ALL-NEXT: - LF_ENUMERATE [native = 0]
ALL-NEXT: - LF_ENUMERATE [com = 1]
ALL-NEXT: - LF_ENUMERATE [managed = 2]
-ALL-NEXT: 0x100D | LF_ENUM [size = 120, hash = 198119]
-ALL-NEXT: name: `__vc_attributes::event_receiverAttribute::type_e`
+ALL-NEXT: 0x100D | LF_ENUM [size = 120, hash = 198119] `__vc_attributes::event_receiverAttribute::type_e`
ALL-NEXT: unique name: `.?AW4type_e@event_receiverAttribute@__vc_attributes@@`
ALL-NEXT: field list: 0x100C, underlying type: 0x0074 (int)
ALL-NEXT: options: has unique name | is nested
-ALL-NEXT: 0x100E | LF_STRUCTURE [size = 112, hash = 48056]
-ALL-NEXT: class name: `__vc_attributes::event_receiverAttribute`
+ALL-NEXT: 0x100E | LF_STRUCTURE [size = 112, hash = 48056] `__vc_attributes::event_receiverAttribute`
ALL-NEXT: unique name: `.?AUevent_receiverAttribute@__vc_attributes@@`
ALL-NEXT: vtable: <no type>, base list: <no type>, field list: <no type>
ALL-NEXT: options: forward ref | has unique name
@@ -175,8 +172,7 @@ ALL-NEXT: - LF_NESTTYPE [name = `type_e`, parent = 0x100D]
ALL-NEXT: - LF_METHOD [name = `event_receiverAttribute`, # overloads = 3, overload list = 0x1015]
ALL-NEXT: - LF_MEMBER [name = `type`, Type = 0x100D, offset = 0, attrs = public]
ALL-NEXT: - LF_MEMBER [name = `layout_dependent`, Type = 0x0030 (bool), offset = 4, attrs = public]
-ALL-NEXT: 0x1017 | LF_STRUCTURE [size = 112, hash = 148734]
-ALL-NEXT: class name: `__vc_attributes::event_receiverAttribute`
+ALL-NEXT: 0x1017 | LF_STRUCTURE [size = 112, hash = 148734] `__vc_attributes::event_receiverAttribute`
ALL-NEXT: unique name: `.?AUevent_receiverAttribute@__vc_attributes@@`
ALL-NEXT: vtable: <no type>, base list: <no type>, field list: 0x1016
ALL-NEXT: options: has ctor / dtor | contains nested class | has unique name
@@ -184,13 +180,11 @@ ALL-NEXT: 0x1018 | LF_FIELDLIST [size = 48, hash = 81128]
ALL-NEXT: - LF_ENUMERATE [never = 0]
ALL-NEXT: - LF_ENUMERATE [allowed = 1]
ALL-NEXT: - LF_ENUMERATE [always = 2]
-ALL-NEXT: 0x1019 | LF_ENUM [size = 116, hash = 60158]
-ALL-NEXT: name: `__vc_attributes::aggregatableAttribute::type_e`
+ALL-NEXT: 0x1019 | LF_ENUM [size = 116, hash = 60158] `__vc_attributes::aggregatableAttribute::type_e`
ALL-NEXT: unique name: `.?AW4type_e@aggregatableAttribute@__vc_attributes@@`
ALL-NEXT: field list: 0x1018, underlying type: 0x0074 (int)
ALL-NEXT: options: has unique name | is nested
-ALL-NEXT: 0x101A | LF_STRUCTURE [size = 108, hash = 217249]
-ALL-NEXT: class name: `__vc_attributes::aggregatableAttribute`
+ALL-NEXT: 0x101A | LF_STRUCTURE [size = 108, hash = 217249] `__vc_attributes::aggregatableAttribute`
ALL-NEXT: unique name: `.?AUaggregatableAttribute@__vc_attributes@@`
ALL-NEXT: vtable: <no type>, base list: <no type>, field list: <no type>
ALL-NEXT: options: forward ref | has unique name
@@ -213,26 +207,22 @@ ALL-NEXT: 0x1020 | LF_FIELDLIST [size = 68, hash = 6214]
ALL-NEXT: - LF_NESTTYPE [name = `type_e`, parent = 0x1019]
ALL-NEXT: - LF_METHOD [name = `aggregatableAttribute`, # overloads = 2, overload list = 0x101F]
ALL-NEXT: - LF_MEMBER [name = `type`, Type = 0x1019, offset = 0, attrs = public]
-ALL-NEXT: 0x1021 | LF_STRUCTURE [size = 108, hash = 94935]
-ALL-NEXT: class name: `__vc_attributes::aggregatableAttribute`
+ALL-NEXT: 0x1021 | LF_STRUCTURE [size = 108, hash = 94935] `__vc_attributes::aggregatableAttribute`
ALL-NEXT: unique name: `.?AUaggregatableAttribute@__vc_attributes@@`
ALL-NEXT: vtable: <no type>, base list: <no type>, field list: 0x1020
ALL-NEXT: options: has ctor / dtor | contains nested class | has unique name
-ALL-NEXT: 0x1022 | LF_ENUM [size = 116, hash = 151449]
-ALL-NEXT: name: `__vc_attributes::event_sourceAttribute::type_e`
+ALL-NEXT: 0x1022 | LF_ENUM [size = 116, hash = 151449] `__vc_attributes::event_sourceAttribute::type_e`
ALL-NEXT: unique name: `.?AW4type_e@event_sourceAttribute@__vc_attributes@@`
ALL-NEXT: field list: 0x100C, underlying type: 0x0074 (int)
ALL-NEXT: options: has unique name | is nested
ALL-NEXT: 0x1023 | LF_FIELDLIST [size = 28, hash = 135589]
ALL-NEXT: - LF_ENUMERATE [speed = 0]
ALL-NEXT: - LF_ENUMERATE [size = 1]
-ALL-NEXT: 0x1024 | LF_ENUM [size = 124, hash = 73373]
-ALL-NEXT: name: `__vc_attributes::event_sourceAttribute::optimize_e`
+ALL-NEXT: 0x1024 | LF_ENUM [size = 124, hash = 73373] `__vc_attributes::event_sourceAttribute::optimize_e`
ALL-NEXT: unique name: `.?AW4optimize_e@event_sourceAttribute@__vc_attributes@@`
ALL-NEXT: field list: 0x1023, underlying type: 0x0074 (int)
ALL-NEXT: options: has unique name | is nested
-ALL-NEXT: 0x1025 | LF_STRUCTURE [size = 108, hash = 96512]
-ALL-NEXT: class name: `__vc_attributes::event_sourceAttribute`
+ALL-NEXT: 0x1025 | LF_STRUCTURE [size = 108, hash = 96512] `__vc_attributes::event_sourceAttribute`
ALL-NEXT: unique name: `.?AUevent_sourceAttribute@__vc_attributes@@`
ALL-NEXT: vtable: <no type>, base list: <no type>, field list: <no type>
ALL-NEXT: options: forward ref | has unique name
@@ -258,8 +248,7 @@ ALL-NEXT: - LF_METHOD [name = `event_sourceAttribute`, # overloads =
ALL-NEXT: - LF_MEMBER [name = `type`, Type = 0x1022, offset = 0, attrs = public]
ALL-NEXT: - LF_MEMBER [name = `optimize`, Type = 0x1024, offset = 4, attrs = public]
ALL-NEXT: - LF_MEMBER [name = `decorate`, Type = 0x0030 (bool), offset = 8, attrs = public]
-ALL-NEXT: 0x102C | LF_STRUCTURE [size = 108, hash = 238560]
-ALL-NEXT: class name: `__vc_attributes::event_sourceAttribute`
+ALL-NEXT: 0x102C | LF_STRUCTURE [size = 108, hash = 238560] `__vc_attributes::event_sourceAttribute`
ALL-NEXT: unique name: `.?AUevent_sourceAttribute@__vc_attributes@@`
ALL-NEXT: vtable: <no type>, base list: <no type>, field list: 0x102B
ALL-NEXT: options: has ctor / dtor | contains nested class | has unique name
@@ -270,13 +259,11 @@ ALL-NEXT: - LF_ENUMERATE [service = 3]
ALL-NEXT: - LF_ENUMERATE [unspecified = 4]
ALL-NEXT: - LF_ENUMERATE [EXE = 2]
ALL-NEXT: - LF_ENUMERATE [SERVICE = 3]
-ALL-NEXT: 0x102E | LF_ENUM [size = 104, hash = 115151]
-ALL-NEXT: name: `__vc_attributes::moduleAttribute::type_e`
+ALL-NEXT: 0x102E | LF_ENUM [size = 104, hash = 115151] `__vc_attributes::moduleAttribute::type_e`
ALL-NEXT: unique name: `.?AW4type_e@moduleAttribute@__vc_attributes@@`
ALL-NEXT: field list: 0x102D, underlying type: 0x0074 (int)
ALL-NEXT: options: has unique name | is nested
-ALL-NEXT: 0x102F | LF_STRUCTURE [size = 96, hash = 197306]
-ALL-NEXT: class name: `__vc_attributes::moduleAttribute`
+ALL-NEXT: 0x102F | LF_STRUCTURE [size = 96, hash = 197306] `__vc_attributes::moduleAttribute`
ALL-NEXT: unique name: `.?AUmoduleAttribute@__vc_attributes@@`
ALL-NEXT: vtable: <no type>, base list: <no type>, field list: <no type>
ALL-NEXT: options: forward ref | has unique name
@@ -338,8 +325,7 @@ ALL-NEXT: - LF_MEMBER [name = `hidden`, Type = 0x0030 (bool), offset
ALL-NEXT: - LF_MEMBER [name = `restricted`, Type = 0x0030 (bool), offset = 45, attrs = public]
ALL-NEXT: - LF_MEMBER [name = `custom`, Type = 0x1032, offset = 48, attrs = public]
ALL-NEXT: - LF_MEMBER [name = `resource_name`, Type = 0x1032, offset = 52, attrs = public]
-ALL-NEXT: 0x103A | LF_STRUCTURE [size = 96, hash = 98548]
-ALL-NEXT: class name: `__vc_attributes::moduleAttribute`
+ALL-NEXT: 0x103A | LF_STRUCTURE [size = 96, hash = 98548] `__vc_attributes::moduleAttribute`
ALL-NEXT: unique name: `.?AUmoduleAttribute@__vc_attributes@@`
ALL-NEXT: vtable: <no type>, base list: <no type>, field list: 0x1039
ALL-NEXT: options: has ctor / dtor | contains nested class | has unique name
@@ -374,13 +360,11 @@ ALL-NEXT: - LF_ENUMERATE [eModuleUsage = 16777216]
ALL-NEXT: - LF_ENUMERATE [eIllegalUsage = 33554432]
ALL-NEXT: - LF_ENUMERATE [eAsynchronousUsage = 67108864]
ALL-NEXT: - LF_ENUMERATE [eAnyIDLUsage = 4161535]
-ALL-NEXT: 0x103C | LF_ENUM [size = 140, hash = 171328]
-ALL-NEXT: name: `__vc_attributes::helper_attributes::usageAttribute::usage_e`
+ALL-NEXT: 0x103C | LF_ENUM [size = 140, hash = 171328] `__vc_attributes::helper_attributes::usageAttribute::usage_e`
ALL-NEXT: unique name: `.?AW4usage_e@usageAttribute@helper_attributes@__vc_attributes@@`
ALL-NEXT: field list: 0x103B, underlying type: 0x0074 (int)
ALL-NEXT: options: has unique name | is nested
-ALL-NEXT: 0x103D | LF_STRUCTURE [size = 128, hash = 203640]
-ALL-NEXT: class name: `__vc_attributes::helper_attributes::usageAttribute`
+ALL-NEXT: 0x103D | LF_STRUCTURE [size = 128, hash = 203640] `__vc_attributes::helper_attributes::usageAttribute`
ALL-NEXT: unique name: `.?AUusageAttribute@helper_attributes@__vc_attributes@@`
ALL-NEXT: vtable: <no type>, base list: <no type>, field list: <no type>
ALL-NEXT: options: forward ref | has unique name
@@ -397,8 +381,7 @@ ALL-NEXT: - LF_NESTTYPE [name = `usage_e`, parent = 0x103C]
ALL-NEXT: - LF_ONEMETHOD [name = `usageAttribute`]
ALL-NEXT: type = 0x1040, vftable offset = -1, attrs = public
ALL-NEXT: - LF_MEMBER [name = `value`, Type = 0x0075 (unsigned), offset = 0, attrs = public]
-ALL-NEXT: 0x1042 | LF_STRUCTURE [size = 128, hash = 165040]
-ALL-NEXT: class name: `__vc_attributes::helper_attributes::usageAttribute`
+ALL-NEXT: 0x1042 | LF_STRUCTURE [size = 128, hash = 165040] `__vc_attributes::helper_attributes::usageAttribute`
ALL-NEXT: unique name: `.?AUusageAttribute@helper_attributes@__vc_attributes@@`
ALL-NEXT: vtable: <no type>, base list: <no type>, field list: 0x1041
ALL-NEXT: options: has ctor / dtor | contains nested class | has unique name
@@ -407,13 +390,11 @@ ALL-NEXT: - LF_ENUMERATE [eBoolean = 0]
ALL-NEXT: - LF_ENUMERATE [eInteger = 1]
ALL-NEXT: - LF_ENUMERATE [eFloat = 2]
ALL-NEXT: - LF_ENUMERATE [eDouble = 3]
-ALL-NEXT: 0x1044 | LF_ENUM [size = 148, hash = 142625]
-ALL-NEXT: name: `__vc_attributes::helper_attributes::v1_alttypeAttribute::type_e`
+ALL-NEXT: 0x1044 | LF_ENUM [size = 148, hash = 142625] `__vc_attributes::helper_attributes::v1_alttypeAttribute::type_e`
ALL-NEXT: unique name: `.?AW4type_e@v1_alttypeAttribute@helper_attributes@__vc_attributes@@`
ALL-NEXT: field list: 0x1043, underlying type: 0x0074 (int)
ALL-NEXT: options: has unique name | is nested
-ALL-NEXT: 0x1045 | LF_STRUCTURE [size = 140, hash = 52534]
-ALL-NEXT: class name: `__vc_attributes::helper_attributes::v1_alttypeAttribute`
+ALL-NEXT: 0x1045 | LF_STRUCTURE [size = 140, hash = 52534] `__vc_attributes::helper_attributes::v1_alttypeAttribute`
ALL-NEXT: unique name: `.?AUv1_alttypeAttribute@helper_attributes@__vc_attributes@@`
ALL-NEXT: vtable: <no type>, base list: <no type>, field list: <no type>
ALL-NEXT: options: forward ref | has unique name
@@ -430,8 +411,7 @@ ALL-NEXT: - LF_NESTTYPE [name = `type_e`, parent = 0x1044]
ALL-NEXT: - LF_ONEMETHOD [name = `v1_alttypeAttribute`]
ALL-NEXT: type = 0x1048, vftable offset = -1, attrs = public
ALL-NEXT: - LF_MEMBER [name = `type`, Type = 0x1044, offset = 0, attrs = public]
-ALL-NEXT: 0x104A | LF_STRUCTURE [size = 140, hash = 213215]
-ALL-NEXT: class name: `__vc_attributes::helper_attributes::v1_alttypeAttribute`
+ALL-NEXT: 0x104A | LF_STRUCTURE [size = 140, hash = 213215] `__vc_attributes::helper_attributes::v1_alttypeAttribute`
ALL-NEXT: unique name: `.?AUv1_alttypeAttribute@helper_attributes@__vc_attributes@@`
ALL-NEXT: vtable: <no type>, base list: <no type>, field list: 0x1049
ALL-NEXT: options: has ctor / dtor | contains nested class | has unique name
@@ -590,147 +570,195 @@ BIG-NEXT: ============================================================
BIG-NEXT: Mod 0000 | Name: `D:\src\llvm\test\tools\llvm-symbolizer\pdb\Inputs\test.obj`:
BIG-NEXT: Obj: `D:\src\llvm\test\tools\llvm-symbolizer\pdb\Inputs\test.obj`:
BIG-NEXT: debug stream: 12, # files: 1, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0001 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\_cpu_disp_.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 14, # files: 14, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0002 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\_initsect_.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 15, # files: 19, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0003 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\_sehprolg4_.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 16, # files: 1, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 1 `f:\dd\vctools\crt\vcstartup\src\eh\i386\sehprolg4.asm`
BIG-NEXT: Mod 0004 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\_chandler4gs_.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 17, # files: 14, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0005 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\_secchk_.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 18, # files: 14, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0006 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\gs_cookie.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 19, # files: 9, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0007 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\gs_report.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 20, # files: 14, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0008 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\gs_support.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 21, # files: 10, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0009 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\checkcfg.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 22, # files: 14, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0010 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\guard_support.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 23, # files: 10, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0011 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\loadcfg.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 24, # files: 9, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0012 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\dyn_tls_dtor.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 25, # files: 11, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0013 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\dyn_tls_init.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 26, # files: 10, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0014 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\matherr_detection.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 27, # files: 1, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0015 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\ucrt_detection.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 28, # files: 1, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0016 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\argv_mode.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 29, # files: 1, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0017 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\commit_mode.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 30, # files: 1, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0018 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\default_local_stdio_options.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 31, # files: 24, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0019 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\denormal_control.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 32, # files: 1, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0020 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\env_mode.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 33, # files: 1, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0021 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\file_mode.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 34, # files: 1, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0022 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\invalid_parameter_handler.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 35, # files: 1, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0023 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\matherr.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 36, # files: 2, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0024 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\new_mode.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 37, # files: 1, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0025 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\thread_locale.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 38, # files: 1, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0026 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\tncleanup.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 39, # files: 21, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0027 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\exe_main.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 40, # files: 26, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0028 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\initializers.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 41, # files: 20, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0029 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\utility.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 42, # files: 20, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0030 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\ucrt_stubs.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 43, # files: 1, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0031 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\utility_desktop.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 44, # files: 20, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0032 | Name: `f:\dd\vctools\crt\vcstartup\build\md\msvcrt_kernel32\obj1r\i386\default_precision.obj`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\MSVCRT.lib`:
BIG-NEXT: debug stream: 45, # files: 20, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0033 | Name: `Import:KERNEL32.dll`:
BIG-NEXT: Obj: `C:\PROGRA~2\WI3CF2~1\10\Lib\10.0.10586.0\um\x86\kernel32.lib`:
BIG-NEXT: debug stream: 47, # files: 0, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0034 | Name: `KERNEL32.dll`:
BIG-NEXT: Obj: `C:\PROGRA~2\WI3CF2~1\10\Lib\10.0.10586.0\um\x86\kernel32.lib`:
BIG-NEXT: debug stream: 46, # files: 0, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0035 | Name: `Import:VCRUNTIME140.dll`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\vcruntime.lib`:
BIG-NEXT: debug stream: 49, # files: 0, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0036 | Name: `VCRUNTIME140.dll`:
BIG-NEXT: Obj: `C:\PROGRA~2\MI0E91~1.0\VC\LIB\vcruntime.lib`:
BIG-NEXT: debug stream: 48, # files: 0, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0037 | Name: `Import:api-ms-win-crt-stdio-l1-1-0.dll`:
BIG-NEXT: Obj: `C:\PROGRA~2\WI3CF2~1\10\Lib\10.0.10586.0\ucrt\x86\ucrt.lib`:
BIG-NEXT: debug stream: 59, # files: 0, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0038 | Name: `api-ms-win-crt-stdio-l1-1-0.dll`:
BIG-NEXT: Obj: `C:\PROGRA~2\WI3CF2~1\10\Lib\10.0.10586.0\ucrt\x86\ucrt.lib`:
BIG-NEXT: debug stream: 58, # files: 0, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0039 | Name: `Import:api-ms-win-crt-runtime-l1-1-0.dll`:
BIG-NEXT: Obj: `C:\PROGRA~2\WI3CF2~1\10\Lib\10.0.10586.0\ucrt\x86\ucrt.lib`:
BIG-NEXT: debug stream: 57, # files: 0, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0040 | Name: `api-ms-win-crt-runtime-l1-1-0.dll`:
BIG-NEXT: Obj: `C:\PROGRA~2\WI3CF2~1\10\Lib\10.0.10586.0\ucrt\x86\ucrt.lib`:
BIG-NEXT: debug stream: 56, # files: 0, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0041 | Name: `Import:api-ms-win-crt-math-l1-1-0.dll`:
BIG-NEXT: Obj: `C:\PROGRA~2\WI3CF2~1\10\Lib\10.0.10586.0\ucrt\x86\ucrt.lib`:
BIG-NEXT: debug stream: 55, # files: 0, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0042 | Name: `api-ms-win-crt-math-l1-1-0.dll`:
BIG-NEXT: Obj: `C:\PROGRA~2\WI3CF2~1\10\Lib\10.0.10586.0\ucrt\x86\ucrt.lib`:
BIG-NEXT: debug stream: 54, # files: 0, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0043 | Name: `Import:api-ms-win-crt-locale-l1-1-0.dll`:
BIG-NEXT: Obj: `C:\PROGRA~2\WI3CF2~1\10\Lib\10.0.10586.0\ucrt\x86\ucrt.lib`:
BIG-NEXT: debug stream: 53, # files: 0, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0044 | Name: `api-ms-win-crt-locale-l1-1-0.dll`:
BIG-NEXT: Obj: `C:\PROGRA~2\WI3CF2~1\10\Lib\10.0.10586.0\ucrt\x86\ucrt.lib`:
BIG-NEXT: debug stream: 52, # files: 0, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0045 | Name: `Import:api-ms-win-crt-heap-l1-1-0.dll`:
BIG-NEXT: Obj: `C:\PROGRA~2\WI3CF2~1\10\Lib\10.0.10586.0\ucrt\x86\ucrt.lib`:
BIG-NEXT: debug stream: 51, # files: 0, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0046 | Name: `api-ms-win-crt-heap-l1-1-0.dll`:
BIG-NEXT: Obj: `C:\PROGRA~2\WI3CF2~1\10\Lib\10.0.10586.0\ucrt\x86\ucrt.lib`:
BIG-NEXT: debug stream: 50, # files: 0, has ec info: false
+BIG-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
BIG-NEXT: Mod 0047 | Name: `* Linker *`:
BIG-NEXT: Obj: ``:
BIG-NEXT: debug stream: 60, # files: 0, has ec info: false
+BIG-NEXT: pdb file ni: 55 `{{.*test.pdb}}`, src file ni: 0 ``
BIG: Files
BIG-NEXT: ============================================================
BIG-NEXT: Mod 0000 | `D:\src\llvm\test\tools\llvm-symbolizer\pdb\Inputs\test.obj`:
diff --git a/test/DebugInfo/PDB/pdbdump-merge-ids-and-types.test b/test/DebugInfo/PDB/pdbdump-merge-ids-and-types.test
index 3903c07b027f..dd4c072fe0c9 100644
--- a/test/DebugInfo/PDB/pdbdump-merge-ids-and-types.test
+++ b/test/DebugInfo/PDB/pdbdump-merge-ids-and-types.test
@@ -14,8 +14,7 @@ TPI-TYPES-NEXT: - LF_MEMBER [name = `FooMember`, Type = 0x0403 (void*
TPI-TYPES-NEXT: 0x1002 | LF_ARGLIST [size = 16]
TPI-TYPES-NEXT: 0x0074 (int): `int`
TPI-TYPES-NEXT: 0x1000: `char**`
-TPI-TYPES-NEXT: 0x1003 | LF_STRUCTURE [size = 36]
-TPI-TYPES-NEXT: class name: `FooBar`
+TPI-TYPES-NEXT: 0x1003 | LF_STRUCTURE [size = 36] `FooBar`
TPI-TYPES-NEXT: unique name: `FooBar`
TPI-TYPES-NEXT: vtable: <no type>, base list: <no type>, field list: 0x1001
TPI-TYPES-NEXT: options: has unique name
diff --git a/test/DebugInfo/PDB/pdbdump-mergetypes.test b/test/DebugInfo/PDB/pdbdump-mergetypes.test
index 8ab64cfab516..60cf4a172aa2 100644
--- a/test/DebugInfo/PDB/pdbdump-mergetypes.test
+++ b/test/DebugInfo/PDB/pdbdump-mergetypes.test
@@ -11,8 +11,7 @@ MERGED-NEXT: 0x1000 | LF_POINTER [size = 12]
MERGED-NEXT: referent = 0x0075 (unsigned), mode = pointer, opts = None, kind = ptr32
MERGED-NEXT: 0x1001 | LF_POINTER [size = 12]
MERGED-NEXT: referent = 0x0076 (__int64), mode = pointer, opts = None, kind = ptr32
-MERGED-NEXT: 0x1002 | LF_STRUCTURE [size = 48]
-MERGED-NEXT: class name: `OnlyInMerge1`
+MERGED-NEXT: 0x1002 | LF_STRUCTURE [size = 48] `OnlyInMerge1`
MERGED-NEXT: unique name: `OnlyInMerge1`
MERGED-NEXT: vtable: <no type>, base list: <no type>, field list: <no type>
MERGED-NEXT: options: forward ref | has unique name
@@ -29,8 +28,7 @@ MERGED-NEXT: 0x1003: `unsigned**`
MERGED-NEXT: 0x1007 | LF_PROCEDURE [size = 16]
MERGED-NEXT: return type = 0x0075 (unsigned), # args = 0, param list = 0x1006
MERGED-NEXT: calling conv = cdecl, options = None
-MERGED-NEXT: 0x1008 | LF_STRUCTURE [size = 48]
-MERGED-NEXT: class name: `OnlyInMerge2`
+MERGED-NEXT: 0x1008 | LF_STRUCTURE [size = 48] `OnlyInMerge2`
MERGED-NEXT: unique name: `OnlyInMerge2`
MERGED-NEXT: vtable: <no type>, base list: <no type>, field list: <no type>
MERGED-NEXT: options: forward ref | has unique name
diff --git a/test/DebugInfo/X86/dbg-declare-inalloca.ll b/test/DebugInfo/X86/dbg-declare-inalloca.ll
index e3f5c7e629b8..e8a310856c10 100644
--- a/test/DebugInfo/X86/dbg-declare-inalloca.ll
+++ b/test/DebugInfo/X86/dbg-declare-inalloca.ll
@@ -55,41 +55,41 @@
; CHECK: .asciz "c"
; CHECK: .cv_def_range [[start]] [[end]]
-; OBJ-LABEL: ProcStart {
+; OBJ-LABEL: {{.*}}Proc{{.*}}Sym {
; OBJ: Kind: S_GPROC32_ID (0x1147)
; OBJ: DisplayName: f
; OBJ: }
-; OBJ: Local {
+; OBJ: LocalSym {
; OBJ: Type: NonTrivial (0x1007)
; OBJ: Flags [ (0x1)
; OBJ: IsParameter (0x1)
; OBJ: ]
; OBJ: VarName: a
; OBJ: }
-; OBJ: DefRangeRegisterRel {
+; OBJ: DefRangeRegisterRelSym {
; OBJ: BaseRegister: 21
; OBJ: BasePointerOffset: 12
; OBJ: }
-; OBJ: Local {
+; OBJ: LocalSym {
; OBJ: Type: int (0x74)
; OBJ: Flags [ (0x1)
; OBJ: IsParameter (0x1)
; OBJ: ]
; OBJ: VarName: b
; OBJ: }
-; OBJ: DefRangeRegisterRel {
+; OBJ: DefRangeRegisterRelSym {
; OBJ: BaseRegister: 21
; OBJ: BasePointerOffset: 16
; OBJ: }
; FIXME: Retain unused.
-; OBJ: Local {
+; OBJ: LocalSym {
; OBJ: Type: int (0x74)
; OBJ: Flags [ (0x1)
; OBJ: IsParameter (0x1)
; OBJ: ]
; OBJ: VarName: c
; OBJ: }
-; OBJ: DefRangeRegisterRel {
+; OBJ: DefRangeRegisterRelSym {
; OBJ: BaseRegister: 21
; OBJ: BasePointerOffset: 24
; OBJ: }
diff --git a/test/DebugInfo/dwarfdump-str-offsets.test b/test/DebugInfo/dwarfdump-str-offsets.test
index 0465357ba32a..c09135580fe6 100644
--- a/test/DebugInfo/dwarfdump-str-offsets.test
+++ b/test/DebugInfo/dwarfdump-str-offsets.test
@@ -1,92 +1,94 @@
-RUN: llvm-dwarfdump %p/Inputs/dwarfdump-str-offsets.x86_64.o | FileCheck %s
+RUN: llvm-dwarfdump %p/Inputs/dwarfdump-str-offsets.x86_64.o | FileCheck --check-prefix=COMMON \
+RUN: --check-prefix=SPLIT %s
+RUN: llvm-dwarfdump %p/Inputs/dwarfdump-str-offsets-macho.o | FileCheck --check-prefix=COMMON %s
; We are using a hand-constructed object file and are interest in the correct
; diplay of the DW_str_offsetsbase attribute, the correct display of strings
; and the dump of the .debug_str_offsets[.dwo] table.
;
; Abbreviation for DW_AT_str_offsets_base
-CHECK: .debug_abbrev contents:
-CHECK-NOT: contents:
-CHECK: DW_TAG_compile_unit
-CHECK-NOT: DW_TAG
-CHECK: DW_AT_str_offsets_base DW_FORM_sec_offset
+COMMON: .debug_abbrev contents:
+COMMON-NOT: contents:
+COMMON: DW_TAG_compile_unit
+COMMON-NOT: DW_TAG
+COMMON: DW_AT_str_offsets_base DW_FORM_sec_offset
; Verify that strings are displayed correctly as indexed strings
-CHECK: .debug_info contents:
-CHECK-NOT: contents:
-CHECK: DW_TAG_compile_unit
-CHECK-NEXT: DW_AT_producer [DW_FORM_strx] ( indexed (00000000) string = "Handmade DWARF producer")
-CHECK-NEXT: DW_AT_name [DW_FORM_strx] ( indexed (00000001) string = "Compile_Unit_1")
-CHECK-NEXT: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x00000008)
-CHECK-NEXT: DW_AT_comp_dir [DW_FORM_strx] ( indexed (00000002) string = "/home/test/CU1")
-CHECK-NOT: NULL
-CHECK: DW_TAG_subprogram
-CHECK-NEXT: DW_AT_name [DW_FORM_strx1] ( indexed (00000003) string = "MyFunc")
-CHECK-NOT: NULL
-CHECK: DW_TAG_variable
-CHECK-NEXT: DW_AT_name [DW_FORM_strx2] ( indexed (00000004) string = "MyVar1")
-CHECK-NOT: NULL
-CHECK: DW_TAG_variable
-CHECK-NEXT: DW_AT_name [DW_FORM_strx3] ( indexed (00000005) string = "MyVar2")
-CHECK-NOT: NULL
-CHECK: DW_TAG_variable
-CHECK-NEXT: DW_AT_name [DW_FORM_strx4] ( indexed (00000006) string = "MyVar3")
+COMMON: .debug_info contents:
+COMMON-NOT: contents:
+COMMON: DW_TAG_compile_unit
+COMMON-NEXT: DW_AT_producer [DW_FORM_strx] ( indexed (00000000) string = "Handmade DWARF producer")
+COMMON-NEXT: DW_AT_name [DW_FORM_strx] ( indexed (00000001) string = "Compile_Unit_1")
+COMMON-NEXT: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x00000008)
+COMMON-NEXT: DW_AT_comp_dir [DW_FORM_strx] ( indexed (00000002) string = "/home/test/CU1")
+COMMON-NOT: NULL
+COMMON: DW_TAG_subprogram
+COMMON-NEXT: DW_AT_name [DW_FORM_strx1] ( indexed (00000003) string = "MyFunc")
+COMMON-NOT: NULL
+COMMON: DW_TAG_variable
+COMMON-NEXT: DW_AT_name [DW_FORM_strx2] ( indexed (00000004) string = "MyVar1")
+COMMON-NOT: NULL
+COMMON: DW_TAG_variable
+COMMON-NEXT: DW_AT_name [DW_FORM_strx3] ( indexed (00000005) string = "MyVar2")
+COMMON-NOT: NULL
+COMMON: DW_TAG_variable
+COMMON-NEXT: DW_AT_name [DW_FORM_strx4] ( indexed (00000006) string = "MyVar3")
; Second compile unit (b.cpp)
-CHECK: DW_TAG_compile_unit
-CHECK-NEXT: DW_AT_producer [DW_FORM_strx] ( indexed (00000000) string = "Handmade DWARF producer")
-CHECK-NEXT: DW_AT_name [DW_FORM_strx] ( indexed (00000001) string = "Compile_Unit_2")
-CHECK-NEXT: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x0000002c)
-CHECK-NEXT: DW_AT_comp_dir [DW_FORM_strx] ( indexed (00000002) string = "/home/test/CU2")
+COMMON: DW_TAG_compile_unit
+COMMON-NEXT: DW_AT_producer [DW_FORM_strx] ( indexed (00000000) string = "Handmade DWARF producer")
+COMMON-NEXT: DW_AT_name [DW_FORM_strx] ( indexed (00000001) string = "Compile_Unit_2")
+COMMON-NEXT: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x0000002c)
+COMMON-NEXT: DW_AT_comp_dir [DW_FORM_strx] ( indexed (00000002) string = "/home/test/CU2")
; The split CU
-CHECK: .debug_info.dwo contents:
-CHECK-NOT: contents:
-CHECK: DW_TAG_compile_unit
-CHECK-NEXT: DW_AT_producer [DW_FORM_strx] ( indexed (00000000) string = "Handmade split DWARF producer")
-CHECK-NEXT: DW_AT_name [DW_FORM_strx] ( indexed (00000001) string = "V5_split_compile_unit")
-CHECK-NEXT: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x00000008)
-CHECK-NEXT: DW_AT_comp_dir [DW_FORM_strx] ( indexed (00000002) string = "/home/test/splitCU")
+SPLIT: .debug_info.dwo contents:
+SPLIT-NOT: contents:
+SPLIT: DW_TAG_compile_unit
+SPLIT-NEXT: DW_AT_producer [DW_FORM_strx] ( indexed (00000000) string = "Handmade split DWARF producer")
+SPLIT-NEXT: DW_AT_name [DW_FORM_strx] ( indexed (00000001) string = "V5_split_compile_unit")
+SPLIT-NEXT: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x00000008)
+SPLIT-NEXT: DW_AT_comp_dir [DW_FORM_strx] ( indexed (00000002) string = "/home/test/splitCU")
; The type unit
-CHECK: .debug_types contents:
-CHECK: DW_TAG_type_unit
-CHECK-NEXT: DW_AT_name [DW_FORM_strx] ( indexed (00000000) string = "Type_Unit")
-CHECK-NEXT: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x00000040)
-CHECK: DW_TAG_structure_type
-CHECK-NEXT: DW_AT_name [DW_FORM_strx] ( indexed (00000001) string = "MyStruct")
+COMMON: .debug_types contents:
+COMMON: DW_TAG_type_unit
+COMMON-NEXT: DW_AT_name [DW_FORM_strx] ( indexed (00000000) string = "Type_Unit")
+COMMON-NEXT: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x00000040)
+COMMON: DW_TAG_structure_type
+COMMON-NEXT: DW_AT_name [DW_FORM_strx] ( indexed (00000001) string = "MyStruct")
; The split type unit
-CHECK: .debug_types.dwo contents:
-CHECK: DW_TAG_type_unit
-CHECK-NEXT: DW_AT_name [DW_FORM_strx] ( indexed (00000000) string = "V5_split_type_unit")
-CHECK-NEXT: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x0000001c)
-CHECK: DW_TAG_structure_type
-CHECK-NEXT: DW_AT_name [DW_FORM_strx] ( indexed (00000001) string = "V5_split_Mystruct")
+SPLIT: .debug_types.dwo contents:
+SPLIT: DW_TAG_type_unit
+SPLIT-NEXT: DW_AT_name [DW_FORM_strx] ( indexed (00000000) string = "V5_split_type_unit")
+SPLIT-NEXT: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x0000001c)
+SPLIT: DW_TAG_structure_type
+SPLIT-NEXT: DW_AT_name [DW_FORM_strx] ( indexed (00000001) string = "V5_split_Mystruct")
; The .debug_str_offsets section
-CHECK: .debug_str_offsets contents:
-CHECK-NEXT: 0x00000000: Contribution size = 28, Version = 5
-CHECK-NEXT: 0x00000008: 00000000 "Handmade DWARF producer"
-CHECK-NEXT: 0x0000000c: 00000018 "Compile_Unit_1"
-CHECK-NEXT: 0x00000010: 00000027 "/home/test/CU1"
-CHECK-NEXT: 0x00000014: 00000067 "MyFunc"
-CHECK-NEXT: 0x00000018: 0000006e "MyVar1"
-CHECK-NEXT: 0x0000001c: 00000075 "MyVar2"
-CHECK-NEXT: 0x00000020: 0000007c "MyVar3"
-CHECK-NEXT: 0x00000024: Contribution size = 12, Version = 5
-CHECK-NEXT: 0x0000002c: 00000000 "Handmade DWARF producer"
-CHECK-NEXT: 0x00000030: 00000036 "Compile_Unit_2"
-CHECK-NEXT: 0x00000034: 00000045 "/home/test/CU2"
-CHECK-NEXT: 0x00000038: Contribution size = 8, Version = 5
-CHECK-NEXT: 0x00000040: 00000054 "Type_Unit"
-CHECK-NEXT: 0x00000044: 0000005e "MyStruct"
+COMMON: .debug_str_offsets contents:
+COMMON-NEXT: 0x00000000: Contribution size = 28, Version = 5
+COMMON-NEXT: 0x00000008: 00000000 "Handmade DWARF producer"
+COMMON-NEXT: 0x0000000c: 00000018 "Compile_Unit_1"
+COMMON-NEXT: 0x00000010: 00000027 "/home/test/CU1"
+COMMON-NEXT: 0x00000014: 00000067 "MyFunc"
+COMMON-NEXT: 0x00000018: 0000006e "MyVar1"
+COMMON-NEXT: 0x0000001c: 00000075 "MyVar2"
+COMMON-NEXT: 0x00000020: 0000007c "MyVar3"
+COMMON-NEXT: 0x00000024: Contribution size = 12, Version = 5
+COMMON-NEXT: 0x0000002c: 00000000 "Handmade DWARF producer"
+COMMON-NEXT: 0x00000030: 00000036 "Compile_Unit_2"
+COMMON-NEXT: 0x00000034: 00000045 "/home/test/CU2"
+COMMON-NEXT: 0x00000038: Contribution size = 8, Version = 5
+COMMON-NEXT: 0x00000040: 00000054 "Type_Unit"
+COMMON-NEXT: 0x00000044: 0000005e "MyStruct"
-CHECK: .debug_str_offsets.dwo contents:
-CHECK-NEXT: 0x00000000: Contribution size = 12, Version = 5
-CHECK-NEXT: 0x00000008: 00000000 "Handmade split DWARF producer"
-CHECK-NEXT: 0x0000000c: 0000001e "V5_split_compile_unit"
-CHECK-NEXT: 0x00000010: 00000034 "/home/test/splitCU"
-CHECK-NEXT: 0x00000014: Contribution size = 8, Version = 5
-CHECK-NEXT: 0x0000001c: 00000047 "V5_split_type_unit"
-CHECK-NEXT: 0x00000020: 0000005a "V5_split_Mystruct"
+SPLIT: .debug_str_offsets.dwo contents:
+SPLIT-NEXT: 0x00000000: Contribution size = 12, Version = 5
+SPLIT-NEXT: 0x00000008: 00000000 "Handmade split DWARF producer"
+SPLIT-NEXT: 0x0000000c: 0000001e "V5_split_compile_unit"
+SPLIT-NEXT: 0x00000010: 00000034 "/home/test/splitCU"
+SPLIT-NEXT: 0x00000014: Contribution size = 8, Version = 5
+SPLIT-NEXT: 0x0000001c: 00000047 "V5_split_type_unit"
+SPLIT-NEXT: 0x00000020: 0000005a "V5_split_Mystruct"
diff --git a/test/DebugInfo/invalid-relocations.test b/test/DebugInfo/invalid-relocations.test
new file mode 100644
index 000000000000..2252e1a205c3
--- /dev/null
+++ b/test/DebugInfo/invalid-relocations.test
@@ -0,0 +1,35 @@
+# RUN: yaml2obj %s > %t.o
+# RUN: llvm-dwarfdump %t.o 2>&1 | FileCheck %s
+# CHECK: failed to compute relocation: Unknown
+
+!ELF
+FileHeader:
+ Class: ELFCLASS32
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_386
+Sections:
+ - Type: SHT_PROGBITS
+ Name: .text
+ Flags: [ ]
+ AddressAlign: 0x04
+ Content: "0000"
+ - Type: SHT_PROGBITS
+ Name: .debug_info
+ Flags: [ ]
+ AddressAlign: 0x04
+ Content: "0000"
+ - Type: SHT_REL
+ Name: .rel.debug_info
+ Link: .symtab
+ Info: .debug_info
+ Relocations:
+ - Offset: 0
+ Symbol: _start
+ Type: 0xFF
+Symbols:
+ Global:
+ - Name: _start
+ Type: STT_FUNC
+ Section: .text
+ Value: 0x0
diff --git a/test/DebugInfo/llvm-symbolizer.test b/test/DebugInfo/llvm-symbolizer.test
index 2c64804659fc..bcad37cf9a48 100644
--- a/test/DebugInfo/llvm-symbolizer.test
+++ b/test/DebugInfo/llvm-symbolizer.test
@@ -10,9 +10,10 @@ RUN: echo "%p/Inputs/dwarfdump-inl-test.elf-x86-64 0x8dc" >> %t.input
RUN: echo "%p/Inputs/dwarfdump-inl-test.elf-x86-64 0xa05" >> %t.input
RUN: echo "%p/Inputs/dwarfdump-inl-test.elf-x86-64 0x987" >> %t.input
RUN: echo "%p/Inputs/dwarfdump-inl-test.high_pc.elf-x86-64 0x568" >> %t.input
-RUN: echo "\"%p/Inputs/dwarfdump-test3.elf-x86-64 space\" 0x640" >> %t.input
-RUN: echo "\"%p/Inputs/dwarfdump-test3.elf-x86-64 space\" 0x633" >> %t.input
-RUN: echo "\"%p/Inputs/dwarfdump-test3.elf-x86-64 space\" 0x62d" >> %t.input
+RUN: cp "%p/Inputs/dwarfdump-test3.elf-x86-64-space" "%T/dwarfdump-test3.elf-x86-64 space"
+RUN: echo "\"%T/dwarfdump-test3.elf-x86-64 space\" 0x640" >> %t.input
+RUN: echo "\"%T/dwarfdump-test3.elf-x86-64 space\" 0x633" >> %t.input
+RUN: echo "\"%T/dwarfdump-test3.elf-x86-64 space\" 0x62d" >> %t.input
RUN: echo "%p/Inputs/macho-universal 0x1f84" >> %t.input
RUN: echo "%p/Inputs/macho-universal:i386 0x1f67" >> %t.input
RUN: echo "%p/Inputs/macho-universal:x86_64 0x100000f05" >> %t.input