## Tests llvm-dwarfdump handling of AMDGPU relocations. We provide a .debug_info
## section with multiple DW_AT_high_pc entries (that's one of the attributes for
## which relocations are resolved by llvm-dwarfdump) and we add a relocation for
## each of them. The first YAML document represents an amdgcn code object, and
## the second an r600 code object.
# RUN: yaml2obj --docnum=1 -DMACH= %s \
# RUN: | llvm-dwarfdump - 2>&1 | FileCheck --check-prefixes=AMDGCN,UNKNOWN %s
# RUN: yaml2obj --docnum=1 -DMACH=EF_AMDGPU_MACH_AMDGCN_GFX803 %s \
# RUN: | llvm-dwarfdump - 2>&1 | FileCheck --check-prefixes=AMDGCN,KNOWN %s
# RUN: yaml2obj --docnum=2 -DMACH= %s \
# RUN: | llvm-dwarfdump - 2>&1 | FileCheck --check-prefixes=R600,UNKNOWN %s
# RUN: yaml2obj --docnum=2 -DMACH=EF_AMDGPU_MACH_R600_R600 %s \
# RUN: | llvm-dwarfdump - 2>&1 | FileCheck --check-prefixes=R600,KNOWN %s
# UNKNOWN: -: Error in creating MCRegInfo
# KNOWN-NOT: -: Error in creating MCRegInfo
# AMDGCN: -: file format elf64-amdgpu
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
OSABI: ELFOSABI_AMDGPU_HSA
ABIVersion: 0x02
Type: ET_REL
Machine: EM_AMDGPU
Flags: [[[MACH]]]
DWARF:
debug_abbrev:
- Table:
- Code: 1
Tag: DW_TAG_compile_unit
Children: DW_CHILDREN_no
Attributes:
- Attribute: DW_AT_high_pc
Form: DW_FORM_addr
- Attribute: DW_AT_high_pc
Form: DW_FORM_addr
- Attribute: DW_AT_high_pc
Form: DW_FORM_addr
- Attribute: DW_AT_high_pc
Form: DW_FORM_addr
- Attribute: DW_AT_high_pc
Form: DW_FORM_addr
- Attribute: DW_AT_high_pc
Form: DW_FORM_addr
- Attribute: DW_AT_high_pc
Form: DW_FORM_addr
- Attribute: DW_AT_high_pc
Form: DW_FORM_addr
debug_info:
- Version: 4
AddrSize: 8
Entries:
- AbbrCode: 1
Values:
- Value: 0x4242424242424242
- Value: 0x4242424242424242
- Value: 0x4242424242424242
- Value: 0x4242424242424242
- Value: 0x4242424242424242
- Value: 0x4242424242424242
- Value: 0x4242424242424242
- Value: 0x4242424242424242
Sections:
- Name: .rela.debug_info
Type: SHT_RELA
Flags: [ SHF_INFO_LINK ]
AddressAlign: 0x0000000000000008
Info: .debug_info
Relocations:
# AMDGCN: DW_AT_high_pc (0x0000000000000001)
- Offset: 0x000000000000000C # 0xC + 8*0
Type: R_AMDGPU_ABS64
Symbol: v1
Addend: 0x0
# AMDGCN-NEXT: DW_AT_high_pc (0x0000000000000043)
- Offset: 0x0000000000000014 # 0xC + 8*1
Type: R_AMDGPU_ABS64
Symbol: v1
Addend: 0x42
# AMDGCN-NEXT: DW_AT_high_pc (0xffffffffffffffff)
- Offset: 0x000000000000001C # 0xC + 8*2
Type: R_AMDGPU_ABS64
Symbol: v0
Addend: 0xffffffffffffffff
# AMDGCN-NEXT: DW_AT_high_pc (0xffffffffffffffff)
- Offset: 0x0000000000000024 # 0xC + 8*3
Type: R_AMDGPU_ABS64
Symbol: vffffffffffffffff
Addend: 0x0
# AMDGCN: DW_AT_high_pc (0x0000000000000001)
- Offset: 0x000000000000002C # 0xC + 8*4
Type: R_AMDGPU_ABS32
Symbol: v1
Addend: 0x0
# AMDGCN-NEXT: DW_AT_high_pc (0x0000000000000043)
- Offset: 0x0000000000000034 # 0xC + 8*5
Type: R_AMDGPU_ABS32
Symbol: v1
Addend: 0x42
# AMDGCN-NEXT: DW_AT_high_pc (0xffffffffffffffff)
- Offset: 0x000000000000003C # 0xC + 8*6
Type: R_AMDGPU_ABS32
Symbol: v0
Addend: 0xffffffffffffffff
# AMDGCN-NEXT: DW_AT_high_pc (0xffffffffffffffff)
- Offset: 0x0000000000000044 # 0xC + 8*7
Type: R_AMDGPU_ABS32
Symbol: vffffffffffffffff
Addend: 0x0
Symbols:
- Name: v0
Type: STT_SECTION
Section: .debug_info
Value: 0x0
- Name: v1
Type: STT_SECTION
Section: .debug_info
Value: 0x1
- Name: vffffffffffffffff
Type: STT_SECTION
Section: .debug_info
Value: 0xffffffffffffffff
...
# R600: -: file format elf32-amdgpu
--- !ELF
FileHeader:
Class: ELFCLASS32
Data: ELFDATA2LSB
Type: ET_REL
Machine: EM_AMDGPU
Flags: [[[MACH]]]
DWARF:
debug_abbrev:
- Table:
- Code: 0x00000001
Tag: DW_TAG_compile_unit
Children: DW_CHILDREN_no
Attributes:
- Attribute: DW_AT_high_pc
Form: DW_FORM_addr
- Attribute: DW_AT_high_pc
Form: DW_FORM_addr
- Attribute: DW_AT_high_pc
Form: DW_FORM_addr
- Attribute: DW_AT_high_pc
Form: DW_FORM_addr
debug_info:
- Version: 4
AddrSize: 4
Entries:
- AbbrCode: 1
Values:
- Value: 0x42424242
- Value: 0x42424242
- Value: 0x42424242
- Value: 0x42424242
Sections:
- Name: .rela.debug_info
Type: SHT_RELA
Flags: [ SHF_INFO_LINK ]
AddressAlign: 0x0000000000000001
Info: .debug_info
Relocations:
## FIXME: Is R_AMDGPU_ABS64 meaningful here?
# R600: DW_AT_high_pc (0x00000001)
- Offset: 0x0000000C # 0xC + 4*0
Type: R_AMDGPU_ABS32
Symbol: v1
Addend: 0x0
# R600-NEXT: DW_AT_high_pc (0x00000043)
- Offset: 0x00000010 # 0xC + 4*1
Type: R_AMDGPU_ABS32
Symbol: v1
Addend: 0x42
## FIXME: Why is this field printed as sign-extended 64-bit in a 32-bit executable?
# R600-NEXT: DW_AT_high_pc (0xffffffffffffffff)
- Offset: 0x00000014 # 0xC + 4*2
Type: R_AMDGPU_ABS32
Symbol: v0
Addend: 0xffffffff
# R600-NEXT: DW_AT_high_pc (0xffffffff)
- Offset: 0x00000018 # 0xC + 4*3
Type: R_AMDGPU_ABS32
Symbol: vffffffff
Addend: 0x0
Symbols:
- Name: v0
Type: STT_SECTION
Section: .debug_info
Value: 0x0
- Name: v1
Type: STT_SECTION
Section: .debug_info
Value: 0x1
- Name: vffffffff
Type: STT_SECTION
Section: .debug_info
Value: 0xffffffff
...