# 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'
...