Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Jan Kratochvil <jan.kratochvil@redhat.com>
To: gdb-patches@sourceware.org
Subject: [patchv3 12/11] New options {relative,basename}-with-system-absolute
Date: Wed, 30 Jan 2013 07:48:00 -0000	[thread overview]
Message-ID: <20130130074820.GA15998@host2.jankratochvil.net> (raw)
In-Reply-To: <20130129221019.GA27463@host2.jankratochvil.net>

Just forgot about gdb/NEWS.
On Tue, 29 Jan 2013 23:10:19 +0100, Jan Kratochvil wrote:

Hi,

to make {this,a} patchset practically useful it needs to be enabled by default.

But making "set filename-display absolute" the default is probably not great:

#8  0x0000000000735ed2 in captured_main (data=0x7fffffffdaa0) at main.c:1033
#9  0x00000000007324ef in catch_errors (func=0x734cae <captured_main>, func_args=0x7fffffffdaa0, errstring=0xfa2e54 "", mask=6) at exceptions.c:546
#10 0x0000000000735f1e in gdb_main (args=0x7fffffffdaa0) at main.c:1042
#11 0x000000000048cd66 in main (argc=1, argv=0x7fffffffdba8) at gdb.c:34
->
#8  0x0000000000735ed2 in captured_main (data=0x7fffffffdaa0) at /home/jkratoch/redhat/archer-jankratochvil-absdir/gdb/main.c:1033
#9  0x00000000007324ef in catch_errors (func=0x734cae <captured_main>, func_args=0x7fffffffdaa0, errstring=0xfa2e54 "", mask=6)
    at /home/jkratoch/redhat/archer-jankratochvil-absdir/gdb/exceptions.c:546
#10 0x0000000000735f1e in gdb_main (args=0x7fffffffdaa0) at /home/jkratoch/redhat/archer-jankratochvil-absdir/gdb/main.c:1042
#11 0x000000000048cd66 in main (argc=1, argv=0x7fffffffdba8) at /home/jkratoch/redhat/archer-jankratochvil-absdir/gdb/gdb.c:34

OTOH this output I find wrong and the "absolute" change is a win for it:

#0  0x00007ffff63773d0 in __poll_nocancel () at ../sysdeps/unix/syscall-template.S:81
->
#0  0x00007ffff63773d0 in __poll_nocancel () at /usr/src/debug/glibc-2.17-c758a686/sysdeps/unix/syscall-template.S:81

So a combination of absolute filenames for system component and relative
filenames for user binaries should be the best of both choices.

This applies then also for the main executable, if it comes from system:

#3  0x00000000004016e4 in main (argc=<optimized out>, argv=<optimized out>) at src/sleep.c:145
->
#3  0x00000000004016e4 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/coreutils-8.20/src/sleep.c:145

All these patches are unrelated if *-debuginfo.rpm (or equivalent) is not
installed for the system component as in such case GDB has always displayed:

#0  0x00007ffff63773d0 in __poll_nocancel () from /lib64/libc.so.6


In fact I would personally prefer "basename" instead of "relative" for user
binaries when we have "ambiguous linespec" already implemented.  But I do not
find there a big difference so it would be mostly a needless user interface
change.  Such relative* -> basename* change is in fact unrelated to this
proposal and it can be still made in the future.

This patch does not yet make the change of the default.


Thanks,
Jan


gdb/
2013-01-29  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* NEWS (set filename-display): Add options
	relative-with-system-absolute and basename-with-system-absolute.
	* source.c (filename_display_relative_with_system_absolute)
	(filename_display_basename_with_system_absolute): New.
	(filename_display_kind_names): Add them.
	(symtab_to_filename): Use them.
	(_initialize_source): Describe them for "set filename-display".

gdb/doc/
2013-01-29  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* gdb.texinfo (Backtrace): Add new set filename-display options
	relative-with-system-absolute and basename-with-system-absolute.

--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -115,7 +115,8 @@ show print type typedefs
   Control whether typedef definitions are displayed by "ptype".
   The default is to show them.
 
