binutils problem

Andreas Schwab schwab@suse.de
Mon Aug 26 04:59:00 GMT 2002


Richard Zidlicky <rz@linux-m68k.org> writes:

|> On Mon, Aug 26, 2002 at 08:31:03AM +0930, Alan Modra wrote:
|> 
|> > Zeroing the reloc section is already done for m68k.  If m68k glibc
|> > rejects R_NONE relocs, then this problem will persist until
|> > bfd/elf32-m68k.c is rewritten to delay allocation of reloc slots as
|> > is currently done for x86, hppa, ppc64, s390 and just recently, sh,
|> > all using more or less the same scheme, and ia64, alpha and perhaps
|> > others.  A quick binutils fix is IMO not possible, but the rewrite
|> > should be fairly mechanical given the existing examples.
|> 
|> 
|> I can confirm that this apparently cures the problem without
|> visible negative effects:
|> 
|> --- glibc-2.2.90/sysdeps/m68k/dl-machine.h.rz	Mon Aug 26 11:44:44 2002
|> +++ glibc-2.2.90/sysdeps/m68k/dl-machine.h	Mon Aug 26 11:45:31 2002
|> @@ -311,6 +311,8 @@
|>    Elf32_Addr *const reloc_addr = (void *) (l_addr + reloc->r_offset);
|>    if (ELF32_R_TYPE (reloc->r_info) == R_68K_JMP_SLOT)
|>      *reloc_addr += l_addr;
|> +  else if (ELF32_R_TYPE (reloc->r_info) == R_68K_NONE)
|> +    return;
|>    else
|>      _dl_reloc_bad_type (map, ELF32_R_TYPE (reloc->r_info), 1);
|>  }

This is just a workaround, it should be fixed in binutils eventually.
But m68k is not the only platform which has problems with NONE
relocations. :-(

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux AG, Deutschherrnstr. 15-19, D-90429 Nürnberg
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."



More information about the Binutils mailing list