Only compute realpath when basenames_may_differ is set
authorTom Tromey <tromey@adacore.com>
Thu, 30 May 2019 16:59:03 +0000 (10:59 -0600)
committerTom Tromey <tromey@adacore.com>
Fri, 14 Jun 2019 14:34:24 +0000 (08:34 -0600)
commita0c1ffedcf1988bc13fc5b6d57d3b74a17b60299
treeb015514266cd1c0d63e1140d72d146a2d19ab55f
parent7c39e397aafaea64812f2611b061bdd50f30dce4
Only compute realpath when basenames_may_differ is set

A user noted that, when sources are symlinked, gdb annotations will
print the real path, rather than the name of the symlink.

It seems to me that it is better to print the name of the file that
was actually used in the build, unless there is some reason not to.

This patch implements this, with the caveat that it will not work when
basenames-may-differ is enabled.  The way this mode is currently
implemented, returning the symbolic (not real) path is not possible.

While I think it would be good to redo the source file name cache and
perhaps integrate it with class source_cache, I haven't done so here.

Regression tested on x86-64 Fedora 29.

gdb/ChangeLog
2019-06-14  Tom Tromey  <tromey@adacore.com>

* source.c (find_and_open_source): Respect basenames_may_differ.

gdb/testsuite/ChangeLog
2019-06-14  Tom Tromey  <tromey@adacore.com>

* gdb.base/annotate-symlink.exp: New file.
gdb/ChangeLog
gdb/source.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/annotate-symlink.exp [new file with mode: 0644]