Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [patchv2 8/11] TUI: source "file" -> "fullname"
@ 2013-01-27 22:36 Jan Kratochvil
  2013-02-03 16:17 ` [commit] " Jan Kratochvil
  2013-02-07 19:48 ` Doug Evans
  0 siblings, 2 replies; 4+ messages in thread
From: Jan Kratochvil @ 2013-01-27 22:36 UTC (permalink / raw)
  To: gdb-patches

Hi,

this is a new part in this v2 series.

It was tested current "gdb -tui" is really incorrect and it gets fixed by this
patch:
	cd gdb.linespec/
	cd base/one/
	g++ -o ../../1.o -c thefile.cc -Wall -g
	cd ../two
	g++ -o ../../2.o -c thefile.cc -Wall -g
	cd  ../..
	g++ -o 0 lspec.cc -Wall -g 1.o 2.o
	../../gdb-tuiN -tui ./0
	../../gdb-tuiY -tui ./0
	b m
	b n
	r
	c
With this patch GDB displays the first thefile.cc for m() and the second
thefile.cc for n(); without this patch it forgot to display n().

It expects that if !ui_out_is_mi_like_p and !ui_source_list it is really TUI
and no other uiout interface; I hope it is safe assumption and there will be
no new interfaces besides current CLI + TUI + MI.

TUI uses a special exception to suppress + catch the output of "list" command.


Thanks,
Jan


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

	* source.c (print_source_lines_base): Print for TUI also "fullname".
	* tui/tui-data.c (init_content_element): Change tui_locator_element
	field to full_name.
	* tui/tui-data.h (struct tui_locator_element): Likewise.
	* tui/tui-disasm.c (tui_show_disassem_and_update_source): Rename
	tui_update_locator_filename calls to tui_update_locator_fullname.
	Replace symtab->filename refererence by symtab_to_fullname call.
	* tui/tui-out.c (tui_field_string): Check for "fullname" now.
	* tui/tui-source.c (tui_set_source_content): Change tui_locator_element
	field to full_name.  Replace symtab->filename refererence by
	symtab_to_fullname call.
	(tui_show_symtab_source): Rename parameter to fullname.  Change
	tui_locator_element field to full_name.
	* tui/tui-stack.c: Include source.h.
	(tui_set_locator_filename): Rename the declaration to ...
	(tui_set_locator_fullname): ... here.  Rename its parameter to
	fullname, updates its comment.
	(tui_set_locator_info): Rename its parameter to fullname.
	(tui_set_locator_filename): Rename the definition to ...
	(tui_set_locator_fullname): ... here.  Rename its parameter to
	fullname, updates its comment.  Change tui_locator_element field to
	full_name.
	(tui_set_locator_info): Rename its parameter to fullname.
	(tui_set_locator_info): Rename callee to tui_set_locator_fullname.
	(tui_update_locator_filename): Rename to ...
	(tui_update_locator_fullname): ... here. Rename callee to
	tui_set_locator_fullname.
	(tui_show_frame_info): Replace symtab->filename refererence by
	symtab_to_fullname call.
	* tui/tui-stack.h (tui_update_locator_filename): Rename to ...
	(tui_update_locator_fullname): ... here.
	* tui/tui-winsource.c (tui_display_main): Rename the callee to
	tui_update_locator_fullname.  Replace symtab->filename refererence by
	symtab_to_fullname call.
	* tui/tui.c (tui_show_source): Rename its parameter to fullname.
	Rename the callee to tui_update_locator_fullname.
	* tui/tui.h (tui_show_source): Rename its parameter to fullname.

