This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: alpha-linux gas testsuite failure
On 09/19/2010 03:33 PM, Richard Henderson wrote:
> 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...
Humph. Clearly the best solution is to get rid of both hacks
and have the alpha port use bfd_elf_generic_reloc.
r~