]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Add line-number styling
authorTom Tromey <tom@tromey.com>
Sat, 14 Sep 2024 21:07:17 +0000 (15:07 -0600)
committerTom Tromey <tom@tromey.com>
Mon, 30 Sep 2024 19:23:35 +0000 (13:23 -0600)
This patch adds separate styling for line numbers.  That is, whenever
gdb prints a source line number, it uses this style.

v2 includes a change to ensure that %ps works in query.

Reviewed-By: Eli Zaretskii <eliz@gnu.org>
Reviewed-by: Keith Seitz <keiths@redhat.com>
28 files changed:
gdb/NEWS
gdb/breakpoint.c
gdb/cli-out.c
gdb/cli-out.h
gdb/cli/cli-cmds.c
gdb/cli/cli-style.c
gdb/cli/cli-style.h
gdb/doc/gdb.texinfo
gdb/infcmd.c
gdb/mi/mi-out.c
gdb/mi/mi-out.h
gdb/python/py-framefilter.c
gdb/python/py-mi.c
gdb/python/py-uiout.h
gdb/source.c
gdb/stack.c
gdb/symmisc.c
gdb/testsuite/gdb.base/style-logging.exp
gdb/testsuite/gdb.base/style.exp
gdb/testsuite/lib/gdb-utils.exp
gdb/testsuite/lib/gdb.exp
gdb/tracepoint.c
gdb/tui/tui-source.c
gdb/tui/tui-source.h
gdb/tui/tui-winsource.h
gdb/ui-out.c
gdb/ui-out.h
gdb/utils.c

index f9b24758ea8585d02b7190e57ad43f3c000d4439..3a0c8d1049fe5438b2eb37e0863c1f1c12f88800 100644 (file)
--- a/gdb/NEWS
+++ b/gdb/NEWS
 
 * New commands
 
+set style line-number foreground COLOR
+set style line-number background COLOR
+set style line-number intensity VALUE
+  Control the styling of line numbers printed by GDB.
+
 maintenance info inline-frames [ADDRESS]
   New command which displays GDB's inline-frame information for the
   current address, or for ADDRESS if specified.  The output identifies
index d161e24097af74ebe6932ce668a9ac8e4a159139..b80b3522dcb721a53c726e5a00e7d10054b4e78a 100644 (file)
@@ -6371,7 +6371,8 @@ print_breakpoint_location (const breakpoint *b, const bp_location *loc)
       if (uiout->is_mi_like_p ())
        uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
       
-      uiout->field_signed ("line", loc->line_number);
+      uiout->field_signed ("line", loc->line_number,
+                          line_number_style.style ());
     }
   else if (loc)
     {
@@ -11799,10 +11800,11 @@ code_breakpoint::say_where () const
            {
              const char *filename
                = symtab_to_filename_for_display (bl.symtab);
-             gdb_printf (": file %ps, line %d.",
+             gdb_printf (": file %ps, line %ps.",
                          styled_string (file_name_style.style (),
                                         filename),
-                         bl.line_number);
+                         styled_string (line_number_style.style (),
+                                        pulongest (bl.line_number)));
            }
          else
            /* This is not ideal, but each location may have a
@@ -12832,7 +12834,7 @@ update_static_tracepoint (tracepoint *tp, struct symtab_and_line sal)
              uiout->field_string ("fullname", fullname);
            }
 
-         uiout->field_signed ("line", sal2.line);
+         uiout->field_signed ("line", sal2.line, line_number_style.style ());
          uiout->text ("\n");
 
          tp->first_loc ().line_number = sal2.line;
index 1c303f096626308d1942920d69c8787e3cd3e20b..d8a542d1b9be1416b87754737e8d64cc4dcf9e08 100644 (file)
@@ -94,13 +94,14 @@ cli_ui_out::do_end (ui_out_type type)
 
 void
 cli_ui_out::do_field_signed (int fldno, int width, ui_align alignment,
-                            const char *fldname, LONGEST value)
+                            const char *fldname, LONGEST value,
+                            const ui_file_style &style)
 {
   if (m_suppress_output)
     return;
 
   do_field_string (fldno, width, alignment, fldname, plongest (value),
-                  ui_file_style ());
+                  style);
 }
 
 /* output an unsigned field */
index f17cb0c9856ec75e0530978ff68b432503f71369..f0654b2063e1671678b091ca073e9e384273da28 100644 (file)
@@ -52,7 +52,8 @@ protected:
   virtual void do_begin (ui_out_type type, const char *id) override;
   virtual void do_end (ui_out_type type) override;
   virtual void do_field_signed (int fldno, int width, ui_align align,
-                               const char *fldname, LONGEST value) override;
+                               const char *fldname, LONGEST value,
+                               const ui_file_style &style) override;
   virtual void do_field_unsigned (int fldno, int width, ui_align align,
                                  const char *fldname, ULONGEST value)
     override;
