mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-18 12:24:38 +08:00
Remove uses of fprintf_symbol_filtered
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.
This commit is contained in:
parent
ba8694b650
commit
9698f71410
@ -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))
|
||||
|
@ -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)
|
||||
|
13
gdb/stack.c
13
gdb/stack.c
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user