This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Style addresses


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=35fb8261b95c07e548a0b03f60b6c2cebf83caf8

commit 35fb8261b95c07e548a0b03f60b6c2cebf83caf8
Author: Tom Tromey <tom@tromey.com>
Date:   Fri Oct 19 16:22:35 2018 -0600

    Style addresses
    
    This changes gdb to style addresses.
    
    gdb/ChangeLog
    2018-12-28  Tom Tromey  <tom@tromey.com>
    
    	* ui-out.h (enum class ui_out_style_kind) <ADDRESS>: New
    	constant.
    	* ui-out.c (ui_out::field_core_addr): Add styling.
    	* stack.c (print_frame): Add styling.
    	* printcmd.c (print_address): Add styling.
    	(print_address_demangle, info_address_command): Likewise.
    	* cli/cli-style.h (address_style): Declare.
    	* cli/cli-style.c (address_style): New global.
    	(_initialize_cli_style): Register new commands.
    	* cli-out.c (cli_ui_out::do_field_string): Update.
    
    gdb/testsuite/ChangeLog
    2018-12-28  Tom Tromey  <tom@tromey.com>
    
    	* gdb.base/style.exp: Update test to check for address styling.

Diff:
---
 gdb/ChangeLog                    | 13 +++++++++++++
 gdb/cli-out.c                    |  3 +++
 gdb/cli/cli-style.c              | 11 +++++++++++
 gdb/cli/cli-style.h              |  3 +++
 gdb/printcmd.c                   | 36 ++++++++++++++++++++++++------------
 gdb/stack.c                      |  3 ++-
 gdb/testsuite/ChangeLog          |  4 ++++
 gdb/testsuite/gdb.base/style.exp |  2 +-
 gdb/ui-out.c                     |  3 ++-
 gdb/ui-out.h                     |  4 +++-
 10 files changed, 66 insertions(+), 16 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 1067973..c98d292 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,18 @@
 2018-12-28  Tom Tromey  <tom@tromey.com>
 
+	* ui-out.h (enum class ui_out_style_kind) <ADDRESS>: New
+	constant.
+	* ui-out.c (ui_out::field_core_addr): Add styling.
+	* stack.c (print_frame): Add styling.
+	* printcmd.c (print_address): Add styling.
+	(print_address_demangle, info_address_command): Likewise.
+	* cli/cli-style.h (address_style): Declare.
+	* cli/cli-style.c (address_style): New global.
+	(_initialize_cli_style): Register new commands.
+	* cli-out.c (cli_ui_out::do_field_string): Update.
+
+2018-12-28  Tom Tromey  <tom@tromey.com>
+
 	* symfile.c (symbol_file_add_with_addrs): Style file name.
 
 2018-12-28  Tom Tromey  <tom@tromey.com>
diff --git a/gdb/cli-out.c b/gdb/cli-out.c
index e1005e1..691f993 100644
--- a/gdb/cli-out.c
+++ b/gdb/cli-out.c
@@ -176,6 +176,9 @@ cli_ui_out::do_field_string (int fldno, int width, ui_align align,
 	case ui_out_style_kind::VARIABLE:
 	  fstyle = variable_name_style.style ();
 	  break;
+	case ui_out_style_kind::ADDRESS:
+	  fstyle = address_style.style ();
+	  break;
 	default:
 	  gdb_assert_not_reached ("missing case");
 	}
diff --git a/gdb/cli/cli-style.c b/gdb/cli/cli-style.c
index 929f18f..0d850b1 100644
--- a/gdb/cli/cli-style.c
+++ b/gdb/cli/cli-style.c
@@ -66,6 +66,10 @@ cli_style_option variable_name_style (ui_file_style::CYAN);
 
 /* See cli-style.h.  */
 
+cli_style_option address_style (ui_file_style::BLUE);
+
+/* See cli-style.h.  */
+
 cli_style_option::cli_style_option (ui_file_style::basic_color fg)
   : m_foreground (cli_colors[fg - ui_file_style::NONE]),
     m_background (cli_colors[0]),
@@ -265,4 +269,11 @@ Variable name display styling\n\
 Configure variable name colors and display intensity"),
 					    &style_set_list,
 					    &style_show_list);
