Compiler projects using llvm
# RUN: yaml2obj %s | not llvm-dwarfdump --verify - | FileCheck %s --implicit-check-not=error:

# CHECK:      error: DIE has DW_AT_decl_file with invalid encoding{{[[:space:]]}}
# CHECK-NEXT: 0x0000001a: DW_TAG_subprogram
# CHECK-NEXT:               DW_AT_name        [DW_FORM_strp] ( .debug_str[0x0000000d] = "main")
# CHECK-NEXT:               DW_AT_low_pc      [DW_FORM_addr] (0x0000000000001000)
# CHECK-NEXT:               DW_AT_high_pc     [DW_FORM_addr] (0x0000000000002000)
# CHECK-NEXT:               DW_AT_decl_file   [DW_FORM_strp] ( .debug_str[0x00000012] = "")
# CHECK-NEXT:               DW_AT_call_line   [DW_FORM_data1] (5){{[[:space:]]}}
# CHECK-NEXT: error: DIE has DW_AT_call_file with invalid encoding{{[[:space:]]}}
# CHECK-NEXT: 0x00000034: DW_TAG_inlined_subroutine
# CHECK-NEXT:               DW_AT_name        [DW_FORM_strp] ( .debug_str[0x00000013] = "inline1")
# CHECK-NEXT:               DW_AT_low_pc      [DW_FORM_addr] (0x0000000000001100)
# CHECK-NEXT:               DW_AT_high_pc     [DW_FORM_data4] (0x00000100)
# CHECK-NEXT:               DW_AT_call_file   [DW_FORM_strp] ( .debug_str[0x00000012] = "")
# CHECK-NEXT:               DW_AT_call_line   [DW_FORM_data1] (10){{[[:space:]]}}
# CHECK-NEXT: error: DIE has DW_AT_decl_file with invalid encoding{{[[:space:]]}}
# CHECK-NEXT: 0x0000004a: DW_TAG_subprogram
# CHECK-NEXT:               DW_AT_name        [DW_FORM_strp] ( .debug_str[0x0000001b] = "foo")
# CHECK-NEXT:               DW_AT_low_pc      [DW_FORM_addr] (0x0000000000002000)
# CHECK-NEXT:               DW_AT_high_pc     [DW_FORM_addr] (0x0000000000003000)
# CHECK-NEXT:               DW_AT_decl_file   [DW_FORM_sdata] (2)
# CHECK-NEXT:               DW_AT_decl_line   [DW_FORM_sdata] (3)
# CHECK-NEXT:               DW_AT_call_file   [DW_FORM_sdata] (4)
# CHECK-NEXT:               DW_AT_call_line   [DW_FORM_sdata] (5){{[[:space:]]}}
# CHECK-NEXT: error: DIE has DW_AT_decl_line with invalid encoding{{[[:space:]]}}
# CHECK-NEXT: 0x0000004a: DW_TAG_subprogram
# CHECK-NEXT:               DW_AT_name        [DW_FORM_strp] ( .debug_str[0x0000001b] = "foo")
# CHECK-NEXT:               DW_AT_low_pc      [DW_FORM_addr] (0x0000000000002000)
# CHECK-NEXT:               DW_AT_high_pc     [DW_FORM_addr] (0x0000000000003000)
# CHECK-NEXT:               DW_AT_decl_file   [DW_FORM_sdata] (2)
# CHECK-NEXT:               DW_AT_decl_line   [DW_FORM_sdata] (3)
# CHECK-NEXT:               DW_AT_call_file   [DW_FORM_sdata] (4)
# CHECK-NEXT:               DW_AT_call_line   [DW_FORM_sdata] (5){{[[:space:]]}}
# CHECK-NEXT: error: DIE has DW_AT_call_file with invalid encoding{{[[:space:]]}}
# CHECK-NEXT: 0x0000004a: DW_TAG_subprogram
# CHECK-NEXT:               DW_AT_name        [DW_FORM_strp] ( .debug_str[0x0000001b] = "foo")
# CHECK-NEXT:               DW_AT_low_pc      [DW_FORM_addr] (0x0000000000002000)
# CHECK-NEXT:               DW_AT_high_pc     [DW_FORM_addr] (0x0000000000003000)
# CHECK-NEXT:               DW_AT_decl_file   [DW_FORM_sdata] (2)
# CHECK-NEXT:               DW_AT_decl_line   [DW_FORM_sdata] (3)
# CHECK-NEXT:               DW_AT_call_file   [DW_FORM_sdata] (4)
# CHECK-NEXT:               DW_AT_call_line   [DW_FORM_sdata] (5){{[[:space:]]}}
# CHECK-NEXT: error: DIE has DW_AT_call_line with invalid encoding{{[[:space:]]}}
# CHECK-NEXT: 0x0000004a: DW_TAG_subprogram
# CHECK-NEXT:               DW_AT_name        [DW_FORM_strp] ( .debug_str[0x0000001b] = "foo")
# CHECK-NEXT:               DW_AT_low_pc      [DW_FORM_addr] (0x0000000000002000)
# CHECK-NEXT:               DW_AT_high_pc     [DW_FORM_addr] (0x0000000000003000)
# CHECK-NEXT:               DW_AT_decl_file   [DW_FORM_sdata] (2)
# CHECK-NEXT:               DW_AT_decl_line   [DW_FORM_sdata] (3)
# CHECK-NEXT:               DW_AT_call_file   [DW_FORM_sdata] (4)
# CHECK-NEXT:               DW_AT_call_line   [DW_FORM_sdata] (5){{[[:space:]]}}

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_X86_64
DWARF:
  debug_str:
    - ''
    - '/tmp/main.c'
    - main
    - ''
    - inline1
    - foo
  debug_abbrev:
    - Table:
        - Code:            0x0000000000000001
          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
        - Code:            0x0000000000000002
          Tag:             DW_TAG_subprogram
          Children:        DW_CHILDREN_yes
          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_addr
            - Attribute:       DW_AT_decl_file
              Form:            DW_FORM_strp
            - Attribute:       DW_AT_call_line
              Form:            DW_FORM_data1
        - Code:            0x0000000000000003
          Tag:             DW_TAG_inlined_subroutine
          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
            - Attribute:       DW_AT_call_file
              Form:            DW_FORM_strp
            - Attribute:       DW_AT_call_line
              Form:            DW_FORM_data1
        - Code:            0x0000000000000004
          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_addr
            - Attribute:       DW_AT_decl_file
              Form:            DW_FORM_sdata
            - Attribute:       DW_AT_decl_line
              Form:            DW_FORM_sdata
            - Attribute:       DW_AT_call_file
              Form:            DW_FORM_sdata
            - Attribute:       DW_AT_call_line
              Form:            DW_FORM_sdata
  debug_info:
    - Length:          0x0000000000000061
      Version:         4
      AbbrOffset:      0x0000000000000000
      AddrSize:        8
      Entries:
        - AbbrCode:        0x00000001
          Values:
            - Value:           0x0000000000000001
            - Value:           0x0000000000000002
            - Value:           0x0000000000000000
        - AbbrCode:        0x00000002
          Values:
            - Value:           0x000000000000000D
            - Value:           0x0000000000001000
            - Value:           0x0000000000002000
            - Value:           0x0000000000000012
            - Value:           0x0000000000000005
        - AbbrCode:        0x00000003
          Values:
            - Value:           0x0000000000000013
            - Value:           0x0000000000001100
            - Value:           0x0000000000000100
            - Value:           0x0000000000000012
            - Value:           0x000000000000000A
        - AbbrCode:        0x00000004
          Values:
            - Value:           0x000000000000001B
            - Value:           0x0000000000002000
            - Value:           0x0000000000003000
            - Value:           0x0000000000000002
            - Value:           0x0000000000000003
            - Value:           0x0000000000000004
            - Value:           0x0000000000000005
        - AbbrCode:        0x00000000
          Values:          []
        - AbbrCode:        0x00000000
          Values:          []
...