public inbox for gdb-cvs@sourceware.org help / color / mirror / Atom feed
From: Tom Tromey <tromey@sourceware.org> To: gdb-cvs@sourceware.org Subject: [binutils-gdb] Only compute realpath when basenames_may_differ is set Date: Fri, 14 Jun 2019 14:34:00 -0000 [thread overview] Message-ID: <20190614143442.58638.qmail@sourceware.org> (raw) https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=a0c1ffedcf1988bc13fc5b6d57d3b74a17b60299 commit a0c1ffedcf1988bc13fc5b6d57d3b74a17b60299 Author: Tom Tromey <tromey@adacore.com> Date: Thu May 30 10:59:03 2019 -0600 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. Diff: --- gdb/ChangeLog | 4 +++ gdb/source.c | 14 +++++--- gdb/testsuite/ChangeLog | 4 +++ gdb/testsuite/gdb.base/annotate-symlink.exp | 51 +++++++++++++++++++++++++++++ 4 files changed, 68 insertions(+), 5 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f4f5b54..87575c8 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,7 @@ +2019-06-14 Tom Tromey <tromey@adacore.com> + + * source.c (find_and_open_source): Respect basenames_may_differ. + 2019-06-14 Andrew Burgess <andrew.burgess@embecosm.com> * annotate.c (annotate_breakpoints_invalid): Make use of diff --git a/gdb/source.c b/gdb/source.c index 00052e6..02df15a 100644 --- a/gdb/source.c +++ b/gdb/source.c @@ -987,7 +987,10 @@ find_and_open_source (const char *filename, result = gdb_open_cloexec (fullname->get (), OPEN_MODE, 0); if (result >= 0) { - *fullname = gdb_realpath (fullname->get ()); + if (basenames_may_differ) + *fullname = gdb_realpath (fullname->get ()); + else + *fullname = gdb_abspath (fullname->get ()); return scoped_fd (result); } @@ -1031,15 +1034,16 @@ find_and_open_source (const char *filename, if (rewritten_filename != NULL) filename = rewritten_filename.get (); - result = openp (path, OPF_SEARCH_IN_PATH | OPF_RETURN_REALPATH, filename, - OPEN_MODE, fullname); + openp_flags flags = OPF_SEARCH_IN_PATH; + if (basenames_may_differ) + flags |= OPF_RETURN_REALPATH; + result = openp (path, flags, filename, OPEN_MODE, fullname); if (result < 0) { /* Didn't work. Try using just the basename. */ p = lbasename (filename); if (p != filename) - result = openp (path, OPF_SEARCH_IN_PATH | OPF_RETURN_REALPATH, p, - OPEN_MODE, fullname); + result = openp (path, flags, p, OPEN_MODE, fullname); } return scoped_fd (result); diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 8219486..4d89669 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,9 @@ 2019-06-14 Tom Tromey <tromey@adacore.com> + * gdb.base/annotate-symlink.exp: New file. + +2019-06-14 Tom Tromey <tromey@adacore.com> + * gdb.ada/set_wstr.exp: Add reassignment test. 2019-06-14 Tom Tromey <tromey@adacore.com> diff --git a/gdb/testsuite/gdb.base/annotate-symlink.exp b/gdb/testsuite/gdb.base/annotate-symlink.exp new file mode 100644 index 0000000..6dba2fe --- /dev/null +++ b/gdb/testsuite/gdb.base/annotate-symlink.exp @@ -0,0 +1,51 @@ +# Copyright (C) 2019 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +standard_testfile realname-expand.c realname-expand-real.c + +if [is_remote host] { + unsupported "compiling on a remote host does not support a filename with directory." + return 0 +} + +set srcdirabs [file join [pwd] $srcdir] +set srcfilelink [standard_output_file realname-expand-link.c] + +remote_exec build "ln -sf ${srcdirabs}/${subdir}/${srcfile2} $srcfilelink" + +if { [file type $srcfilelink] != "link" } { + unsupported "target directory cannot have symbolic links" + return -1 +} + +if { [gdb_compile "${srcdir}/${subdir}/${srcfile} ${srcfilelink}" "${binfile}" \ + executable {debug}] != "" } { + untested "failed to compile" + return -1 +} + +clean_restart ${testfile} + +if {![runto_main]} { + unsupported "failed to run to main" + return -1 +} + +gdb_breakpoint func message + +gdb_test_no_output "set annotate 1" + +gdb_test "continue" \ + "Breakpoint .* func .*realname-expand-link.c:$decimal\r\n\032\032.*realname-expand-link.c:.*"
reply other threads:[~2019-06-14 14:34 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190614143442.58638.qmail@sourceware.org \ --to=tromey@sourceware.org \ --cc=gdb-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).