126 lines · plain
1Test the linker line tables on roughly the following example:2 3==> foo.h <==4void bar(void);5inline void foo(void) {6 bar();7}8==> pdb_lines_1.c <==9#include "foo.h"10int main(void) {11 foo();12 return 42;13}14==> pdb_lines_2.c <==15void bar(void) {16}17 18$ cl -c -Z7 pdb_lines*.c19 20RUN: yaml2obj %S/Inputs/pdb_lines_1.yaml -o %t.pdb_lines_1.obj21RUN: yaml2obj %S/Inputs/pdb_lines_2.yaml -o %t.pdb_lines_2.obj22RUN: rm -f %t.exe %t.pdb23RUN: lld-link -debug -entry:main -nodefaultlib -out:%t.exe -pdb:%t.pdb %t.pdb_lines_1.obj %t.pdb_lines_2.obj24RUN: llvm-pdbutil pdb2yaml -modules -module-files -subsections=lines,fc %t.pdb | FileCheck %s25 26CHECK-LABEL: DbiStream:27CHECK-NEXT: VerHeader: V7028CHECK-NEXT: Age: 129CHECK-NEXT: BuildNumber: 3636330CHECK-NEXT: PdbDllVersion: 031CHECK-NEXT: PdbDllRbld: 032CHECK-NEXT: Flags: 033CHECK-NEXT: MachineType: Amd6434CHECK-NEXT: Modules:35 36CHECK-LABEL: - Module: {{.*}}pdb_lines_1.obj37CHECK-NEXT: ObjFile: {{.*}}pdb_lines_1.obj38CHECK-NEXT: SourceFiles:39CHECK-NEXT: - '{{.*}}pdb_lines_1.c'40CHECK-NEXT: - '{{.*}}foo.h'41CHECK-NEXT: Subsections:42CHECK-NEXT: - !Lines43CHECK-NEXT: CodeSize: 1944CHECK-NEXT: Flags: [ ]45CHECK-NEXT: RelocOffset: 046CHECK-NEXT: RelocSegment: 147CHECK-NEXT: Blocks:48CHECK-NEXT: - FileName: '{{.*}}pdb_lines_1.c'49CHECK-NEXT: Lines:50CHECK-NEXT: - Offset: 051CHECK-NEXT: LineStart: 252CHECK-NEXT: IsStatement: true53CHECK-NEXT: EndDelta: 054CHECK-NEXT: - Offset: 455CHECK-NEXT: LineStart: 356CHECK-NEXT: IsStatement: true57CHECK-NEXT: EndDelta: 058CHECK-NEXT: - Offset: 959CHECK-NEXT: LineStart: 460CHECK-NEXT: IsStatement: true61CHECK-NEXT: EndDelta: 062CHECK-NEXT: - Offset: 1463CHECK-NEXT: LineStart: 564CHECK-NEXT: IsStatement: true65CHECK-NEXT: EndDelta: 066CHECK-NEXT: Columns:67CHECK-NEXT: - !Lines68CHECK-NEXT: CodeSize: 1469CHECK-NEXT: Flags: [ ]70CHECK-NEXT: RelocOffset: 3271CHECK-NEXT: RelocSegment: 172CHECK-NEXT: Blocks:73CHECK-NEXT: - FileName: '{{.*}}foo.h'74CHECK-NEXT: Lines:75CHECK-NEXT: - Offset: 076CHECK-NEXT: LineStart: 277CHECK-NEXT: IsStatement: true78CHECK-NEXT: EndDelta: 079CHECK-NEXT: - Offset: 480CHECK-NEXT: LineStart: 381CHECK-NEXT: IsStatement: true82CHECK-NEXT: EndDelta: 083CHECK-NEXT: - Offset: 984CHECK-NEXT: LineStart: 485CHECK-NEXT: IsStatement: true86CHECK-NEXT: EndDelta: 087CHECK-NEXT: Columns:88CHECK-NEXT: - !FileChecksums89CHECK-NEXT: Checksums:90CHECK-NEXT: - FileName: '{{.*}}pdb_lines_1.c'91CHECK-NEXT: Kind: MD592CHECK-NEXT: Checksum: 4EB19DCD86C3BA2238A255C718572E7B93CHECK-NEXT: - FileName: '{{.*}}foo.h'94CHECK-NEXT: Kind: MD595CHECK-NEXT: Checksum: 061EB73ABB642532857A4F1D9CBAC32396 97CHECK-LABEL: - Module: {{.*}}pdb_lines_2.obj98CHECK-NEXT: ObjFile: {{.*}}pdb_lines_2.obj99CHECK-NEXT: SourceFiles:100CHECK-NEXT: - '{{.*}}pdb_lines_2.c'101CHECK-NEXT: Subsections:102CHECK-NEXT: - !Lines103CHECK-NEXT: CodeSize: 1104CHECK-NEXT: Flags: [ ]105CHECK-NEXT: RelocOffset: 48106CHECK-NEXT: RelocSegment: 1107CHECK-NEXT: Blocks:108CHECK-NEXT: - FileName: '{{.*}}pdb_lines_2.c'109CHECK-NEXT: Lines:110CHECK-NEXT: - Offset: 0111CHECK-NEXT: LineStart: 1112CHECK-NEXT: IsStatement: true113CHECK-NEXT: EndDelta: 0114CHECK-NEXT: - Offset: 0115CHECK-NEXT: LineStart: 2116CHECK-NEXT: IsStatement: true117CHECK-NEXT: EndDelta: 0118CHECK-NEXT: Columns:119CHECK-NEXT: - !FileChecksums120CHECK-NEXT: Checksums:121CHECK-NEXT: - FileName: '{{.*}}pdb_lines_2.c'122CHECK-NEXT: Kind: MD5123CHECK-NEXT: Checksum: DF91CB3A2B8D917486574BB50CAC4CC7124CHECK-NEXT: - Module: '* Linker *'125CHECK-NEXT: ObjFile: ''126