# Test if we are handling RELA relocations for ARM correctly using llvm-dwarfdump.
#
# RUN: yaml2obj %s -o %t
# RUN: llvm-dwarfdump -i %t | FileCheck %s

# CHECK:      DW_TAG_compile_unit
# CHECK-NEXT: DW_AT_name {{.*}}("correct")
# CHECK-NEXT: DW_AT_type ([[TYPEDIE:0x[0-9A-Fa-f]+]] "correct")
# CHECK:      [[TYPEDIE]]: DW_TAG_base_type
# CHECK-NEXT: DW_AT_name {{.*}}("correct")

--- !ELF
FileHeader:
  Class:           ELFCLASS32
  Data:            ELFDATA2LSB
  Type:            ET_REL
  Machine:         EM_ARM
  Flags:           [ EF_ARM_EABI_VER5 ]
Sections:
  # A rudimentary v5 compile unit with an AT_name and an AT_type referencing
  # a rudimentary DW_TAG_base_type DIE with an AT_name attribute.
  - Name:            .debug_info
    Type:            SHT_PROGBITS
    Content:         17000000050001040000000001A000000000000000020000000000
  - Name:            .debug_abbrev
    Type:            SHT_PROGBITS
    Content:         011101030E49130000022400030E000000
  - Name:            .debug_str
    Type:            SHT_PROGBITS
  - Name:            .rela.debug_info
    Type:            SHT_RELA
    Link:            .symtab
    AddressAlign:    0x4
    Offset:          0x929
    Info:            .debug_info
    Relocations:
      - Offset:          0x8
        Symbol:          .debug_abbrev
        Type:            R_ARM_ABS32
      # The compile unit name is found via a R_ARM_ABS32 relocation.
      - Offset:          0xD
        Symbol:          .debug_str
        Type:            R_ARM_ABS32
        Addend:          6
      # The DW_TAG_base_type is found via a R_ARM_REL32 relocation.
      # This is completely artificial and unlikely to be ever generated
      # by a compiler or other tool. We make sure that the relocation is
      # resolved by (Symbol - Offset + Addend).
      - Offset:          0x11
        Symbol:          .debug_info
        Type:            R_ARM_REL32
        Addend:          0x26
      - Offset:          0x16
        Symbol:          .debug_str
        Type:            R_ARM_ABS32
        Addend:          6
  - Type:            SectionHeaderTable
    Sections:
      - Name:            .symtab
      - Name:            .strtab
      - Name:            .shstrtab
      - Name:            .debug_info
      - Name:            .debug_abbrev
      - Name:            .debug_str
      - Name:            .rela.debug_info
Symbols:
  - Name:            test.cpp
    Type:            STT_FILE
    Index:           SHN_ABS
  - Name:            .debug_info
    Type:            STT_SECTION
    Section:         .debug_info
  - Name:            .debug_abbrev
    Type:            STT_SECTION
    Section:         .debug_abbrev
  - Name:            .debug_str
    Type:            STT_SECTION
    Section:         .debug_str
  - Name:            .debug_info_cudie
    Type:            STT_OBJECT
    Section:         .debug_info
    Value:           0xC
DWARF:
  debug_str:
    - 'wrong'
    - 'correct'
...
