[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>