diff options
author | Simon Marchi <simon.marchi@efficios.com> | 2022-03-01 11:29:06 -0500 |
---|---|---|
committer | Simon Marchi <simon.marchi@polymtl.ca> | 2022-03-15 15:09:55 -0400 |
commit | 0618b0884435271931b88c801c6cbe0ac28a2740 (patch) | |
tree | b3b5a1156964a37df790d1a326d7cf79975f6afe | |
parent | 39306f845598de5fec0bd2a0cf0c1ca512651ad0 (diff) | |
download | gdb-0618b0884435271931b88c801c6cbe0ac28a2740.zip gdb-0618b0884435271931b88c801c6cbe0ac28a2740.tar.gz gdb-0618b0884435271931b88c801c6cbe0ac28a2740.tar.bz2 |
binutils/readelf: handle AMDGPU relocation typesusers/simark/amdgpu-readelf
Make readelf recognize AMDGPU relocation types, as documented here:
https://llvm.org/docs/AMDGPUUsage.html#amdgpu-relocation-records
The user-visible change looks like:
-000000000004 000400000001 unrecognized: 1 0000000000000000 SCRATCH_RSRC_DWORD0
-00000000000c 000500000001 unrecognized: 1 0000000000000000 SCRATCH_RSRC_DWORD1
-000000000014 000600000007 unrecognized: 7 0000000000000000 global_var0
-00000000001c 000700000008 unrecognized: 8 0000000000000000 global_var1
-000000000024 000800000009 unrecognized: 9 0000000000000000 global_var2
-00000000002c 00090000000a unrecognized: a 0000000000000000 global_var3
-000000000034 000a0000000b unrecognized: b 0000000000000000 global_var4
+000000000004 000400000001 R_AMDGPU_ABS32_LO 0000000000000000 SCRATCH_RSRC_DWORD0
+00000000000c 000500000001 R_AMDGPU_ABS32_LO 0000000000000000 SCRATCH_RSRC_DWORD1
+000000000014 000600000007 R_AMDGPU_GOTPCREL 0000000000000000 global_var0
+00000000001c 000700000008 R_AMDGPU_GOTPCREL 0000000000000000 global_var1
+000000000024 000800000009 R_AMDGPU_GOTPCREL 0000000000000000 global_var2
+00000000002c 00090000000a R_AMDGPU_REL32_LO 0000000000000000 global_var3
+000000000034 000a0000000b R_AMDGPU_REL32_HI 0000000000000000 global_var4
binutils/ChangeLog:
* readelf.c (dump_relocations): Handle EM_AMDGPU.
include/ChangeLog:
* elf/amdgpu.h: Add relocation values.
Change-Id: I2ed4589f4cd37ea11ad2e0cb38d4b682271e1334
-rw-r--r-- | binutils/readelf.c | 3 | ||||
-rw-r--r-- | include/elf/amdgpu.h | 21 |
2 files changed, 24 insertions, 0 deletions
diff --git a/binutils/readelf.c b/binutils/readelf.c index ff07112..a2dbaa4 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -1930,6 +1930,9 @@ dump_relocations (Filedata * filedata, rtype = elf_loongarch_reloc_type (type); break; + case EM_AMDGPU: + rtype = elf_amdgpu_reloc_type (type); + break; } if (rtype == NULL) diff --git a/include/elf/amdgpu.h b/include/elf/amdgpu.h index e3c90dc..140e899 100644 --- a/include/elf/amdgpu.h +++ b/include/elf/amdgpu.h @@ -20,6 +20,8 @@ #ifndef _ELF_AMDGPU_H #define _ELF_AMDGPU_H +#include "elf/reloc-macros.h" + /* e_ident[EI_ABIVERSION] values, when e_ident[EI_OSABI] is ELFOSABI_AMDGPU_HSA. */ @@ -91,4 +93,23 @@ #define NT_AMDGPU_METADATA 32 +/* Relocations. */ + +START_RELOC_NUMBERS (elf_amdgpu_reloc_type) + RELOC_NUMBER (R_AMDGPU_NONE, 0) + RELOC_NUMBER (R_AMDGPU_ABS32_LO, 1) + RELOC_NUMBER (R_AMDGPU_ABS32_HI, 2) + RELOC_NUMBER (R_AMDGPU_ABS64, 3) + RELOC_NUMBER (R_AMDGPU_REL32, 4) + RELOC_NUMBER (R_AMDGPU_REL64, 5) + RELOC_NUMBER (R_AMDGPU_ABS32, 6) + RELOC_NUMBER (R_AMDGPU_GOTPCREL, 7) + RELOC_NUMBER (R_AMDGPU_GOTPCREL32_LO, 8) + RELOC_NUMBER (R_AMDGPU_GOTPCREL32_HI, 9) + RELOC_NUMBER (R_AMDGPU_REL32_LO, 10) + RELOC_NUMBER (R_AMDGPU_REL32_HI, 11) + RELOC_NUMBER (R_AMDGPU_RELATIVE64, 13) + RELOC_NUMBER (R_AMDGPU_REL16, 16) +END_RELOC_NUMBERS (R_AMDGPU_max) + #endif /* _ELF_AMDGPU_H */ |