[parisc-linux] Re: Fix for hppa-linux ld.so with newer binutils
Ben Collins
bcollins@debian.org
Sat, 20 Oct 2001 09:54:06 -0400
On Sat, Oct 20, 2001 at 05:09:07PM +0930, Alan Modra wrote:
> Newer binutils don't initialise .got entries for global syms, so the
> scheme used by sysdeps/hppa/dl-machine.h:elf_machine_dynamic to find
> the address of .dynamic no longer works.
>
> ChangeLog
> * sysdeps/hppa/dl-machine.h (elf_machine_dynamic): Make it a
> const function. Do not use &_DYNAMIC as .got entries for global
> syms are no longer initialised. Instead they rely on the reloc,
> which hasn't yet been applied.
> (elf_machine_load_address): Make it const. Call
> elf_machine_dynamic as that function is called fropm rtld anyway.
Is this the fix for a newly built ld.so segfaulting? If so, there seems
to be something else wrong too. Newly built ld.so still segfaults,
here's the gdb:
Starting program: /usr/src/glibc/glibc-2.2.4/./hppa-linux/obj/elf/ld.so
Program received signal SIGSEGV, Segmentation fault.
0x41003298 in _dl_start_final (arg=0xbff00414, bootstrap_map_p=0xbff00508, start_time=1090519040)
at rtld.c:233
233 _dl_rtld_map.l_addr = bootstrap_map_p->l_addr;
(gdb) print bootstrap_map_p
$1 = (struct link_map *) 0xbff00508
(gdb) print bootstrap_map_p->l_addr
$2 = 1090519040
(gdb) print &_dl_rtld_map
$3 = (struct link_map *) 0x41029270
(gdb) print _dl_rtld_map.l_addr
$4 = 0
This is with binutils 2.11.92.0.7 and gcc-3.0.2 snapshot from 9-22-2001
(latest Debian packages available). I can give you more info if you need
it.
--
.----------=======-=-======-=========-----------=====------------=-=-----.
/ Ben Collins -- Debian GNU/Linux \
` bcollins@debian.org -- bcollins@openldap.org -- bcollins@linux.com '
`---=========------=======-------------=-=-----=-===-======-------=--=---'