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>
|
2002-10-14 Kevin Buettner <kevinb@redhat.com>
|
||||||
|
|
||||||
* c-lang.h (c_type_print_varspec_prefix): Delete.
|
* 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_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 puts_debug (char *prefix, char *string, char *suffix);
|
||||||
|
|
||||||
extern void vprintf_filtered (const char *, va_list) ATTR_FORMAT (printf, 1, 0);
|
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;
|
int immediate_quit;
|
||||||
|
|
||||||
/* Nonzero means that encoded C++ names should be printed out in their
|
/* Nonzero means that encoded C++/ObjC names should be printed out in their
|
||||||
C++ form rather than raw. */
|
C++/ObjC form rather than raw. */
|
||||||
|
|
||||||
int demangle = 1;
|
int demangle = 1;
|
||||||
|
|
||||||
/* Nonzero means that encoded C++ names should be printed out in their
|
/* Nonzero means that encoded C++/ObjC names should be printed out in their
|
||||||
C++ form even in assembler language displays. If this is set, but
|
C++/ObjC form even in assembler language displays. If this is set, but
|
||||||
DEMANGLE is zero, names are printed raw, i.e. DEMANGLE controls. */
|
DEMANGLE is zero, names are printed raw, i.e. DEMANGLE controls. */
|
||||||
|
|
||||||
int asm_demangle = 0;
|
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
|
/* Ensure that whatever gets printed next, using the filtered output
|
||||||
commands, starts at the beginning of the line. I.E. if there is
|
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
|
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);
|
fputs_filtered (n_spaces (n), stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* C++ demangler stuff. */
|
/* C++/ObjC demangler stuff. */
|
||||||
|
|
||||||
/* fprintf_symbol_filtered attempts to demangle NAME, a symbol in language
|
/* fprintf_symbol_filtered attempts to demangle NAME, a symbol in language
|
||||||
LANG, using demangling args ARG_MODE, and print it filtered to STREAM.
|
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:
|
case language_java:
|
||||||
demangled = cplus_demangle (name, arg_mode | DMGL_JAVA);
|
demangled = cplus_demangle (name, arg_mode | DMGL_JAVA);
|
||||||
break;
|
break;
|
||||||
|
case language_objc:
|
||||||
|
/* Commented out until ObjC handling is enabled. */
|
||||||
|
/*demangled = objc_demangle (name);*/
|
||||||
|
/*break;*/
|
||||||
#if 0
|
#if 0
|
||||||
/* OBSOLETE case language_chill: */
|
/* OBSOLETE case language_chill: */
|
||||||
/* OBSOLETE demangled = chill_demangle (name); */
|
/* OBSOLETE demangled = chill_demangle (name); */
|
||||||
|
@ -2393,7 +2442,7 @@ initialize_utils (void)
|
||||||
add_show_from_set
|
add_show_from_set
|
||||||
(add_set_cmd ("demangle", class_support, var_boolean,
|
(add_set_cmd ("demangle", class_support, var_boolean,
|
||||||
(char *) &demangle,
|
(char *) &demangle,
|
||||||
"Set demangling of encoded C++ names when displaying symbols.",
|
"Set demangling of encoded C++/ObjC names when displaying symbols.",
|
||||||
&setprintlist),
|
&setprintlist),
|
||||||
&showprintlist);
|
&showprintlist);
|
||||||
|
|
||||||
|
@ -2421,7 +2470,7 @@ initialize_utils (void)
|
||||||
add_show_from_set
|
add_show_from_set
|
||||||
(add_set_cmd ("asm-demangle", class_support, var_boolean,
|
(add_set_cmd ("asm-demangle", class_support, var_boolean,
|
||||||
(char *) &asm_demangle,
|
(char *) &asm_demangle,
|
||||||
"Set demangling of C++ names in disassembly listings.",
|
"Set demangling of C++/ObjC names in disassembly listings.",
|
||||||
&setprintlist),
|
&setprintlist),
|
||||||
&showprintlist);
|
&showprintlist);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue