mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 12:03:41 +08:00
2011-12-16 Pedro Alves <pedro@codesourcery.com>
* inf-loop.c: Include top.h. (inferior_event_handler): Call check_frame_language. * top.c (check_frame_language_change): New, factored out from ... (execute_command): ... this. Use check_frame_language_change. * top.h (check_frame_language_change): Declare.
This commit is contained in:
parent
f4aa210198
commit
77cce10fc2
@ -1,3 +1,11 @@
|
|||||||
|
2011-12-16 Pedro Alves <pedro@codesourcery.com>
|
||||||
|
|
||||||
|
* inf-loop.c: Include top.h.
|
||||||
|
(inferior_event_handler): Call check_frame_language.
|
||||||
|
* top.c (check_frame_language_change): New, factored out from ...
|
||||||
|
(execute_command): ... this. Use check_frame_language_change.
|
||||||
|
* top.h (check_frame_language_change): Declare.
|
||||||
|
|
||||||
2011-12-16 asmwarrior <asmwarrior@gmail.com> (obvious fix)
|
2011-12-16 asmwarrior <asmwarrior@gmail.com> (obvious fix)
|
||||||
|
|
||||||
* windows-nat.c (cygwin_get_dr, cygwin_get_dr7): Add missing
|
* windows-nat.c (cygwin_get_dr, cygwin_get_dr7): Add missing
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#include "gdbthread.h"
|
#include "gdbthread.h"
|
||||||
#include "continuations.h"
|
#include "continuations.h"
|
||||||
#include "interps.h"
|
#include "interps.h"
|
||||||
|
#include "top.h"
|
||||||
|
|
||||||
static int fetch_inferior_event_wrapper (gdb_client_data client_data);
|
static int fetch_inferior_event_wrapper (gdb_client_data client_data);
|
||||||
|
|
||||||
@ -107,10 +108,7 @@ inferior_event_handler (enum inferior_event_type event_type,
|
|||||||
{
|
{
|
||||||
volatile struct gdb_exception e;
|
volatile struct gdb_exception e;
|
||||||
|
|
||||||
if (info_verbose
|
check_frame_language_change ();
|
||||||
&& current_language != expected_language
|
|
||||||
&& language_mode == language_mode_auto)
|
|
||||||
language_info (1); /* Print what changed. */
|
|
||||||
|
|
||||||
/* Don't propagate breakpoint commands errors. Either we're
|
/* Don't propagate breakpoint commands errors. Either we're
|
||||||
stopping or some command resumes the inferior. The user will
|
stopping or some command resumes the inferior. The user will
|
||||||
|
74
gdb/top.c
74
gdb/top.c
@ -362,6 +362,47 @@ prepare_execute_command (void)
|
|||||||
return cleanup;
|
return cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Tell the user if the language has changed (except first time) after
|
||||||
|
executing a command. */
|
||||||
|
|
||||||
|
void
|
||||||
|
check_frame_language_change (void)
|
||||||
|
{
|
||||||
|
static int warned = 0;
|
||||||
|
|
||||||
|
/* First make sure that a new frame has been selected, in case the
|
||||||
|
command or the hooks changed the program state. */
|
||||||
|
deprecated_safe_get_selected_frame ();
|
||||||
|
if (current_language != expected_language)
|
||||||
|
{
|
||||||
|
if (language_mode == language_mode_auto && info_verbose)
|
||||||
|
{
|
||||||
|
language_info (1); /* Print what changed. */
|
||||||
|
}
|
||||||
|
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. */
|
||||||
|
/* FIXME: This should be cacheing the frame and only running when
|
||||||
|
the frame changes. */
|
||||||
|
|
||||||
|
if (has_stack_frames ())
|
||||||
|
{
|
||||||
|
enum language flang;
|
||||||
|
|
||||||
|
flang = get_frame_language ();
|
||||||
|
if (!warned
|
||||||
|
&& flang != language_unknown
|
||||||
|
&& flang != current_language->la_language)
|
||||||
|
{
|
||||||
|
printf_filtered ("%s\n", lang_frame_mismatch_warn);
|
||||||
|
warned = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Execute the line P as a command, in the current user context.
|
/* Execute the line P as a command, in the current user context.
|
||||||
Pass FROM_TTY as second argument to the defining function. */
|
Pass FROM_TTY as second argument to the defining function. */
|
||||||
|
|
||||||
@ -370,8 +411,6 @@ execute_command (char *p, int from_tty)
|
|||||||
{
|
{
|
||||||
struct cleanup *cleanup_if_error, *cleanup;
|
struct cleanup *cleanup_if_error, *cleanup;
|
||||||
struct cmd_list_element *c;
|
struct cmd_list_element *c;
|
||||||
enum language flang;
|
|
||||||
static int warned = 0;
|
|
||||||
char *line;
|
char *line;
|
||||||
|
|
||||||
cleanup_if_error = make_bpstat_clear_actions_cleanup ();
|
cleanup_if_error = make_bpstat_clear_actions_cleanup ();
|
||||||
@ -458,36 +497,7 @@ execute_command (char *p, int from_tty)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Tell the user if the language has changed (except first time).
|
check_frame_language_change ();
|
||||||
First make sure that a new frame has been selected, in case this
|
|
||||||
command or the hooks changed the program state. */
|
|
||||||
deprecated_safe_get_selected_frame ();
|
|
||||||
if (current_language != expected_language)
|
|
||||||
{
|
|
||||||
if (language_mode == language_mode_auto && info_verbose)
|
|
||||||
{
|
|
||||||
language_info (1); /* Print what changed. */
|
|
||||||
}
|
|
||||||
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. */
|
|
||||||
/* FIXME: This should be cacheing the frame and only running when
|
|
||||||
the frame changes. */
|
|
||||||
|
|
||||||
if (has_stack_frames ())
|
|
||||||
{
|
|
||||||
flang = get_frame_language ();
|
|
||||||
if (!warned
|
|
||||||
&& flang != language_unknown
|
|
||||||
&& flang != current_language->la_language)
|
|
||||||
{
|
|
||||||
printf_filtered ("%s\n", lang_frame_mismatch_warn);
|
|
||||||
warned = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
do_cleanups (cleanup);
|
do_cleanups (cleanup);
|
||||||
discard_cleanups (cleanup_if_error);
|
discard_cleanups (cleanup_if_error);
|
||||||
|
@ -44,6 +44,8 @@ extern void quit_command (char *, int);
|
|||||||
extern void quit_cover (void);
|
extern void quit_cover (void);
|
||||||
extern void execute_command (char *, int);
|
extern void execute_command (char *, int);
|
||||||
|
|
||||||
|
extern void check_frame_language_change (void);
|
||||||
|
|
||||||
/* Prepare for execution of a command.
|
/* Prepare for execution of a command.
|
||||||
Call this before every command, CLI or MI.
|
Call this before every command, CLI or MI.
|
||||||
Returns a cleanup to be run after the command is completed. */
|
Returns a cleanup to be run after the command is completed. */
|
||||||
|
Loading…
Reference in New Issue
Block a user