llvm.org GIT mirror llvm / d71790c
[codeview] Improve readobj FPO dumper and pdbutil register names The improved dumping helps me investigate PR38857. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@341695 91177308-0d34-0410-b5e6-96231b3b80d8 Reid Kleckner 1 year, 13 days ago
6 changed file(s) with 281 addition(s) and 45 deletion(s). Raw diff Collapse all Expand all
7777 ; OBJ-NEXT: LocalSize: 0x0
7878 ; OBJ-NEXT: ParamsSize: 0x0
7979 ; OBJ-NEXT: MaxStackSize: 0x0
80 ; OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =
8180 ; OBJ-NEXT: PrologSize: 0x1
8281 ; OBJ-NEXT: SavedRegsSize: 0x0
8382 ; OBJ-NEXT: Flags [ (0x4)
8483 ; OBJ-NEXT: IsFunctionStart (0x4)
8584 ; OBJ-NEXT: ]
85 ; OBJ-NEXT: FrameFunc [
86 ; OBJ-NEXT: $T0 .raSearch =
87 ; OBJ-NEXT: $eip $T0 ^ =
88 ; OBJ-NEXT: $esp $T0 4 + =
89 ; OBJ-NEXT: ]
8690 ; OBJ-NEXT: }
8791 ; OBJ-NEXT: FrameData {
8892 ; OBJ-NEXT: RvaStart: 0x1
9094 ; OBJ-NEXT: LocalSize: 0x0
9195 ; OBJ-NEXT: ParamsSize: 0x0
9296 ; OBJ-NEXT: MaxStackSize: 0x0
93 ; OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $esi $T0 4 - ^ =
9497 ; OBJ-NEXT: PrologSize: 0x0
9598 ; OBJ-NEXT: SavedRegsSize: 0x4
9699 ; OBJ-NEXT: Flags [ (0x0)
100 ; OBJ-NEXT: ]
101 ; OBJ-NEXT: FrameFunc [
102 ; OBJ-NEXT: $T0 .raSearch =
103 ; OBJ-NEXT: $eip $T0 ^ =
104 ; OBJ-NEXT: $esp $T0 4 + =
105 ; OBJ-NEXT: $esi $T0 4 - ^ =
97106 ; OBJ-NEXT: ]
98107 ; OBJ-NEXT: }
99108 ; OBJ-NOT: FrameData
135144 ; OBJ-NEXT: LocalSize: 0x0
136145 ; OBJ-NEXT: ParamsSize: 0x0
137146 ; OBJ-NEXT: MaxStackSize: 0x0
138 ; OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =
139147 ; OBJ-NEXT: PrologSize: 0x2
140148 ; OBJ-NEXT: SavedRegsSize: 0x0
141149 ; OBJ-NEXT: Flags [ (0x4)
142150 ; OBJ-NEXT: IsFunctionStart (0x4)
143151 ; OBJ-NEXT: ]
152 ; OBJ-NEXT: FrameFunc [
153 ; OBJ-NEXT: $T0 .raSearch =
154 ; OBJ-NEXT: $eip $T0 ^ =
155 ; OBJ-NEXT: $esp $T0 4 + =
156 ; OBJ-NEXT: ]
144157 ; OBJ-NEXT: }
145158 ; OBJ-NEXT: FrameData {
146159 ; OBJ-NEXT: RvaStart: 0x1
148161 ; OBJ-NEXT: LocalSize: 0x0
149162 ; OBJ-NEXT: ParamsSize: 0x0
150163 ; OBJ-NEXT: MaxStackSize: 0x0
151 ; OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $edi $T0 4 - ^ =
152164 ; OBJ-NEXT: PrologSize: 0x1
153165 ; OBJ-NEXT: SavedRegsSize: 0x4
154166 ; OBJ-NEXT: Flags [ (0x0)
155167 ; OBJ-NEXT: ]
168 ; OBJ-NEXT: FrameFunc [
169 ; OBJ-NEXT: $T0 .raSearch =
170 ; OBJ-NEXT: $eip $T0 ^ =
171 ; OBJ-NEXT: $esp $T0 4 + =
172 ; OBJ-NEXT: $edi $T0 4 - ^ =
173 ; OBJ-NEXT: ]
156174 ; OBJ-NEXT: }
157175 ; OBJ-NEXT: FrameData {
158176 ; OBJ-NEXT: RvaStart: 0x2
160178 ; OBJ-NEXT: LocalSize: 0x0
161179 ; OBJ-NEXT: ParamsSize: 0x0
162180 ; OBJ-NEXT: MaxStackSize: 0x0
163 ; OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $edi $T0 4 - ^ = $esi $T0 8 - ^ =
164181 ; OBJ-NEXT: PrologSize: 0x0
165182 ; OBJ-NEXT: SavedRegsSize: 0x8
166183 ; OBJ-NEXT: Flags [ (0x0)
184 ; OBJ-NEXT: ]
185 ; OBJ-NEXT: FrameFunc [
186 ; OBJ-NEXT: $T0 .raSearch =
187 ; OBJ-NEXT: $eip $T0 ^ =
188 ; OBJ-NEXT: $esp $T0 4 + =
189 ; OBJ-NEXT: $edi $T0 4 - ^ =
190 ; OBJ-NEXT: $esi $T0 8 - ^ =
167191 ; OBJ-NEXT: ]
168192 ; OBJ-NEXT: }
169193 ; OBJ-NOT: FrameData
206230 ; OBJ-NEXT: LocalSize: 0x0
207231 ; OBJ-NEXT: ParamsSize: 0x0
208232 ; OBJ-NEXT: MaxStackSize: 0x0
209 ; OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =
210233 ; OBJ-NEXT: PrologSize: 0x3
211234 ; OBJ-NEXT: SavedRegsSize: 0x0
212235 ; OBJ-NEXT: Flags [ (0x4)
213236 ; OBJ-NEXT: IsFunctionStart (0x4)
214237 ; OBJ-NEXT: ]
238 ; OBJ-NEXT: FrameFunc [
239 ; OBJ-NEXT: $T0 .raSearch =
240 ; OBJ-NEXT: $eip $T0 ^ =
241 ; OBJ-NEXT: $esp $T0 4 + =
242 ; OBJ-NEXT: ]
215243 ; OBJ-NEXT: }
216244 ; OBJ-NEXT: FrameData {
217245 ; OBJ-NEXT: RvaStart: 0x1
219247 ; OBJ-NEXT: LocalSize: 0x0
220248 ; OBJ-NEXT: ParamsSize: 0x0
221249 ; OBJ-NEXT: MaxStackSize: 0x0
222 ; OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
223250 ; OBJ-NEXT: PrologSize: 0x2
224251 ; OBJ-NEXT: SavedRegsSize: 0x4
225252 ; OBJ-NEXT: Flags [ (0x0)
226253 ; OBJ-NEXT: ]
254 ; OBJ-NEXT: FrameFunc [
255 ; OBJ-NEXT: $T0 .raSearch =
256 ; OBJ-NEXT: $eip $T0 ^ =
257 ; OBJ-NEXT: $esp $T0 4 + =
258 ; OBJ-NEXT: $ebx $T0 4 - ^ =
259 ; OBJ-NEXT: ]
227260 ; OBJ-NEXT: }
228261 ; OBJ-NEXT: FrameData {
229262 ; OBJ-NEXT: RvaStart: 0x2
231264 ; OBJ-NEXT: LocalSize: 0x0
232265 ; OBJ-NEXT: ParamsSize: 0x0
233266 ; OBJ-NEXT: MaxStackSize: 0x0
234 ; OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = $edi $T0 8 - ^ =
235267 ; OBJ-NEXT: PrologSize: 0x1
236268 ; OBJ-NEXT: SavedRegsSize: 0x8
237269 ; OBJ-NEXT: Flags [ (0x0)
238270 ; OBJ-NEXT: ]
271 ; OBJ-NEXT: FrameFunc [
272 ; OBJ-NEXT: $T0 .raSearch =
273 ; OBJ-NEXT: $eip $T0 ^ =
274 ; OBJ-NEXT: $esp $T0 4 + =
275 ; OBJ-NEXT: $ebx $T0 4 - ^ =
276 ; OBJ-NEXT: $edi $T0 8 - ^ =
277 ; OBJ-NEXT: ]
239278 ; OBJ-NEXT: }
240279 ; OBJ-NEXT: FrameData {
241280 ; OBJ-NEXT: RvaStart: 0x3
243282 ; OBJ-NEXT: LocalSize: 0x0
244283 ; OBJ-NEXT: ParamsSize: 0x0
245284 ; OBJ-NEXT: MaxStackSize: 0x0
246 ; OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = $edi $T0 8 - ^ = $esi $T0 12 - ^ =
247285 ; OBJ-NEXT: PrologSize: 0x0
248286 ; OBJ-NEXT: SavedRegsSize: 0xC
249287 ; OBJ-NEXT: Flags [ (0x0)
288 ; OBJ-NEXT: ]
289 ; OBJ-NEXT: FrameFunc [
290 ; OBJ-NEXT: $T0 .raSearch =
291 ; OBJ-NEXT: $eip $T0 ^ =
292 ; OBJ-NEXT: $esp $T0 4 + =
293 ; OBJ-NEXT: $ebx $T0 4 - ^ =
294 ; OBJ-NEXT: $edi $T0 8 - ^ =
295 ; OBJ-NEXT: $esi $T0 12 - ^ =
250296 ; OBJ-NEXT: ]
251297 ; OBJ-NEXT: }
252298 ; OBJ-NOT: FrameData
294340 ; OBJ-NEXT: LocalSize: 0x0
295341 ; OBJ-NEXT: ParamsSize: 0x0
296342 ; OBJ-NEXT: MaxStackSize: 0x0
297 ; OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =
298343 ; OBJ-NEXT: PrologSize: 0x4
299344 ; OBJ-NEXT: SavedRegsSize: 0x0
300345 ; OBJ-NEXT: Flags [ (0x4)
301346 ; OBJ-NEXT: IsFunctionStart (0x4)
302347 ; OBJ-NEXT: ]
348 ; OBJ-NEXT: FrameFunc [
349 ; OBJ-NEXT: $T0 .raSearch =
350 ; OBJ-NEXT: $eip $T0 ^ =
351 ; OBJ-NEXT: $esp $T0 4 + =
352 ; OBJ-NEXT: ]
303353 ; OBJ-NEXT: }
304354 ; OBJ-NEXT: FrameData {
305355 ; OBJ-NEXT: RvaStart: 0x1
307357 ; OBJ-NEXT: LocalSize: 0x0
308358 ; OBJ-NEXT: ParamsSize: 0x0
309359 ; OBJ-NEXT: MaxStackSize: 0x0
310 ; OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ =
311360 ; OBJ-NEXT: PrologSize: 0x3
312361 ; OBJ-NEXT: SavedRegsSize: 0x4
313362 ; OBJ-NEXT: Flags [ (0x0)
314363 ; OBJ-NEXT: ]
364 ; OBJ-NEXT: FrameFunc [
365 ; OBJ-NEXT: $T0 .raSearch =
366 ; OBJ-NEXT: $eip $T0 ^ =
367 ; OBJ-NEXT: $esp $T0 4 + =
368 ; OBJ-NEXT: $ebp $T0 4 - ^ =
369 ; OBJ-NEXT: ]
315370 ; OBJ-NEXT: }
316371 ; OBJ-NEXT: FrameData {
317372 ; OBJ-NEXT: RvaStart: 0x2
319374 ; OBJ-NEXT: LocalSize: 0x0
320375 ; OBJ-NEXT: ParamsSize: 0x0
321376 ; OBJ-NEXT: MaxStackSize: 0x0
322 ; OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ =
323377 ; OBJ-NEXT: PrologSize: 0x2
324378 ; OBJ-NEXT: SavedRegsSize: 0x8
325379 ; OBJ-NEXT: Flags [ (0x0)
326380 ; OBJ-NEXT: ]
381 ; OBJ-NEXT: FrameFunc [
382 ; OBJ-NEXT: $T0 .raSearch =
383 ; OBJ-NEXT: $eip $T0 ^ =
384 ; OBJ-NEXT: $esp $T0 4 + =
385 ; OBJ-NEXT: $ebp $T0 4 - ^ =
386 ; OBJ-NEXT: $ebx $T0 8 - ^ =
387 ; OBJ-NEXT: ]
327388 ; OBJ-NEXT: }
328389 ; OBJ-NEXT: FrameData {
329390 ; OBJ-NEXT: RvaStart: 0x3
331392 ; OBJ-NEXT: LocalSize: 0x0
332393 ; OBJ-NEXT: ParamsSize: 0x0
333394 ; OBJ-NEXT: MaxStackSize: 0x0
334 ; OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ = $edi $T0 12 - ^ =
335395 ; OBJ-NEXT: PrologSize: 0x1
336396 ; OBJ-NEXT: SavedRegsSize: 0xC
337397 ; OBJ-NEXT: Flags [ (0x0)
338398 ; OBJ-NEXT: ]
399 ; OBJ-NEXT: FrameFunc [
400 ; OBJ-NEXT: $T0 .raSearch =
401 ; OBJ-NEXT: $eip $T0 ^ =
402 ; OBJ-NEXT: $esp $T0 4 + =
403 ; OBJ-NEXT: $ebp $T0 4 - ^ =
404 ; OBJ-NEXT: $ebx $T0 8 - ^ =
405 ; OBJ-NEXT: $edi $T0 12 - ^ =
406 ; OBJ-NEXT: ]
339407 ; OBJ-NEXT: }
340408 ; OBJ-NEXT: FrameData {
341409 ; OBJ-NEXT: RvaStart: 0x4
343411 ; OBJ-NEXT: LocalSize: 0x0
344412 ; OBJ-NEXT: ParamsSize: 0x0
345413 ; OBJ-NEXT: MaxStackSize: 0x0
346 ; OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ = $edi $T0 12 - ^ = $esi $T0 16 - ^ =
347414 ; OBJ-NEXT: PrologSize: 0x0
348415 ; OBJ-NEXT: SavedRegsSize: 0x10
349416 ; OBJ-NEXT: Flags [ (0x0)
417 ; OBJ-NEXT: ]
418 ; OBJ-NEXT: FrameFunc [
419 ; OBJ-NEXT: $T0 .raSearch =
420 ; OBJ-NEXT: $eip $T0 ^ =
421 ; OBJ-NEXT: $esp $T0 4 + =
422 ; OBJ-NEXT: $ebp $T0 4 - ^ =
423 ; OBJ-NEXT: $ebx $T0 8 - ^ =
424 ; OBJ-NEXT: $edi $T0 12 - ^ =
425 ; OBJ-NEXT: $esi $T0 16 - ^ =
350426 ; OBJ-NEXT: ]
351427 ; OBJ-NEXT: }
352428 ; OBJ-NOT: FrameData
394470 ; OBJ-NEXT: LocalSize: 0x0
395471 ; OBJ-NEXT: ParamsSize: 0x0
396472 ; OBJ-NEXT: MaxStackSize: 0x0
397 ; OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =
398473 ; OBJ-NEXT: PrologSize: 0x7
399474 ; OBJ-NEXT: SavedRegsSize: 0x0
400475 ; OBJ-NEXT: Flags [ (0x4)
401476 ; OBJ-NEXT: IsFunctionStart (0x4)
402477 ; OBJ-NEXT: ]
478 ; OBJ-NEXT: FrameFunc [
479 ; OBJ-NEXT: $T0 .raSearch =
480 ; OBJ-NEXT: $eip $T0 ^ =
481 ; OBJ-NEXT: $esp $T0 4 + =
482 ; OBJ-NEXT: ]
403483 ; OBJ-NEXT: }
404484 ; OBJ-NEXT: FrameData {
405485 ; OBJ-NEXT: RvaStart: 0x1
407487 ; OBJ-NEXT: LocalSize: 0x0
408488 ; OBJ-NEXT: ParamsSize: 0x0
409489 ; OBJ-NEXT: MaxStackSize: 0x0
410 ; OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ =
411490 ; OBJ-NEXT: PrologSize: 0x6
412491 ; OBJ-NEXT: SavedRegsSize: 0x4
413492 ; OBJ-NEXT: Flags [ (0x0)
414493 ; OBJ-NEXT: ]
494 ; OBJ-NEXT: FrameFunc [
495 ; OBJ-NEXT: $T0 .raSearch =
496 ; OBJ-NEXT: $eip $T0 ^ =
497 ; OBJ-NEXT: $esp $T0 4 + =
498 ; OBJ-NEXT: $ebp $T0 4 - ^ =
499 ; OBJ-NEXT: ]
415500 ; OBJ-NEXT: }
416501 ; OBJ-NEXT: FrameData {
417502 ; OBJ-NEXT: RvaStart: 0x2
419504 ; OBJ-NEXT: LocalSize: 0x0
420505 ; OBJ-NEXT: ParamsSize: 0x0
421506 ; OBJ-NEXT: MaxStackSize: 0x0
422 ; OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ =
423507 ; OBJ-NEXT: PrologSize: 0x5
424508 ; OBJ-NEXT: SavedRegsSize: 0x8
425509 ; OBJ-NEXT: Flags [ (0x0)
426510 ; OBJ-NEXT: ]
511 ; OBJ-NEXT: FrameFunc [
512 ; OBJ-NEXT: $T0 .raSearch =
513 ; OBJ-NEXT: $eip $T0 ^ =
514 ; OBJ-NEXT: $esp $T0 4 + =
515 ; OBJ-NEXT: $ebp $T0 4 - ^ =
516 ; OBJ-NEXT: $ebx $T0 8 - ^ =
517 ; OBJ-NEXT: ]
427518 ; OBJ-NEXT: }
428519 ; OBJ-NEXT: FrameData {
429520 ; OBJ-NEXT: RvaStart: 0x3
431522 ; OBJ-NEXT: LocalSize: 0x0
432523 ; OBJ-NEXT: ParamsSize: 0x0
433524 ; OBJ-NEXT: MaxStackSize: 0x0
434 ; OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ = $edi $T0 12 - ^ =
435525 ; OBJ-NEXT: PrologSize: 0x4
436526 ; OBJ-NEXT: SavedRegsSize: 0xC
437527 ; OBJ-NEXT: Flags [ (0x0)
438528 ; OBJ-NEXT: ]
529 ; OBJ-NEXT: FrameFunc [
530 ; OBJ-NEXT: $T0 .raSearch =
531 ; OBJ-NEXT: $eip $T0 ^ =
532 ; OBJ-NEXT: $esp $T0 4 + =
533 ; OBJ-NEXT: $ebp $T0 4 - ^ =
534 ; OBJ-NEXT: $ebx $T0 8 - ^ =
535 ; OBJ-NEXT: $edi $T0 12 - ^ =
536 ; OBJ-NEXT: ]
439537 ; OBJ-NEXT: }
440538 ; OBJ-NEXT: FrameData {
441539 ; OBJ-NEXT: RvaStart: 0x4
443541 ; OBJ-NEXT: LocalSize: 0x0
444542 ; OBJ-NEXT: ParamsSize: 0x0
445543 ; OBJ-NEXT: MaxStackSize: 0x0
446 ; OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ = $edi $T0 12 - ^ = $esi $T0 16 - ^ =
447544 ; OBJ-NEXT: PrologSize: 0x3
448545 ; OBJ-NEXT: SavedRegsSize: 0x10
449546 ; OBJ-NEXT: Flags [ (0x0)
547 ; OBJ-NEXT: ]
548 ; OBJ-NEXT: FrameFunc [
549 ; OBJ-NEXT: $T0 .raSearch =
550 ; OBJ-NEXT: $eip $T0 ^ =
551 ; OBJ-NEXT: $esp $T0 4 + =
552 ; OBJ-NEXT: $ebp $T0 4 - ^ =
553 ; OBJ-NEXT: $ebx $T0 8 - ^ =
554 ; OBJ-NEXT: $edi $T0 12 - ^ =
555 ; OBJ-NEXT: $esi $T0 16 - ^ =
450556 ; OBJ-NEXT: ]
451557 ; OBJ-NEXT: }
452558 ; OBJ-NEXT: FrameData {
455561 ; OBJ-NEXT: LocalSize: 0x8
456562 ; OBJ-NEXT: ParamsSize: 0x0
457563 ; OBJ-NEXT: MaxStackSize: 0x0
458 ; OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ = $edi $T0 12 - ^ = $esi $T0 16 - ^ =
459564 ; OBJ-NEXT: PrologSize: 0x0
460565 ; OBJ-NEXT: SavedRegsSize: 0x10
461566 ; OBJ-NEXT: Flags [ (0x0)
567 ; OBJ-NEXT: ]
568 ; OBJ-NEXT: FrameFunc [
569 ; OBJ-NEXT: $T0 .raSearch =
570 ; OBJ-NEXT: $eip $T0 ^ =
571 ; OBJ-NEXT: $esp $T0 4 + =
572 ; OBJ-NEXT: $ebp $T0 4 - ^ =
573 ; OBJ-NEXT: $ebx $T0 8 - ^ =
574 ; OBJ-NEXT: $edi $T0 12 - ^ =
575 ; OBJ-NEXT: $esi $T0 16 - ^ =
462576 ; OBJ-NEXT: ]
463577 ; OBJ-NEXT: }
464578 ; OBJ-NOT: FrameData
4040 ; OBJ: FrameData {
4141 ; OBJ: RvaStart: 0x0
4242 ; OBJ: CodeSize: 0x34
43 ; OBJ: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =
4443 ; OBJ: PrologSize: 0x9
44 ; OBJ: FrameFunc [
45 ; OBJ-NEXT: $T0 .raSearch =
46 ; OBJ-NEXT: $eip $T0 ^ =
47 ; OBJ-NEXT: $esp $T0 4 + =
48 ; OBJ-NEXT: ]
4549 ; OBJ: }
4650 ; OBJ: FrameData {
4751 ; OBJ: RvaStart: 0x7
4852 ; OBJ: CodeSize: 0x2D
49 ; OBJ: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
5053 ; OBJ: PrologSize: 0x2
54 ; OBJ: FrameFunc [
55 ; OBJ-NEXT: $T0 .raSearch =
56 ; OBJ-NEXT: $eip $T0 ^ =
57 ; OBJ-NEXT: $esp $T0 4 + =
58 ; OBJ-NEXT: $ebx $T0 4 - ^ =
59 ; OBJ-NEXT: ]
5160 ; OBJ: }
5261 ; OBJ: FrameData {
5362 ; OBJ: RvaStart: 0x8
5463 ; OBJ: CodeSize: 0x2C
55 ; OBJ: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = $edi $T0 8 - ^ =
5664 ; OBJ: PrologSize: 0x1
65 ; OBJ: FrameFunc [
66 ; OBJ-NEXT: $T0 .raSearch =
67 ; OBJ-NEXT: $eip $T0 ^ =
68 ; OBJ-NEXT: $esp $T0 4 + =
69 ; OBJ-NEXT: $ebx $T0 4 - ^ =
70 ; OBJ-NEXT: $edi $T0 8 - ^ =
71 ; OBJ-NEXT: ]
5772 ; OBJ: }
5873 ; OBJ: FrameData {
5974 ; OBJ: RvaStart: 0x9
6075 ; OBJ: CodeSize: 0x2B
61 ; OBJ: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = $edi $T0 8 - ^ = $esi $T0 12 - ^ =
6276 ; OBJ: PrologSize: 0x0
77 ; OBJ: FrameFunc [
78 ; OBJ-NEXT: $T0 .raSearch =
79 ; OBJ-NEXT: $eip $T0 ^ =
80 ; OBJ-NEXT: $esp $T0 4 + =
81 ; OBJ-NEXT: $ebx $T0 4 - ^ =
82 ; OBJ-NEXT: $edi $T0 8 - ^ =
83 ; OBJ-NEXT: $esi $T0 12 - ^ =
84 ; OBJ-NEXT: ]
6385 ; OBJ: }
6486 ; OBJ-NOT: FrameData
6587
7070 # OBJ-NEXT: LocalSize: 0x0
7171 # OBJ-NEXT: ParamsSize: 0x4
7272 # OBJ-NEXT: MaxStackSize: 0x0
73 # OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =
7473 # OBJ-NEXT: PrologSize: 0x7
7574 # OBJ-NEXT: SavedRegsSize: 0x0
7675 # OBJ-NEXT: Flags [ (0x4)
7776 # OBJ-NEXT: IsFunctionStart (0x4)
77 # OBJ-NEXT: ]
78 # OBJ-NEXT: FrameFunc [
79 # OBJ-NEXT: $T0 .raSearch =
80 # OBJ-NEXT: $eip $T0 ^ =
81 # OBJ-NEXT: $esp $T0 4 + =
7882 # OBJ-NEXT: ]
7983 # OBJ-NEXT: }
8084 # OBJ-NEXT: FrameData {
8387 # OBJ-NEXT: LocalSize: 0x0
8488 # OBJ-NEXT: ParamsSize: 0x4
8589 # OBJ-NEXT: MaxStackSize: 0x0
86 # OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ =
8790 # OBJ-NEXT: PrologSize: 0x6
8891 # OBJ-NEXT: SavedRegsSize: 0x4
8992 # OBJ-NEXT: Flags [ (0x0)
93 # OBJ-NEXT: ]
94 # OBJ-NEXT: FrameFunc [
95 # OBJ-NEXT: $T0 .raSearch =
96 # OBJ-NEXT: $eip $T0 ^ =
97 # OBJ-NEXT: $esp $T0 4 + =
98 # OBJ-NEXT: $ebp $T0 4 - ^ =
9099 # OBJ-NEXT: ]
91100 # OBJ-NEXT: }
92101 # OBJ-NEXT: FrameData {
95104 # OBJ-NEXT: LocalSize: 0x0
96105 # OBJ-NEXT: ParamsSize: 0x4
97106 # OBJ-NEXT: MaxStackSize: 0x0
98 # OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ =
99107 # OBJ-NEXT: PrologSize: 0x5
100108 # OBJ-NEXT: SavedRegsSize: 0x8
101109 # OBJ-NEXT: Flags [ (0x0)
110 # OBJ-NEXT: ]
111 # OBJ-NEXT: FrameFunc [
112 # OBJ-NEXT: $T0 .raSearch =
113 # OBJ-NEXT: $eip $T0 ^ =
114 # OBJ-NEXT: $esp $T0 4 + =
115 # OBJ-NEXT: $ebp $T0 4 - ^ =
116 # OBJ-NEXT: $ebx $T0 8 - ^ =
102117 # OBJ-NEXT: ]
103118 # OBJ-NEXT: }
104119 # OBJ-NEXT: FrameData {
107122 # OBJ-NEXT: LocalSize: 0x0
108123 # OBJ-NEXT: ParamsSize: 0x4
109124 # OBJ-NEXT: MaxStackSize: 0x0
110 # OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ = $edi $T0 12 - ^ =
111125 # OBJ-NEXT: PrologSize: 0x4
112126 # OBJ-NEXT: SavedRegsSize: 0xC
113127 # OBJ-NEXT: Flags [ (0x0)
128 # OBJ-NEXT: ]
129 # OBJ-NEXT: FrameFunc [
130 # OBJ-NEXT: $T0 .raSearch =
131 # OBJ-NEXT: $eip $T0 ^ =
132 # OBJ-NEXT: $esp $T0 4 + =
133 # OBJ-NEXT: $ebp $T0 4 - ^ =
134 # OBJ-NEXT: $ebx $T0 8 - ^ =
135 # OBJ-NEXT: $edi $T0 12 - ^ =
114136 # OBJ-NEXT: ]
115137 # OBJ-NEXT: }
116138 # OBJ-NEXT: FrameData {
119141 # OBJ-NEXT: LocalSize: 0x0
120142 # OBJ-NEXT: ParamsSize: 0x4
121143 # OBJ-NEXT: MaxStackSize: 0x0
122 # OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ = $edi $T0 12 - ^ = $esi $T0 16 - ^ =
123144 # OBJ-NEXT: PrologSize: 0x3
124145 # OBJ-NEXT: SavedRegsSize: 0x10
125146 # OBJ-NEXT: Flags [ (0x0)
147 # OBJ-NEXT: ]
148 # OBJ-NEXT: FrameFunc [
149 # OBJ-NEXT: $T0 .raSearch =
150 # OBJ-NEXT: $eip $T0 ^ =
151 # OBJ-NEXT: $esp $T0 4 + =
152 # OBJ-NEXT: $ebp $T0 4 - ^ =
153 # OBJ-NEXT: $ebx $T0 8 - ^ =
154 # OBJ-NEXT: $edi $T0 12 - ^ =
155 # OBJ-NEXT: $esi $T0 16 - ^ =
126156 # OBJ-NEXT: ]
127157 # OBJ-NEXT: }
128158 # OBJ-NEXT: FrameData {
131161 # OBJ-NEXT: LocalSize: 0x14
132162 # OBJ-NEXT: ParamsSize: 0x4
133163 # OBJ-NEXT: MaxStackSize: 0x0
134 # OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ = $edi $T0 12 - ^ = $esi $T0 16 - ^ =
135164 # OBJ-NEXT: PrologSize: 0x0
136165 # OBJ-NEXT: SavedRegsSize: 0x10
137166 # OBJ-NEXT: Flags [ (0x0)
138167 # OBJ-NEXT: ]
168 # OBJ-NEXT: FrameFunc [
169 # OBJ-NEXT: $T0 .raSearch =
170 # OBJ-NEXT: $eip $T0 ^ =
171 # OBJ-NEXT: $esp $T0 4 + =
172 # OBJ-NEXT: $ebp $T0 4 - ^ =
173 # OBJ-NEXT: $ebx $T0 8 - ^ =
174 # OBJ-NEXT: $edi $T0 12 - ^ =
175 # OBJ-NEXT: $esi $T0 16 - ^ =
176 # OBJ-NEXT: ]
139177 # OBJ-NEXT: }
140178 # OBJ-NOT: FrameData
7373 # OBJ-NEXT: LocalSize: 0x0
7474 # OBJ-NEXT: ParamsSize: 0x4
7575 # OBJ-NEXT: MaxStackSize: 0x0
76 # OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =
7776 # OBJ-NEXT: PrologSize: 0x9
7877 # OBJ-NEXT: SavedRegsSize: 0x0
7978 # OBJ-NEXT: Flags [ (0x4)
8079 # OBJ-NEXT: IsFunctionStart (0x4)
80 # OBJ-NEXT: ]
81 # OBJ-NEXT: FrameFunc [
82 # OBJ-NEXT: $T0 .raSearch =
83 # OBJ-NEXT: $eip $T0 ^ =
84 # OBJ-NEXT: $esp $T0 4 + =
8185 # OBJ-NEXT: ]
8286 # OBJ-NEXT: }
8387 # OBJ-NEXT: FrameData {
8690 # OBJ-NEXT: LocalSize: 0x0
8791 # OBJ-NEXT: ParamsSize: 0x4
8892 # OBJ-NEXT: MaxStackSize: 0x0
89 # OBJ-NEXT: FrameFunc: $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ =
9093 # OBJ-NEXT: PrologSize: 0x8
9194 # OBJ-NEXT: SavedRegsSize: 0x4
9295 # OBJ-NEXT: Flags [ (0x0)
96 # OBJ-NEXT: ]
97 # OBJ-NEXT: FrameFunc [
98 # OBJ-NEXT: $T0 .raSearch =
99 # OBJ-NEXT: $eip $T0 ^ =
100 # OBJ-NEXT: $esp $T0 4 + =
101 # OBJ-NEXT: $ebp $T0 4 - ^ =
93102 # OBJ-NEXT: ]
94103 # OBJ-NEXT: }
95104 # OBJ-NEXT: FrameData {
98107 # OBJ-NEXT: LocalSize: 0x0
99108 # OBJ-NEXT: ParamsSize: 0x4
100109 # OBJ-NEXT: MaxStackSize: 0x0
101 # OBJ-NEXT: FrameFunc: $T0 $ebp 4 + = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ =
102110 # OBJ-NEXT: PrologSize: 0x6
103111 # OBJ-NEXT: SavedRegsSize: 0x4
104112 # OBJ-NEXT: Flags [ (0x0)
113 # OBJ-NEXT: ]
114 # OBJ-NEXT: FrameFunc [
115 # OBJ-NEXT: $T0 $ebp 4 + =
116 # OBJ-NEXT: $eip $T0 ^ =
117 # OBJ-NEXT: $esp $T0 4 + =
118 # OBJ-NEXT: $ebp $T0 4 - ^ =
105119 # OBJ-NEXT: ]
106120 # OBJ-NEXT: }
107121 # OBJ-NEXT: FrameData {
110124 # OBJ-NEXT: LocalSize: 0x0
111125 # OBJ-NEXT: ParamsSize: 0x4
112126 # OBJ-NEXT: MaxStackSize: 0x0
113 # OBJ-NEXT: FrameFunc: $T0 $ebp 4 + = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ =
114127 # OBJ-NEXT: PrologSize: 0x5
115128 # OBJ-NEXT: SavedRegsSize: 0x8
116129 # OBJ-NEXT: Flags [ (0x0)
130 # OBJ-NEXT: ]
131 # OBJ-NEXT: FrameFunc [
132 # OBJ-NEXT: $T0 $ebp 4 + =
133 # OBJ-NEXT: $eip $T0 ^ =
134 # OBJ-NEXT: $esp $T0 4 + =
135 # OBJ-NEXT: $ebp $T0 4 - ^ =
136 # OBJ-NEXT: $ebx $T0 8 - ^ =
117137 # OBJ-NEXT: ]
118138 # OBJ-NEXT: }
119139 # OBJ-NEXT: FrameData {
122142 # OBJ-NEXT: LocalSize: 0x0
123143 # OBJ-NEXT: ParamsSize: 0x4
124144 # OBJ-NEXT: MaxStackSize: 0x0
125 # OBJ-NEXT: FrameFunc: $T0 $ebp 4 + = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ = $edi $T0 12 - ^ =
126145 # OBJ-NEXT: PrologSize: 0x4
127146 # OBJ-NEXT: SavedRegsSize: 0xC
128147 # OBJ-NEXT: Flags [ (0x0)
148 # OBJ-NEXT: ]
149 # OBJ-NEXT: FrameFunc [
150 # OBJ-NEXT: $T0 $ebp 4 + =
151 # OBJ-NEXT: $eip $T0 ^ =
152 # OBJ-NEXT: $esp $T0 4 + =
153 # OBJ-NEXT: $ebp $T0 4 - ^ =
154 # OBJ-NEXT: $ebx $T0 8 - ^ =
155 # OBJ-NEXT: $edi $T0 12 - ^ =
129156 # OBJ-NEXT: ]
130157 # OBJ-NEXT: }
131158 # OBJ-NEXT: FrameData {
134161 # OBJ-NEXT: LocalSize: 0x0
135162 # OBJ-NEXT: ParamsSize: 0x4
136163 # OBJ-NEXT: MaxStackSize: 0x0
137 # OBJ-NEXT: FrameFunc: $T0 $ebp 4 + = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ = $edi $T0 12 - ^ = $esi $T0 16 - ^ =
138164 # OBJ-NEXT: PrologSize: 0x3
139165 # OBJ-NEXT: SavedRegsSize: 0x10
140166 # OBJ-NEXT: Flags [ (0x0)
141167 # OBJ-NEXT: ]
168 # OBJ-NEXT: FrameFunc [
169 # OBJ-NEXT: $T0 $ebp 4 + =
170 # OBJ-NEXT: $eip $T0 ^ =
171 # OBJ-NEXT: $esp $T0 4 + =
172 # OBJ-NEXT: $ebp $T0 4 - ^ =
173 # OBJ-NEXT: $ebx $T0 8 - ^ =
174 # OBJ-NEXT: $edi $T0 12 - ^ =
175 # OBJ-NEXT: $esi $T0 16 - ^ =
176 # OBJ-NEXT: ]
142177 # OBJ-NEXT: }
143178 # OBJ-NOT: FrameData
295295 return formatUnknownEnum(Id);
296296 }
297297
298 static std::string formatRegisterId(uint16_t Reg16) {
299 return formatRegisterId(RegisterId(Reg16));
300 }
301
302 static std::string formatRegisterId(ulittle16_t &Reg16) {
303 return formatRegisterId(uint16_t(Reg16));
304 }
305
298306 static std::string formatRange(LocalVariableAddrRange Range) {
299307 return formatv("[{0},+{1})",
300308 formatSegmentOffset(Range.ISectStart, Range.OffsetStart),
549557 Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR,
550558 DefRangeRegisterRelSym &Def) {
551559 AutoIndent Indent(P, 7);
552 P.formatLine("register = {0}, base ptr = {1}, offset in parent = {2}, has "
560 P.formatLine("register = {0}, offset = {1}, offset in parent = {2}, has "
553561 "spilled udt = {3}",
554 uint16_t(Def.Hdr.Register), int32_t(Def.Hdr.BasePointerOffset),
555 Def.offsetInParent(), Def.hasSpilledUDTMember());
562 formatRegisterId(Def.Hdr.Register),
563 int32_t(Def.Hdr.BasePointerOffset), Def.offsetInParent(),
564 Def.hasSpilledUDTMember());
556565 P.formatLine("range = {0}, gaps = {1}", formatRange(Def.Range),
557566 formatGaps(P.getIndentLevel() + 9, Def.Gaps));
558567 return Error::success();
563572 AutoIndent Indent(P, 7);
564573 P.formatLine("register = {0}, may have no name = {1}, range start = "
565574 "{2}, length = {3}",
566 uint16_t(DefRangeRegister.Hdr.Register),
567 uint16_t(DefRangeRegister.Hdr.MayHaveNoName),
575 formatRegisterId(DefRangeRegister.Hdr.Register),
576 bool(DefRangeRegister.Hdr.MayHaveNoName),
568577 formatSegmentOffset(DefRangeRegister.Range.ISectStart,
569578 DefRangeRegister.Range.OffsetStart),
570579 DefRangeRegister.Range.Range);
578587 AutoIndent Indent(P, 7);
579588 bool NoName = !!(Def.Hdr.MayHaveNoName == 0);
580589 P.formatLine("register = {0}, may have no name = {1}, offset in parent = {2}",
581 uint16_t(Def.Hdr.Register), NoName,
590 formatRegisterId(Def.Hdr.Register), NoName,
582591 uint32_t(Def.Hdr.OffsetInParent));
583592 P.formatLine("range = {0}, gaps = {1}", formatRange(Def.Range),
584593 formatGaps(P.getIndentLevel() + 9, Def.Gaps));
605614 Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR, FrameCookieSym &FC) {
606615 AutoIndent Indent(P, 7);
607616 P.formatLine("code offset = {0}, Register = {1}, kind = {2}, flags = {3}",
608 FC.CodeOffset, FC.Register, formatCookieKind(FC.CookieKind),
609 FC.Flags);
617 FC.CodeOffset, formatRegisterId(FC.Register),
618 formatCookieKind(FC.CookieKind), FC.Flags);
610619 return Error::success();
611620 }
612621
10611061 W.printHex("LocalSize", FD.LocalSize);
10621062 W.printHex("ParamsSize", FD.ParamsSize);
10631063 W.printHex("MaxStackSize", FD.MaxStackSize);
1064 W.printString("FrameFunc", FrameFunc);
10651064 W.printHex("PrologSize", FD.PrologSize);
10661065 W.printHex("SavedRegsSize", FD.SavedRegsSize);
10671066 W.printFlags("Flags", FD.Flags, makeArrayRef(FrameDataFlags));
1067
1068 // The FrameFunc string is a small RPN program. It can be broken up into
1069 // statements that end in the '=' operator, which assigns the value on
1070 // the top of the stack to the previously pushed variable. Variables can
1071 // be temporary values ($T0) or physical registers ($esp). Print each
1072 // assignment on its own line to make these programs easier to read.
1073 {
1074 ListScope FFS(W, "FrameFunc");
1075 while (!FrameFunc.empty()) {
1076 size_t EqOrEnd = FrameFunc.find('=');
1077 if (EqOrEnd == StringRef::npos)
1078 EqOrEnd = FrameFunc.size();
1079 else
1080 ++EqOrEnd;
1081 StringRef Stmt = FrameFunc.substr(0, EqOrEnd);
1082 W.printString(Stmt);
1083 FrameFunc = FrameFunc.drop_front(EqOrEnd).trim();
1084 }
1085 }
10681086 }
10691087 break;
10701088 }