Fix PR remote/19840: gdb crashes on reverse-stepi
authorPedro Alves <palves@redhat.com>
Wed, 13 Apr 2016 13:34:00 +0000 (14:34 +0100)
committerPedro Alves <palves@redhat.com>
Wed, 13 Apr 2016 13:34:00 +0000 (14:34 +0100)
commit3a00c80277a54abe0b286a6e8babc8fe50120205
treec8747b5a7de51c8d1f402f8bd8840c302ae03493
parente26b7e41652e288dfdb4c48121bba470c4774150
Fix PR remote/19840: gdb crashes on reverse-stepi

Reverse debugging against a remote target that does reverse debugging
itself (with the bs/bc packets) always trips on:

 (gdb) target remote localhost:...
 (gdb) reverse-stepi
 ../../gdb/target.c:602: internal-error: default_execution_direction: to_execution_direction must be implemented for reverse async

I missed adding a to_execution_direction method to remote.c in commit
3223143295b5 (Adds target_execution_direction to make record targets
support async mode), GDB 7.4 time.  Later, GDB 7.8 switched to
target-async on by default, making the regression user-visible by
default too.

Fix is simply to add the missing to_execution_direction implementation
to target remote.

Tested by Andi Kleen against Simics.

gdb/ChangeLog:
2016-04-13  Pedro Alves  <palves@redhat.com>

PR remote/19840
* remote.c (struct remote_state) <last_resume_exec_dir>: New
field.
(new_remote_state): Default last_resume_exec_dir to EXEC_FORWARD.
(remote_open_1): Reset last_resume_exec_dir to EXEC_FORWARD.
(remote_resume): Store the last execution direction.
(remote_execution_direction): New function.
(init_remote_ops): Install it as to_execution_direction target_ops
method.
gdb/ChangeLog
gdb/remote.c