Index: ELF/Target.cpp =================================================================== --- ELF/Target.cpp +++ ELF/Target.cpp @@ -1458,6 +1458,7 @@ void AMDGPUTargetInfo::relocateOne(uint8_t *Loc, uint32_t Type, uint64_t Val) const { switch (Type) { + case R_AMDGPU_ABS32: case R_AMDGPU_GOTPCREL: case R_AMDGPU_REL32: write32le(Loc, Val); @@ -1469,6 +1470,8 @@ RelExpr AMDGPUTargetInfo::getRelExpr(uint32_t Type, const SymbolBody &S) const { switch (Type) { + case R_AMDGPU_ABS32: + return R_ABS; case R_AMDGPU_REL32: return R_PC; case R_AMDGPU_GOTPCREL: Index: test/ELF/amdgpu-relocs.s =================================================================== --- test/ELF/amdgpu-relocs.s +++ test/ELF/amdgpu-relocs.s @@ -21,7 +21,10 @@ .weak weak_var .weakref weakref_var, weakref_alias_var -# The relocation for local_var should be resolved by the linker. +.section .data.foo, "w", @progbits + .long var, global_var + +# The relocation for local_var and var should be resolved by the linker. # CHECK: Relocations [ # CHECK: .rela.dyn { # CHECK-NEXT: R_AMDGPU_ABS64 common_var 0x0