xref: /llvm-project/llvm/test/tools/llvm-pdbutil/symbol-offset.test (revision a648724921b3bf877a0f3b09ac3e32d9c8de3fe5)
1*a6487249SZequan Wu; RUN: llvm-pdbutil yaml2pdb %p/Inputs/symbol-offset.yaml --pdb=%t.pdb
2*a6487249SZequan Wu
3*a6487249SZequan Wu; RUN: llvm-pdbutil dump --symbols --modi=0 --symbol-offset=80 %t.pdb \
4*a6487249SZequan Wu; RUN:    | FileCheck --check-prefix=OFFSET %s
5*a6487249SZequan Wu
6*a6487249SZequan Wu; RUN: llvm-pdbutil dump --symbols --modi=0 --symbol-offset=4 --show-parents \
7*a6487249SZequan Wu; RUN: %t.pdb  | FileCheck --check-prefix=SHOW-PARENT1 %s
8*a6487249SZequan Wu
9*a6487249SZequan Wu; RUN: llvm-pdbutil dump --symbols --modi=0 --symbol-offset=80 --show-parents \
10*a6487249SZequan Wu; RUN: %t.pdb  | FileCheck --check-prefix=SHOW-PARENT2 %s
11*a6487249SZequan Wu
12*a6487249SZequan Wu; RUN: llvm-pdbutil dump --symbols --modi=0 --symbol-offset=308 --show-parents \
13*a6487249SZequan Wu; RUN: %t.pdb  | FileCheck --check-prefix=SHOW-PARENT3 %s
14*a6487249SZequan Wu
15*a6487249SZequan Wu; RUN: llvm-pdbutil dump --symbols --modi=0 --symbol-offset=260 --show-parents \
16*a6487249SZequan Wu; RUN: --parent-recurse-depth=1 %t.pdb \
17*a6487249SZequan Wu; RUN: | FileCheck --check-prefix=SHOW-PARENT-DEPTH1 %s
18*a6487249SZequan Wu
19*a6487249SZequan Wu; RUN: llvm-pdbutil dump --symbols --modi=0 --symbol-offset=260 --show-parents \
20*a6487249SZequan Wu; RUN: --parent-recurse-depth=2 %t.pdb \
21*a6487249SZequan Wu; RUN: | FileCheck --check-prefix=SHOW-PARENT-DEPTH2 %s
22*a6487249SZequan Wu
23*a6487249SZequan Wu; RUN: llvm-pdbutil dump --symbols --modi=0 --symbol-offset=416 --show-children\
24*a6487249SZequan Wu; RUN: %t.pdb  | FileCheck --check-prefix=SHOW-CHILDREN1 %s
25*a6487249SZequan Wu
26*a6487249SZequan Wu; RUN: llvm-pdbutil dump --symbols --modi=0 --symbol-offset=292 --show-children\
27*a6487249SZequan Wu; RUN: %t.pdb  | FileCheck --check-prefix=SHOW-CHILDREN2 %s
28*a6487249SZequan Wu
29*a6487249SZequan Wu; RUN: llvm-pdbutil dump --symbols --modi=0 --symbol-offset=4 --show-children \
30*a6487249SZequan Wu; RUN: --children-recurse-depth=1 %t.pdb \
31*a6487249SZequan Wu; RUN: | FileCheck --check-prefix=SHOW-CHILDREN-DEPTH1 %s
32*a6487249SZequan Wu
33*a6487249SZequan Wu; RUN: llvm-pdbutil dump --symbols --modi=0 --symbol-offset=292 --show-children\
34*a6487249SZequan Wu; RUN: --children-recurse-depth=2 %t.pdb \
35*a6487249SZequan Wu; RUN: | FileCheck --check-prefix=SHOW-CHILDREN-DEPTH2 %s
36*a6487249SZequan Wu
37*a6487249SZequan WuThe pdb file is generate from following cpp file and use llvm-pdbutil's pdb2yaml
38*a6487249SZequan Wufunctionality to convert pdb to yaml. Unrelated information was removed from the
39*a6487249SZequan Wuyaml test file.
40*a6487249SZequan Wu; [[clang::always_inline]] int func1(int x) {
41*a6487249SZequan Wu;     return x * 2;
42*a6487249SZequan Wu; }
43*a6487249SZequan Wu;
44*a6487249SZequan Wu; [[clang::always_inline]] int func2(int x, int y) {
45*a6487249SZequan Wu;     return func1(x + y);
46*a6487249SZequan Wu; }
47*a6487249SZequan Wu;
48*a6487249SZequan Wu; [[clang::always_inline]] int func3(int x, int y, int z) {
49*a6487249SZequan Wu;     y += func1(x);
50*a6487249SZequan Wu;     x += func2(y, z);
51*a6487249SZequan Wu;     return x + func1(x);
52*a6487249SZequan Wu; }
53*a6487249SZequan Wu;
54*a6487249SZequan Wu; int main(int argc, char** argv) {
55*a6487249SZequan Wu;     return func3(argc, 1, 2);
56*a6487249SZequan Wu; }
57*a6487249SZequan Wu
58*a6487249SZequan Wu
59*a6487249SZequan WuOFFSET:      80 | S_LOCAL [size = 16] `argc`
60*a6487249SZequan WuOFFSET-NEXT:      type=0x0074 (int), flags = param
61*a6487249SZequan Wu
62*a6487249SZequan WuSHOW-PARENT1:      4 | S_GPROC32 [size = 44] `main`
63*a6487249SZequan WuSHOW-PARENT1-NEXT:     parent = 0, end = 468, addr = 0001:0176, code size = 137
64*a6487249SZequan WuSHOW-PARENT1-NEXT:     type = `0x1008 (<unknown UDT>)`, debug start = 0, debug end = 0, flags = none
65*a6487249SZequan Wu
66*a6487249SZequan WuSHOW-PARENT2:        4 | S_GPROC32 [size = 44] `main`
67*a6487249SZequan WuSHOW-PARENT2-NEXT:       parent = 0, end = 468, addr = 0001:0176, code size = 137
68*a6487249SZequan WuSHOW-PARENT2-NEXT:       type = `0x1008 (<unknown UDT>)`, debug start = 0, debug end = 0, flags = none
69*a6487249SZequan WuSHOW-PARENT2-NEXT:  80 | S_LOCAL [size = 16] `argc`
70*a6487249SZequan WuSHOW-PARENT2-NEXT:       type=0x0074 (int), flags = param
71*a6487249SZequan WuSHOW-PARENT2-NEXT: 468 | S_END [size = 4]
72*a6487249SZequan Wu
73*a6487249SZequan WuSHOW-PARENT3:        4 | S_GPROC32 [size = 44] `main`
74*a6487249SZequan WuSHOW-PARENT3-NEXT:       parent = 0, end = 468, addr = 0001:0176, code size = 137
75*a6487249SZequan WuSHOW-PARENT3-NEXT:       type = `0x1008 (<unknown UDT>)`, debug start = 0, debug end = 0, flags = none
76*a6487249SZequan WuSHOW-PARENT3-NEXT: 144 | S_INLINESITE [size = 16]
77*a6487249SZequan WuSHOW-PARENT3-NEXT:       inlinee = 0x1002 (<unknown UDT>), parent = 4, end = 464
78*a6487249SZequan WuSHOW-PARENT3-NEXT: 292 | S_INLINESITE [size = 16]
79*a6487249SZequan WuSHOW-PARENT3-NEXT:       inlinee = 0x1001 (<unknown UDT>), parent = 144, end = 412
80*a6487249SZequan WuSHOW-PARENT3-NEXT: 308 | S_LOCAL [size = 12] `x`
81*a6487249SZequan WuSHOW-PARENT3-NEXT:       type=0x0074 (int), flags = param
82*a6487249SZequan WuSHOW-PARENT3-NEXT: 412 | S_INLINESITE_END [size = 4]
83*a6487249SZequan WuSHOW-PARENT3-NEXT: 464 | S_INLINESITE_END [size = 4]
84*a6487249SZequan WuSHOW-PARENT3-NEXT: 468 | S_END [size = 4]
85*a6487249SZequan Wu
86*a6487249SZequan Wu
87*a6487249SZequan WuSHOW-PARENT-DEPTH1:      244 | S_INLINESITE [size = 16]
88*a6487249SZequan WuSHOW-PARENT-DEPTH1-NEXT:       inlinee = 0x1000 (<unknown UDT>), parent = 144, end = 288
89*a6487249SZequan WuSHOW-PARENT-DEPTH1-NEXT: 260 | S_LOCAL [size = 12] `x`
90*a6487249SZequan WuSHOW-PARENT-DEPTH1-NEXT:       type=0x0074 (int), flags = param
91*a6487249SZequan WuSHOW-PARENT-DEPTH1-NEXT: 288 | S_INLINESITE_END [size = 4]
92*a6487249SZequan Wu
93*a6487249SZequan WuSHOW-PARENT-DEPTH2:      144 | S_INLINESITE [size = 16]
94*a6487249SZequan WuSHOW-PARENT-DEPTH2-NEXT:       inlinee = 0x1002 (<unknown UDT>), parent = 4, end = 464
95*a6487249SZequan WuSHOW-PARENT-DEPTH2-NEXT: 244 | S_INLINESITE [size = 16]
96*a6487249SZequan WuSHOW-PARENT-DEPTH2-NEXT:       inlinee = 0x1000 (<unknown UDT>), parent = 144, end = 288
97*a6487249SZequan WuSHOW-PARENT-DEPTH2-NEXT: 260 | S_LOCAL [size = 12] `x`
98*a6487249SZequan WuSHOW-PARENT-DEPTH2-NEXT:       type=0x0074 (int), flags = param
99*a6487249SZequan WuSHOW-PARENT-DEPTH2-NEXT: 288 | S_INLINESITE_END [size = 4]
100*a6487249SZequan WuSHOW-PARENT-DEPTH2-NEXT: 464 | S_INLINESITE_END [size = 4]
101*a6487249SZequan Wu
102*a6487249SZequan WuSHOW-CHILDREN1:      416 | S_INLINESITE [size = 16]
103*a6487249SZequan WuSHOW-CHILDREN1-NEXT:       inlinee = 0x1000 (<unknown UDT>), parent = 144, end = 460
104*a6487249SZequan WuSHOW-CHILDREN1-NEXT: 432 | S_LOCAL [size = 12] `x`
105*a6487249SZequan WuSHOW-CHILDREN1-NEXT:       type=0x0074 (int), flags = param
106*a6487249SZequan WuSHOW-CHILDREN1-NEXT: 444 | S_DEFRANGE_FRAMEPOINTER_REL [size = 16]
107*a6487249SZequan WuSHOW-CHILDREN1-NEXT:       offset = 36, range = [0001:0299,+7)
108*a6487249SZequan WuSHOW-CHILDREN1-NEXT:       gaps = []
109*a6487249SZequan WuSHOW-CHILDREN1-NEXT: 460 | S_INLINESITE_END [size = 4]
110*a6487249SZequan Wu
111*a6487249SZequan WuSHOW-CHILDREN2:      292 | S_INLINESITE [size = 16]
112*a6487249SZequan WuSHOW-CHILDREN2-NEXT:       inlinee = 0x1001 (<unknown UDT>), parent = 144, end = 412
113*a6487249SZequan WuSHOW-CHILDREN2-NEXT: 308 | S_LOCAL [size = 12] `x`
114*a6487249SZequan WuSHOW-CHILDREN2-NEXT:       type=0x0074 (int), flags = param
115*a6487249SZequan WuSHOW-CHILDREN2-NEXT: 320 | S_DEFRANGE_FRAMEPOINTER_REL [size = 16]
116*a6487249SZequan WuSHOW-CHILDREN2-NEXT:       offset = 44, range = [0001:0260,+19)
117*a6487249SZequan WuSHOW-CHILDREN2-NEXT:       gaps = []
118*a6487249SZequan WuSHOW-CHILDREN2-NEXT: 336 | S_LOCAL [size = 12] `y`
119*a6487249SZequan WuSHOW-CHILDREN2-NEXT:       type=0x0074 (int), flags = param
120*a6487249SZequan WuSHOW-CHILDREN2-NEXT: 348 | S_DEFRANGE_FRAMEPOINTER_REL [size = 16]
121*a6487249SZequan WuSHOW-CHILDREN2-NEXT:       offset = 48, range = [0001:0260,+19)
122*a6487249SZequan WuSHOW-CHILDREN2-NEXT:       gaps = []
123*a6487249SZequan WuSHOW-CHILDREN2-NEXT: 364 | S_INLINESITE [size = 16]
124*a6487249SZequan WuSHOW-CHILDREN2-NEXT:       inlinee = 0x1000 (<unknown UDT>), parent = 292, end = 408
125*a6487249SZequan WuSHOW-CHILDREN2-NEXT: 380 | S_LOCAL [size = 12] `x`
126*a6487249SZequan WuSHOW-CHILDREN2-NEXT:       type=0x0074 (int), flags = param
127*a6487249SZequan WuSHOW-CHILDREN2-NEXT: 392 | S_DEFRANGE_FRAMEPOINTER_REL [size = 16]
128*a6487249SZequan WuSHOW-CHILDREN2-NEXT:       offset = 52, range = [0001:0272,+7)
129*a6487249SZequan WuSHOW-CHILDREN2-NEXT:       gaps = []
130*a6487249SZequan WuSHOW-CHILDREN2-NEXT: 408 | S_INLINESITE_END [size = 4]
131*a6487249SZequan WuSHOW-CHILDREN2-NEXT: 412 | S_INLINESITE_END [size = 4]
132*a6487249SZequan Wu
133*a6487249SZequan WuSHOW-CHILDREN-DEPTH1:        4 | S_GPROC32 [size = 44] `main`
134*a6487249SZequan WuSHOW-CHILDREN-DEPTH1-NEXT:       parent = 0, end = 468, addr = 0001:0176, code size = 137
135*a6487249SZequan WuSHOW-CHILDREN-DEPTH1-NEXT:       type = `0x1008 (<unknown UDT>)`, debug start = 0, debug end = 0, flags = none
136*a6487249SZequan WuSHOW-CHILDREN-DEPTH1-NEXT:  48 | S_FRAMEPROC [size = 32]
137*a6487249SZequan WuSHOW-CHILDREN-DEPTH1-NEXT:       size = 56, padding size = 0, offset to padding = 0
138*a6487249SZequan WuSHOW-CHILDREN-DEPTH1-NEXT:       bytes of callee saved registers = 0, exception handler addr = 0000:0000
139*a6487249SZequan WuSHOW-CHILDREN-DEPTH1-NEXT:       local fp reg = NONE, param fp reg = NONE
140*a6487249SZequan WuSHOW-CHILDREN-DEPTH1-NEXT:       flags = none
141*a6487249SZequan WuSHOW-CHILDREN-DEPTH1-NEXT:  80 | S_LOCAL [size = 16] `argc`
142*a6487249SZequan WuSHOW-CHILDREN-DEPTH1-NEXT:       type=0x0074 (int), flags = param
143*a6487249SZequan WuSHOW-CHILDREN-DEPTH1-NEXT:  96 | S_DEFRANGE_FRAMEPOINTER_REL [size = 16]
144*a6487249SZequan WuSHOW-CHILDREN-DEPTH1-NEXT:       offset = 4, range = [0001:0197,+116)
145*a6487249SZequan WuSHOW-CHILDREN-DEPTH1-NEXT:       gaps = []
146*a6487249SZequan WuSHOW-CHILDREN-DEPTH1-NEXT: 112 | S_LOCAL [size = 16] `argv`
147*a6487249SZequan WuSHOW-CHILDREN-DEPTH1-NEXT:       type=0x1006 (<unknown UDT>), flags = param
148*a6487249SZequan WuSHOW-CHILDREN-DEPTH1-NEXT: 128 | S_DEFRANGE_FRAMEPOINTER_REL [size = 16]
149*a6487249SZequan WuSHOW-CHILDREN-DEPTH1-NEXT:       offset = 8, range = [0001:0197,+116)
150*a6487249SZequan WuSHOW-CHILDREN-DEPTH1-NEXT:       gaps = []
151*a6487249SZequan WuSHOW-CHILDREN-DEPTH1-NEXT: 144 | S_INLINESITE [size = 16]
152*a6487249SZequan WuSHOW-CHILDREN-DEPTH1-NEXT:       inlinee = 0x1002 (<unknown UDT>), parent = 4, end = 464
153*a6487249SZequan WuSHOW-CHILDREN-DEPTH1-NEXT: 464 | S_INLINESITE_END [size = 4]
154*a6487249SZequan WuSHOW-CHILDREN-DEPTH1-NEXT: 468 | S_END [size = 4]
155*a6487249SZequan Wu
156*a6487249SZequan WuSHOW-CHILDREN-DEPTH2:      292 | S_INLINESITE [size = 16]
157*a6487249SZequan WuSHOW-CHILDREN-DEPTH2-NEXT:       inlinee = 0x1001 (<unknown UDT>), parent = 144, end = 412
158*a6487249SZequan WuSHOW-CHILDREN-DEPTH2-NEXT: 308 | S_LOCAL [size = 12] `x`
159*a6487249SZequan WuSHOW-CHILDREN-DEPTH2-NEXT:       type=0x0074 (int), flags = param
160*a6487249SZequan WuSHOW-CHILDREN-DEPTH2-NEXT: 320 | S_DEFRANGE_FRAMEPOINTER_REL [size = 16]
161*a6487249SZequan WuSHOW-CHILDREN-DEPTH2-NEXT:       offset = 44, range = [0001:0260,+19)
162*a6487249SZequan WuSHOW-CHILDREN-DEPTH2-NEXT:       gaps = []
163*a6487249SZequan WuSHOW-CHILDREN-DEPTH2-NEXT: 336 | S_LOCAL [size = 12] `y`
164*a6487249SZequan WuSHOW-CHILDREN-DEPTH2-NEXT:       type=0x0074 (int), flags = param
165*a6487249SZequan WuSHOW-CHILDREN-DEPTH2-NEXT: 348 | S_DEFRANGE_FRAMEPOINTER_REL [size = 16]
166*a6487249SZequan WuSHOW-CHILDREN-DEPTH2-NEXT:       offset = 48, range = [0001:0260,+19)
167*a6487249SZequan WuSHOW-CHILDREN-DEPTH2-NEXT:       gaps = []
168*a6487249SZequan WuSHOW-CHILDREN-DEPTH2-NEXT: 364 | S_INLINESITE [size = 16]
169*a6487249SZequan WuSHOW-CHILDREN-DEPTH2-NEXT:       inlinee = 0x1000 (<unknown UDT>), parent = 292, end = 408
170*a6487249SZequan WuSHOW-CHILDREN-DEPTH2-NEXT: 380 | S_LOCAL [size = 12] `x`
171*a6487249SZequan WuSHOW-CHILDREN-DEPTH2-NEXT:       type=0x0074 (int), flags = param
172*a6487249SZequan WuSHOW-CHILDREN-DEPTH2-NEXT: 392 | S_DEFRANGE_FRAMEPOINTER_REL [size = 16]
173*a6487249SZequan WuSHOW-CHILDREN-DEPTH2-NEXT:       offset = 52, range = [0001:0272,+7)
174*a6487249SZequan WuSHOW-CHILDREN-DEPTH2-NEXT:       gaps = []
175*a6487249SZequan WuSHOW-CHILDREN-DEPTH2-NEXT: 408 | S_INLINESITE_END [size = 4]
176*a6487249SZequan WuSHOW-CHILDREN-DEPTH2-NEXT: 412 | S_INLINESITE_END [size = 4]