[PATCH] D30699: [ELF] - Stop producing broken output for R_386_GOT32X relocation.
H.J. Lu via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 30 14:59:56 PDT 2017
On Thu, Mar 30, 2017 at 2:52 PM, Rafael EspĂndola
<rafael.espindola at gmail.com> wrote:
> On 30 March 2017 at 17:45, H.J. Lu <hjl.tools at gmail.com> wrote:
>> On Thu, Mar 30, 2017 at 2:40 PM, Rafael EspĂndola
>> <rafael.espindola at gmail.com> wrote:
>>>>> 08048074 <_start>:
>>>>> 8048074: c7 c0 74 80 04 08 mov $0x8048074,%eax
>>>>>
>>>>> as the GOT entry for _start contains the address of _start.
>>>>
>>>> Even with trunk I get
>>>>
>>>> 08048094 <_start>:
>>>> 8048094: a1 fc ff ff ff mov 0xfffffffc,%eax
>>>
>>> And I still get -4 with the head of the binutils-2_28-branch branch.
>>>
>>
>> The updated i386 psABI requires to encode "mov _start at GOT, %eax" with
>> 0x8b opcode with R_386_GOT32X instead of 0xa1 opcode.
>
> What about files produced by old assemblers?
For the older .o files, G + A - GOT is used.
> The current ABI also lists R_386_GOT32 with the same expression as
> R_386_GOT32X. When is a R_386_GOT32 required to be evaluated as G + A?
>
> Cheers,
> Rafael
--
H.J.
More information about the llvm-commits
mailing list