]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
2008-06-21 Michael Snyder <msnyder@specifix.com>
authorMichael Snyder <msnyder@vmware.com>
Sun, 22 Jun 2008 23:04:04 +0000 (23:04 +0000)
committerMichael Snyder <msnyder@vmware.com>
Sun, 22 Jun 2008 23:04:04 +0000 (23:04 +0000)
* gdbfreeplay-back.c (handle_special_case): No need to re-compose
a T packet (with doctored PC) on any stop signal except SIGTRAP.

gdb/gdbserver/ChangeLog
gdb/gdbserver/gdbfreeplay-back.c

index d04cb3caf93212f51221b3bf2a59bced5bc29cc0..863c6cc93116e445301bbde67cc825b16191dcd9 100644 (file)
@@ -1,5 +1,8 @@
 2008-06-21  Michael Snyder  <msnyder@specifix.com>
 
+       * gdbfreeplay-back.c (handle_special_case): No need to re-compose
+       a T packet (with doctored PC) on any stop signal except SIGTRAP.
+
        Fix stepping/breakpoint off-by-one issues.
        * gdbfreeplay-back.c (freeplay_find_event): Fix off-by-one error
        on last_cached_frame.
index d3aa0f59895818d3f621bfcd8c5d6e39c424e8a3..801bd1417d6244158ad34b6290f6b0c9191d7c69 100644 (file)
@@ -806,15 +806,17 @@ handle_special_case (FILE *infile, int fd, char *request)
       /* Find the original event message for this stop event.  */
       fseek (infile, stopframe[cur_frame].eventpos, SEEK_SET);
       fgets (inbuf, sizeof (inbuf), infile);
-      /* If it's a "$T", give the target a chance to re-compose it
-        (possibly allowing for DECR_PC_AFTER_BREAK).  */
-      if ((p = strstr (inbuf, "$T")) != NULL)
+
+      /* If it's a "$T05" (SIGTRAP), give the target a chance to
+        re-compose it (possibly allowing for DECR_PC_AFTER_BREAK).  
+      */
+      if ((p = strstr (inbuf, "$T05")) != NULL)
        return add_checksum (target_compose_T_packet (p,
                                                      stopframe[cur_frame].pc,
                                                      next_event_frame == -1 ?
                                                      0 :
                                                      1 /* breakpoint_p */));
-      /* If it's a "$S", just return it (FIXME?)  */
+      /* Otherwise, just return it.  */
       else
        return &inbuf[0];
     }
@@ -846,9 +848,11 @@ handle_special_case (FILE *infile, int fd, char *request)
       /* Find the original event message for this stop event.  */
       fseek (infile, stopframe[cur_frame].eventpos, SEEK_SET);
       fgets (inbuf, sizeof (inbuf), infile);
-      /* If it's a "$T", give the target a chance to re-compose it
-        (possibly allowing for DECR_PC_AFTER_BREAK).  */
-      if ((p = strstr (inbuf, "$T")) != NULL)
+
+      /* If it's a "$T05" (SIGTRAP, give the target a chance to
+         re-compose it (possibly allowing for DECR_PC_AFTER_BREAK).  
+      */
+      if ((p = strstr (inbuf, "$T05")) != NULL)
        return add_checksum (target_compose_T_packet (p,
                                                      stopframe[cur_frame].pc,
                                                      next_event_frame == -1 ?