forked from Imagelibrary/binutils-gdb
utils.c (puts_filtered_tabular): New function.
(fprintf_symbol_filtered): Get ObjC demangled name. defs.h (puts_filtered_tabular): Declared.
This commit is contained in:
63
gdb/utils.c
63
gdb/utils.c
@@ -153,13 +153,13 @@ int quit_flag;
|
||||
|
||||
int immediate_quit;
|
||||
|
||||
/* Nonzero means that encoded C++ names should be printed out in their
|
||||
C++ form rather than raw. */
|
||||
/* Nonzero means that encoded C++/ObjC names should be printed out in their
|
||||
C++/ObjC form rather than raw. */
|
||||
|
||||
int demangle = 1;
|
||||
|
||||
/* Nonzero means that encoded C++ names should be printed out in their
|
||||
C++ form even in assembler language displays. If this is set, but
|
||||
/* Nonzero means that encoded C++/ObjC names should be printed out in their
|
||||
C++/ObjC form even in assembler language displays. If this is set, but
|
||||
DEMANGLE is zero, names are printed raw, i.e. DEMANGLE controls. */
|
||||
|
||||
int asm_demangle = 0;
|
||||
@@ -1817,6 +1817,51 @@ wrap_here (char *indent)
|
||||
}
|
||||
}
|
||||
|
||||
/* Print input string to gdb_stdout, filtered, with wrap,
|
||||
arranging strings in columns of n chars. String can be
|
||||
right or left justified in the column. Never prints
|
||||
trailing spaces. String should never be longer than
|
||||
width. FIXME: this could be useful for the EXAMINE
|
||||
command, which currently doesn't tabulate very well */
|
||||
|
||||
void
|
||||
puts_filtered_tabular (char *string, int width, int right)
|
||||
{
|
||||
int spaces = 0;
|
||||
int stringlen;
|
||||
char *spacebuf;
|
||||
|
||||
gdb_assert (chars_per_line > 0);
|
||||
if (chars_per_line == UINT_MAX)
|
||||
{
|
||||
fputs_filtered (string, gdb_stdout);
|
||||
fputs_filtered ("\n", gdb_stdout);
|
||||
return;
|
||||
}
|
||||
|
||||
if (((chars_printed - 1) / width + 2) * width >= chars_per_line)
|
||||
fputs_filtered ("\n", gdb_stdout);
|
||||
|
||||
if (width >= chars_per_line)
|
||||
width = chars_per_line - 1;
|
||||
|
||||
stringlen = strlen (string);
|
||||
|
||||
if (chars_printed > 0)
|
||||
spaces = width - (chars_printed - 1) % width - 1;
|
||||
if (right)
|
||||
spaces += width - stringlen;
|
||||
|
||||
spacebuf = alloca (spaces + 1);
|
||||
spacebuf[spaces] = '\0';
|
||||
while (spaces--)
|
||||
spacebuf[spaces] = ' ';
|
||||
|
||||
fputs_filtered (spacebuf, gdb_stdout);
|
||||
fputs_filtered (string, gdb_stdout);
|
||||
}
|
||||
|
||||
|
||||
/* Ensure that whatever gets printed next, using the filtered output
|
||||
commands, starts at the beginning of the line. I.E. if there is
|
||||
any pending output for the current line, flush it and start a new
|
||||
@@ -2244,7 +2289,7 @@ print_spaces_filtered (int n, struct ui_file *stream)
|
||||
fputs_filtered (n_spaces (n), stream);
|
||||
}
|
||||
|
||||
/* C++ demangler stuff. */
|
||||
/* C++/ObjC demangler stuff. */
|
||||
|
||||
/* fprintf_symbol_filtered attempts to demangle NAME, a symbol in language
|
||||
LANG, using demangling args ARG_MODE, and print it filtered to STREAM.
|
||||
@@ -2274,6 +2319,10 @@ fprintf_symbol_filtered (struct ui_file *stream, char *name, enum language lang,
|
||||
case language_java:
|
||||
demangled = cplus_demangle (name, arg_mode | DMGL_JAVA);
|
||||
break;
|
||||
case language_objc:
|
||||
/* Commented out until ObjC handling is enabled. */
|
||||
/*demangled = objc_demangle (name);*/
|
||||
/*break;*/
|
||||
#if 0
|
||||
/* OBSOLETE case language_chill: */
|
||||
/* OBSOLETE demangled = chill_demangle (name); */
|
||||
@@ -2393,7 +2442,7 @@ initialize_utils (void)
|
||||
add_show_from_set
|
||||
(add_set_cmd ("demangle", class_support, var_boolean,
|
||||
(char *) &demangle,
|
||||
"Set demangling of encoded C++ names when displaying symbols.",
|
||||
"Set demangling of encoded C++/ObjC names when displaying symbols.",
|
||||
&setprintlist),
|
||||
&showprintlist);
|
||||
|
||||
@@ -2421,7 +2470,7 @@ initialize_utils (void)
|
||||
add_show_from_set
|
||||
(add_set_cmd ("asm-demangle", class_support, var_boolean,
|
||||
(char *) &asm_demangle,
|
||||
"Set demangling of C++ names in disassembly listings.",
|
||||
"Set demangling of C++/ObjC names in disassembly listings.",
|
||||
&setprintlist),
|
||||
&showprintlist);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user