gdb: Pass std::strings to ui_out::field_string () where convenient
authorMarco Barisione <mbarisione@undo.io>
Wed, 19 May 2021 12:58:41 +0000 (13:58 +0100)
committerMarco Barisione <mbarisione@undo.io>
Wed, 19 May 2021 12:58:41 +0000 (13:58 +0100)
While adding a ui_out::text () overload accepting a std::string, I
noticed that several callers of ui_out::field_string () were converting
std::string instances to char pointers even if not necessary.

gdb/ChangeLog:

* ui-out.c (ui_out::field_string): Add missing style_argument
to the overload accepting a std::string, to make it equivalent
to the char pointer version.
* ui-out.h (class ui_out): Ditto.
* break-catch-sig.c (signal_catchpoint_print_one): Do not
convert std::strings to char pointers before passing them to
ui_out::field_string ().
* break-catch-throw.c (print_one_detail_exception_catchpoint):
Ditto.
* cli/cli-setshow.c (do_show_command): Ditto.
* disasm.c (gdb_pretty_print_disassembler::pretty_print_insn):
Ditto.
* infcmd.c (print_return_value_1): Ditto.
* inferior.c (print_inferior): Ditto.
* linux-thread-db.c (info_auto_load_libthread_db): Ditto.
* mi/mi-cmd-var.c (print_varobj): Ditto.
(mi_cmd_var_set_format): Ditto.
(mi_cmd_var_info_type): Ditto.
(mi_cmd_var_info_expression): Ditto.
(mi_cmd_var_evaluate_expression): Ditto.
(mi_cmd_var_assign): Ditto.
(varobj_update_one): Ditto.
* mi/mi-main.c (list_available_thread_groups): Ditto.
(mi_cmd_data_read_memory_bytes): Ditto.
(mi_cmd_trace_frame_collected): Ditto.
* osdata.c (info_osdata): Ditto.
* probe.c (info_probes_for_spops): Ditto.
* target-connection.c (print_connection): Ditto.
* thread.c (print_thread_info_1): Ditto.
* tracepoint.c (print_one_static_tracepoint_marker): Ditto.

16 files changed:
gdb/break-catch-sig.c
gdb/break-catch-throw.c
gdb/cli/cli-setshow.c
gdb/disasm.c
gdb/infcmd.c
gdb/inferior.c
gdb/linux-thread-db.c
gdb/mi/mi-cmd-var.c
gdb/mi/mi-main.c
gdb/osdata.c
gdb/probe.c
gdb/target-connection.c
gdb/thread.c
gdb/tracepoint.c
gdb/ui-out.c
gdb/ui-out.h

index 31a622c83e59e810f1cc6deed32ced2405c666d0..9530dea86ba4ab192f3b94192d6929f62d9b688e 100644 (file)
@@ -237,7 +237,7 @@ signal_catchpoint_print_one (struct breakpoint *b,
 
          text += name;
        }
