<p dir="ltr"><br>
On Jun 11, 2016 1:42 AM, "Tye, Tony" <<a href="mailto:Tony.Tye@amd.com">Tony.Tye@amd.com</a>> wrote:<br>
><br>
> The old R_AMDGPU_ABS32_LO and the new R_AMDGPU_ABS32 are in fact the same thing. The & 0xffffffff is implicitly done because the result of the R_AMDGPU_ABS32 is a word32 not a word64. So putting in the & 0xffffffff is redundant. The other ABI documents (such as for the x86) do not put in the & 0xffffffff so it seemed best to follow their conventions. R_AMDGPU_ABS32_HI and R_AMDGPU_ABS32 both return 32 bits as they are both defined as word32. They differ in that R_AMDGPU_ABS32_HI takes the address and shifts it right by 32 bits which effectively means that the top 32 bits of the 64 bit address are returned, not the bottom 32 bits.</p>
<p dir="ltr">It is not the same thing. For example r_x86_64_32 *assumes* the value is 32 bits and the linker errors if it is not.</p>
<p dir="ltr">The x86_64 abi has no need for a low or high relocation.</p>
<p dir="ltr">Since you need a high, it is extremely likely you need a low.</p>
<p dir="ltr">Cheers,<br>
Rafael</p>