[PATCH] MIPS bfd: abi 64 ld -r

Alexandre Oliva aoliva@redhat.com
Wed Sep 4 18:25:00 GMT 2002


On Sep  4, 2002, Alan Modra <amodra@bigpond.net.au> wrote:

> If this reloc really is RELA, then that isn't an "in-place addend".
> Rather, it's random garbage in the section contents that should be
> ignored.  At least, that's the way standard RELA relocs work, but
> mips is weird.  ;)

If that's not an in-place addend, then *where* did the addend go?

Most ELF targets have RELA relocs with separate addends, but some,
such as sh-elf, have addends in-place, for compatibility with other
tools (sh-coff, Hitachi tools, who knows?  it was already such a mess
when I got here, counselor :-).  Yeah, that's a nightmare, but that's
the way it is.

However, I must admit that I had failed to consider the possibility
that the IRIX tools might be emitting a REL relocation, and I've just
verified that, in this case, the emitted relocation was indeed a REL
one, that, being REL, had the relocation in place.  Evidently our
linker didn't notice this distinction between REL and RELA, and failed
to apply the REL relocation correctly.  So the bug is entirely
different than the one I described.  Sorry that I jumped to
conclusions.

Unfortunately, it's not that simple.  Assembling that same object file
with GNU as will produce RELA relocations that the IRIX linker can't
cope with.  It says:

ld32: FATAL   11 : Object file format error (t.o): invalid section offset

Eeek.

-- 
Alexandre Oliva   Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/
Red Hat GCC Developer                 aoliva@{redhat.com, gcc.gnu.org}
CS PhD student at IC-Unicamp        oliva@{lsd.ic.unicamp.br, gnu.org}
Free Software Evangelist                Professional serial bug killer



More information about the Binutils mailing list