-      uiout->field_string ("what", text.c_str ());
+      uiout->field_string ("what", text);
     }
   else
     uiout->field_string ("what",
index c8d5ccd515284d8bf8c724b2a01b995a906067ca..7fc6953b90cd597a871f81d5ab4509920a4cd8f8 100644 (file)
@@ -300,7 +300,7 @@ print_one_detail_exception_catchpoint (const struct breakpoint *b,
   if (!cp->exception_rx.empty ())
     {
       uiout->text (_("\tmatching: "));
-      uiout->field_string ("regexp", cp->exception_rx.c_str ());
+      uiout->field_string ("regexp", cp->exception_rx);
       uiout->text ("\n");
     }
 }
index f6a594d69a2b3a23eeb10f3ba45c08cd544454b3..5fd5fd15c6ad119f35f9aa83d731be5cf3975fdd 100644 (file)
@@ -714,7 +714,7 @@ do_show_command (const char *arg, int from_tty, struct cmd_list_element *c)
      versions of code to print the value out.  */
 
   if (uiout->is_mi_like_p ())
-    uiout->field_string ("value", val.c_str ());
+    uiout->field_string ("value", val);
   else
     {
       if (c->show_value_func != NULL)
index eb69e89017b2482edee386e6a49c550d3f4854df..70c54220a29819895550cb9c2f9505a5948bd023 100644 (file)
@@ -244,7 +244,7 @@ gdb_pretty_print_disassembler::pretty_print_insn (const struct disasm_insn *insn
           the future.  */
        m_uiout->text (" <");
        if (!omit_fname)
-         m_uiout->field_string ("func-name", name.c_str (),
+         m_uiout->field_string ("func-name", name,
                                 function_name_style.style ());
        /* For negative offsets, avoid displaying them as +-N; the sign of
           the offset takes the place of the "+" here.  */
index a22d815f2302a3b3fcd49503020975e7830bc5d4..4351409af500022216f5c98f1e1277afa59499f6 100644 (file)
@@ -1539,7 +1539,7 @@ print_return_value_1 (struct ui_out *uiout, struct return_value_info *rv)
     {
       std::string type_name = type_to_string (rv->type);
       uiout->text ("Value returned has type: ");
-      uiout->field_string ("return-type", type_name.c_str ());
+      uiout->field_string ("return-type", type_name);
       uiout->text (".");
       uiout->text (" Cannot determine contents\n");
     }
index a8779c354b5d4a76dc97bc8fcd1fbae2fd53c0b5..059839ec962697a7116c4a772637e5c62511f1ab 100644 (file)
@@ -529,7 +529,7 @@ print_inferior (struct ui_out *uiout, const char *requested_inferiors)
       uiout->field_string ("target-id", inferior_pid_to_str (inf->pid));
 
       std::string conn = uiout_field_connection (inf->process_target ());
-      uiout->field_string ("connection-id", conn.c_str ());
+      uiout->field_string ("connection-id", conn);
 
       if (inf->pspace->exec_filename != nullptr)
        uiout->field_string ("exec", inf->pspace->exec_filename.get ());
index 2c75cd607949208ff1e4a191709888c590016ed2..9925b02e7780258c611a2ee9e8a9a90bb73ae947 100644 (file)
@@ -1935,7 +1935,7 @@ info_auto_load_libthread_db (const char *args, int from_tty)
            i++;
          }
 
-       uiout->field_string ("pids", pids.c_str ());
+       uiout->field_string ("pids", pids);
 
        uiout->text ("\n");
       }
index e54a5e04970057b8888f7543696cd0c9cb442c16..61bc169304b12df3fa4eff79c219d97d80f5ae64 100644 (file)
@@ -56,7 +56,7 @@ print_varobj (struct varobj *var, enum print_values print_values,
     {
       std::string exp = varobj_get_expression (var);
 
-      uiout->field_string ("exp", exp.c_str ());
+      uiout->field_string ("exp", exp);
     }
   uiout->field_signed ("numchild", varobj_get_num_children (var));
   
@@ -64,12 +64,12 @@ print_varobj (struct varobj *var, enum print_values print_values,
     {
       std::string val = varobj_get_value (var);
 
-      uiout->field_string ("value", val.c_str ());
+      uiout->field_string ("value", val);
     }
 
   std::string type = varobj_get_type (var);
   if (!type.empty ())
-    uiout->field_string ("type", type.c_str ());
+    uiout->field_string ("type", type);
 
   thread_id = varobj_get_thread_id (var);
   if (thread_id > 0)
@@ -236,7 +236,7 @@ mi_cmd_var_set_format (const char *command, char **argv, int argc)
  
   /* Report the value in the new format.  */
   std::string val = varobj_get_value (var);
-  uiout->field_string ("value", val.c_str ());
+  uiout->field_string ("value", val);
 }
 
 void
@@ -423,7 +423,7 @@ mi_cmd_var_info_type (const char *command, char **argv, int argc)
   var = varobj_get_handle (argv[0]);
 
   std::string type_name = varobj_get_type (var);
-  uiout->field_string ("type", type_name.c_str ());
+  uiout->field_string ("type", type_name);
 }
 
 void
@@ -461,7 +461,7 @@ mi_cmd_var_info_expression (const char *command, char **argv, int argc)
   uiout->field_string ("lang", lang->natural_name ());
 
   std::string exp = varobj_get_expression (var);
-  uiout->field_string ("exp", exp.c_str ());
+  uiout->field_string ("exp", exp);
 }
 
 void
@@ -545,13 +545,13 @@ mi_cmd_var_evaluate_expression (const char *command, char **argv, int argc)
     {
       std::string val = varobj_get_formatted_value (var, format);
 
-      uiout->field_string ("value", val.c_str ());
+      uiout->field_string ("value", val);
     }
   else
     {
       std::string val = varobj_get_value (var);
 
-      uiout->field_string ("value", val.c_str ());
+      uiout->field_string ("value", val);
     }
 }
 
