[PATCH 0/5] Add support for R_386_GOT32X/R_X86_64_[REX_]GOTPCRELX
Rafael Espíndola
rafael.espindola@gmail.com
Mon Jan 18 18:16:00 GMT 2016
>> The byte stream before the R_X86_64_GOTPCREL location does. Checking
>> for the REX prefix is not that different from checking if the
>> instruction in a mov when converting mov to lea.
>>
>
> For mov to lea, linker doesn't need to rewrite the REX byte. When linker
> does need to rewrite the REX byte, it must be sure that the byte before
> the opcode is the REX byte, not the part of the displacement of the
> previous instruction.
It needs to convert an 0x8b to an 0x8c. So I guess the unwritten
requirement of R_X86_64_GOTPCREL is that it can only be used at least
2 bytes after the start of an actual instruction, and not, for
example, in a table:
bar:
.byte 0x8b
.byte 0x42
.long bar@GOTPCREL
R_X86_64_GOTPCRELX and R_X86_64_REX_GOTPCRELX add far more strict requirements.
Thanks,
Rafael
More information about the Binutils
mailing list