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: alpha-linux gas testsuite failure


On 09/17/2010 05:12 PM, Alan Modra wrote:
> On Fri, Sep 17, 2010 at 12:45:29PM -0700, Richard Henderson wrote:
>> 000000000010  000900000001 R_ALPHA_REFLONG   0000000000000008 .Lend_text1 + 8
> 
> This one is sourced from
> 	.4byte	.Lend_text1			/* DW_AT_high_pc */
> 
> Seems to me the "+ 8" addend is wrong.

Too right.

I seemed like we were already taking care of this disgustingness:

#ifdef OBJ_ELF
      /* Ohhh, this is ugly.  The problem is that if this is a local global
         symbol, the relocation will entirely be performed at link time, not
         at assembly time.  bfd_perform_reloc doesn't know about this sort
         of thing, and as a result we need to fake it out here.  */
      if ((S_IS_EXTERNAL (fixp->fx_addsy) || S_IS_WEAK (fixp->fx_addsy)
           || (S_GET_SEGMENT (fixp->fx_addsy)->flags & SEC_MERGE)
           || (S_GET_SEGMENT (fixp->fx_addsy)->flags & SEC_THREAD_LOCAL))
          && !S_IS_COMMON (fixp->fx_addsy))
        reloc->addend -= symbol_get_bfdsym (fixp->fx_addsy)->value;
#endif

but clearly that has stopped working.  Do you know off-hand what
the newly correct condition should be?  I can probably dig it out
eventually...



r~


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