summaryrefslogtreecommitdiff
path: root/gdb/gdbserver/gdbfreeplay-back.c
diff options
context:
space:
mode:
authorMichael Snyder <msnyder@specifix.com>2008-10-10 21:32:51 +0000
committerMichael Snyder <msnyder@specifix.com>2008-10-10 21:32:51 +0000
commit0e25dbbbb058a9e433009d3e8f37e3b91aa873fa (patch)
tree10e2a2f84e058f6e98269cb7db3a0491ef4aa624 /gdb/gdbserver/gdbfreeplay-back.c
parent748e0221f2947a6f0338e8acdaff3dbef41ba42c (diff)
downloadgdb-reverse-20080717-branch.tar.gz
2008-10-10 Michael Snyder <msnyder@vmware.com>reverse-20080717-branchcvs/reverse-20080717-branch
* gdbfreeplay-back.c (handle_special_case): Add support for running off the ends of the replay log ('E06'). 2008-09-10 Michael Snyder <msnyder@vmware.com> * gdbfreeplay-back.c (handle_special_case): Add support for reverse debugging.
Diffstat (limited to 'gdb/gdbserver/gdbfreeplay-back.c')
-rw-r--r--gdb/gdbserver/gdbfreeplay-back.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/gdb/gdbserver/gdbfreeplay-back.c b/gdb/gdbserver/gdbfreeplay-back.c
index 7d7cf415beb..f0143280aca 100644
--- a/gdb/gdbserver/gdbfreeplay-back.c
+++ b/gdb/gdbserver/gdbfreeplay-back.c
@@ -710,6 +710,7 @@ static char OK[8] = "$OK#9a";
static char EMPTY[8] = "$#00";
static char STOP[8] = "$S00#44";
static char E01[8] = "$E01#a6";
+static char E06[8] = "$E06#ab";
static char *
handle_special_case (FILE *infile, int fd, char *request)
@@ -870,7 +871,12 @@ handle_special_case (FILE *infile, int fd, char *request)
}
else
{
+ /* Reached end of replay log. */
cur_frame = last_cached_frame;
+ gdb_ack (fd);
+ if (verbose)
+ fprintf (stdout, "Reached end of replay log.\n");
+ return E06;
}
/* Find the original event message for this stop event. */
@@ -906,13 +912,13 @@ handle_special_case (FILE *infile, int fd, char *request)
}
else
{
- /* WTF? */
+ /* If we didn't find an event, we presumably ran off
+ the end of the replay log. */
gdb_ack (fd);
- strcpy (inbuf, "$O5768617420746865206675636b3f");
if (verbose)
- fprintf (stdout, "WTF? %s\n", add_checksum (inbuf));
- gdbwriteline (fd, add_checksum (inbuf));
+ fprintf (stdout, "Reached beginning of replay log.\n");
cur_frame = 0;
+ return E06;
}
/* Find the original event message for this stop event. */