-set filename-display basename|relative|absolute
+set filename-display basename|relative|absolute|relative-with-system-absolute
+                     |basename-with-system-absolute
 show filename-display
   Control the way in which filenames is displayed.
   The default is "relative", which preserves previous behavior.
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -6549,6 +6549,22 @@ Display only basename of a filename.
 @item set filename-display absolute
 Display an absolute filename.
 
+@item set filename-display relative-with-system-absolute
+Determine whether a source filename comes from file having separate debug
+information file.  In such case display the source filename as absolute one.
+Otherwise display it relative to the compilation directory.
+
+Files having separate debug information file are expected to come from system
+shared libraries.
+
+@item set filename-display basename-with-system-absolute
+Determine whether a source filename comes from file having separate debug
+information file.  In such case display the source filename as absolute one.
+Otherwise display only basename of the filename.
+
+Files having separate debug information file are expected to come from system
+shared libraries.
+
 @item show filename-display
 Show the current way to display filenames.
 @end table
--- a/gdb/source.c
+++ b/gdb/source.c
@@ -113,11 +113,17 @@ show_lines_to_list (struct ui_file *file, int from_tty,
 static const char filename_display_basename[] = "basename";
 static const char filename_display_relative[] = "relative";
 static const char filename_display_absolute[] = "absolute";
+static const char filename_display_relative_with_system_absolute[] =
+						"relative-with-system-absolute";
+static const char filename_display_basename_with_system_absolute[] =
+						"basename-with-system-absolute";
 
 static const char *const filename_display_kind_names[] = {
   filename_display_basename,
   filename_display_relative,
   filename_display_absolute,
+  filename_display_relative_with_system_absolute,
+  filename_display_basename_with_system_absolute,
   NULL
 };
 
@@ -1144,8 +1150,16 @@ symtab_to_filename (struct symtab *symtab)
     return symtab_to_fullname (symtab);
   else if (filename_display_string == filename_display_relative)
     return symtab->filename;
-  else
-    internal_error (__FILE__, __LINE__, _("invalid filename_display_string"));
+
+  if (symtab->objfile->separate_debug_objfile != NULL
+      || symtab->objfile->separate_debug_objfile_backlink != NULL)
+    return symtab_to_fullname (symtab);
+
+  if (filename_display_string == filename_display_relative_with_system_absolute)
+    return symtab->filename;
+  if (filename_display_string == filename_display_basename_with_system_absolute)
+    return lbasename (symtab->filename);
+  internal_error (__FILE__, __LINE__, _("invalid filename_display_string"));
 }
 \f
 /* Create and initialize the table S->line_charpos that records
@@ -2065,6 +2079,13 @@ filename-display can be:\n\
   basename - display only basename of a filename\n\
   relative - display a filename relative to the compilation directory\n\
   absolute - display an absolute filename\n\
+  relative-with-system-absolute - display filenames from files with separate\n\
+                                  debug info files as absolute, other files\n\
+                                  display relative to the compilation directory\
+\n\
+  basename-with-system-absolute - display filenames from files with separate\n\
+                                  debug info files as absolute, other files\n\
+                                  display only with basename of the filename\n\
 By default, relative filenames are displayed."),
 			NULL,
 			show_filename_display_string,


  reply	other threads:[~2013-01-30  7:48 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-29 22:10 [patchv2 " Jan Kratochvil
2013-01-30  7:48 ` Jan Kratochvil [this message]
2013-01-30 17:15   ` [patchv3 " Eli Zaretskii
2013-01-30 18:30     ` Eli Zaretskii
2013-01-30 18:53       ` Jan Kratochvil
2013-01-30 20:11         ` Eli Zaretskii
2013-01-30 21:48           ` Doug Evans
2013-01-31  3:49             ` Eli Zaretskii
2013-01-31 18:07               ` Doug Evans
2013-01-31 18:54                 ` Eli Zaretskii
2013-02-01  3:41                   ` Doug Evans
2013-02-01  8:09                     ` Eli Zaretskii
2013-02-02 18:12     ` Jan Kratochvil
2013-02-01 20:59   ` Tom Tromey

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=20130130074820.GA15998@host2.jankratochvil.net \
    --to=jan.kratochvil@redhat.com \
    --cc=gdb-patches@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: link
Be 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