+  address_style.add_setshow_commands ("address", no_class,
+				      "style address",
+				      _("\
+Address display styling\n\
+Configure address colors and display intensity"),
+				      &style_set_list,
+				      &style_show_list);
 }
diff --git a/gdb/cli/cli-style.h b/gdb/cli/cli-style.h
index 80ba7bf..e4af5a4 100644
--- a/gdb/cli/cli-style.h
+++ b/gdb/cli/cli-style.h
@@ -86,6 +86,9 @@ extern cli_style_option function_name_style;
 /* The variable name style.  */
 extern cli_style_option variable_name_style;
 
+/* The address style.  */
+extern cli_style_option address_style;
+
 /* True if styling is enabled.  */
 extern int cli_styling;
 
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
index c5b6b1a..98f5b23 100644
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
@@ -693,7 +693,7 @@ void
 print_address (struct gdbarch *gdbarch,
 	       CORE_ADDR addr, struct ui_file *stream)
 {
-  fputs_filtered (paddress (gdbarch, addr), stream);
+  fputs_styled (paddress (gdbarch, addr), address_style.style (), stream);
   print_address_symbolic (gdbarch, addr, stream, asm_demangle, " ");
 }
 
@@ -726,7 +726,7 @@ print_address_demangle (const struct value_print_options *opts,
 {
   if (opts->addressprint)
     {
-      fputs_filtered (paddress (gdbarch, addr), stream);
+      fputs_styled (paddress (gdbarch, addr), address_style.style (), stream);
       print_address_symbolic (gdbarch, addr, stream, do_demangle, " ");
     }
   else
@@ -1404,14 +1404,17 @@ info_address_command (const char *exp, int from_tty)
 	  fprintf_symbol_filtered (gdb_stdout, exp,
 				   current_language->la_language, DMGL_ANSI);
 	  printf_filtered ("\" is at ");
-	  fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
+	  fputs_styled (paddress (gdbarch, load_addr), address_style.style (),
+			gdb_stdout);
 	  printf_filtered (" in a file compiled without debugging");
 	  section = MSYMBOL_OBJ_SECTION (objfile, msymbol.minsym);
 	  if (section_is_overlay (section))
 	    {
 	      load_addr = overlay_unmapped_address (load_addr, section);
 	      printf_filtered (",\n -- loaded at ");
-	      fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
+	      fputs_styled (paddress (gdbarch, load_addr),
+			    address_style.style (),
+			    gdb_stdout);
 	      printf_filtered (" in overlay section %s",
 			       section->the_bfd_section->name);
 	    }
@@ -1451,12 +1454,14 @@ info_address_command (const char *exp, int from_tty)
     case LOC_LABEL:
       printf_filtered ("a label at address ");
       load_addr = SYMBOL_VALUE_ADDRESS (sym);
-      fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
+      fputs_styled (paddress (gdbarch, load_addr), address_style.style (),
+		    gdb_stdout);
       if (section_is_overlay (section))
 	{
 	  load_addr = overlay_unmapped_address (load_addr, section);
 	  printf_filtered (",\n -- loaded at ");
-	  fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
+	  fputs_styled (paddress (gdbarch, load_addr), address_style.style (),
+			gdb_stdout);
 	  printf_filtered (" in overlay section %s",
 			   section->the_bfd_section->name);
 	}
@@ -1485,12 +1490,14 @@ info_address_command (const char *exp, int from_tty)
     case LOC_STATIC:
       printf_filtered (_("static storage at address "));
       load_addr = SYMBOL_VALUE_ADDRESS (sym);
-      fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
+      fputs_styled (paddress (gdbarch, load_addr), address_style.style (),
+		    gdb_stdout);
       if (section_is_overlay (section))
 	{
 	  load_addr = overlay_unmapped_address (load_addr, section);
 	  printf_filtered (_(",\n -- loaded at "));
-	  fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
+	  fputs_styled (paddress (gdbarch, load_addr), address_style.style (),
+			gdb_stdout);
 	  printf_filtered (_(" in overlay section %s"),
 			   section->the_bfd_section->name);
 	}
@@ -1522,12 +1529,14 @@ info_address_command (const char *exp, int from_tty)
     case LOC_BLOCK:
       printf_filtered (_("a function at address "));
       load_addr = BLOCK_ENTRY_PC (SYMBOL_BLOCK_VALUE (sym));
-      fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
+      fputs_styled (paddress (gdbarch, load_addr), address_style.style (),
+		    gdb_stdout);
       if (section_is_overlay (section))
 	{
 	  load_addr = overlay_unmapped_address (load_addr, section);
 	  printf_filtered (_(",\n -- loaded at "));
-	  fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
+	  fputs_styled (paddress (gdbarch, load_addr), address_style.style (),
+			gdb_stdout);
 	  printf_filtered (_(" in overlay section %s"),
 			   section->the_bfd_section->name);
 	}
@@ -1557,12 +1566,15 @@ info_address_command (const char *exp, int from_tty)
 	      {
 		load_addr = BMSYMBOL_VALUE_ADDRESS (msym);
 		printf_filtered (_("static storage at address "));
-		fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
+		fputs_styled (paddress (gdbarch, load_addr),
+			      address_style.style (), gdb_stdout);
 		if (section_is_overlay (section))
 		  {
 		    load_addr = overlay_unmapped_address (load_addr, section);
 		    printf_filtered (_(",\n -- loaded at "));
-		    fputs_filtered (paddress (gdbarch, load_addr), gdb_stdout);
+		    fputs_styled (paddress (gdbarch, load_addr),
+				  address_style.style (),
+				  gdb_stdout);
 		    printf_filtered (_(" in overlay section %s"),
 				     section->the_bfd_section->name);
 		  }
diff --git a/gdb/stack.c b/gdb/stack.c
index 103b8c9..a139e9f 100644
--- a/gdb/stack.c
+++ b/gdb/stack.c
@@ -1176,7 +1176,8 @@ print_frame (struct frame_info *frame, int print_level,
 	  if (pc_p)
 	    uiout->field_core_addr ("addr", gdbarch, pc);
 	  else
-	    uiout->field_string ("addr", "<unavailable>");
+	    uiout->field_string ("addr", "<unavailable>",
+				 ui_out_style_kind::ADDRESS);
 	  annotate_frame_address_end ();
 	  uiout->text (" in ");
 	}
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index ceef606..b846b0c 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,5 +1,9 @@
 2018-12-28  Tom Tromey  <tom@tromey.com>
 
+	* gdb.base/style.exp: Update test to check for address styling.
+
+2018-12-28  Tom Tromey  <tom@tromey.com>
+
 	* gdb.base/style.exp: Add test for styling of "Reading symbols"
 	message.
 
diff --git a/gdb/testsuite/gdb.base/style.exp b/gdb/testsuite/gdb.base/style.exp
index 8bababc..191130c 100644
--- a/gdb/testsuite/gdb.base/style.exp
+++ b/gdb/testsuite/gdb.base/style.exp
@@ -43,7 +43,7 @@ save_vars { env(TERM) } {
 
     gdb_test "break main" "file $base_file_expr.*"
 
-    gdb_test "print &main" " = .* <$main_expr>"
+    gdb_test "print &main" " = .* \033\\\[34m$hex\033\\\[m <$main_expr>"
 
     gdb_exit
     gdb_spawn
diff --git a/gdb/ui-out.c b/gdb/ui-out.c
index 761d6c0..49f04dd 100644
--- a/gdb/ui-out.c
+++ b/gdb/ui-out.c
@@ -469,7 +469,8 @@ void
 ui_out::field_core_addr (const char *fldname, struct gdbarch *gdbarch,
 			 CORE_ADDR address)
 {
-  field_string (fldname, print_core_address (gdbarch, address));
+  field_string (fldname, print_core_address (gdbarch, address),
+		ui_out_style_kind::ADDRESS);
 }
 
 void
diff --git a/gdb/ui-out.h b/gdb/ui-out.h
index 93be9a9..96466d8 100644
--- a/gdb/ui-out.h
+++ b/gdb/ui-out.h
@@ -77,7 +77,9 @@ enum class ui_out_style_kind
   /* Function name.  */
   FUNCTION,
   /* Variable name.  */
-  VARIABLE
+  VARIABLE,
+  /* Address.  */
+  ADDRESS
 };
 
 class ui_out


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]