Re: [patch] Fix for PR gdb/9538 (loading of separate debuginfo and symlinks).

Jan Kratochvil
2012-01-12T23:12:01Z

On Fri, 13 Jan 2012 00:05:06 +0100, Paul Pluzhnikov wrote:
> On Thu, Jan 12, 2012 at 2:40 PM, Jan Kratochvil
> <jan.kratochvil@redhat.com> wrote:
>
> > There exists lstat in gnulib
>
> There doesn't appear to be one in my (freshly sync'd) copy:
>
> grep -r lstat gnulib
> gnulib/Makefile.in:localstatedir = @localstatedir@

I meant upstream gnulib. GDB contains only several pieces of it already in
use by GDB. We could import more of them, if needed.

> > Still you call there:
> > + Â dir1 = xstrdup (objfile->name);
> > + Â canon_dir = lrealpath (dir1);
> > and later:
> > + Â dir2 = lrealpath (objfile->name);
>
> If objfile->name is "/foo/bar/baz", and is a symlink to "/zork/zark/baz"
> (and nothing else is a symlink) then the two realpath() calls will return
> "/foo/bar" and "/zork/zark/baz" and (I think) are unavoidable.

But in this case "baz" is a symlink. So `lstat (objfile->name)' would report
it is a symlink. This would indicate we should run second lrealpath.

In most cases `lstat (objfile->name)' will report is is a regular file.
In such case the second (new) part of the function can be IMO skipped as it
cannot find anything more.

Thanks,
Jan