index a0e28eb05629810cbb88ffde0c528045a0000cfa..2e57b0d3cb28cbd536008efc291b7b8d655934a2 100644 (file)
@@ -2116,9 +2116,11 @@ print_sal_location (const symtab_and_line &sal)
   const char *sym_name = NULL;
   if (sal.symbol != NULL)
     sym_name = sal.symbol->print_name ();
-  gdb_printf (_("file: \"%s\", line number: %d, symbol: \"%s\"\n"),
+  gdb_printf (_("file: \"%s\", line number: %ps, symbol: \"%s\"\n"),
              symtab_to_filename_for_display (sal.symtab),
-             sal.line, sym_name != NULL ? sym_name : "???");
+             styled_string (line_number_style.style (),
+                            pulongest (sal.line)),
+             sym_name != NULL ? sym_name : "???");
 }
 
 /* Print a list of files and line numbers which a user may choose from
index 5928998e9cae3f58a6b5178001ee00d23d4042c7..36a8bd9c526f90fb1e825bafc0110b32859c96b9 100644 (file)
@@ -126,6 +126,10 @@ cli_style_option disasm_comment_style ("comment", ui_file_style::WHITE,
 
 /* See cli-style.h.  */
 
+cli_style_option line_number_style ("line-number", ui_file_style::DIM);
+
+/* See cli-style.h.  */
+
 cli_style_option::cli_style_option (const char *name,
                                    ui_file_style::basic_color fg,
                                    ui_file_style::intensity intensity)
@@ -529,6 +533,14 @@ then this style has no effect."),
                                             &style_disasm_show_list,
                                             false);
 
