annotate lld/test/COFF/pdb-relative-source-lines.test @ 192:d7606dcf6fce

Added tag llvm10 for changeset 0572611fdcc8
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 14 Dec 2020 18:01:34 +0900
parents 1d019706d866
children c4bab56944e8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 Test the linker line tables on roughly the following example:
anatofuz
parents:
diff changeset
2
anatofuz
parents:
diff changeset
3 ==> foo.h <==
anatofuz
parents:
diff changeset
4 void bar(void);
anatofuz
parents:
diff changeset
5 inline void foo(void) {
anatofuz
parents:
diff changeset
6 bar();
anatofuz
parents:
diff changeset
7 }
anatofuz
parents:
diff changeset
8 ==> pdb_lines_1.c <==
anatofuz
parents:
diff changeset
9 #include "foo.h"
anatofuz
parents:
diff changeset
10 int main(void) {
anatofuz
parents:
diff changeset
11 foo();
anatofuz
parents:
diff changeset
12 return 42;
anatofuz
parents:
diff changeset
13 }
anatofuz
parents:
diff changeset
14 ==> pdb_lines_2.c <==
anatofuz
parents:
diff changeset
15 void bar(void) {
anatofuz
parents:
diff changeset
16 }
anatofuz
parents:
diff changeset
17
anatofuz
parents:
diff changeset
18 $ clang-cl -Xclang -fdebug-compilation-dir -Xclang . -c -Z7 pdb_lines*.c
anatofuz
parents:
diff changeset
19
anatofuz
parents:
diff changeset
20 /pdbsourcepath: only sets the directory that relative paths are considered
anatofuz
parents:
diff changeset
21 relative to, so this test needs to pass relative paths to lld-link for:
anatofuz
parents:
diff changeset
22 1. The input obj files
anatofuz
parents:
diff changeset
23 2. The /pdb: switch
anatofuz
parents:
diff changeset
24 3. The lld-link invocation itself
anatofuz
parents:
diff changeset
25 To achieve this, put all inputs of the lld-link invocation (including lld-link
anatofuz
parents:
diff changeset
26 itself) in a temp directory that's cwd and then make sure to only use relative
anatofuz
parents:
diff changeset
27 arguments when calling ./lld-link below.
anatofuz
parents:
diff changeset
28 RUN: rm -rf %t
anatofuz
parents:
diff changeset
29 RUN: mkdir %t
anatofuz
parents:
diff changeset
30 RUN: cp lld-link %t/lld-link
anatofuz
parents:
diff changeset
31 RUN: cd %t
anatofuz
parents:
diff changeset
32
anatofuz
parents:
diff changeset
33 RUN: yaml2obj %S/Inputs/pdb_lines_1_relative.yaml -o %t/pdb_lines_1_relative.obj
anatofuz
parents:
diff changeset
34 RUN: yaml2obj %S/Inputs/pdb_lines_2_relative.yaml -o %t/pdb_lines_2_relative.obj
anatofuz
parents:
diff changeset
35 RUN: ./lld-link -debug "-pdbsourcepath:c:\src" -entry:main -nodefaultlib -out:out.exe -pdb:out.pdb pdb_lines_1_relative.obj pdb_lines_2_relative.obj
anatofuz
parents:
diff changeset
36 RUN: llvm-pdbutil pdb2yaml -modules -module-files -module-syms -subsections=lines,fc %t/out.pdb | FileCheck %s
anatofuz
parents:
diff changeset
37 RUN: ./lld-link -debug "-pdbsourcepath:/usr/src" -entry:main -nodefaultlib -out:out.exe -pdb:out.pdb pdb_lines_1_relative.obj pdb_lines_2_relative.obj
anatofuz
parents:
diff changeset
38 RUN: llvm-pdbutil pdb2yaml -modules -module-files -module-syms -subsections=lines,fc %t/out.pdb | FileCheck --check-prefix=POSIX %s
anatofuz
parents:
diff changeset
39
anatofuz
parents:
diff changeset
40 CHECK-LABEL: - Module: 'c:\src\pdb_lines_1_relative.obj'
anatofuz
parents:
diff changeset
41 CHECK-NEXT: ObjFile: 'c:\src\pdb_lines_1_relative.obj'
anatofuz
parents:
diff changeset
42 CHECK: SourceFiles:
anatofuz
parents:
diff changeset
43 CHECK-NEXT: - 'c:\src\pdb_lines_1.c'
anatofuz
parents:
diff changeset
44 CHECK-NEXT: - 'c:\src\foo.h'
anatofuz
parents:
diff changeset
45 CHECK: Subsections:
anatofuz
parents:
diff changeset
46 CHECK: - FileName: 'c:\src\pdb_lines_1.c'
anatofuz
parents:
diff changeset
47 CHECK: - FileName: 'c:\src\foo.h'
anatofuz
parents:
diff changeset
48 CHECK: - !FileChecksums
anatofuz
parents:
diff changeset
49 CHECK: - FileName: 'c:\src\pdb_lines_1.c'
anatofuz
parents:
diff changeset
50 CHECK: - FileName: 'c:\src\foo.h'
anatofuz
parents:
diff changeset
51
anatofuz
parents:
diff changeset
52 CHECK-LABEL: - Module: 'c:\src\pdb_lines_2_relative.obj'
anatofuz
parents:
diff changeset
53 CHECK-NEXT: ObjFile: 'c:\src\pdb_lines_2_relative.obj'
anatofuz
parents:
diff changeset
54 CHECK: SourceFiles:
anatofuz
parents:
diff changeset
55 CHECK-NEXT: - 'c:\src\pdb_lines_2.c'
anatofuz
parents:
diff changeset
56 CHECK: Subsections:
anatofuz
parents:
diff changeset
57 CHECK: - FileName: 'c:\src\pdb_lines_2.c'
anatofuz
parents:
diff changeset
58 CHECK: - !FileChecksums
anatofuz
parents:
diff changeset
59 CHECK: - FileName: 'c:\src\pdb_lines_2.c'
anatofuz
parents:
diff changeset
60
anatofuz
parents:
diff changeset
61 CHECK-LABEL: - Kind: S_ENVBLOCK
anatofuz
parents:
diff changeset
62 CHECK-NEXT: EnvBlockSym:
anatofuz
parents:
diff changeset
63 CHECK-NEXT: Entries:
anatofuz
parents:
diff changeset
64 CHECK-NEXT: - cwd
anatofuz
parents:
diff changeset
65 CHECK-NEXT: - 'c:\src'
anatofuz
parents:
diff changeset
66 CHECK-NEXT: - exe
anatofuz
parents:
diff changeset
67 CHECK-NEXT: - 'c:\src\lld-link'
anatofuz
parents:
diff changeset
68 CHECK-NEXT: - pdb
anatofuz
parents:
diff changeset
69 CHECK-NEXT: - 'c:\src\out.pdb'
anatofuz
parents:
diff changeset
70 CHECK-NEXT: - cmd
anatofuz
parents:
diff changeset
71 CHECK-NEXT: - '-debug -pdbsourcepath:c:\src -entry:main -nodefaultlib -out:out.exe -pdb:out.pdb pdb_lines_1_relative.obj pdb_lines_2_relative.obj'
anatofuz
parents:
diff changeset
72
anatofuz
parents:
diff changeset
73
anatofuz
parents:
diff changeset
74 POSIX-LABEL: - Module: '/usr/src/pdb_lines_1_relative.obj'
anatofuz
parents:
diff changeset
75 POSIX-NEXT: ObjFile: '/usr/src/pdb_lines_1_relative.obj'
anatofuz
parents:
diff changeset
76 POSIX: SourceFiles:
anatofuz
parents:
diff changeset
77 POSIX-NEXT: - '/usr/src/pdb_lines_1.c'
anatofuz
parents:
diff changeset
78 POSIX-NEXT: - '/usr/src/foo.h'
anatofuz
parents:
diff changeset
79 POSIX: Subsections:
anatofuz
parents:
diff changeset
80 POSIX: - FileName: '/usr/src/pdb_lines_1.c'
anatofuz
parents:
diff changeset
81 POSIX: - FileName: '/usr/src/foo.h'
anatofuz
parents:
diff changeset
82 POSIX: - !FileChecksums
anatofuz
parents:
diff changeset
83 POSIX: - FileName: '/usr/src/pdb_lines_1.c'
anatofuz
parents:
diff changeset
84 POSIX: - FileName: '/usr/src/foo.h'
anatofuz
parents:
diff changeset
85
anatofuz
parents:
diff changeset
86 POSIX-LABEL: - Module: '/usr/src/pdb_lines_2_relative.obj'
anatofuz
parents:
diff changeset
87 POSIX-NEXT: ObjFile: '/usr/src/pdb_lines_2_relative.obj'
anatofuz
parents:
diff changeset
88 POSIX: SourceFiles:
anatofuz
parents:
diff changeset
89 POSIX-NEXT: - '/usr/src/pdb_lines_2.c'
anatofuz
parents:
diff changeset
90 POSIX: Subsections:
anatofuz
parents:
diff changeset
91 POSIX: - FileName: '/usr/src/pdb_lines_2.c'
anatofuz
parents:
diff changeset
92 POSIX: - !FileChecksums
anatofuz
parents:
diff changeset
93 POSIX: - FileName: '/usr/src/pdb_lines_2.c'
anatofuz
parents:
diff changeset
94
anatofuz
parents:
diff changeset
95 POSIX-LABEL: - Kind: S_ENVBLOCK
anatofuz
parents:
diff changeset
96 POSIX-NEXT: EnvBlockSym:
anatofuz
parents:
diff changeset
97 POSIX-NEXT: Entries:
anatofuz
parents:
diff changeset
98 POSIX-NEXT: - cwd
anatofuz
parents:
diff changeset
99 POSIX-NEXT: - '/usr/src'
anatofuz
parents:
diff changeset
100 POSIX-NEXT: - exe
anatofuz
parents:
diff changeset
101 POSIX-NEXT: - '/usr/src/lld-link'
anatofuz
parents:
diff changeset
102 POSIX-NEXT: - pdb
anatofuz
parents:
diff changeset
103 POSIX-NEXT: - '/usr/src/out.pdb'
anatofuz
parents:
diff changeset
104 POSIX-NEXT: - cmd
anatofuz
parents:
diff changeset
105 POSIX-NEXT: - '-debug -pdbsourcepath:/usr/src -entry:main -nodefaultlib -out:out.exe -pdb:out.pdb pdb_lines_1_relative.obj pdb_lines_2_relative.obj'