[PATCH] i386: Allow GOT32 relocations against ABS symbols
Jan Beulich
jbeulich@suse.com
Tue Feb 8 13:10:58 GMT 2022
On 08.02.2022 14:02, H.J. Lu wrote:
> On Tue, Feb 8, 2022 at 12:37 AM Jan Beulich <jbeulich@suse.com> wrote:
>>
>> On 08.02.2022 01:03, H.J. Lu via Binutils wrote:
>>> GOT32 relocations are allowed since absolute value + addend is stored in
>>> the GOT slot.
>>
>> Before permitting this and with you specifically mentioning addends
>> here, I think it needs to be clarified what ...
>>
>>> --- /dev/null
>>> +++ b/ld/testsuite/ld-i386/pr28870.s
>>> @@ -0,0 +1,6 @@
>>> + .text
>>> + .globl _start
>>> +_start:
>>> + addl foo@GOT(%ebx), %eax
>>> + cmpl $0, foo@GOT(%ebx)
>>> +foo = 2
>>
>> ... missing (here) variants thereof actually mean (and whether the use
>> of addends actually works as intended):
>>
>> mov $v@got+3, %eax # bogus, meaningless operand
>> mov $(v+3)@got, %eax # wrong (gets treated same as above)
>>
>> Comments are my own, preliminary judgement.
>
> GOT relocations should only be used as @got or @got(%reg).
> Other variants are undefined.
Which raises two questions:
1) Why did you say "absolute value + addend is stored in the GOT slot" in
the description? Where would an addend come from if it can't be specified
in the assembly source?
2) Why isn't the assembler at least warning about such undefined uses?
Jan
More information about the Binutils
mailing list