This is an automated email from Gerrit.

Matthias Welwarsky ([email protected]) just uploaded a new patch set to 
Gerrit, which you can find at http://openocd.zylin.com/4445

-- gerrit

commit 2f523ede2e6fbe11dc984d5069e47879fe47a5f4
Author: Matthias Welwarsky <[email protected]>
Date:   Sun Mar 4 18:52:14 2018 +0100

    gdb_server: fix ignored interrupt request from gdb during stepping
    
    Normally, when a ctrl-c is received from gdb, a SIGINT is reported back
    unconditionally to tell gdb that the target has stopped in response.
    However when a rtos support was configured, the rtos awareness overwrote
    the signal with an actual thread state, which gdb then ignored and got
    stuck without the user able to interrupt.
    
    Change-Id: I40fd62333e020a8c4d9df0079270e84df9c77f88
    Signed-off-by: Matthias Welwarsky <[email protected]>

diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c
index a15c5bb..9f7692f 100644
--- a/src/server/gdb_server.c
+++ b/src/server/gdb_server.c
@@ -732,7 +732,6 @@ static void gdb_signal_reply(struct target *target, struct 
connection *connectio
        } else {
                if (gdb_connection->ctrl_c) {
                        signal_var = 0x2;
-                       gdb_connection->ctrl_c = 0;
                } else
                        signal_var = gdb_last_signal(target);
 
@@ -769,11 +768,14 @@ static void gdb_signal_reply(struct target *target, 
struct connection *connectio
                                        target->rtos->current_thread);
                        target->rtos->current_threadid = 
target->rtos->current_thread;
                        target->rtos->gdb_target_for_threadid(connection, 
target->rtos->current_threadid, &ct);
-                       signal_var = gdb_last_signal(ct);
+                       if (!gdb_connection->ctrl_c)
+                               signal_var = gdb_last_signal(ct);
                }
 
                sig_reply_len = snprintf(sig_reply, sizeof(sig_reply), 
"T%2.2x%s%s",
                                signal_var, stop_reason, current_thread);
+
+               gdb_connection->ctrl_c = 0;
        }
 
        gdb_put_packet(connection, sig_reply, sig_reply_len);

-- 

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to