| 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) { |
| } |
| |
| $ clang-cl -Xclang -fdebug-compilation-dir -Xclang . -c -Z7 pdb_lines*.c |
| |
| RUN: yaml2obj %S/Inputs/pdb_lines_1_relative.yaml -o %t.pdb_lines_1_relative.obj |
| RUN: yaml2obj %S/Inputs/pdb_lines_2_relative.yaml -o %t.pdb_lines_2_relative.obj |
| RUN: rm -f %t.exe %t.pdb |
| RUN: lld-link -debug -pdbsourcepath:c:\\src -entry:main -nodefaultlib -out:%t.exe -pdb:%t.pdb %t.pdb_lines_1_relative.obj %t.pdb_lines_2_relative.obj |
| RUN: llvm-pdbutil pdb2yaml -modules -module-files -subsections=lines,fc %t.pdb | FileCheck %s |
| |
| CHECK-LABEL: - Module: {{.*}}pdb_lines_1_relative.obj |
| CHECK-NEXT: ObjFile: {{.*}}pdb_lines_1_relative.obj |
| CHECK: SourceFiles: |
| CHECK-NEXT: - 'c:{{[\\/]}}src{{[\\/]}}pdb_lines_1.c' |
| CHECK-NEXT: - 'c:{{[\\/]}}src{{[\\/]}}foo.h' |
| CHECK: Subsections: |
| CHECK: - FileName: 'c:{{[\\/]}}src{{[\\/]}}pdb_lines_1.c' |
| CHECK: - FileName: 'c:{{[\\/]}}src{{[\\/]}}foo.h' |
| CHECK: - !FileChecksums |
| CHECK: - FileName: 'c:{{[\\/]}}src{{[\\/]}}pdb_lines_1.c' |
| CHECK: - FileName: 'c:{{[\\/]}}src{{[\\/]}}foo.h' |
| |
| CHECK-LABEL: - Module: {{.*}}pdb_lines_2_relative.obj |
| CHECK-NEXT: ObjFile: {{.*}}pdb_lines_2_relative.obj |
| CHECK: SourceFiles: |
| CHECK-NEXT: - 'c:{{[\\/]}}src{{[\\/]}}pdb_lines_2.c' |
| CHECK: Subsections: |
| CHECK: - FileName: 'c:{{[\\/]}}src{{[\\/]}}pdb_lines_2.c' |
| CHECK: - !FileChecksums |
| CHECK: - FileName: 'c:{{[\\/]}}src{{[\\/]}}pdb_lines_2.c' |