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:
parent
64e04ecdb7
commit
4a351cef15
3 changed files with 64 additions and 7 deletions
|
@ -1,3 +1,9 @@
|
|||
2002-10-14 Adam Fedor <fedor@gnu.org>
|
||||
|
||||
* utils.c (puts_filtered_tabular): New function.
|
||||
(fprintf_symbol_filtered): Get ObjC demangled name.
|
||||
* defs.h (puts_filtered_tabular): Declared.
|
||||
|
||||
2002-10-14 Kevin Buettner <kevinb@redhat.com>
|
||||
|
||||
* c-lang.h (c_type_print_varspec_prefix): Delete.
|
||||
|
|
|
@ -443,6 +443,8 @@ extern void puts_filtered (const char *);
|
|||
|
||||
extern void puts_unfiltered (const char *);
|
||||
|
||||
extern void puts_filtered_tabular (char *string, int width, int right);
|
||||
|
||||
extern void puts_debug (char *prefix, char *string, char *suffix);
|
||||
|
||||
extern void vprintf_filtered (const char *, va_list) ATTR_FORMAT (printf, 1, 0);
|
||||
|
|
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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue