From e2a4c6c1d8490f8b9968ed7a48bea758842f3edb Mon Sep 17 00:00:00 2001 From: "J.T. Conklin" Date: Thu, 1 Mar 2001 22:45:42 +0000 Subject: [PATCH] * i386-stub.c (handle_exception): Use 'T' response packet. --- gdb/ChangeLog | 4 ++++ gdb/i386-stub.c | 27 +++++++++++++++++++++++---- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 3be660ee36..1a33dba907 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,7 @@ +2001-03-01 J.T. Conklin + + * i386-stub.c (handle_exception): Use 'T' response packet. + 2001-03-01 Michael Snyder * m32r-tdep.c: Fix cut and paste error in comment. diff --git a/gdb/i386-stub.c b/gdb/i386-stub.c index 7aa5da9369..1251567e91 100644 --- a/gdb/i386-stub.c +++ b/gdb/i386-stub.c @@ -758,10 +758,29 @@ handle_exception (int exceptionVector) /* reply to host that an exception has occurred */ sigval = computeSignal (exceptionVector); - remcomOutBuffer[0] = 'S'; - remcomOutBuffer[1] = hexchars[sigval >> 4]; - remcomOutBuffer[2] = hexchars[sigval % 16]; - remcomOutBuffer[3] = 0; + + ptr = remcomOutBuffer; + + *ptr++ = 'T'; /* notify gdb with signo, PC, FP and SP */ + *ptr++ = hexchars[sigval >> 4]; + *ptr++ = hexchars[sigval & 0xf]; + + *ptr++ = hexchars[ESP]; + *ptr++ = ':'; + ptr = mem2hex((char *)®isters[ESP], ptr, 4, 0); /* SP */ + *ptr++ = ';'; + + *ptr++ = hexchars[EBP]; + *ptr++ = ':'; + ptr = mem2hex((char *)®isters[EBP], ptr, 4, 0); /* FP */ + *ptr++ = ';'; + + *ptr++ = hexchars[PC]; + *ptr++ = ':'; + ptr = mem2hex((char *)®isters[PC], ptr, 4, 0); /* PC */ + *ptr++ = ';'; + + *ptr = '\0' putpacket (remcomOutBuffer);