This is an automated email from Gerrit.

"Tomas Vanek <[email protected]>" just uploaded a new patch set to Gerrit, which 
you can find at https://review.openocd.org/c/openocd/+/9138

-- gerrit

commit 834a34edde08ee0748c2d7c35351f879356f4981
Author: Tim Newsome <[email protected]>
Date:   Thu Sep 14 13:04:39 2023 -0700

    gdb_server,rtos: Differentiate rtos_get_gdb_reg failing and not implemented
    
    If it fails, then pass that failure on. If it's simply not implemented,
    then we can fall through and try target_get_gdb_reg_list_noread().
    
    This difference matters when the target representing the current
    hwthread is unavailable, but the target that is linked to the gdb
    connection is available. In that case we want the operation to return an
    error to gdb, instead of reading the register from the target that is
    available.
    
    Change-Id: I9c84ca556f818c5580e25ab349a34a226fcf0f43
    Signed-off-by: Tim Newsome <[email protected]>

diff --git a/src/rtos/rtos.c b/src/rtos/rtos.c
index 0bf1274e26..d2ffa830ff 100644
--- a/src/rtos/rtos.c
+++ b/src/rtos/rtos.c
@@ -600,7 +600,7 @@ int rtos_get_gdb_reg(struct connection *connection, int 
reg_num)
 
                free(reg_list);
        }
-       return ERROR_FAIL;
+       return ERROR_NOT_IMPLEMENTED;
 }
 
 /** Return a list of general registers. */
diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c
index b11f57bfac..0833eca2b2 100644
--- a/src/server/gdb_server.c
+++ b/src/server/gdb_server.c
@@ -1429,8 +1429,13 @@ static int gdb_get_register_packet(struct connection 
*connection,
        LOG_DEBUG("-");
 #endif
 
-       if ((target->rtos) && (rtos_get_gdb_reg(connection, reg_num) == 
ERROR_OK))
-               return ERROR_OK;
+       if (target->rtos) {
+               retval = rtos_get_gdb_reg(connection, reg_num);
+               if (retval == ERROR_OK)
+                       return ERROR_OK;
+               if (retval != ERROR_NOT_IMPLEMENTED)
+                       return gdb_error(connection, retval);
+       }
 
        retval = target_get_gdb_reg_list_noread(target, &reg_list, 
&reg_list_size,
                        REG_CLASS_ALL);

-- 

Reply via email to