|  | ## This test checks DWARFv5 DW_MACRO_start_file, | 
|  | ## DW_MACRO_end_file, DW_MACRO_define, DW_MACRO_undef, | 
|  | ## DW_MACRO_define_strp, DW_MACRO_undef_strp, | 
|  | ## DW_MACRO_define_strx, DW_MACRO_undef_strx attributes. | 
|  |  | 
|  | # RUN: yaml2obj %s -o %t.o | 
|  | # RUN: llvm-dwarfutil %t.o %t1 2>&1 | FileCheck --check-prefix=WARN %s | 
|  | # RUN: llvm-dwarfdump --verify %t1 | FileCheck --check-prefix=VERIFY %s | 
|  | # RUN: llvm-dwarfdump -a %t1 | FileCheck %s | 
|  |  | 
|  | # WARN: warning: DW_MACRO_define_strx unsupported yet. Convert to DW_MACRO_define_strp. | 
|  | # WARN: warning: DW_MACRO_undef_strx unsupported yet. Convert to DW_MACRO_undef_strp. | 
|  | # WARN: warning: DW_MACRO_import and DW_MACRO_import_sup are unsupported yet. remove. | 
|  |  | 
|  | # VERIFY: No errors. | 
|  |  | 
|  | ##  Content:        "05000003000201004400020144000503000000000604000000000b03000c040007000000000400": | 
|  | # | 
|  | ##  .short  5    # Macro information version | 
|  | ##  .byte   0    # Flags: 32 bit | 
|  | ##  .byte   3    # DW_MACRO_start_file | 
|  | ##  .byte   0    # Line Number | 
|  | ##  .byte   2    # File Number | 
|  | ##  .byte   1    # DW_MACRO_define | 
|  | ##  .byte   0    # Line Number | 
|  | ##  .asciz  "D"  # Macro String | 
|  | ##  .byte   2    # DW_MACRO_undef | 
|  | ##  .byte   1    # Line Number | 
|  | ##  .asciz  "D"  # Macro String | 
|  | ##  .byte   5    # DW_MACRO_define_strp | 
|  | ##  .byte   3    # Line Number | 
|  | ##  .int  00000000  # Macro String | 
|  | ##  .byte   6    # DW_MACRO_undef_strp | 
|  | ##  .byte   4    # Line Number | 
|  | ##  .int  00000000  # Macro String | 
|  | ##  .byte   11   # DW_MACRO_define_strx | 
|  | ##  .byte   3    # Line Number | 
|  | ##  .byte   00   # Macro String | 
|  | ##  .byte   12   # DW_MACRO_undef_strx | 
|  | ##  .byte   4    # Line Number | 
|  | ##  .byte   00   # Macro String | 
|  | ##  .byte   7    # DW_MACRO_import | 
|  | ##  .int    0    # Offset | 
|  | ##  .byte   4    # DW_MACRO_end_file | 
|  | ##  .byte   0    # End Of Macro List Mark | 
|  |  | 
|  | #CHECK: .debug_info contents: | 
|  | #CHECK:  DW_TAG_compile_unit | 
|  | #CHECK:    DW_AT_name        ("CU1") | 
|  | #CHECK:    DW_AT_macros  (0x00000000) | 
|  | #CHECK: .debug_macro contents: | 
|  | #CHECK: 0x00000000: | 
|  | #CHECK: DW_MACRO_start_file - lineno: 0 filenum: 2 | 
|  | #CHECK-NEXT: DW_MACRO_define - lineno: 0 macro: D | 
|  | #CHECK-NEXT: DW_MACRO_undef - lineno: 1 macro: D | 
|  | #CHECK-NEXT:   DW_MACRO_define_strp - lineno: 3 macro: aa | 
|  | #CHECK-NEXT:   DW_MACRO_undef_strp - lineno: 4 macro: aa | 
|  | #CHECK-NEXT:   DW_MACRO_define_strp - lineno: 3 macro: aa | 
|  | #CHECK-NEXT:   DW_MACRO_undef_strp - lineno: 4 macro: aa | 
|  | #CHECK-NEXT: DW_MACRO_end_file | 
|  |  | 
|  | --- !ELF | 
|  | FileHeader: | 
|  | Class:    ELFCLASS64 | 
|  | Data:     ELFDATA2LSB | 
|  | Type:     ET_REL | 
|  | Machine:  EM_X86_64 | 
|  | Sections: | 
|  | - Name:            .text | 
|  | Type:            SHT_PROGBITS | 
|  | Flags:           [ SHF_ALLOC, SHF_EXECINSTR ] | 
|  | Address:         0x1000 | 
|  | Size:            0x1b | 
|  | - Name:            .debug_macro | 
|  | Type:            SHT_PROGBITS | 
|  | Flags:           [  ] | 
|  | Content:        "05000003000201004400020144000503000000000604000000000b03000c040007000000000400" | 
|  | - Name:            .debug_str_offsets | 
|  | Type:            SHT_PROGBITS | 
|  | Flags:           [  ] | 
|  | Content:        "080000000500000000000000" | 
|  | DWARF: | 
|  | debug_abbrev: | 
|  | - Table: | 
|  | - Tag:      DW_TAG_compile_unit | 
|  | Children: DW_CHILDREN_yes | 
|  | Attributes: | 
|  | - Attribute: DW_AT_producer | 
|  | Form:      DW_FORM_string | 
|  | - Attribute: DW_AT_language | 
|  | Form:      DW_FORM_data2 | 
|  | - Attribute: DW_AT_name | 
|  | Form:      DW_FORM_string | 
|  | - Attribute: DW_AT_low_pc | 
|  | Form:      DW_FORM_addr | 
|  | - Attribute: DW_AT_high_pc | 
|  | Form:      DW_FORM_data8 | 
|  | - Attribute: DW_AT_macros | 
|  | Form:      DW_FORM_sec_offset | 
|  | - Attribute: DW_AT_str_offsets_base | 
|  | Form:      DW_FORM_sec_offset | 
|  | - Tag:      DW_TAG_class_type | 
|  | Children: DW_CHILDREN_yes | 
|  | Attributes: | 
|  | - Attribute: DW_AT_name | 
|  | Form:      DW_FORM_string | 
|  | - Tag:      DW_TAG_member | 
|  | Children: DW_CHILDREN_no | 
|  | Attributes: | 
|  | - Attribute: DW_AT_type | 
|  | Form:      DW_FORM_ref4 | 
|  | - Attribute: DW_AT_name | 
|  | Form:      DW_FORM_string | 
|  | - Tag:      DW_TAG_class_type | 
|  | Children: DW_CHILDREN_no | 
|  | Attributes: | 
|  | - Attribute: DW_AT_name | 
|  | Form:      DW_FORM_string | 
|  | - Attribute: DW_AT_declaration | 
|  | Form:      DW_FORM_flag_present | 
|  | - Tag:      DW_TAG_class_type | 
|  | Children: DW_CHILDREN_yes | 
|  | Attributes: | 
|  | - Attribute: DW_AT_name | 
|  | Form:      DW_FORM_string | 
|  | - Attribute: DW_AT_declaration | 
|  | Form:      DW_FORM_flag_present | 
|  | - Tag:      DW_TAG_template_type_parameter | 
|  | Children: DW_CHILDREN_no | 
|  | Attributes: | 
|  | - Attribute: DW_AT_type | 
|  | Form:      DW_FORM_ref4 | 
|  | - Tag:      DW_TAG_base_type | 
|  | Children: DW_CHILDREN_no | 
|  | Attributes: | 
|  | - Attribute: DW_AT_name | 
|  | Form:      DW_FORM_string | 
|  | - Tag:      DW_TAG_pointer_type | 
|  | Children: DW_CHILDREN_no | 
|  | Attributes: | 
|  | - Attribute: DW_AT_type | 
|  | Form:      DW_FORM_ref4 | 
|  | - Tag:      DW_TAG_variable | 
|  | Children: DW_CHILDREN_no | 
|  | Attributes: | 
|  | - Attribute: DW_AT_name | 
|  | Form:      DW_FORM_string | 
|  | - Attribute: DW_AT_const_value | 
|  | Form:      DW_FORM_data4 | 
|  | - Attribute: DW_AT_type | 
|  | Form:      DW_FORM_ref4 | 
|  | - Tag:      DW_TAG_subprogram | 
|  | Children: DW_CHILDREN_no | 
|  | Attributes: | 
|  | - Attribute: DW_AT_name | 
|  | Form:      DW_FORM_string | 
|  | - Attribute: DW_AT_low_pc | 
|  | Form:      DW_FORM_addr | 
|  | - Attribute: DW_AT_high_pc | 
|  | Form:      DW_FORM_data8 | 
|  | - Attribute: DW_AT_type | 
|  | Form:      DW_FORM_ref4 | 
|  | debug_info: | 
|  | - Version: 5 | 
|  | UnitType:   DW_UT_compile | 
|  | Entries: | 
|  | - AbbrCode: 1 | 
|  | Values: | 
|  | - CStr: by_hand | 
|  | - Value:  0x04 | 
|  | - CStr: CU1 | 
|  | - Value:  0x1000 | 
|  | - Value:  0x1b | 
|  | - Value:  0x0 | 
|  | - Value:  0x8 | 
|  | - AbbrCode: 2 | 
|  | Values: | 
|  | - CStr: class1 | 
|  | - AbbrCode: 3 | 
|  | Values: | 
|  | - Value:  0x00000056 | 
|  | - CStr: member1 | 
|  | - AbbrCode: 3 | 
|  | Values: | 
|  | - Value:  0x0000005c | 
|  | - CStr: member2 | 
|  | - AbbrCode: 0 | 
|  | - AbbrCode: 7 | 
|  | Values: | 
|  | - CStr: int | 
|  | - AbbrCode: 7 | 
|  | Values: | 
|  | - CStr: char | 
|  | - AbbrCode: 7 | 
|  | Values: | 
|  | - CStr: float | 
|  | - AbbrCode: 8 | 
|  | Values: | 
|  | - Value:  0x00000033 | 
|  | - AbbrCode: 9 | 
|  | Values: | 
|  | - CStr: var1 | 
|  | - Value:  0x00000000 | 
|  | - Value:  0x00000056 | 
|  | - AbbrCode: 10 | 
|  | Values: | 
|  | - CStr: foo1 | 
|  | - Value:  0x1000 | 
|  | - Value:  0x10 | 
|  | - Value:  0x00000033 | 
|  | - AbbrCode: 0 | 
|  | - AbbrCode: 0 | 
|  | debug_str: | 
|  | - 'aa' | 
|  | ... |