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: rm -f %t.exe %t.pdb 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: V70 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: ''