summaryrefslogtreecommitdiff
path: root/test/COFF/pdb-source-lines.test
diff options
context:
space:
mode:
Diffstat (limited to 'test/COFF/pdb-source-lines.test')
-rw-r--r--test/COFF/pdb-source-lines.test124
1 files changed, 124 insertions, 0 deletions
diff --git a/test/COFF/pdb-source-lines.test b/test/COFF/pdb-source-lines.test
new file mode 100644
index 0000000000000..a630ecb22d62a
--- /dev/null
+++ b/test/COFF/pdb-source-lines.test
@@ -0,0 +1,124 @@
+Test the linker line tables on roughly the following example:
+
+==> foo.h <==
+void bar(void);
+inline void foo(void) {
+ bar();
+}
+==> pdb_lines_1.c <==
+#include "foo.h"
+int main(void) {
+ foo();
+ return 42;
+}
+==> pdb_lines_2.c <==
+void bar(void) {
+}
+
+$ cl -c -Z7 pdb_lines*.c
+
+RUN: yaml2obj %S/Inputs/pdb_lines_1.yaml -o %t.pdb_lines_1.obj
+RUN: yaml2obj %S/Inputs/pdb_lines_2.yaml -o %t.pdb_lines_2.obj
+RUN: lld-link -debug -entry:main -nodefaultlib -out:%t.exe -pdb:%t.pdb %t.pdb_lines_1.obj %t.pdb_lines_2.obj
+RUN: llvm-pdbutil pdb2yaml -modules -module-files -subsections=lines,fc %t.pdb | FileCheck %s
+
+CHECK-LABEL: DbiStream:
+CHECK-NEXT: VerHeader: V110
+CHECK-NEXT: Age: 1
+CHECK-NEXT: BuildNumber: 0
+CHECK-NEXT: PdbDllVersion: 0
+CHECK-NEXT: PdbDllRbld: 0
+CHECK-NEXT: Flags: 0
+CHECK-NEXT: MachineType: x86
+CHECK-NEXT: Modules:
+
+CHECK-LABEL: - Module: {{.*}}pdb_lines_1.obj
+CHECK-NEXT: ObjFile: {{.*}}pdb_lines_1.obj
+CHECK-NEXT: SourceFiles:
+CHECK-NEXT: - '{{.*}}pdb_lines_1.c'
+CHECK-NEXT: - '{{.*}}foo.h'
+CHECK-NEXT: Subsections:
+CHECK-NEXT: - !Lines
+CHECK-NEXT: CodeSize: 19
+CHECK-NEXT: Flags: [ ]
+CHECK-NEXT: RelocOffset: 0
+CHECK-NEXT: RelocSegment: 2
+CHECK-NEXT: Blocks:
+CHECK-NEXT: - FileName: '{{.*}}pdb_lines_1.c'
+CHECK-NEXT: Lines:
+CHECK-NEXT: - Offset: 0
+CHECK-NEXT: LineStart: 2
+CHECK-NEXT: IsStatement: true
+CHECK-NEXT: EndDelta: 0
+CHECK-NEXT: - Offset: 4
+CHECK-NEXT: LineStart: 3
+CHECK-NEXT: IsStatement: true
+CHECK-NEXT: EndDelta: 0
+CHECK-NEXT: - Offset: 9
+CHECK-NEXT: LineStart: 4
+CHECK-NEXT: IsStatement: true
+CHECK-NEXT: EndDelta: 0
+CHECK-NEXT: - Offset: 14
+CHECK-NEXT: LineStart: 5
+CHECK-NEXT: IsStatement: true
+CHECK-NEXT: EndDelta: 0
+CHECK-NEXT: Columns:
+CHECK-NEXT: - !FileChecksums
+CHECK-NEXT: Checksums:
+CHECK-NEXT: - FileName: '{{.*}}pdb_lines_1.c'
+CHECK-NEXT: Kind: MD5
+CHECK-NEXT: Checksum: 4EB19DCD86C3BA2238A255C718572E7B
+CHECK-NEXT: - FileName: '{{.*}}foo.h'
+CHECK-NEXT: Kind: MD5
+CHECK-NEXT: Checksum: 061EB73ABB642532857A4F1D9CBAC323
+CHECK-NEXT: - !Lines
+CHECK-NEXT: CodeSize: 14
+CHECK-NEXT: Flags: [ ]
+CHECK-NEXT: RelocOffset: 32
+CHECK-NEXT: RelocSegment: 2
+CHECK-NEXT: Blocks:
+CHECK-NEXT: - FileName: '{{.*}}foo.h'
+CHECK-NEXT: Lines:
+CHECK-NEXT: - Offset: 0
+CHECK-NEXT: LineStart: 2
+CHECK-NEXT: IsStatement: true
+CHECK-NEXT: EndDelta: 0
+CHECK-NEXT: - Offset: 4
+CHECK-NEXT: LineStart: 3
+CHECK-NEXT: IsStatement: true
+CHECK-NEXT: EndDelta: 0
+CHECK-NEXT: - Offset: 9
+CHECK-NEXT: LineStart: 4
+CHECK-NEXT: IsStatement: true
+CHECK-NEXT: EndDelta: 0
+CHECK-NEXT: Columns:
+
+CHECK-LABEL: - Module: {{.*}}pdb_lines_2.obj
+CHECK-NEXT: ObjFile: {{.*}}pdb_lines_2.obj
+CHECK-NEXT: SourceFiles:
+CHECK-NEXT: - '{{.*}}pdb_lines_2.c'
+CHECK-NEXT: Subsections:
+CHECK-NEXT: - !Lines
+CHECK-NEXT: CodeSize: 1
+CHECK-NEXT: Flags: [ ]
+CHECK-NEXT: RelocOffset: 48
+CHECK-NEXT: RelocSegment: 2
+CHECK-NEXT: Blocks:
+CHECK-NEXT: - FileName: '{{.*}}pdb_lines_2.c'
+CHECK-NEXT: Lines:
+CHECK-NEXT: - Offset: 0
+CHECK-NEXT: LineStart: 1
+CHECK-NEXT: IsStatement: true
+CHECK-NEXT: EndDelta: 0
+CHECK-NEXT: - Offset: 0
+CHECK-NEXT: LineStart: 2
+CHECK-NEXT: IsStatement: true
+CHECK-NEXT: EndDelta: 0
+CHECK-NEXT: Columns:
+CHECK-NEXT: - !FileChecksums
+CHECK-NEXT: Checksums:
+CHECK-NEXT: - FileName: '{{.*}}pdb_lines_2.c'
+CHECK-NEXT: Kind: MD5
+CHECK-NEXT: Checksum: DF91CB3A2B8D917486574BB50CAC4CC7
+CHECK-NEXT: - Module: '* Linker *'
+CHECK-NEXT: ObjFile: ''