Compiler projects using llvm
# 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
...