|
1 |
| -# RUN: yaml2obj %s | obj2yaml | FileCheck %s |
| 1 | +## This file contains test cases for generating a DAWRFv4 .debug_info |
| 2 | +## section in object files from the DWARF entry of Mach-O YAML inputs. |
| 3 | + |
| 4 | +## a) Test that yaml2obj emits a DWARF32 .debug_info sections and obj2yaml |
| 5 | +## converts it back. |
| 6 | + |
| 7 | +# RUN: yaml2obj --docnum=1 %s | obj2yaml | FileCheck %s --check-prefix=DWARF32 |
2 | 8 |
|
3 | 9 | --- !mach-o
|
4 | 10 | FileHeader:
|
@@ -384,8 +390,7 @@ DWARF:
|
384 | 390 | - Address: 0x0000000100000F50
|
385 | 391 | Length: 52
|
386 | 392 | debug_info:
|
387 |
| - - Length: |
388 |
| - TotalLength: 117 |
| 393 | + - Length: 117 |
389 | 394 | Version: 4
|
390 | 395 | AbbrOffset: 0
|
391 | 396 | AddrSize: 8
|
@@ -506,69 +511,192 @@ DWARF:
|
506 | 511 | ...
|
507 | 512 | ...
|
508 | 513 |
|
| 514 | +# DWARF32: DWARF: |
| 515 | +# DWARF32: debug_info: |
| 516 | +# DWARF32-NEXT: - Length: 117 |
| 517 | +# DWARF32-NEXT: Version: 4 |
| 518 | +# DWARF32-NEXT: AbbrOffset: 0 |
| 519 | +# DWARF32-NEXT: AddrSize: 8 |
| 520 | +# DWARF32-NEXT: Entries: |
| 521 | +# DWARF32-NEXT: - AbbrCode: 0x00000001 |
| 522 | +# DWARF32-NEXT: Values: |
| 523 | +# DWARF32-NEXT: - Value: 0x0000000000000001 |
| 524 | +# DWARF32-NEXT: - Value: 0x000000000000000C |
| 525 | +# DWARF32-NEXT: - Value: 0x0000000000000038 |
| 526 | +# DWARF32-NEXT: - Value: 0x0000000000000000 |
| 527 | +# DWARF32-NEXT: - Value: 0x0000000000000046 |
| 528 | +# DWARF32-NEXT: - Value: 0x0000000100000F50 |
| 529 | +# DWARF32-NEXT: - Value: 0x0000000000000034 |
| 530 | +# DWARF32-NEXT: - AbbrCode: 0x00000002 |
| 531 | +# DWARF32-NEXT: Values: |
| 532 | +# DWARF32-NEXT: - Value: 0x0000000100000F50 |
| 533 | +# DWARF32-NEXT: - Value: 0x0000000000000034 |
| 534 | +# DWARF32-NEXT: - Value: 0x0000000000000001 |
| 535 | +# DWARF32-NEXT: BlockData: [ 0x56 ] |
| 536 | +# DWARF32-NEXT: - Value: 0x0000000000000076 |
| 537 | +# DWARF32-NEXT: - Value: 0x0000000000000001 |
| 538 | +# DWARF32-NEXT: - Value: 0x0000000000000003 |
| 539 | +# DWARF32-NEXT: - Value: 0x0000000000000001 |
| 540 | +# DWARF32-NEXT: - Value: 0x0000000000000060 |
| 541 | +# DWARF32-NEXT: - Value: 0x0000000000000001 |
| 542 | +# DWARF32-NEXT: - AbbrCode: 0x00000003 |
| 543 | +# DWARF32-NEXT: Values: |
| 544 | +# DWARF32-NEXT: - Value: 0x0000000000000002 |
| 545 | +# DWARF32-NEXT: BlockData: [ 0x91, 0x78 ] |
| 546 | +# DWARF32-NEXT: - Value: 0x000000000000007B |
| 547 | +# DWARF32-NEXT: - Value: 0x0000000000000001 |
| 548 | +# DWARF32-NEXT: - Value: 0x0000000000000003 |
| 549 | +# DWARF32-NEXT: - Value: 0x0000000000000060 |
| 550 | +# DWARF32-NEXT: - AbbrCode: 0x00000003 |
| 551 | +# DWARF32-NEXT: Values: |
| 552 | +# DWARF32-NEXT: - Value: 0x0000000000000002 |
| 553 | +# DWARF32-NEXT: BlockData: [ 0x91, 0x70 ] |
| 554 | +# DWARF32-NEXT: - Value: 0x0000000000000080 |
| 555 | +# DWARF32-NEXT: - Value: 0x0000000000000001 |
| 556 | +# DWARF32-NEXT: - Value: 0x0000000000000003 |
| 557 | +# DWARF32-NEXT: - Value: 0x0000000000000067 |
| 558 | +# DWARF32-NEXT: - AbbrCode: 0x00000000 |
| 559 | +# DWARF32-NEXT: Values: |
| 560 | +# DWARF32-NEXT: - AbbrCode: 0x00000004 |
| 561 | +# DWARF32-NEXT: Values: |
| 562 | +# DWARF32-NEXT: - Value: 0x0000000000000085 |
| 563 | +# DWARF32-NEXT: - Value: 0x0000000000000005 |
| 564 | +# DWARF32-NEXT: - Value: 0x0000000000000004 |
| 565 | +# DWARF32-NEXT: - AbbrCode: 0x00000005 |
| 566 | +# DWARF32-NEXT: Values: |
| 567 | +# DWARF32-NEXT: - Value: 0x000000000000006C |
| 568 | +# DWARF32-NEXT: - AbbrCode: 0x00000005 |
| 569 | +# DWARF32-NEXT: Values: |
| 570 | +# DWARF32-NEXT: - Value: 0x0000000000000071 |
| 571 | +# DWARF32-NEXT: - AbbrCode: 0x00000004 |
| 572 | +# DWARF32-NEXT: Values: |
| 573 | +# DWARF32-NEXT: - Value: 0x0000000000000089 |
| 574 | +# DWARF32-NEXT: - Value: 0x0000000000000006 |
| 575 | +# DWARF32-NEXT: - Value: 0x0000000000000001 |
| 576 | +# DWARF32-NEXT: - AbbrCode: 0x00000000 |
| 577 | +# DWARF32-NEXT: Values: |
| 578 | + |
| 579 | +## b) Test that yaml2obj emits a correct unit header and obj2yaml is able to convert it back. |
| 580 | + |
| 581 | +## Test DWARF32 unit header. |
| 582 | + |
| 583 | +# RUN: yaml2obj --docnum=2 -DFORMAT=DWARF32 %s -o %t2.dwarf32.o |
| 584 | +# RUN: llvm-readobj --hex-dump=__debug_info %t2.dwarf32.o | \ |
| 585 | +# RUN: FileCheck %s --check-prefix=DWARF32-HEADER |
| 586 | + |
| 587 | +# DWARF32-HEADER: Hex dump of section '__debug_info': |
| 588 | +# DWARF32-HEADER-NEXT: 0x00000000 0c000000 04000000 00000801 34120000 ............4... |
| 589 | +## ^------- unit_length (4-byte) |
| 590 | +## ^--- version (2-byte) |
| 591 | +## ^-------- debug_abbrev_offset (4-byte) |
| 592 | +## ^- address_size (1-byte) |
| 593 | +## ^- abbrev code (ULEB128) |
| 594 | +## ^------- value, Form: DW_FORM_addr (4-byte) |
| 595 | + |
| 596 | +# RUN: obj2yaml %t2.dwarf32.o | FileCheck %s --check-prefix=DWARF32-YAML |
| 597 | + |
| 598 | +# DWARF32-YAML: debug_info: |
| 599 | +# DWARF32-YAML-NEXT: - Length: 12 |
| 600 | +# DWARF32-YAML-NEXT: Version: 4 |
| 601 | +# DWARF32-YAML-NEXT: AbbrOffset: 0 |
| 602 | +# DWARF32-YAML-NEXT: AddrSize: 8 |
| 603 | +# DWARF32-YAML-NEXT: Entries: |
| 604 | +# DWARF32-YAML-NEXT: - AbbrCode: 0x00000001 |
| 605 | +# DWARF32-YAML-NEXT: Values: |
| 606 | +# DWARF32-YAML-NEXT: - Value: 0x0000000000001234 |
| 607 | + |
| 608 | +--- !mach-o |
| 609 | +FileHeader: |
| 610 | + magic: 0xFEEDFACF |
| 611 | + cputype: 0x01000007 |
| 612 | + cpusubtype: 0x00000003 |
| 613 | + filetype: 0x0000000A |
| 614 | + ncmds: 1 |
| 615 | + sizeofcmds: 232 |
| 616 | + flags: 0x00000000 |
| 617 | + reserved: 0x00000000 |
| 618 | +LoadCommands: |
| 619 | + - cmd: LC_SEGMENT_64 |
| 620 | + cmdsize: 232 |
| 621 | + segname: __DWARF |
| 622 | + vmaddr: 0x00 |
| 623 | + vmsize: 0x00 |
| 624 | + fileoff: 0x00 |
| 625 | + filesize: 0x00 |
| 626 | + maxprot: 0 |
| 627 | + initprot: 0 |
| 628 | + nsects: 2 |
| 629 | + flags: 0 |
| 630 | + Sections: |
| 631 | + - sectname: __debug_abbrev |
| 632 | + segname: __DWARF |
| 633 | + addr: 0x00 |
| 634 | + size: 12 |
| 635 | + offset: 528 |
| 636 | + align: 0 |
| 637 | + reloff: 0x00000000 |
| 638 | + nreloc: 0 |
| 639 | + flags: 0x00000000 |
| 640 | + reserved1: 0x00000000 |
| 641 | + reserved2: 0x00000000 |
| 642 | + reserved3: 0x00000000 |
| 643 | + - sectname: __debug_info |
| 644 | + segname: __DWARF |
| 645 | + addr: 0x00 |
| 646 | + size: 0xffff |
| 647 | + offset: 1070 |
| 648 | + align: 0 |
| 649 | + reloff: 0x00000000 |
| 650 | + nreloc: 0 |
| 651 | + flags: 0x00000000 |
| 652 | + reserved1: 0x00000000 |
| 653 | + reserved2: 0x00000000 |
| 654 | + reserved3: 0x00000000 |
| 655 | +DWARF: |
| 656 | + debug_abbrev: |
| 657 | + - Code: 1 |
| 658 | + Tag: DW_TAG_compile_unit |
| 659 | + Children: DW_CHILDREN_no |
| 660 | + Attributes: |
| 661 | + - Attribute: DW_AT_low_pc |
| 662 | + Form: DW_FORM_addr |
| 663 | + debug_info: |
| 664 | + - Format: [[FORMAT]] |
| 665 | + Length: 12 |
| 666 | + Version: 4 |
| 667 | + AbbrOffset: 0 |
| 668 | + AddrSize: 8 |
| 669 | + Entries: |
| 670 | + - AbbrCode: 1 |
| 671 | + Values: |
| 672 | + - Value: 0x1234 |
| 673 | + |
| 674 | +## Test DWARF64 unit header. |
| 675 | + |
| 676 | +# RUN: yaml2obj --docnum=2 -DFORMAT=DWARF64 %s -o %t2.dwarf64.o |
| 677 | +# RUN: llvm-readobj --hex-dump=__debug_info %t2.dwarf64.o | \ |
| 678 | +# RUN: FileCheck %s --check-prefix=DWARF64-HEADER |
| 679 | + |
| 680 | +# DWARF64-HEADER: Hex dump of section '__debug_info': |
| 681 | +# DWARF64-HEADER-NEXT: 0x00000000 ffffffff 0c000000 00000000 04000000 ................ |
| 682 | +## ^------------------------- unit_length (12-byte) |
| 683 | +## ^--- version (2-byte) |
| 684 | +## ^--- debug_abbrev_offset (8-byte) |
| 685 | +# DWARF64-HEADER-NEXT: 0x00000010 00000000 00000801 34120000 00000000 ........4....... |
| 686 | +## ------------- |
| 687 | +## ^- address_size (1-byte) |
| 688 | +## ^- abbrev code (ULEB128) |
| 689 | +## ^---------------- value, Form: DW_FORM_addr (8-byte) |
| 690 | + |
| 691 | +# RUN: obj2yaml %t2.dwarf64.o | FileCheck %s --check-prefix=DWARF64-YAML |
509 | 692 |
|
510 |
| -#CHECK: DWARF: |
511 |
| -#CHECK: debug_info: |
512 |
| -#CHECK: - Length: |
513 |
| -#CHECK: TotalLength: 117 |
514 |
| -#CHECK: Version: 4 |
515 |
| -#CHECK: AbbrOffset: 0 |
516 |
| -#CHECK: AddrSize: 8 |
517 |
| -#CHECK: Entries: |
518 |
| -#CHECK: - AbbrCode: 0x00000001 |
519 |
| -#CHECK: Values: |
520 |
| -#CHECK: - Value: 0x0000000000000001 |
521 |
| -#CHECK: - Value: 0x000000000000000C |
522 |
| -#CHECK: - Value: 0x0000000000000038 |
523 |
| -#CHECK: - Value: 0x0000000000000000 |
524 |
| -#CHECK: - Value: 0x0000000000000046 |
525 |
| -#CHECK: - Value: 0x0000000100000F50 |
526 |
| -#CHECK: - Value: 0x0000000000000034 |
527 |
| -#CHECK: - AbbrCode: 0x00000002 |
528 |
| -#CHECK: Values: |
529 |
| -#CHECK: - Value: 0x0000000100000F50 |
530 |
| -#CHECK: - Value: 0x0000000000000034 |
531 |
| -#CHECK: - Value: 0x0000000000000001 |
532 |
| -#CHECK: BlockData: [ 0x56 ] |
533 |
| -#CHECK: - Value: 0x0000000000000076 |
534 |
| -#CHECK: - Value: 0x0000000000000001 |
535 |
| -#CHECK: - Value: 0x0000000000000003 |
536 |
| -#CHECK: - Value: 0x0000000000000001 |
537 |
| -#CHECK: - Value: 0x0000000000000060 |
538 |
| -#CHECK: - Value: 0x0000000000000001 |
539 |
| -#CHECK: - AbbrCode: 0x00000003 |
540 |
| -#CHECK: Values: |
541 |
| -#CHECK: - Value: 0x0000000000000002 |
542 |
| -#CHECK: BlockData: [ 0x91, 0x78 ] |
543 |
| -#CHECK: - Value: 0x000000000000007B |
544 |
| -#CHECK: - Value: 0x0000000000000001 |
545 |
| -#CHECK: - Value: 0x0000000000000003 |
546 |
| -#CHECK: - Value: 0x0000000000000060 |
547 |
| -#CHECK: - AbbrCode: 0x00000003 |
548 |
| -#CHECK: Values: |
549 |
| -#CHECK: - Value: 0x0000000000000002 |
550 |
| -#CHECK: BlockData: [ 0x91, 0x70 ] |
551 |
| -#CHECK: - Value: 0x0000000000000080 |
552 |
| -#CHECK: - Value: 0x0000000000000001 |
553 |
| -#CHECK: - Value: 0x0000000000000003 |
554 |
| -#CHECK: - Value: 0x0000000000000067 |
555 |
| -#CHECK: - AbbrCode: 0x00000000 |
556 |
| -#CHECK: Values: |
557 |
| -#CHECK: - AbbrCode: 0x00000004 |
558 |
| -#CHECK: Values: |
559 |
| -#CHECK: - Value: 0x0000000000000085 |
560 |
| -#CHECK: - Value: 0x0000000000000005 |
561 |
| -#CHECK: - Value: 0x0000000000000004 |
562 |
| -#CHECK: - AbbrCode: 0x00000005 |
563 |
| -#CHECK: Values: |
564 |
| -#CHECK: - Value: 0x000000000000006C |
565 |
| -#CHECK: - AbbrCode: 0x00000005 |
566 |
| -#CHECK: Values: |
567 |
| -#CHECK: - Value: 0x0000000000000071 |
568 |
| -#CHECK: - AbbrCode: 0x00000004 |
569 |
| -#CHECK: Values: |
570 |
| -#CHECK: - Value: 0x0000000000000089 |
571 |
| -#CHECK: - Value: 0x0000000000000006 |
572 |
| -#CHECK: - Value: 0x0000000000000001 |
573 |
| -#CHECK: - AbbrCode: 0x00000000 |
574 |
| -#CHECK: Values: |
| 693 | +# DWARF64-YAML: debug_info: |
| 694 | +# DWARF64-YAML-NEXT: - Format: DWARF64 |
| 695 | +# DWARF64-YAML-NEXT: Length: 12 |
| 696 | +# DWARF64-YAML-NEXT: Version: 4 |
| 697 | +# DWARF64-YAML-NEXT: AbbrOffset: 0 |
| 698 | +# DWARF64-YAML-NEXT: AddrSize: 8 |
| 699 | +# DWARF64-YAML-NEXT: Entries: |
| 700 | +# DWARF64-YAML-NEXT: - AbbrCode: 0x00000001 |
| 701 | +# DWARF64-YAML-NEXT: Values: |
| 702 | +# DWARF64-YAML-NEXT: - Value: 0x0000000000001234 |
0 commit comments