Index: llvm/trunk/docs/AMDGPUUsage.rst =================================================================== --- llvm/trunk/docs/AMDGPUUsage.rst +++ llvm/trunk/docs/AMDGPUUsage.rst @@ -684,7 +684,12 @@ **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 @@ ``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: Index: llvm/trunk/include/llvm/BinaryFormat/ELFRelocs/AMDGPU.def =================================================================== --- llvm/trunk/include/llvm/BinaryFormat/ELFRelocs/AMDGPU.def +++ llvm/trunk/include/llvm/BinaryFormat/ELFRelocs/AMDGPU.def @@ -14,3 +14,4 @@ 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) Index: llvm/trunk/test/Object/AMDGPU/elf64-relocs.yaml =================================================================== --- llvm/trunk/test/Object/AMDGPU/elf64-relocs.yaml +++ llvm/trunk/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 @@ - Offset: 0x22 Symbol: s11 Type: R_AMDGPU_REL32_HI + - Offset: 0x24 + Symbol: s12 + Type: R_AMDGPU_RELATIVE64 Symbols: Local: