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: Lee Duhem <lee dot duhem at gmail dot com>
- To: Lee Duhem <lee dot duhem at gmail dot com>, binutils at sourceware dot org, rdsandiford at googlemail dot com
- Date: Wed, 8 May 2013 15:40:22 +0800
- 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> <877gjavtv7 dot fsf at talisman dot default>
On Wed, May 8, 2013 at 3:00 PM, Richard Sandiford
<rdsandiford@googlemail.com> wrote:
> Lee Duhem <lee.duhem@gmail.com> writes:
>>> 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
Currently, I am using GCC 4.4.6. I will first check this problem with the newest
GCC. If it still occurs, then I will file a bug immediately.
Thank you for your time.
Sincerely,
lee