A current bug in the hppa binutils code causes
relative relocations to be mixed with OPD relocations.
The OPD handling code in ld.so requires a relocation to
setup one of the data structures.
At startup ld.so tries to use the structure to handle
an OPD relocation *before* the structure is completely
setup by the relative relocation and this causes a crash.
This code is a workaround and a bandaid, the real fix
is in the static linker, but until then we must avoid
relocations in dl-fptr.c.
We copy dl-fptr.c from generic code, modify it, and
adjust the headers to fixup the structure at runtime
instead of having the relocation do this for us
automatically.
The current ELF_MACHINE_LOAD_ADDRESS used by the generic
function pointer code was not safe for use before relocation.
The macro has been rewritten to use only PC relative loads.
2009-11-15 Carlos O'Donell <carlos@codesourcery.com>
* sysdeps/hppa/dl-fptr.h: Update copyright year.
Reduce ELF_MACHINE_BOOT_FPTR_TABLE_LEN to 64.
Implement ELF_MACHINE_LOAD_ADDRESS using PC relative loads.