Remove uses of fprintf_symbol_filtered
authorTom Tromey <tromey@adacore.com>
Thu, 8 Jul 2021 17:45:55 +0000 (11:45 -0600)
committerTom Tromey <tromey@adacore.com>
Mon, 2 Aug 2021 16:48:29 +0000 (10:48 -0600)
I believe that many calls to fprintf_symbol_filtered are incorrect.
In particular, there are some that pass a symbol's print name, like:

  fprintf_symbol_filtered (gdb_stdout, sym->print_name (),
   current_language->la_language, DMGL_ANSI);

fprintf_symbol_filtered uses the "demangle" global to decide whether
or not to demangle -- but print_name does this as well.  This can lead
to double-demangling.  Normally this could be innocuous, except I also
plan to change Ada demangling in a way that causes this to fail.

gdb/printcmd.c
gdb/python/py-framefilter.c
gdb/stack.c

index 416b87c69c6f575a7f1a8398e22db2a7c305772f..2fe3f4b0cc5d623dc58dd2ad2684c3bc71867eae 100644 (file)
@@ -1683,8 +1683,7 @@ info_address_command (const char *exp, int from_tty)
     }
 
   printf_filtered ("Symbol \"");
-  fprintf_symbol_filtered (gdb_stdout, sym->print_name (),
-                          current_language->la_language, DMGL_ANSI);
+  fputs_filtered (sym->print_name (), gdb_stdout);
   printf_filtered ("\" is ");
   val = SYMBOL_VALUE (sym);
   if (SYMBOL_OBJFILE_OWNED (sym))
index 54ac907a83897086ad06fd6cbc70e99a1c3a5bc4..fd0b7f9e1f20766bea8ff04842ca1ae84baf74c8 100644 (file)
@@ -348,16 +348,12 @@ py_print_single_arg (struct ui_out *out,
     {
       string_file stb;
 
-      fprintf_symbol_filtered (&stb, fa->sym->print_name (),
-                              fa->sym->language (),
-                              DMGL_PARAMS | DMGL_ANSI);
+      fputs_filtered (fa->sym->print_name (), &stb);
       if (fa->entry_kind == print_entry_values_compact)
        {
          stb.puts ("=");
 
-         fprintf_symbol_filtered (&stb, fa->sym->print_name (),
-                                  fa->sym->language (),
-                                  DMGL_PARAMS | DMGL_ANSI);
+         fputs_filtered (fa->sym->print_name (), &stb);
        }
       if (fa->entry_kind == print_entry_values_only
          || fa->entry_kind == print_entry_values_compact)
index aa20018ad9f0646471e1964e4d0cf60a9207cbd7..516e4d45696f4b7c85ab679e29d03b3c9de331b7 100644 (file)
@@ -427,17 +427,14 @@ print_frame_arg (const frame_print_options &fp_opts,
 
   annotate_arg_emitter arg_emitter;
   ui_out_emit_tuple tuple_emitter (uiout, NULL);
-  fprintf_symbol_filtered (&stb, arg->sym->print_name (),
-                          arg->sym->language (), DMGL_PARAMS | DMGL_ANSI);
+  fputs_filtered (arg->sym->print_name (), &stb);
   if (arg->entry_kind == print_entry_values_compact)
     {
       /* It is OK to provide invalid MI-like stream as with
         PRINT_ENTRY_VALUE_COMPACT we never use MI.  */
       stb.puts ("=");
 
-      fprintf_symbol_filtered (&stb, arg->sym->print_name (),
-                              arg->sym->language (),
-                              DMGL_PARAMS | DMGL_ANSI);
+      fputs_filtered (arg->sym->print_name (), &stb);
     }
   if (arg->entry_kind == print_entry_values_only
       || arg->entry_kind == print_entry_values_compact)
@@ -1368,8 +1365,7 @@ print_frame (const frame_print_options &fp_opts,
     annotate_frame_function_name ();
 
     string_file stb;
-    fprintf_symbol_filtered (&stb, funname ? funname.get () : "??",
-                            funlang, DMGL_ANSI);
+    fputs_filtered (funname ? funname.get () : "??", &stb);
     uiout->field_stream ("func", stb, function_name_style.style ());
     uiout->wrap_hint ("   ");
     annotate_frame_args ();
@@ -1564,8 +1560,7 @@ info_frame_command_core (struct frame_info *fi, bool selected_frame_p)
   if (funname)
     {
       printf_filtered (" in ");
-      fprintf_symbol_filtered (gdb_stdout, funname, funlang,
-                              DMGL_ANSI | DMGL_PARAMS);
+      fputs_filtered (funname, gdb_stdout);
     }
   wrap_here ("   ");
   if (sal.symtab)