@@ -582,7 +582,7 @@ mi_cmd_var_assign (const char *command, char **argv, int argc)
             "expression to variable object"));
 
   std::string val = varobj_get_value (var);
-  uiout->field_string ("value", val.c_str ());
+  uiout->field_string ("value", val);
 }
 
 /* Helper for mi_cmd_var_update - update each VAR.  */
@@ -692,7 +692,7 @@ varobj_update_one (struct varobj *var, enum print_values print_values,
            {
              std::string val = varobj_get_value (r.varobj);
 
-             uiout->field_string ("value", val.c_str ());
+             uiout->field_string ("value", val);
            }
          uiout->field_string ("in_scope", "true");
          break;
@@ -716,7 +716,7 @@ varobj_update_one (struct varobj *var, enum print_values print_values,
        {
          std::string type_name = varobj_get_type (r.varobj);
 
-         uiout->field_string ("new_type", type_name.c_str ());
+         uiout->field_string ("new_type", type_name);
        }
 
       if (r.type_changed || r.children_changed)
index 582a55490d171207a43ee213657eb20be74ecf5d..9d205f0208bba7b6822c7e14b97135f10b545682 100644 (file)
@@ -738,12 +738,12 @@ list_available_thread_groups (const std::set<int> &ids, int recurse)
 
       ui_out_emit_tuple tuple_emitter (uiout, NULL);
 
-      uiout->field_string ("id", pid->c_str ());
+      uiout->field_string ("id", *pid);
       uiout->field_string ("type", "process");
       if (cmd)
-       uiout->field_string ("description", cmd->c_str ());
+       uiout->field_string ("description", *cmd);
       if (user)
-       uiout->field_string ("user", user->c_str ());
+       uiout->field_string ("user", *user);
       if (cores)
        output_cores (uiout, "cores", cores->c_str ());
 
@@ -762,9 +762,9 @@ list_available_thread_groups (const std::set<int> &ids, int recurse)
                  const std::string *tid = get_osdata_column (child, "tid");
                  const std::string *tcore = get_osdata_column (child, "core");
 
-                 uiout->field_string ("id", tid->c_str ());
+                 uiout->field_string ("id", *tid);
                  if (tcore)
-                   uiout->field_string ("core", tcore->c_str ());
+                   uiout->field_string ("core", *tcore);
                }
            }
        }
@@ -1470,7 +1470,7 @@ mi_cmd_data_read_memory_bytes (const char *command, char **argv, int argc)
       std::string data = bin2hex (read_result.data.get (),
                                  (read_result.end - read_result.begin)
                                  * unit_size);
-      uiout->field_string ("contents", data.c_str ());
+      uiout->field_string ("contents", data);
     }
 }
 
@@ -2670,7 +2670,7 @@ mi_cmd_trace_frame_collected (const char *command, char **argv, int argc)
            if (target_read_memory (r.start, data.data (), r.length) == 0)
              {
                std::string data_str = bin2hex (data.data (), r.length);
-               uiout->field_string ("contents", data_str.c_str ());
+               uiout->field_string ("contents", data_str);
              }
            else
              uiout->field_skip ("contents");
index 2ff0f520b0b9e580490f5b3443b03755c2334403..bc621cb233226dc8683cb380ff8dee678a1a2552 100644 (file)
@@ -273,8 +273,7 @@ info_osdata (const char *type)
                 continue;
 
               snprintf (col_name, 32, "col%d", ix_cols);
-              uiout->field_string (col_name,
-                                   item.columns[ix_cols].value.c_str ());
+              uiout->field_string (col_name, item.columns[ix_cols].value);
             }
         }
 
