This is an automated email from Gerrit.

"Koudai Iwahori <kou...@google.com>" just uploaded a new patch set to Gerrit, 
which you can find at https://review.openocd.org/c/openocd/+/7358

-- gerrit

commit 6fc60a4bd44204261ef8cf79f0f67a291b197e60
Author: Koudai Iwahori <kou...@google.com>
Date:   Fri Nov 18 06:18:17 2022 -0800

    hwthread: Restore current_threadid in hwthread_update_threads
    
    When OpenOCD receives a step-execution command from GDB and the target
    is configured as rtos=hwthread, OpenOCD reconstructs the thread-info.
    However, OpenOCD does not restore the thread id which is currently
    selected by GDB. Due to this issue, OpenOCD sends the information of
    wrong thread to GDB after the step execution.
    This commit fixes the above issue by adding a code to save/restore the
    thread id selected by GDB.
    
    Signed-off-by: Koudai Iwahori <kou...@google.com>
    Change-Id: I761a1141c04d48f1290e4f09baa7c7024f86f36a

diff --git a/src/rtos/hwthread.c b/src/rtos/hwthread.c
index 50e7bae51b..efb59f7288 100644
--- a/src/rtos/hwthread.c
+++ b/src/rtos/hwthread.c
@@ -82,6 +82,7 @@ static int hwthread_update_threads(struct rtos *rtos)
        struct target_list *head;
        struct target *target;
        int64_t current_thread = 0;
+       int64_t current_threadid = rtos->current_threadid; /* thread selected 
by GDB */
        enum target_debug_reason current_reason = DBG_REASON_UNDEFINED;
 
        if (!rtos)
@@ -190,6 +191,12 @@ static int hwthread_update_threads(struct rtos *rtos)
        else
                rtos->current_thread = threadid_from_target(target);
 
+       /* restore the threadid which is currently selected by GDB
+        * because rtos_free_threadlist() wipes out it
+        * (GDB thread id is 1-based indexing) */
+       if (current_threadid >= 1 && current_threadid <= thread_list_size)
+               rtos->current_threadid = current_threadid;
+
        LOG_DEBUG("%s current_thread=%i", __func__, (int)rtos->current_thread);
        return 0;
 }

-- 

Reply via email to