# This test verifies that: if a DW_TAG_compile_unit has children not having # ranges then llvm-dwarfdump still correctly verifies other dies with normal # ranges. # # The DWARF looks like: # 0x0000000b: DW_TAG_compile_unit # DW_AT_name ("/tmp/main.c") # DW_AT_language (DW_LANG_C) # DW_AT_low_pc (0x0000000000000000) # DW_AT_ranges (0x00000000 # [0x0000000000002000, 0x0000000000003000) # [0x0000000000001000, 0x0000000000002000)) # # 0x0000001e: DW_TAG_subprogram # DW_AT_name ("no_range1") # # 0x00000044: DW_TAG_subprogram # DW_AT_name ("main") # DW_AT_low_pc (0x0000000000001000) # DW_AT_high_pc (0x0000000000002000) # # 0x00000055: DW_TAG_subprogram # DW_AT_name ("foo") # DW_AT_low_pc (0x0000000000002000) # DW_AT_high_pc (0x0000000000003000) # # # 0x0000001e: DW_TAG_subprogram # DW_AT_name ("no_range2") # # 0x00000066: NULL # RUN: yaml2obj %s | llvm-dwarfdump --verify - | FileCheck %s # CHECK: Verifying -: file format Mach-O 64-bit x86-64 # CHECK: Verifying .debug_abbrev... # CHECK: Verifying .debug_info Unit Header Chain... # CHECK: No errors. --- !mach-o FileHeader: magic: 0xFEEDFACF cputype: 0x01000007 cpusubtype: 0x00000003 filetype: 0x00000001 ncmds: 4 sizeofcmds: 464 flags: 0x00002000 reserved: 0x00000000 LoadCommands: - cmd: LC_SEGMENT_64 cmdsize: 392 segname: '' vmaddr: 0 vmsize: 261 fileoff: 528 filesize: 261 maxprot: 7 initprot: 7 nsects: 4 flags: 0 Sections: - sectname: __debug_abbrev segname: __DWARF addr: 0x0000000000000000 size: 36 offset: 0x00000210 align: 0 reloff: 0x00000000 nreloc: 0 flags: 0x00000000 reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000 - sectname: __debug_info segname: __DWARF addr: 0x0000000000000024 size: 75 offset: 0x00000234 align: 0 reloff: 0x00000000 nreloc: 0 flags: 0x00000000 reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000 - sectname: __debug_ranges segname: __DWARF addr: 0x000000000000008B size: 48 offset: 0x0000029B align: 0 reloff: 0x00000000 nreloc: 0 flags: 0x00000000 reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000 - sectname: __debug_str segname: __DWARF addr: 0x00000000000000DB size: 42 offset: 0x000002EB align: 0 reloff: 0x00000000 nreloc: 0 flags: 0x00000000 reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000 - cmd: LC_SYMTAB cmdsize: 24 symoff: 0 nsyms: 0 stroff: 792 strsize: 8 - cmd: LC_BUILD_VERSION cmdsize: 32 platform: 1 minos: 658944 sdk: 658944 ntools: 1 Tools: - tool: 3 version: 34734080 - cmd: LC_DATA_IN_CODE cmdsize: 16 dataoff: 792 datasize: 0 LinkEditData: StringTable: - ' ' - '' - '' - '' - '' - '' - '' DWARF: debug_str: - '' - '/tmp/main.c' - no_range1 - no_range2 - main - foo debug_abbrev: - Table: - Code: 0x00000001 Tag: DW_TAG_compile_unit Children: DW_CHILDREN_yes Attributes: - Attribute: DW_AT_name Form: DW_FORM_strp - Attribute: DW_AT_language Form: DW_FORM_data2 - Attribute: DW_AT_low_pc Form: DW_FORM_addr - Attribute: DW_AT_ranges Form: DW_FORM_sec_offset - Code: 0x00000002 Tag: DW_TAG_subprogram Children: DW_CHILDREN_no Attributes: - Attribute: DW_AT_name Form: DW_FORM_strp - Attribute: DW_AT_low_pc Form: DW_FORM_addr - Attribute: DW_AT_high_pc Form: DW_FORM_data4 - Code: 0x00000003 Tag: DW_TAG_subprogram Children: DW_CHILDREN_no Attributes: - Attribute: DW_AT_name Form: DW_FORM_strp debug_ranges: - Offset: 0x00000000 AddrSize: 0x08 Entries: - LowOffset: 0x0000000000002000 HighOffset: 0x0000000000003000 - LowOffset: 0x0000000000001000 HighOffset: 0x0000000000002000 debug_info: - Version: 4 AddrSize: 8 Entries: - AbbrCode: 0x00000001 Values: - Value: 0x0000000000000001 - Value: 0x0000000000000002 - Value: 0x0000000000000000 - Value: 0x0000000000000000 - AbbrCode: 0x00000003 Values: - Value: 0x000000000000000D - AbbrCode: 0x00000002 Values: - Value: 0x0000000000000021 - Value: 0x0000000000001000 - Value: 0x0000000000001000 - AbbrCode: 0x00000002 Values: - Value: 0x0000000000000026 - Value: 0x0000000000002000 - Value: 0x0000000000001000 - AbbrCode: 0x00000003 Values: - Value: 0x0000000000000017 - AbbrCode: 0x00000000 ...