index 9eccf82f25d994eb27f2be33954b17cb4bbdabd5..d9a06e53416d276ce7d3c238772d6f2ed2512777 100644 (file)
@@ -571,9 +571,8 @@ info_probes_for_spops (const char *arg, int from_tty,
        ui_out_emit_tuple tuple_emitter (current_uiout, "probe");
 
        current_uiout->field_string ("type", probe_type);
-       current_uiout->field_string ("provider",
-                                    probe.prob->get_provider ().c_str ());
-       current_uiout->field_string ("name", probe.prob->get_name ().c_str ());
+       current_uiout->field_string ("provider", probe.prob->get_provider ());
+       current_uiout->field_string ("name", probe.prob->get_name ());
        current_uiout->field_core_addr ("addr", probe.prob->get_gdbarch (),
                                        probe.prob->get_relocated_address
                                        (probe.objfile));
index 2f8e01d77e58b9b011afef60e431070d94c512d0..a649423e07e771457c623d1a5a18d4322752a271 100644 (file)
@@ -133,7 +133,7 @@ print_connection (struct ui_out *uiout, const char *requested_connections)
 
       uiout->field_signed ("number", t->connection_number);
 
-      uiout->field_string ("what", make_target_connection_string (t).c_str ());
+      uiout->field_string ("what", make_target_connection_string (t));
 
       uiout->field_string ("description", t->longname ());
 
index 87b6cbf74fd76bfc73d1dde9b8fdcc304441566f..40051013c0aa97364acb79c1694a02fa3118b4e4 100644 (file)
@@ -1184,8 +1184,7 @@ print_thread_info_1 (struct ui_out *uiout, const char *requested_threads,
            }
          else
            {
-             uiout->field_string ("target-id",
-                                  thread_target_id_str (tp).c_str ());
+             uiout->field_string ("target-id", thread_target_id_str (tp));
            }
 
          if (tp->state == THREAD_RUNNING)
index 7f6d3e4a16be52d8a8da87e5d8da415bb76b9b42..da0e976c869442fa12bca6a331416e243b3ebb12 100644 (file)
@@ -3678,7 +3678,7 @@ print_one_static_tracepoint_marker (int count,
      identifier!  */
   uiout->field_signed ("count", count);
 
-  uiout->field_string ("marker-id", marker.str_id.c_str ());
+  uiout->field_string ("marker-id", marker.str_id);
 
   uiout->field_fmt ("enabled", "%c",
                    !tracepoints.empty () ? 'y' : 'n');
@@ -3735,7 +3735,7 @@ print_one_static_tracepoint_marker (int count,
   uiout->text ("\n");
   uiout->text (extra_field_indent);
   uiout->text (_("Data: \""));
-  uiout->field_string ("extra-data", marker.extra.c_str ());
+  uiout->field_string ("extra-data", marker.extra);
   uiout->text ("\"\n");
 
   if (!tracepoints.empty ())
index 56251c9445a98fd07c92b41c34b4a5c8a13b64d1..c091af6cad3815e2b556c52e32f1d65c5dcad489 100644 (file)
@@ -528,9 +528,10 @@ ui_out::field_string (const char *fldname, const char *string,
 }
 
 void
-ui_out::field_string (const char *fldname, const std::string &string)
+ui_out::field_string (const char *fldname, const std::string &string,
+                     const ui_file_style &style)
 {
-  field_string (fldname, string.c_str ());
+  field_string (fldname, string.c_str (), style);
 }
 
 /* VARARGS */
index a06477df533051562ce588ca4a5d25216b699c98..46dfe28c1e146e81aed92ba43853175a4409b18f 100644 (file)
@@ -191,7 +191,8 @@ class ui_out
                        CORE_ADDR address);
   void field_string (const char *fldname, const char *string,
                     const ui_file_style &style = ui_file_style ());
-  void field_string (const char *fldname, const std::string &string);
+  void field_string (const char *fldname, const std::string &string,
+                    const ui_file_style &style = ui_file_style ());
   void field_stream (const char *fldname, string_file &stream,
                     const ui_file_style &style = ui_file_style ());
   void field_skip (const char *fldname);