aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2015-10-13 19:40:50 +0100
committerPedro Alves <palves@redhat.com>2015-10-13 19:40:50 +0100
commit170742de5dd5be2156f938e00e2451526ef57d5c (patch)
tree724d67ab6251af91e7f1e276fecd249b389f1450 /gdb
parentbfb1c7963b15b31073c9adf2d97ff1cf953ec99c (diff)
downloadgdb-170742de5dd5be2156f938e00e2451526ef57d5c.zip
gdb-170742de5dd5be2156f938e00e2451526ef57d5c.tar.gz
gdb-170742de5dd5be2156f938e00e2451526ef57d5c.tar.bz2
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.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog9
-rw-r--r--gdb/infrun.c16
-rw-r--r--gdb/infrun.h6
3 files changed, 25 insertions, 6 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 63d0560..84eb37c 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,14 @@
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>
+
* ada-lang.c (ada_value_primitive_packed_val): Constify
locals. Use value_contents_writeable. Remove casts.
diff --git a/gdb/infrun.c b/gdb/infrun.c
index cf91370..0c268ff 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -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
event loop whenever a change of state is detected on the file
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 *ts_old_chain;
int was_sync = sync_execution;
+ enum exec_direction_kind save_exec_dir = execution_direction;
int cmd_done = 0;
ptid_t waiton_ptid = minus_one_ptid;
@@ -3847,7 +3859,7 @@ fetch_inferior_event (void *client_data)
event. */
target_dcache_invalidate ();
- make_cleanup_restore_integer (&execution_direction);
+ make_cleanup (restore_execution_direction, &save_exec_dir);
execution_direction = target_execution_direction ();
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
(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_reverse[] = "reverse";
static const char *exec_direction = exec_forward;
diff --git a/gdb/infrun.h b/gdb/infrun.h
index ab27538..7364065 100644
--- a/gdb/infrun.h
+++ b/gdb/infrun.h
@@ -74,10 +74,8 @@ enum exec_direction_kind
EXEC_REVERSE
};
-/* The current execution direction. This should only be set to enum
- exec_direction_kind values. It is only an int to make it
- compatible with make_cleanup_restore_integer. */
-extern int execution_direction;
+/* The current execution direction. */
+extern enum exec_direction_kind execution_direction;
extern void start_remote (int from_tty);