2010-03-17 Stan Shebs <stan@codesourcery.com>

* infcall.c: Include tracepoint.h.
	(call_function_by_hand): Disallow calls in tfind mode.
	* infcmd.c: Include tracepoint.h.
	(ensure_not_tfind_mode): New function.
	(continue_1): Call it.
	(step_1) Ditto.
	(jump_command): Ditto.
	(signal_command): Ditto.
	(advance_command): Ditto.
	(until_command): Ditto.
	(finish_command): Ditto.
	* tracepoint.h (disconnect_or_stop_tracing): Declare.
This commit is contained in:
Stan Shebs 2010-03-18 01:09:26 +00:00
parent d504198035
commit 573cda036a
4 changed files with 42 additions and 2 deletions

View File

@ -1,5 +1,18 @@
2010-03-17 Stan Shebs <stan@codesourcery.com>
* infcall.c: Include tracepoint.h.
(call_function_by_hand): Disallow calls in tfind mode.
* infcmd.c: Include tracepoint.h.
(ensure_not_tfind_mode): New function.
(continue_1): Call it.
(step_1) Ditto.
(jump_command): Ditto.
(signal_command): Ditto.
(advance_command): Ditto.
(until_command): Ditto.
(finish_command): Ditto.
* tracepoint.h (disconnect_or_stop_tracing): Declare.
* ax-gdb.h (struct axs_value): New field optimized_out.
(gen_trace_for_var): Add gdbarch argument.
* ax-gdb.c (gen_trace_static_fields): New function.

View File

@ -21,6 +21,7 @@
#include "defs.h"
#include "breakpoint.h"
#include "tracepoint.h"
#include "target.h"
#include "regcache.h"
#include "inferior.h"
@ -453,6 +454,9 @@ call_function_by_hand (struct value *function, int nargs, struct value **args)
if (!target_has_execution)
noprocess ();
if (get_traceframe_number () >= 0)
error (_("May not call functions while looking at trace frames."));
frame = get_current_frame ();
gdbarch = get_frame_arch (frame);

View File

@ -54,8 +54,7 @@
#include "gdbthread.h"
#include "valprint.h"
#include "inline-frame.h"
extern void disconnect_or_stop_tracing (int from_tty);
#include "tracepoint.h"
/* Functions exported for general use, in inferior.h: */
@ -648,10 +647,23 @@ ensure_valid_thread (void)
Cannot execute this command without a live selected thread."));
}
/* If the user is looking at trace frames, any resumption of execution
is likely to mix up recorded and live target data. So simply
disallow those commands. */
void
ensure_not_tfind_mode (void)
{
if (get_traceframe_number () >= 0)
error (_("\
Cannot execute this command while looking at trace frames."));
}
void
continue_1 (int all_threads)
{
ERROR_NO_INFERIOR;
ensure_not_tfind_mode ();
if (non_stop && all_threads)
{
@ -825,6 +837,7 @@ step_1 (int skip_subroutines, int single_inst, char *count_string)
int thread = -1;
ERROR_NO_INFERIOR;
ensure_not_tfind_mode ();
ensure_valid_thread ();
ensure_not_running ();
@ -1046,6 +1059,7 @@ jump_command (char *arg, int from_tty)
int async_exec = 0;
ERROR_NO_INFERIOR;
ensure_not_tfind_mode ();
ensure_valid_thread ();
ensure_not_running ();
@ -1148,6 +1162,7 @@ signal_command (char *signum_exp, int from_tty)
dont_repeat (); /* Too dangerous. */
ERROR_NO_INFERIOR;
ensure_not_tfind_mode ();
ensure_valid_thread ();
ensure_not_running ();
@ -1262,6 +1277,8 @@ until_command (char *arg, int from_tty)
if (!target_has_execution)
error (_("The program is not running."));
ensure_not_tfind_mode ();
/* Find out whether we must run in the background. */
if (arg != NULL)
async_exec = strip_bg_char (&arg);
@ -1293,6 +1310,8 @@ advance_command (char *arg, int from_tty)
if (!target_has_execution)
error (_("The program is not running."));
ensure_not_tfind_mode ();
if (arg == NULL)
error_no_arg (_("a location"));
@ -1546,6 +1565,8 @@ finish_command (char *arg, int from_tty)
int async_exec = 0;
ensure_not_tfind_mode ();
/* Find out whether we must run in the background. */
if (arg != NULL)
async_exec = strip_bg_char (&arg);

View File

@ -162,4 +162,6 @@ extern struct breakpoint *create_tracepoint_from_upload (struct uploaded_tp *utp
extern void merge_uploaded_tracepoints (struct uploaded_tp **utpp);
extern void merge_uploaded_trace_state_variables (struct uploaded_tsv **utsvp);
extern void disconnect_or_stop_tracing (int from_tty);
#endif /* TRACEPOINT_H */