summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/docs/AMDGPUUsage.rst9
-rw-r--r--llvm/include/llvm/BinaryFormat/ELFRelocs/AMDGPU.def1
-rw-r--r--llvm/test/Object/AMDGPU/elf64-relocs.yaml4
3 files changed, 13 insertions, 1 deletions
diff --git a/llvm/docs/AMDGPUUsage.rst b/llvm/docs/AMDGPUUsage.rst
index 8b94a3e6a5a..35611bc6fcd 100644
--- a/llvm/docs/AMDGPUUsage.rst
+++ b/llvm/docs/AMDGPUUsage.rst
@@ -684,7 +684,12 @@ Following notations are used for specifying relocation calculations:
**S**
Represents the value of the symbol whose index resides in the relocation
- entry.
+ entry. Relocations not using this must specify a symbol index of ``STN_UNDEF``.
+
+**B**
+ Represents the base address of a loaded executable or shared object which is
+ the difference between the ELF address and the actual load address. Relocations
+ using this are only valid in executable or shared objects.
The following relocation types are supported:
@@ -706,6 +711,8 @@ The following relocation types are supported:
``R_AMDGPU_GOTPCREL32_HI`` 9 ``word32`` (G + GOT + A - P) >> 32
``R_AMDGPU_REL32_LO`` 10 ``word32`` (S + A - P) & 0xFFFFFFFF
``R_AMDGPU_REL32_HI`` 11 ``word32`` (S + A - P) >> 32
+ *reserved* 12
+ ``R_AMDGPU_RELATIVE64`` 13 ``word64`` B + A
========================== ===== ========== ==============================
.. _amdgpu-dwarf:
diff --git a/llvm/include/llvm/BinaryFormat/ELFRelocs/AMDGPU.def b/llvm/include/llvm/BinaryFormat/ELFRelocs/AMDGPU.def
index c66f88d14ec..00b19c4161d 100644
--- a/llvm/include/llvm/BinaryFormat/ELFRelocs/AMDGPU.def
+++ b/llvm/include/llvm/BinaryFormat/ELFRelocs/AMDGPU.def
@@ -14,3 +14,4 @@ ELF_RELOC(R_AMDGPU_GOTPCREL32_LO, 8)
ELF_RELOC(R_AMDGPU_GOTPCREL32_HI, 9)
ELF_RELOC(R_AMDGPU_REL32_LO, 10)
ELF_RELOC(R_AMDGPU_REL32_HI, 11)
+ELF_RELOC(R_AMDGPU_RELATIVE64, 13)
diff --git a/llvm/test/Object/AMDGPU/elf64-relocs.yaml b/llvm/test/Object/AMDGPU/elf64-relocs.yaml
index 541119852af..bc6c2b89d5f 100644
--- a/llvm/test/Object/AMDGPU/elf64-relocs.yaml
+++ b/llvm/test/Object/AMDGPU/elf64-relocs.yaml
@@ -15,6 +15,7 @@
# CHECK: 0x18 R_AMDGPU_GOTPCREL32_HI - 0x0
# CHECK: 0x20 R_AMDGPU_REL32_LO - 0x0
# CHECK: 0x22 R_AMDGPU_REL32_HI - 0x0
+# CHECK: 0x24 R_AMDGPU_RELATIVE64 - 0x0
# CHECK: }
# CHECK: ]
@@ -72,6 +73,9 @@ Sections:
- Offset: 0x22
Symbol: s11
Type: R_AMDGPU_REL32_HI
+ - Offset: 0x24
+ Symbol: s12
+ Type: R_AMDGPU_RELATIVE64
Symbols:
Local:
OpenPOWER on IntegriCloud