Fix execution_direction's type

This fixes a few build errors like these in C++ mode:

  src/gdb/reverse.c: In function ‘void exec_reverse_once(char*, char*, int)’:
  src/gdb/reverse.c:49:34: error: invalid conversion from ‘int’ to ‘exec_direction_kind’ [-fpermissive]
     enum exec_direction_kind dir = execution_direction;
				    ^
  make: *** [reverse.o] Error 1

gdb/ChangeLog:
2015-10-13  Pedro Alves  <palves@redhat.com>

	* infrun.c (restore_execution_direction): New function.
	(fetch_inferior_event): Use it instead of
	make_cleanup_restore_integer.
	(execution_direction): Change type to enum
	exec_direction_kind.
	* infrun.h (execution_direction): Likewise.
This commit is contained in:
Pedro Alves 2015-10-13 19:40:50 +01:00
parent bfb1c7963b
commit 170742de5d
3 changed files with 25 additions and 6 deletions

View File

@ -1,3 +1,12 @@
2015-10-13 Pedro Alves <palves@redhat.com>
* infrun.c (restore_execution_direction): New function.
(fetch_inferior_event): Use it instead of
make_cleanup_restore_integer.
(execution_direction): Change type to enum
exec_direction_kind.
* infrun.h (execution_direction): Likewise.
2015-10-13 Pedro Alves <palves@redhat.com> 2015-10-13 Pedro Alves <palves@redhat.com>
* ada-lang.c (ada_value_primitive_packed_val): Constify * ada-lang.c (ada_value_primitive_packed_val): Constify

View File

@ -3798,6 +3798,17 @@ clean_up_just_stopped_threads_fsms (struct execution_control_state *ecs)
} }
} }
/* A cleanup that restores the execution direction to the value saved
in *ARG. */
static void
restore_execution_direction (void *arg)
{
enum exec_direction_kind *save_exec_dir = (enum exec_direction_kind *) arg;
execution_direction = *save_exec_dir;
}
/* Asynchronous version of wait_for_inferior. It is called by the /* Asynchronous version of wait_for_inferior. It is called by the
event loop whenever a change of state is detected on the file event loop whenever a change of state is detected on the file
descriptor corresponding to the target. It can be called more than descriptor corresponding to the target. It can be called more than
@ -3815,6 +3826,7 @@ fetch_inferior_event (void *client_data)
struct cleanup *old_chain = make_cleanup (null_cleanup, NULL); struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
struct cleanup *ts_old_chain; struct cleanup *ts_old_chain;
int was_sync = sync_execution; int was_sync = sync_execution;
enum exec_direction_kind save_exec_dir = execution_direction;
int cmd_done = 0; int cmd_done = 0;
ptid_t waiton_ptid = minus_one_ptid; ptid_t waiton_ptid = minus_one_ptid;
@ -3847,7 +3859,7 @@ fetch_inferior_event (void *client_data)
event. */ event. */
target_dcache_invalidate (); target_dcache_invalidate ();
make_cleanup_restore_integer (&execution_direction); make_cleanup (restore_execution_direction, &save_exec_dir);
execution_direction = target_execution_direction (); execution_direction = target_execution_direction ();
ecs->ptid = do_target_wait (waiton_ptid, &ecs->ws, ecs->ptid = do_target_wait (waiton_ptid, &ecs->ws,
@ -8937,7 +8949,7 @@ clear_exit_convenience_vars (void)
Set exec-direction / show exec-direction commands Set exec-direction / show exec-direction commands
(returns error unless target implements to_set_exec_direction method). */ (returns error unless target implements to_set_exec_direction method). */
int execution_direction = EXEC_FORWARD; enum exec_direction_kind execution_direction = EXEC_FORWARD;
static const char exec_forward[] = "forward"; static const char exec_forward[] = "forward";
static const char exec_reverse[] = "reverse"; static const char exec_reverse[] = "reverse";
static const char *exec_direction = exec_forward; static const char *exec_direction = exec_forward;

View File

@ -74,10 +74,8 @@ enum exec_direction_kind
EXEC_REVERSE EXEC_REVERSE
}; };
/* The current execution direction. This should only be set to enum /* The current execution direction. */
exec_direction_kind values. It is only an int to make it extern enum exec_direction_kind execution_direction;
compatible with make_cleanup_restore_integer. */
extern int execution_direction;
extern void start_remote (int from_tty); extern void start_remote (int from_tty);