Add support for R_AMDGPU_RELATIVE64

- Add support for R_AMDGPU_RELATIVE64 relocation record.
- Return status error if any unsupported relocation record encountered.

Change-Id: Icbb5dcb81109a70c1f2195412a0df58a11be9da1
Этот коммит содержится в:
Tony Tye
2018-01-25 21:06:05 -05:00
родитель 8bf85cc668
Коммит d472b24d05
2 изменённых файлов: 9 добавлений и 6 удалений
+8 -6
Просмотреть файл
@@ -1673,14 +1673,16 @@ hsa_status_t ExecutableImpl::ApplyDynamicRelocation(hsa_agent_t agent, amd::hsa:
break;
}
case R_AMDGPU_INIT_IMAGE:
case R_AMDGPU_INIT_SAMPLER:
// Images and samplers are not supported in v2.1.
return HSA_STATUS_ERROR_INVALID_CODE_OBJECT;
case R_AMDGPU_RELATIVE64:
{
int64_t baseDelta = reinterpret_cast<uint64_t>(relSeg->Address(0)) - relSeg->VAddr();
uint64_t relocatedAddr = baseDelta + rel->addend();
relSeg->Copy(rel->offset(), &relocatedAddr, sizeof(relocatedAddr));
break;
}
default:
// Ignore.
break;
return HSA_STATUS_ERROR_INVALID_CODE_OBJECT;
}
return HSA_STATUS_SUCCESS;
}