--- a/gdb/source.c
+++ b/gdb/source.c
@@ -1345,7 +1345,11 @@ print_source_lines_base (struct symtab *s, int line, int stopline,
 	  ui_out_field_int (uiout, "line", line);
 	  ui_out_text (uiout, "\tin ");
 	  ui_out_field_string (uiout, "file", symtab_to_filename (s));
-	  if (ui_out_is_mi_like_p (uiout))
+
+	  /* TUI expects the "fullname" field.  While it is
+	     !ui_out_is_mi_like_p compared to CLI it is !ui_source_list.  */
+	  if (ui_out_is_mi_like_p (uiout)
+	      || !ui_out_test_flags (uiout, ui_source_list))
 	    {
 	      const char *fullname = symtab_to_fullname (s);
 
--- a/gdb/tui/tui-data.c
+++ b/gdb/tui/tui-data.c
@@ -510,7 +510,7 @@ init_content_element (struct tui_win_element *element,
       element->which_element.data.content = (char*) NULL;
       break;
     case LOCATOR_WIN:
-      element->which_element.locator.file_name[0] =
+      element->which_element.locator.full_name[0] =
 	element->which_element.locator.proc_name[0] = (char) 0;
       element->which_element.locator.line_no = 0;
       element->which_element.locator.addr = 0;
--- a/gdb/tui/tui-data.h
+++ b/gdb/tui/tui-data.h
@@ -203,7 +203,8 @@ struct tui_command_element
 /* Elements in the locator window content.  */
 struct tui_locator_element
 {
-  char file_name[MAX_LOCATOR_ELEMENT_LEN];
+  /* Resolved absolute filename as returned by symtab_to_fullname.  */
+  char full_name[MAX_LOCATOR_ELEMENT_LEN];
   char proc_name[MAX_LOCATOR_ELEMENT_LEN];
   int line_no;
   CORE_ADDR addr;
--- a/gdb/tui/tui-disasm.c
+++ b/gdb/tui/tui-disasm.c
@@ -318,10 +318,10 @@ tui_show_disassem_and_update_source (struct gdbarch *gdbarch,
       if (sal.symtab)
 	{
 	  set_current_source_symtab_and_line (&sal);
-	  tui_update_locator_filename (sal.symtab->filename);
+	  tui_update_locator_fullname (symtab_to_fullname (sal.symtab));
 	}
       else
-	tui_update_locator_filename ("?");
+	tui_update_locator_fullname ("?");
     }
 
   return;
--- a/gdb/tui/tui-out.c
+++ b/gdb/tui/tui-out.c
@@ -84,7 +84,7 @@ tui_field_string (struct ui_out *uiout,
   if (data->base.suppress_output)
     return;
 
-  if (fldname && data->line > 0 && strcmp (fldname, "file") == 0)
+  if (fldname && data->line > 0 && strcmp (fldname, "fullname") == 0)
     {
       data->start_of_line ++;
       if (data->line > 0)
--- a/gdb/tui/tui-source.c
+++ b/gdb/tui/tui-source.c
@@ -151,8 +151,8 @@ tui_set_source_content (struct symtab *s,
 			cur_line_no;
 		      element->which_element.source.is_exec_point =
 			(filename_cmp (((struct tui_win_element *)
-				       locator->content[0])->which_element.locator.file_name,
-				       s->filename) == 0
+				       locator->content[0])->which_element.locator.full_name,
+				       symtab_to_fullname (s)) == 0
 			 && cur_line_no == ((struct tui_win_element *)
 					    locator->content[0])->which_element.locator.line_no);
 		      if (c != EOF)
@@ -333,14 +333,14 @@ tui_show_symtab_source (struct gdbarch *gdbarch, struct symtab *s,
 /* Answer whether the source is currently displayed in the source
    window.  */
 int
-tui_source_is_displayed (const char *fname)
+tui_source_is_displayed (const char *fullname)
 {
   return (TUI_SRC_WIN != NULL
 	  && TUI_SRC_WIN->generic.content_in_use 
 	  && (filename_cmp (((struct tui_win_element *)
 			     (tui_locator_win_info_ptr ())->
-			     content[0])->which_element.locator.file_name,
-			    fname) == 0));
+			     content[0])->which_element.locator.full_name,
+			    fullname) == 0));
 }
 
 
--- a/gdb/tui/tui-stack.c
+++ b/gdb/tui/tui-stack.c
@@ -29,6 +29,7 @@
 #include "top.h"
 #include "gdb-demangle.h"
 #include "gdb_string.h"
+#include "source.h"
 #include "tui/tui.h"
 #include "tui/tui-data.h"
 #include "tui/tui-stack.h"
@@ -44,12 +45,12 @@
    Returns a pointer to a static area holding the result.  */
 static char *tui_get_function_from_frame (struct frame_info *fi);
 
-/* Set the filename portion of the locator.  */
-static void tui_set_locator_filename (const char *filename);
+/* Set the full_name portion of the locator.  */
+static void tui_set_locator_fullname (const char *fullname);
 
 /* Update the locator, with the provided arguments.  */
 static void tui_set_locator_info (struct gdbarch *gdbarch,
-				  const char *filename,
+				  const char *fullname,
 				  const char *procname,
                                   int lineno, CORE_ADDR addr);
 
@@ -276,27 +277,27 @@ tui_show_locator_content (void)
 
 /* Set the filename portion of the locator.  */
 static void
-tui_set_locator_filename (const char *filename)
+tui_set_locator_fullname (const char *fullname)
 {
   struct tui_gen_win_info *locator = tui_locator_win_info_ptr ();
   struct tui_locator_element *element;
 
   if (locator->content[0] == NULL)
     {
-      tui_set_locator_info (NULL, filename, NULL, 0, 0);
+      tui_set_locator_info (NULL, fullname, NULL, 0, 0);
       return;
     }
 
   element = &((struct tui_win_element *)
 	      locator->content[0])->which_element.locator;
-  element->file_name[0] = 0;
-  strcat_to_buf (element->file_name, MAX_LOCATOR_ELEMENT_LEN, filename);
+  element->full_name[0] = 0;
+  strcat_to_buf (element->full_name, MAX_LOCATOR_ELEMENT_LEN, fullname);
 }
 
 /* Update the locator, with the provided arguments.  */
 static void
 tui_set_locator_info (struct gdbarch *gdbarch,
-		      const char *filename,
+		      const char *fullname,
 		      const char *procname, 
 		      int lineno,
                       CORE_ADDR addr)
@@ -318,14 +319,14 @@ tui_set_locator_info (struct gdbarch *gdbarch,
   element->line_no = lineno;
   element->addr = addr;
   element->gdbarch = gdbarch;
-  tui_set_locator_filename (filename);
+  tui_set_locator_fullname (fullname);
 }
 
-/* Update only the filename portion of the locator.  */
+/* Update only the full_name portion of the locator.  */
 void
-tui_update_locator_filename (const char *filename)
+tui_update_locator_fullname (const char *fullname)
 {
-  tui_set_locator_filename (filename);
+  tui_set_locator_fullname (fullname);
   tui_show_locator_content ();
 }
 
@@ -348,11 +349,12 @@ tui_show_frame_info (struct frame_info *fi)
       find_frame_sal (fi, &sal);
 
       source_already_displayed = sal.symtab != 0
-        && tui_source_is_displayed (sal.symtab->filename);
+        && tui_source_is_displayed (symtab_to_fullname (sal.symtab));
 
       if (get_frame_pc_if_available (fi, &pc))
 	tui_set_locator_info (get_frame_arch (fi),
-			      sal.symtab == 0 ? "??" : sal.symtab->filename,
+			      (sal.symtab == 0
+			       ? "??" : symtab_to_fullname (sal.symtab)),
 			      tui_get_function_from_frame (fi),
 			      sal.line,
 			      pc);
--- a/gdb/tui/tui-stack.h
+++ b/gdb/tui/tui-stack.h
@@ -24,7 +24,7 @@
 
 struct frame_info;
 
-extern void tui_update_locator_filename (const char *);
+extern void tui_update_locator_fullname (const char *);
 extern void tui_show_locator_content (void);
 extern void tui_show_frame_info (struct frame_info *);
 
--- a/gdb/tui/tui-winsource.c
+++ b/gdb/tui/tui-winsource.c
@@ -59,9 +59,9 @@ tui_display_main (void)
 	  tui_update_source_windows_with_addr (gdbarch, addr);
 	  sal = find_pc_line (addr, 0);
           if (sal.symtab)
-             tui_update_locator_filename (sal.symtab->filename);
+             tui_update_locator_fullname (symtab_to_fullname (sal.symtab));
           else
-             tui_update_locator_filename ("??");
+             tui_update_locator_fullname ("??");
 	}
     }
 }
