annotate lld/test/COFF/pdb-scopes.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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 Consider this program:
anatofuz
parents:
diff changeset
2
anatofuz
parents:
diff changeset
3 $ cat a.c
anatofuz
parents:
diff changeset
4 void g(int x) {}
anatofuz
parents:
diff changeset
5 void f(int x);
anatofuz
parents:
diff changeset
6 int main(int argc) {
anatofuz
parents:
diff changeset
7 if (argc) {
anatofuz
parents:
diff changeset
8 int x = 42;
anatofuz
parents:
diff changeset
9 f(x);
anatofuz
parents:
diff changeset
10 } else {
anatofuz
parents:
diff changeset
11 int y = 13;
anatofuz
parents:
diff changeset
12 f(y);
anatofuz
parents:
diff changeset
13 }
anatofuz
parents:
diff changeset
14 }
anatofuz
parents:
diff changeset
15
anatofuz
parents:
diff changeset
16 $ cat b.c
anatofuz
parents:
diff changeset
17 extern void g();
anatofuz
parents:
diff changeset
18 void f(int x) {
anatofuz
parents:
diff changeset
19 if (x) {
anatofuz
parents:
diff changeset
20 int y = x + 3;
anatofuz
parents:
diff changeset
21 g(y);
anatofuz
parents:
diff changeset
22 } else {
anatofuz
parents:
diff changeset
23 int w = x + 4;
anatofuz
parents:
diff changeset
24 g(w);
anatofuz
parents:
diff changeset
25 }
anatofuz
parents:
diff changeset
26 }
anatofuz
parents:
diff changeset
27
anatofuz
parents:
diff changeset
28 This program is interesting because there are two TUs, and each TU has nested
anatofuz
parents:
diff changeset
29 scopes. Make sure we get the right parent and end offsets.
anatofuz
parents:
diff changeset
30
anatofuz
parents:
diff changeset
31 RUN: yaml2obj %S/Inputs/pdb-scopes-a.yaml -o %t-a.obj
anatofuz
parents:
diff changeset
32 RUN: yaml2obj %S/Inputs/pdb-scopes-b.yaml -o %t-b.obj
anatofuz
parents:
diff changeset
33 RUN: lld-link %t-a.obj %t-b.obj -debug -entry:main -nodefaultlib -out:%t.exe -pdb:%t.pdb
anatofuz
parents:
diff changeset
34 RUN: llvm-pdbutil dump -symbols %t.pdb | FileCheck %s
anatofuz
parents:
diff changeset
35
anatofuz
parents:
diff changeset
36 CHECK-LABEL: Mod 0000 | `{{.*}}pdb-scopes.test.tmp-a.obj`:
anatofuz
parents:
diff changeset
37 CHECK: 104 | S_GPROC32 [size = 44] `g`
anatofuz
parents:
diff changeset
38 CHECK: parent = 0, end = 196, addr = 0001:0000, code size = 5
anatofuz
parents:
diff changeset
39 CHECK: debug start = 4, debug end = 4, flags = none
anatofuz
parents:
diff changeset
40 CHECK: 180 | S_REGREL32 [size = 16] `x`
anatofuz
parents:
diff changeset
41 CHECK: 196 | S_END [size = 4]
anatofuz
parents:
diff changeset
42 CHECK: 200 | S_GPROC32 [size = 44] `main`
anatofuz
parents:
diff changeset
43 CHECK: parent = 0, end = 384, addr = 0001:0016, code size = 58
anatofuz
parents:
diff changeset
44 CHECK: debug start = 8, debug end = 53, flags = none
anatofuz
parents:
diff changeset
45 CHECK: 276 | S_REGREL32 [size = 20] `argc`
anatofuz
parents:
diff changeset
46 CHECK: 296 | S_BLOCK32 [size = 24] ``
anatofuz
parents:
diff changeset
47 CHECK: parent = 200, end = 336
anatofuz
parents:
diff changeset
48 CHECK: code size = 17, addr = 0001:0031
anatofuz
parents:
diff changeset
49 CHECK: 320 | S_REGREL32 [size = 16] `x`
anatofuz
parents:
diff changeset
50 CHECK: 336 | S_END [size = 4]
anatofuz
parents:
diff changeset
51 CHECK: 340 | S_BLOCK32 [size = 24] ``
anatofuz
parents:
diff changeset
52 CHECK: parent = 200, end = 380
anatofuz
parents:
diff changeset
53 CHECK: code size = 17, addr = 0001:0050
anatofuz
parents:
diff changeset
54 CHECK: 364 | S_REGREL32 [size = 16] `y`
anatofuz
parents:
diff changeset
55 CHECK: 380 | S_END [size = 4]
anatofuz
parents:
diff changeset
56 CHECK: 384 | S_END [size = 4]
anatofuz
parents:
diff changeset
57
anatofuz
parents:
diff changeset
58 CHECK-LABEL: Mod 0001 | `{{.*}}pdb-scopes.test.tmp-b.obj`:
anatofuz
parents:
diff changeset
59 CHECK: 104 | S_GPROC32 [size = 44] `f`
anatofuz
parents:
diff changeset
60 CHECK: parent = 0, end = 284, addr = 0001:0080, code size = 62
anatofuz
parents:
diff changeset
61 CHECK: debug start = 8, debug end = 57, flags = none
anatofuz
parents:
diff changeset
62 CHECK: 180 | S_REGREL32 [size = 16] `x`
anatofuz
parents:
diff changeset
63 CHECK: 196 | S_BLOCK32 [size = 24] ``
anatofuz
parents:
diff changeset
64 CHECK: parent = 104, end = 236
anatofuz
parents:
diff changeset
65 CHECK: code size = 20, addr = 0001:0095
anatofuz
parents:
diff changeset
66 CHECK: 220 | S_REGREL32 [size = 16] `y`
anatofuz
parents:
diff changeset
67 CHECK: 236 | S_END [size = 4]
anatofuz
parents:
diff changeset
68 CHECK: 240 | S_BLOCK32 [size = 24] ``
anatofuz
parents:
diff changeset
69 CHECK: parent = 104, end = 280
anatofuz
parents:
diff changeset
70 CHECK: code size = 20, addr = 0001:0117
anatofuz
parents:
diff changeset
71 CHECK: 264 | S_REGREL32 [size = 16] `w`
anatofuz
parents:
diff changeset
72 CHECK: 280 | S_END [size = 4]
anatofuz
parents:
diff changeset
73 CHECK: 284 | S_END [size = 4]
anatofuz
parents:
diff changeset
74
anatofuz
parents:
diff changeset
75 CHECK-LABEL: Mod 0002 | `* Linker *`: