This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
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~