aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2002-02-02 03:42:59 +0000
committerAndrew Cagney <cagney@redhat.com>2002-02-02 03:42:59 +0000
commit255e7dbf2e106ccba748f1d34422d9df7fcc1038 (patch)
tree8049bf598088831675b090b7bbb04419768c308e
parent261c4ca20698ffa0b5efa6a0908c55aae31711e8 (diff)
downloadgdb-255e7dbf2e106ccba748f1d34422d9df7fcc1038.zip
gdb-255e7dbf2e106ccba748f1d34422d9df7fcc1038.tar.gz
gdb-255e7dbf2e106ccba748f1d34422d9df7fcc1038.tar.bz2
* utils.c (error_begin): Make static.
* defs.h (error_begin): Delete declaration. * linespec.c (cplusplus_error): Replace cplusplus_hint. (decode_line_1): Use cplusplus_error instead of error_begin, cplusplus_hint and return_to_top_level. * coffread.c (coff_symfile_read): Use error instead of error_begin and return_to_top_level. * infrun.c (default_skip_permanent_breakpoint): Ditto.
-rw-r--r--gdb/ChangeLog12
-rw-r--r--gdb/coffread.c11
-rw-r--r--gdb/defs.h3
-rw-r--r--gdb/infrun.c6
-rw-r--r--gdb/linespec.c56
-rw-r--r--gdb/utils.c2
6 files changed, 50 insertions, 40 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 233e3b0..27aff5f 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,17 @@
2002-02-01 Andrew Cagney <ac131313@redhat.com>
+ * utils.c (error_begin): Make static.
+ * defs.h (error_begin): Delete declaration.
+
+ * linespec.c (cplusplus_error): Replace cplusplus_hint.
+ (decode_line_1): Use cplusplus_error instead of error_begin,
+ cplusplus_hint and return_to_top_level.
+ * coffread.c (coff_symfile_read): Use error instead of error_begin
+ and return_to_top_level.
+ * infrun.c (default_skip_permanent_breakpoint): Ditto.
+
+2002-02-01 Andrew Cagney <ac131313@redhat.com>
+
* language.h (type_error, range_error): Make string parameter
constant.
* language.c (warning_pre_print): Delete extern declaration.
diff --git a/gdb/coffread.c b/gdb/coffread.c
index b765af9..69d06ba 100644
--- a/gdb/coffread.c
+++ b/gdb/coffread.c
@@ -668,13 +668,10 @@ coff_symfile_read (struct objfile *objfile, int mainline)
{
if (!info->stabstrsect)
{
- error_begin ();
- fprintf_filtered
- (gdb_stderr,
- ("The debugging information in `%s' is corrupted.\n"
- "The file has a `.stabs' section, but no `.stabstr' section.\n"),
- name);
- return_to_top_level (RETURN_ERROR);
+ error (("The debugging information in `%s' is corrupted.\n"
+ "The file has a `.stabs' section, but no `.stabstr' "
+ "section."),
+ name);
}
/* FIXME: dubious. Why can't we use something normal like
diff --git a/gdb/defs.h b/gdb/defs.h
index 274cacc..66e5ff0 100644
--- a/gdb/defs.h
+++ b/gdb/defs.h
@@ -1068,9 +1068,6 @@ extern NORETURN void verror (const char *fmt, va_list ap) ATTR_NORETURN;
extern NORETURN void error (const char *fmt, ...) ATTR_NORETURN;
-/* DEPRECATED: Use error(), verror() or error_stream(). */
-extern NORETURN void error_begin (void);
-
extern NORETURN void error_stream (struct ui_file *) ATTR_NORETURN;
/* Returns a freshly allocate buffer containing the last error
diff --git a/gdb/infrun.c b/gdb/infrun.c
index 8a5b302..1b0eb7e 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -232,12 +232,10 @@ static int may_follow_exec = MAY_FOLLOW_EXEC;
static void
default_skip_permanent_breakpoint (void)
{
- error_begin ();
- fprintf_filtered (gdb_stderr, "\
+ error ("\
The program is stopped at a permanent breakpoint, but GDB does not know\n\
how to step past a permanent breakpoint on this architecture. Try using\n\
-a command like `return' or `jump' to continue execution.\n");
- return_to_top_level (RETURN_ERROR);
+a command like `return' or `jump' to continue execution.");
}
#endif
diff --git a/gdb/linespec.c b/gdb/linespec.c
index 98b13a4..ef3a28c 100644
--- a/gdb/linespec.c
+++ b/gdb/linespec.c
@@ -42,7 +42,7 @@ extern char *operator_chars (char *, char **);
/* Prototypes for local functions */
-static void cplusplus_hint (char *name);
+static void cplusplus_error (const char *name, const char *fmt, ...) ATTR_FORMAT (printf, 2, 3);
static int total_number_of_methods (struct type *type);
@@ -58,17 +58,31 @@ static struct symtabs_and_lines decode_line_2 (struct symbol *[],
/* Helper functions. */
-/* While the C++ support is still in flux, issue a possibly helpful hint on
- using the new command completion feature on single quoted demangled C++
- symbols. Remove when loose ends are cleaned up. FIXME -fnf */
+/* Issue a helpful hint on using the command completion feature on
+ single quoted demangled C++ symbols as part of the completion
+ error. */
static void
-cplusplus_hint (char *name)
+cplusplus_error (const char *name, const char *fmt, ...)
{
+ struct ui_file *tmp_stream;
+ tmp_stream = mem_fileopen ();
+ make_cleanup_ui_file_delete (tmp_stream);
+
+ {
+ va_list args;
+ va_start (args, fmt);
+ vfprintf_unfiltered (tmp_stream, fmt, args);
+ va_end (args);
+ }
+
while (*name == '\'')
name++;
- printf_filtered ("Hint: try '%s<TAB> or '%s<ESC-?>\n", name, name);
- printf_filtered ("(Note leading single quote.)\n");
+ fprintf_unfiltered (tmp_stream,
+ ("Hint: try '%s<TAB> or '%s<ESC-?>\n"
+ "(Note leading single quote.)"),
+ name, name);
+ error_stream (tmp_stream);
}
/* Return the number of methods described for TYPE, including the
@@ -722,10 +736,7 @@ decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab,
opname = cplus_mangle_opname (tmp, DMGL_ANSI);
if (opname == NULL)
{
- error_begin ();
- printf_filtered ("no mangling for \"%s\"\n", tmp);
- cplusplus_hint (saved_arg);
- return_to_top_level (RETURN_ERROR);
+ cplusplus_error (saved_arg, "no mangling for \"%s\"\n", tmp);
}
copy = (char*) alloca (3 + strlen(opname));
sprintf (copy, "__%s", opname);
@@ -810,17 +821,14 @@ decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab,
}
else
tmp = copy;
- error_begin ();
if (tmp[0] == '~')
- printf_filtered
- ("the class `%s' does not have destructor defined\n",
- SYMBOL_SOURCE_NAME (sym_class));
+ cplusplus_error (saved_arg,
+ "the class `%s' does not have destructor defined\n",
+ SYMBOL_SOURCE_NAME (sym_class));
else
- printf_filtered
- ("the class %s does not have any method named %s\n",
- SYMBOL_SOURCE_NAME (sym_class), tmp);
- cplusplus_hint (saved_arg);
- return_to_top_level (RETURN_ERROR);
+ cplusplus_error (saved_arg,
+ "the class %s does not have any method named %s\n",
+ SYMBOL_SOURCE_NAME (sym_class), tmp);
}
}
@@ -873,12 +881,10 @@ decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab,
goto symbol_found;
/* Couldn't find any interpretation as classes/namespaces, so give up */
- error_begin ();
/* The quotes are important if copy is empty. */
- printf_filtered
- ("Can't find member of namespace, class, struct, or union named \"%s\"\n", copy);
- cplusplus_hint (saved_arg);
- return_to_top_level (RETURN_ERROR);
+ cplusplus_error (saved_arg,
+ "Can't find member of namespace, class, struct, or union named \"%s\"\n",
+ copy);
}
/* end of C++ */
diff --git a/gdb/utils.c b/gdb/utils.c
index 2459dea..c3e5a50 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -600,7 +600,7 @@ warning (const char *string,...)
error() provides a convenient way to do this for the special case
that the error message can be formatted with a single printf call,
but this is more general. */
-void
+static void
error_begin (void)
{
if (error_begin_hook)