This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [MIPS] R_MIPS_GOT_DISP interferes with lazy binding
- From: Richard Sandiford <rdsandiford at googlemail dot com>
- To: Lee Duhem <lee dot duhem at gmail dot com>
- Cc: binutils at sourceware dot org
- Date: Wed, 08 May 2013 08:00:28 +0100
- Subject: Re: [MIPS] R_MIPS_GOT_DISP interferes with lazy binding
- References: <CAOSer0CqJNce0fpfanBR0ONOm8Gp3B+A9jzQN1Nv9nxbec2KfA at mail dot gmail dot com> <87fvxz9j2h dot fsf at sandifor-thinkpad dot stglab dot manchester dot uk dot ibm dot com> <CAOSer0DtMA1A+GS234J6AqHwSDfY3msqjum_O4pjo5OoyiTxpA at mail dot gmail dot com>
Lee Duhem <lee.duhem@gmail.com> writes:
> On Tue, May 7, 2013 at 6:32 PM, Richard Sandiford
> <rdsandiford@googlemail.com> wrote:
>> Lee Duhem <lee.duhem@gmail.com> writes:
>>> My questions are:
>>> 1. Are the relocation types of DRIBlockHandler and DRIWakeupHandler correct?
>>
>> It depends on what the source code is doing. The two DRIBlockHandler
>> R_MIPS_CALL16s sites are obviously direct calls to the function, but is
>> the R_MIPS_GOT_DISP site too? Or is the code taking the address of
>> DRIBlockHandler, e.g. to use it as a callback?
>
> There is only one direct call for DRIBlockHandler in glxdri.c. If it
> is compiled with -O0, gcc will generate one R_MIPS_CALL16 relocation
> for it, but with -O2, three relocations, two R_MIPS_CALL16 and one
> R_MIPS_GOT_DISP, will be generated.
>
> For DRIWakeupHandler, there is also only one direct call in glxdri.c.
> And gcc with -O0 generates one R_MIPS_CALL16 relocation for it, but
> with -O2, two R_MIPS_GOT_DISP relocations.
>
> Does this mean that it is a gcc bug?
Yeah, sounds like it :-( Please file a bug report in
http://gcc.gnu.org/bugzilla
Thanks,
Richard