This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PATCH: PR ld/16428: autoconf tests don't terminate on ix86-linux-gnu with -static -fPIE -pie on glibc-2.18 based systems


On Tue, Jan 14, 2014 at 4:14 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Tue, Jan 14, 2014 at 3:55 PM, Alan Modra <amodra@gmail.com> wrote:
>> On Tue, Jan 14, 2014 at 11:06:59AM -0800, H.J. Lu wrote:
>>>         for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
>>>           {
>>> -           p->count -= p->pc_count;
>>> -           p->pc_count = 0;
>>> +           /* Don't update reloc count if there are any non
>>> +              pc-relative relocs.  */
>>> +           if (!h->pointer_equality_needed)
>>
>> This loop invariant ought to be taken outside the loop.
>>
>>> +             {
>>> +               p->count -= p->pc_count;
>>> +               p->pc_count = 0;
>>> +             }
>>>             if (p->count == 0)
>>>               *pp = p->next;
>>>             else
>>
>> Note also the comment:
>>
>>       /* Relocs that use pc_count are those that appear on a call
>>          insn, or certain REL relocs that can generated via assembly.
>>          We want calls to protected symbols to resolve directly to the
>>          function rather than going via the plt.  If people want
>>          function pointer comparisons to work as expected then they
>>          should avoid writing weird assembly.  */
>>       if (SYMBOL_CALLS_LOCAL (info, h))
>>
>> With your patch you've effectively chosen to break protected symbols
>> to make function pointer comparisons work..  I'm not sure that is a
>> good idea, but if that's the way you want to go, please correct the
>> comment too.
>>
>
> I will take another look.
>

I reverted my change.

-- 
H.J.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]