[parisc-linux] /lib/ld.so.1 (glibc) issues on 2.5 kernel??
Ryan Bradetich
rbradetich@uswest.net
18 Mar 2003 00:20:54 -0700
I have spend some more time tracking this problem down.
I have found the offending line in the kernel that causes
this problem, the rest of the RGH_FIX can be eliminated.
The symptom is with this line:
NEW_AUX_ENT(AT_ENTRY, exec->e_entry);
in fs/binfmt_elf.c:create_elf_tables().
If the that line is executed when the
interpreter_type == INTERPRETER_NONE, the error shows up when
/lib/ld.so.1 is executed. This line is fine when when the
interpreter_type == INTERPRTER_ELF ... which explains why
the system runs normally, and the error only manifests itself
when /lib/ld.so.1 is executed by hand. (the /lib/ld.so.1 library
does not set a PT_INTERP, so the interpreter is not set, where as
if a binary is executed, the interpreter is set to ELF).
The assert caused by /lib/ld.so.1 is caused by this line
in rtld.c:
assert (GL(dl_rtld_map).l_libname); /* How else did we get here? */
This assert is in the else clause of this if statement:
if (! GL(dl_rtld_map).l_libname && GL(dl_rtld_map).l_name)
The whole purpose of this if statment, according to the comments,
is to deal with this senario, where the library was invoked directly,
and the PT_INTERP was not set.
I am rebuilding glibc from source on my C200 now (i.e. this will
probably take a while :)) and I will continue debugging. I just wanted
to give a status update in case someone else has an idea, or was working
on it.
Thanks,
- Ryan
--
Ryan Bradetich <rbradetich@uswest.net>