+  line_number_style.add_setshow_commands (no_class, _("\
+Line number display styling.\n\
+Configure colors and display intensity for line numbers\n\
+The \"line-number\" style is used when GDB displays line numbers\n\
+coming from your source code."),
+                                      &style_set_list, &style_show_list,
+                                      false);
+
   /* Setup 'disassembler address' style and 'disassembler symbol' style,
      these are aliases for 'address' and 'function' styles respectively.  */
   add_alias_cmd ("address", address_prefix_cmds.set, no_class, 0,
index 1663b4ee53c9719768c1269ba73e123a1ce31912..5052b867cfab864dc3b3219f8cb09b1c514a4e8f 100644 (file)
@@ -145,6 +145,9 @@ extern cli_style_option tui_active_border_style;
 /* The style to use for the GDB version string.  */
 extern cli_style_option version_style;
 
+/* The style for a line number.  */
+extern cli_style_option line_number_style;
+
 /* True if source styling is enabled.  */
 extern bool source_styling;
 
index 86f25e999d83a07c235d0c8d6de9838781351527..cc1b69c6978a655eee16912fe4ff8bedff223201 100644 (file)
@@ -27852,6 +27852,10 @@ if @value{GDBN} is using its builtin disassembler library for styling
 (@pxref{style_disassembler_enabled,,@kbd{set style disassembler
 enabled}}).
 
+@item line-number
+Control the styling of line numbers.  By default, this style's
+intensity is dim.
+
 @item variable
 Control the styling of variable names.  These are managed with the
 @code{set style variable} family of commands.  By default, this style's
index 5e9af413e3376e1e9900ab818975305d2efba37a..74873b9f7c80fa2ec299f528cde748161882c175 100644 (file)
@@ -1103,7 +1103,9 @@ jump_command (const char *arg, int from_tty)
                                          find_pc_mapped_section (sal.pc));
   if (fn != nullptr && sfn != fn)
     {
-      if (!query (_("Line %d is not in `%s'.  Jump anyway? "), sal.line,
+      if (!query (_("Line %ps is not in `%s'.  Jump anyway? "),
+                 styled_string (line_number_style.style (),
+                                pulongest (sal.line)),
                  fn->print_name ()))
        {
          error (_("Not confirmed."));
index ff93d2cd4485d88f03d21efd50c265273b88e966..9ad26e76a30f505de7ce0abf1c9368654b950c7a 100644 (file)
@@ -35,8 +35,8 @@ mi_ui_out::do_table_begin (int nr_cols, int nr_rows,
                           const char *tblid)
 {
   open (tblid, ui_out_type_tuple);
-  do_field_signed (-1, -1, ui_left, "nr_rows", nr_rows);
-  do_field_signed (-1, -1, ui_left, "nr_cols", nr_cols);
+  do_field_signed (-1, -1, ui_left, "nr_rows", nr_rows, ui_file_style ());
+  do_field_signed (-1, -1, ui_left, "nr_cols", nr_cols, ui_file_style ());
   open ("hdr", ui_out_type_list);
 }
 
@@ -67,8 +67,8 @@ mi_ui_out::do_table_header (int width, ui_align alignment,
                            const std::string &col_hdr)
 {
   open (NULL, ui_out_type_tuple);
-  do_field_signed (0, 0, ui_center, "width", width);
-  do_field_signed (0, 0, ui_center, "alignment", alignment);
+  do_field_signed (0, 0, ui_center, "width", width, ui_file_style ());
+  do_field_signed (0, 0, ui_center, "alignment", alignment, ui_file_style ());
   do_field_string (0, 0, ui_center, "col_name", col_name.c_str (),
                   ui_file_style ());
   do_field_string (0, width, alignment, "colhdr", col_hdr.c_str (),
@@ -96,10 +96,11 @@ mi_ui_out::do_end (ui_out_type type)
 
 void
 mi_ui_out::do_field_signed (int fldno, int width, ui_align alignment,
-                           const char *fldname, LONGEST value)
+                           const char *fldname, LONGEST value,
+                           const ui_file_style &style)
 {
   do_field_string (fldno, width, alignment, fldname, plongest (value),
-                  ui_file_style ());
+                  style);
 }
 
 /* Output an unsigned field.  */
index a21a34fb8c7f5d4505018d9cf69979be2b83355d..9ad419e5c052912b09332cb5a9c46c0880fe3bf9 100644 (file)
@@ -62,7 +62,8 @@ protected:
   virtual void do_begin (ui_out_type type, const char *id) override;
   virtual void do_end (ui_out_type type) override;
   virtual void do_field_signed (int fldno, int width, ui_align align,
-                               const char *fldname, LONGEST value) override;
+                               const char *fldname, LONGEST value,
+                               const ui_file_style &style) override;
   virtual void do_field_unsigned (int fldno, int width, ui_align align,
                                  const char *fldname, ULONGEST value)
     override;
index 9f9032fbe179e0072b4512ff6c5da3f367ae937c..daec6dd91514413bc1d737e9f4a592e82f126d3b 100644 (file)
@@ -1007,7 +1007,7 @@ py_print_frame (PyObject *filter, frame_filter_flags flags,
 
              out->text (":");
              annotate_frame_source_line ();
-             out->field_signed ("line", line);
+             out->field_signed ("line", line, line_number_style.style ());
            }
        }
       if (out->is_mi_like_p ())
index 632de104ea0949aad72e1aceb31b8d06518cb472..f0e28d9d8181aea749084009751d1deba5c29ca6 100644 (file)
@@ -86,7 +86,8 @@ py_ui_out::do_end (ui_out_type type)
 
 void
 py_ui_out::do_field_signed (int fldno, int width, ui_align align,
-                           const char *fldname, LONGEST value)
+                           const char *fldname, LONGEST value,
+                           const ui_file_style &style)
 {
   if (m_error.has_value ())
     return;
index a2fc90e955b7f0e777a2c28fbf1c3325914d980b..5f8c53052cb7681b574140faf18795e371d65a93 100644 (file)
@@ -86,7 +86,8 @@ protected:
   void do_end (ui_out_type type) override;
 
   void do_field_signed (int fldno, int width, ui_align align,
-                       const char *fldname, LONGEST value) override;
+                       const char *fldname, LONGEST value,
+                       const ui_file_style &style) override;
   void do_field_unsigned (int fldno, int width, ui_align align,
                          const char *fldname, ULONGEST value) override;
 
index b9122c421a023ce010f5117f0e75347fa751116d..61ed088ba696ceeef32520d6afed3c3ce681c98c 100644 (file)
@@ -1345,7 +1345,7 @@ print_source_lines_base (struct symtab *s, int line, int stopline,
             fields.  ui_source_list is set only for CLI, not for
             TUI.  */
 
-         uiout->field_signed ("line", line);
+         uiout->field_signed ("line", line, line_number_style.style ());
          uiout->text ("\tin ");
 
          uiout->field_string ("file", symtab_to_filename_for_display (s),
@@ -1389,8 +1389,10 @@ print_source_lines_base (struct symtab *s, int line, int stopline,
          uiout->text (symtab_to_filename_for_display (s));
          uiout->text (":");
        }
-      xsnprintf (buf, sizeof (buf), "%d\t", new_lineno++);
-      uiout->text (buf);
+
+      uiout->message ("%ps\t", styled_string (line_number_style.style (),
+                                             pulongest (new_lineno)));
+      ++new_lineno;
 
       while (*iter != '\0')
        {
@@ -1551,8 +1553,9 @@ info_line_command (const char *arg, int from_tty)
 
          if (start_pc == end_pc)
            {
-             gdb_printf ("Line %d of \"%s\"",
-                         sal.line,
+             gdb_printf ("Line %ps of \"%s\"",
+                         styled_string (line_number_style.style (),
+                                        pulongest (sal.line)),
                          symtab_to_filename_for_display (sal.symtab));
              gdb_stdout->wrap_here (2);
              gdb_printf (" is at address ");
@@ -1562,8 +1565,9 @@ info_line_command (const char *arg, int from_tty)
            }
          else
            {
-             gdb_printf ("Line %d of \"%s\"",
-                         sal.line,
+             gdb_printf ("Line %ps of \"%s\"",
+                         styled_string (line_number_style.style (),
+                                        pulongest (sal.line)),
                          symtab_to_filename_for_display (sal.symtab));
              gdb_stdout->wrap_here (2);
              gdb_printf (" starts at address ");
@@ -1589,8 +1593,10 @@ info_line_command (const char *arg, int from_tty)
        /* Is there any case in which we get here, and have an address
           which the user would want to see?  If we have debugging symbols
           and no line numbers?  */
-       gdb_printf (_("Line number %d is out of range for \"%s\".\n"),
-                   sal.line, symtab_to_filename_for_display (sal.symtab));
+       gdb_printf (_("Line number %ps is out of range for \"%s\".\n"),
+                   styled_string (line_number_style.style (),
+                                  pulongest (sal.line)),
+                   symtab_to_filename_for_display (sal.symtab));
     }
 }
 \f
index 7420780b5ed3c825bee4274fba697f87e82c2dec..4a3e7e4ff006e7ac22d13a7fdbfa918cfe0d3b31 100644 (file)
@@ -1417,7 +1417,7 @@ print_frame (struct ui_out *uiout,
        annotate_frame_source_file_end ();
        uiout->text (":");
        annotate_frame_source_line ();
-       uiout->field_signed ("line", sal.line);
+       uiout->field_signed ("line", sal.line, line_number_style.style ());
        annotate_frame_source_end ();
       }
 
index 3b004aee1d85385b9222efad9345650de0c2406e..a484fb2d1a6fd7cdd3d64bba0ccc2e66040f1fa6 100644 (file)
@@ -999,7 +999,8 @@ maintenance_print_one_line_table (struct symtab *symtab, void *data)
          ui_out_emit_tuple tuple_emitter (uiout, nullptr);
          uiout->field_signed ("index", i);
          if (item->line > 0)
-           uiout->field_signed ("line", item->line);
+           uiout->field_signed ("line", item->line,
+                                line_number_style.style ());
          else
            uiout->field_string ("line", _("END"));
          uiout->field_core_addr ("rel-address", objfile->arch (),
index 882418b01fbc7a85b4d89506944f478e637508bd..d866d36e02a165e59c344ba4399474c34b0a7efc 100644 (file)
@@ -41,7 +41,8 @@ with_ansi_styling_terminal {
 
     set main_expr [style main function]
     set base_file_expr [style ".*style\\.c" file]
-    set file_expr "$base_file_expr:\[0-9\]"
+    set line_expr [style $decimal line-number]
+    set file_expr "$base_file_expr:$line_expr"
     set arg_expr [style "arg." variable]
     gdb_test "frame" \
        "$main_expr.*$arg_expr.*$arg_expr.*$file_expr.*"
index aff654537ac73a5435df7ec3750ef0f190cf6c31..d29b2381923dec76646226792212778f30a7aa52 100644 (file)
@@ -99,7 +99,8 @@ proc run_style_tests { } {
 
        set main_expr [limited_style main function]
        set base_file_expr [limited_style ".*style\\.c" file]
-       set file_expr "$base_file_expr:\[0-9\]+"
+       set line_expr [limited_style $decimal line-number]
+       set file_expr "$base_file_expr:$line_expr"
        set arg_expr [limited_style "arg." variable]
 
        # On some embedded targets that don't fully support argc/argv,
@@ -109,12 +110,12 @@ proc run_style_tests { } {
        gdb_test "frame" \
            [multi_line \
                 "#0\\s+$main_expr\\s+\\($arg_expr=$decimal,\\s+$arg_expr=$hex.*\\)\\s+at\\s+$file_expr" \
-                "\[0-9\]+\\s+.*return.* break here .*"]
+                "$line_expr\\s+.*return.* break here .*"]
        gdb_test "info breakpoints" "$main_expr at $file_expr.*"
 
        gdb_test_no_output "set style sources off"
        gdb_test "frame" \
-           "\r\n\[^\033\]*break here.*" \
+           "\r\n$line_expr\[^\033\]*break here.*" \
            "frame without sources styling"
        gdb_test_no_output "set style sources on"
 
@@ -139,18 +140,18 @@ proc run_style_tests { } {
                [multi_line \
                     "#0\\s+$main_expr\\s+\\($arg_expr=$decimal,\\s+$arg_expr=$hex\\)" \
                     "\\s+at\\s+$file_expr" \
-                    "\[0-9\]+\\s+.*return.* break here .*"]
+                    "$line_expr\\s+.*return.* break here .*"]
            set re1_styled \
                [multi_line \
                     "#0\\s+$main_expr\\s+\\($arg_expr=$decimal,\\s+" \
                     "\\s+$arg_expr=$hex.*\\)" \
                     "\\s+at\\s+$file_expr" \
-                    "\[0-9\]+\\s+.*return.* break here .*"]
+                    "$line_expr\\s+.*return.* break here .*"]
            set re2_styled \
                [multi_line \
                     "#0\\s+$main_expr\\s+\\($arg_expr=.*" \
                     "\\s+$arg_expr=$hex.*\\)\\s+at\\s+$file_expr" \
-                    "\[0-9\]+\\s+.*return.* break here .*"]
+                    "$line_expr\\s+.*return.* break here .*"]
 
            # The length of the line containing argv containing:
            # - 4 leading spaces
index 41989da3ed2084f44e74228a4b790a7ff18af93e..a1fdf7381a152ab9abc0f8cf4f1e1c7c0235e22c 100644 (file)
@@ -64,7 +64,7 @@ proc string_list_to_regexp { args } {
 
 # STYLE can either be the payload part of an ANSI terminal sequence,
 # or a shorthand for one of the gdb standard styles: "file",
-# "function", "variable", or "address".
+# "function", "variable", "address", etc.
 
 proc style {str style} {
     switch -exact -- $style {
@@ -76,6 +76,7 @@ proc style {str style} {
        address { set style 34 }
        metadata { set style 2 }
        version { set style "35;1" }
+       line-number { set style 2 }
        none { return $str }
     }
     return "\033\\\[${style}m${str}\033\\\[m"
index 0475fb95161eac62d30a998a1655262e76777f79..738cd2fe9c658b000f8ab9e3f7ad8a9a51cd0b60 100644 (file)
@@ -791,7 +791,7 @@ proc runto { linespec args } {
     # the "at foo.c:36" output we get with -g.
     # the "in func" output we get without -g.
     gdb_expect {
-       -re "(?:Break|Temporary break).* at .*:$decimal.*$gdb_prompt $" {
+       -re "(?:Break|Temporary break).* at .*:.*$decimal.*$gdb_prompt $" {
            if { $print_pass } {
                pass $test_name
            }
index a5a2e698a14d00d6663269f46c7d14b5429ebfd0..8cf96fd86183d4ee20ac92f574c18e93d99ce53a 100644 (file)
@@ -2351,8 +2351,9 @@ tfind_line_command (const char *args, int from_tty)
     {
       if (start_pc == end_pc)
        {
-         gdb_printf ("Line %d of \"%s\"",
-                     sal.line,
+         gdb_printf ("Line %ps of \"%s\"",
+                     styled_string (line_number_style.style (),
+                                    pulongest (sal.line)),
                      symtab_to_filename_for_display (sal.symtab));
          gdb_stdout->wrap_here (2);
          gdb_printf (" is at address ");
@@ -2363,8 +2364,9 @@ tfind_line_command (const char *args, int from_tty)
          if (sal.line > 0
              && find_line_pc_range (sal, &start_pc, &end_pc)
              && start_pc != end_pc)
-           gdb_printf ("Attempting to find line %d instead.\n",
-                       sal.line);
+           gdb_printf ("Attempting to find line %ps instead.\n",
+                       styled_string (line_number_style.style (),
+                                      pulongest (sal.line)));
          else
            error (_("Cannot find a good line."));
        }
@@ -3644,7 +3646,7 @@ print_one_static_tracepoint_marker (int count,
       else
        uiout->field_skip ("fullname");
 
-      uiout->field_signed ("line", sal.line);
+      uiout->field_signed ("line", sal.line, line_number_style.style ());
     }
   else
     {
index ee64e4172b51c372793a6a343a45f211abffcbf3..503fb00902f20ae7c6ce32b0896891190e8dd393 100644 (file)
 #include "tui/tui-winsource.h"
 #include "tui/tui-source.h"
 #include "tui/tui-location.h"
+#include "tui/tui-io.h"
+#include "cli/cli-style.h"
+
+tui_source_window::tui_source_window ()
+{
+  line_number_style.changed.attach
+    (std::bind (&tui_source_window::style_changed, this),
+     m_src_observable, "tui-source");
+}
+
+tui_source_window::~tui_source_window ()
+{
+  line_number_style.changed.detach (m_src_observable);
+}
 
 /* Function to display source in the source window.  */
 bool
@@ -247,5 +261,7 @@ tui_source_window::show_line_number (int offset) const
                 tui_left_margin_verbose ? "%0*d%c" : "%*d%c", m_digits - 1,
                 lineno, space);
     }
+  tui_apply_style (handle.get (), line_number_style.style ());
   display_string (text);
+  tui_apply_style (handle.get (), ui_file_style ());
 }
index f32167f42246dfdd2f05f46b6cb5071548e8fd27..d8f7189ad73b28533c6eba3c9a64046111614147 100644 (file)
@@ -30,7 +30,8 @@
 
 struct tui_source_window : public tui_source_window_base
 {
-  tui_source_window () = default;
+  tui_source_window ();
+  ~tui_source_window ();
 
   DISABLE_COPY_AND_ASSIGN (tui_source_window);
 
@@ -81,6 +82,9 @@ private:
 
   /* It is the resolved form as returned by symtab_to_fullname.  */
   gdb::unique_xmalloc_ptr<char> m_fullname;
+
+  /* A token used to register and unregister an observer.  */
+  gdb::observers::token m_src_observable;
 };
 
 /* Return the instance of the source window.  */
index 29828c121bd6af8022f053eeee2554f09a6b4479..a262c635e5a37c343889ab7862f542ed964ecfd7 100644 (file)
@@ -189,6 +189,11 @@ public:
      update_source_windows_with_addr.  */
   void update_source_window_with_addr (struct gdbarch *, CORE_ADDR);
 
+protected:
+
+  /* Called when a user style setting is changed.  */
+  void style_changed ();
+
 private:
 
   /* Used for horizontal scroll.  */
@@ -236,9 +241,6 @@ private:
      the initial escape that sets the color will still be applied.  */
   void puts_to_pad_with_skip (const char *string, int skip);
 
-  /* Called when the user "set style enabled" setting is changed.  */
-  void style_changed ();
-
   /* A token used to register and unregister an observer.  */
   gdb::observers::token m_observable;
 
index 7e9f238fcf6e400862541b2605ab5a2651700888..3330cc87ebb59e3db42dedd2a76ea5cd4e2ea595 100644 (file)
@@ -433,7 +433,8 @@ ui_out::end (ui_out_type type)
 }
 
 void
-ui_out::field_signed (const char *fldname, LONGEST value)
+ui_out::field_signed (const char *fldname, LONGEST value,
+                     const ui_file_style &style)
 {
   int fldno;
   int width;
@@ -441,7 +442,7 @@ ui_out::field_signed (const char *fldname, LONGEST value)
 
   verify_field (&fldno, &width, &align);
 
-  do_field_signed (fldno, width, align, fldname, value);
+  do_field_signed (fldno, width, align, fldname, value, style);
 }
 
 void
@@ -454,7 +455,8 @@ ui_out::field_fmt_signed (int input_width, ui_align input_align,
 
   verify_field (&fldno, &width, &align);
 
-  do_field_signed (fldno, input_width, input_align, fldname, value);
+  do_field_signed (fldno, input_width, input_align, fldname, value,
+                  ui_file_style ());
 }
 
 /* See ui-out.h.  */
index ef9ce4fad33581c367363902201cc7f73a80870b..f9d96dea87598bd710ac54eb811db48c472ab8a6 100644 (file)
@@ -182,7 +182,8 @@ class ui_out
   void begin (ui_out_type type, const char *id);
   void end (ui_out_type type);
 
-  void field_signed (const char *fldname, LONGEST value);
+  void field_signed (const char *fldname, LONGEST value,
+                    const ui_file_style &style = ui_file_style ());
   void field_fmt_signed (int width, ui_align align, const char *fldname,
                         LONGEST value);
   /* Like field_signed, but print an unsigned value.  */
@@ -346,7 +347,8 @@ protected:
   virtual void do_begin (ui_out_type type, const char *id) = 0;
   virtual void do_end (ui_out_type type) = 0;
   virtual void do_field_signed (int fldno, int width, ui_align align,
-                               const char *fldname, LONGEST value) = 0;
+                               const char *fldname, LONGEST value,
+                               const ui_file_style &style) = 0;
   virtual void do_field_unsigned (int fldno, int width, ui_align align,
                                  const char *fldname, ULONGEST value) = 0;
   virtual void do_field_skip (int fldno, int width, ui_align align,
index c503ff7e579d2ec6acaf7e1c46d6cebc9aadbeb3..a1bf9e46e02e519b54004d3246659895a92d7a07 100644 (file)
@@ -819,7 +819,9 @@ defaulted_query (const char *ctlstr, const char defchar, va_list args)
     }
 
   /* Format the question outside of the loop, to avoid reusing args.  */
-  std::string question = string_vprintf (ctlstr, args);
+  string_file tem (gdb_stdout->can_emit_style_escape ());
+  gdb_vprintf (&tem, ctlstr, args);
+  std::string question = tem.release ();
   std::string prompt
     = string_printf (_("%s%s(%s or %s) %s"),
                     annotation_level > 1 ? "\n\032\032pre-query\n" : "",