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