Looking at this again...
On Sun, Mar 11, 2007 at 10:16:46PM -0700, Joel Brobecker
wrote:
> Slightly later, GDB tries to update its list of shared
libraries again,
> and this time finds that base address. So it now scans
a different
> memory region for that list of shared libraries. And in
addition to
> that, there is the following code that was recently
added:
>
> /* On Solaris, the dynamic linker is not in the
normal list of
> shared objects, so make sure we pick it up
too. Having
> symbol information for the dynamic linker is
quite crucial
> for skipping dynamic linker resolver code.
*/
> if (lm == 0 && ldsomap == 0)
> lm = ldsomap = solib_svr4_r_ldsomap ();
>
> The information extracted from this entry gives us the
following path
> to the loader: /lib/ld.so.1. The paths are
different!!!
...
> I am not sure how to fix it either. On solaris 2.8 and
2.9, the two
> files are identical but distinct - one is not a link to
the other.
> On solaris 2.10, however, one is a link of the other,
so we could
> presumably check the fullpath instead of doing a direct
name comparison.
> But that would be pretty expensive for just one type of
host, no?
xfullpath isn't really that expensive. We could even do it
only for
ld.so.1; I think that's not totally unreasonable.
Are you sure the files are distinct on your Solaris 2.8 /
2.9? I have
a symlink /lib -> ./usr/lib on 2.8, and a symlink
/usr/lib/ld.so.1 ->
../../lib/ld.so.1 on 2.10.
--
Daniel Jacobowitz
CodeSourcery
|