* main.c (execute_command): Warn as language changes automatically.
(main): If error() is called during early initialization, print its message and then exit(1) from GDB.
This commit is contained in:
parent
89e0bbcd4f
commit
bd09940765
37
gdb/main.c
37
gdb/main.c
|
@ -27,6 +27,7 @@ int fclose ();
|
|||
#include "signals.h"
|
||||
#include "target.h"
|
||||
#include "breakpoint.h"
|
||||
#include "language.h"
|
||||
|
||||
#include "getopt.h"
|
||||
|
||||
|
@ -80,6 +81,8 @@ extern char *version;
|
|||
|
||||
extern char *error_pre_print;
|
||||
|
||||
extern char lang_frame_mismatch_warn[]; /* language.c */
|
||||
|
||||
/* Flag for whether we want all the "from_tty" gubbish printed. */
|
||||
|
||||
int caution = 1; /* Default is yes, sigh. */
|
||||
|
@ -338,6 +341,11 @@ main (argc, argv)
|
|||
alloca (4 - i);
|
||||
#endif
|
||||
|
||||
/* If error() is called from initialization code, just exit */
|
||||
if (setjmp (to_top_level)) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
cmdsize = 1;
|
||||
cmdarg = (char **) xmalloc (cmdsize * sizeof (*cmdarg));
|
||||
ncmd = 0;
|
||||
|
@ -542,7 +550,7 @@ GDB manual (available as on-line info or a printed manual).\n", stderr);
|
|||
print_gdb_version ();
|
||||
if (symarg)
|
||||
printf_filtered ("..");
|
||||
wrap_here();
|
||||
wrap_here("");
|
||||
fflush (stdout); /* Force to screen during slow operations */
|
||||
}
|
||||
|
||||
|
@ -705,6 +713,9 @@ execute_command (p, from_tty)
|
|||
{
|
||||
register struct cmd_list_element *c;
|
||||
register struct command_line *cmdlines;
|
||||
register enum language flang;
|
||||
static enum language current = language_unknown;
|
||||
static int warned = 0;
|
||||
|
||||
free_all_values ();
|
||||
|
||||
|
@ -748,7 +759,31 @@ execute_command (p, from_tty)
|
|||
error ("That is not a command, just a help topic.");
|
||||
else
|
||||
(*c->function) (arg, from_tty & caution);
|
||||
}
|
||||
|
||||
/* Tell the user if the language has changed */
|
||||
if (working_lang != current)
|
||||
{
|
||||
if (language_mode == language_mode_auto) {
|
||||
if (current != language_unknown)
|
||||
language_info ();
|
||||
}
|
||||
current = working_lang;
|
||||
warned = 0;
|
||||
}
|
||||
|
||||
/* Warn the user if the working language does not match the
|
||||
language of the current frame. Only warn the user if we are
|
||||
actually running the program, i.e. there is a stack. */
|
||||
if (target_has_stack)
|
||||
{
|
||||
flang = get_frame_language();
|
||||
if(!warned && flang != language_unknown && flang != working_lang)
|
||||
{
|
||||
printf_filtered ("%s\n", lang_frame_mismatch_warn);
|
||||
warned = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ARGSUSED */
|
||||
|
|
Loading…
Reference in New Issue