aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorAdam Fedor <fedor@gnu.org>2002-10-15 02:16:51 +0000
committerAdam Fedor <fedor@gnu.org>2002-10-15 02:16:51 +0000
commit4a351cef157a7db0c97a04ba7aab3fad581a7c04 (patch)
tree7550da466a7779bf354016a8801a83b8c9d70d13 /gdb
parent64e04ecdb7238be11cc4373f9610f74fbe506605 (diff)
downloadgdb-4a351cef157a7db0c97a04ba7aab3fad581a7c04.zip
gdb-4a351cef157a7db0c97a04ba7aab3fad581a7c04.tar.gz
gdb-4a351cef157a7db0c97a04ba7aab3fad581a7c04.tar.bz2
utils.c (puts_filtered_tabular): New function.
(fprintf_symbol_filtered): Get ObjC demangled name. defs.h (puts_filtered_tabular): Declared.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/defs.h2
-rw-r--r--gdb/utils.c63
3 files changed, 64 insertions, 7 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 28e4883..9203109 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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.
diff --git a/gdb/defs.h b/gdb/defs.h
index f054e21..48eb509 100644
--- a/gdb/defs.h
+++ b/gdb/defs.h
@@ -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);
diff --git a/gdb/utils.c b/gdb/utils.c
index d1b4c99..fe8be07 100644
--- a/gdb/utils.c
+++ b/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);
}