--- a/gdb/tui/tui.c
+++ b/gdb/tui/tui.c
@@ -532,7 +532,7 @@ tui_reset (void)
 #endif
 
 void
-tui_show_source (const char *file, int line)
+tui_show_source (const char *fullname, int line)
 {
   struct symtab_and_line cursal = get_current_source_symtab_and_line ();
 
@@ -540,7 +540,7 @@ tui_show_source (const char *file, int line)
   tui_add_win_to_layout (SRC_WIN);
 
   tui_update_source_windows_with_line (cursal.symtab, line);
-  tui_update_locator_filename (file);
+  tui_update_locator_fullname (fullname);
 }
 
 void
--- a/gdb/tui/tui.h
+++ b/gdb/tui/tui.h
@@ -95,7 +95,7 @@ extern void tui_set_key_mode (enum tui_key_mode mode);
 
 extern int tui_active;
 
-extern void tui_show_source (const char *file, int line);
+extern void tui_show_source (const char *fullname, int line);
 
 extern struct ui_out *tui_out_new (struct ui_file *stream);
 


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [commit] [patchv2 8/11] TUI: source "file" -> "fullname"
  2013-01-27 22:36 [patchv2 8/11] TUI: source "file" -> "fullname" Jan Kratochvil
@ 2013-02-03 16:17 ` Jan Kratochvil
  2013-02-07 19:48 ` Doug Evans
  1 sibling, 0 replies; 4+ messages in thread
From: Jan Kratochvil @ 2013-02-03 16:17 UTC (permalink / raw)
  To: gdb-patches

On Sun, 27 Jan 2013 23:36:25 +0100, Jan Kratochvil wrote:
> gdb/
> 2013-01-25  Jan Kratochvil  <jan.kratochvil@redhat.com>
> 
> 	* source.c (print_source_lines_base): Print for TUI also "fullname".
> 	* tui/tui-data.c (init_content_element): Change tui_locator_element
> 	field to full_name.
> 	* tui/tui-data.h (struct tui_locator_element): Likewise.
> 	* tui/tui-disasm.c (tui_show_disassem_and_update_source): Rename
> 	tui_update_locator_filename calls to tui_update_locator_fullname.
> 	Replace symtab->filename refererence by symtab_to_fullname call.
> 	* tui/tui-out.c (tui_field_string): Check for "fullname" now.
> 	* tui/tui-source.c (tui_set_source_content): Change tui_locator_element
> 	field to full_name.  Replace symtab->filename refererence by
> 	symtab_to_fullname call.
> 	(tui_show_symtab_source): Rename parameter to fullname.  Change
> 	tui_locator_element field to full_name.
> 	* tui/tui-stack.c: Include source.h.
> 	(tui_set_locator_filename): Rename the declaration to ...
> 	(tui_set_locator_fullname): ... here.  Rename its parameter to
> 	fullname, updates its comment.
> 	(tui_set_locator_info): Rename its parameter to fullname.
> 	(tui_set_locator_filename): Rename the definition to ...
> 	(tui_set_locator_fullname): ... here.  Rename its parameter to
> 	fullname, updates its comment.  Change tui_locator_element field to
> 	full_name.
> 	(tui_set_locator_info): Rename its parameter to fullname.
> 	(tui_set_locator_info): Rename callee to tui_set_locator_fullname.
> 	(tui_update_locator_filename): Rename to ...
> 	(tui_update_locator_fullname): ... here. Rename callee to
> 	tui_set_locator_fullname.
> 	(tui_show_frame_info): Replace symtab->filename refererence by
> 	symtab_to_fullname call.
> 	* tui/tui-stack.h (tui_update_locator_filename): Rename to ...
> 	(tui_update_locator_fullname): ... here.
> 	* tui/tui-winsource.c (tui_display_main): Rename the callee to
> 	tui_update_locator_fullname.  Replace symtab->filename refererence by
> 	symtab_to_fullname call.
> 	* tui/tui.c (tui_show_source): Rename its parameter to fullname.
> 	Rename the callee to tui_update_locator_fullname.
> 	* tui/tui.h (tui_show_source): Rename its parameter to fullname.

Checked in:
	http://sourceware.org/ml/gdb-cvs/2013-02/msg00022.html


Jan


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [patchv2 8/11] TUI: source "file" -> "fullname"
  2013-01-27 22:36 [patchv2 8/11] TUI: source "file" -> "fullname" Jan Kratochvil
  2013-02-03 16:17 ` [commit] " Jan Kratochvil
@ 2013-02-07 19:48 ` Doug Evans
  2013-02-07 19:54   ` Jan Kratochvil
  1 sibling, 1 reply; 4+ messages in thread
From: Doug Evans @ 2013-02-07 19:48 UTC (permalink / raw)
  To: Jan Kratochvil; +Cc: gdb-patches

On Sun, Jan 27, 2013 at 2:36 PM, Jan Kratochvil
<jan.kratochvil@redhat.com> wrote:
> Hi,
>
> this is a new part in this v2 series.
>
> It was tested current "gdb -tui" is really incorrect and it gets fixed by this
> patch:
>         cd gdb.linespec/
>         cd base/one/
>         g++ -o ../../1.o -c thefile.cc -Wall -g
>         cd ../two
>         g++ -o ../../2.o -c thefile.cc -Wall -g
>         cd  ../..
>         g++ -o 0 lspec.cc -Wall -g 1.o 2.o
>         ../../gdb-tuiN -tui ./0
>         ../../gdb-tuiY -tui ./0
>         b m
>         b n
>         r
>         c
> With this patch GDB displays the first thefile.cc for m() and the second
> thefile.cc for n(); without this patch it forgot to display n().
>
> It expects that if !ui_out_is_mi_like_p and !ui_source_list it is really TUI
> and no other uiout interface; I hope it is safe assumption and there will be
> no new interfaces besides current CLI + TUI + MI.

Re: "no new interfaces": Perhaps not immediately relevant here, but I
think it's something we need to keep in mind.
I gather people are thinking of putting GUI-like things on top of gdb
via the Python API.
So it's really CLI + TUI + MI + potentially-Python.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [patchv2 8/11] TUI: source "file" -> "fullname"
  2013-02-07 19:48 ` Doug Evans
@ 2013-02-07 19:54   ` Jan Kratochvil
  0 siblings, 0 replies; 4+ messages in thread
From: Jan Kratochvil @ 2013-02-07 19:54 UTC (permalink / raw)
  To: Doug Evans; +Cc: gdb-patches

On Thu, 07 Feb 2013 20:48:49 +0100, Doug Evans wrote:
> Re: "no new interfaces": Perhaps not immediately relevant here, but I
> think it's something we need to keep in mind.
> I gather people are thinking of putting GUI-like things on top of gdb
> via the Python API.
> So it's really CLI + TUI + MI + potentially-Python.

New interface writer should see how it behaves now so such change I have done
now is not a regression for him/her.


Thanks,
Jan


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-02-07 19:54 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-01-27 22:36 [patchv2 8/11] TUI: source "file" -> "fullname" Jan Kratochvil
2013-02-03 16:17 ` [commit] " Jan Kratochvil
2013-02-07 19:48 ` Doug Evans
2013-02-07 19:54   ` Jan Kratochvil

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox