This is an automated email from Gerrit.

"Jan Matyas <mat...@codasip.com>" just uploaded a new patch set to Gerrit, 
which you can find at https://review.openocd.org/c/openocd/+/6879

-- gerrit

commit fe5dd5ccfb9b903d6945e8b4a0b5315ce73e4911
Author: Jan Matyas <mat...@codasip.com>
Date:   Thu Mar 17 14:27:58 2022 +0100

    gdb_server: Improve logging of GDB-remote packets
    
    - Print also the target name, not just the packet contents.
      This is important when there are more GDB servers active
      in one OpenOCD session.
    
    - Log also the received Ctrl-C requests from GDB (one byte 0x3).
      Also do not print zero-length incoming packets (this occurred
      when Ctrl-C packets were received).
    
    - Removed a stray apostrophe "'" that got printed
      in gdb_log_outgoing_packet()
    
    Signed-off-by: Jan Matyas <mat...@codasip.com>
    Change-Id: If68fe0a8aa635165d0bbe6fa0e48a4645a02da67

diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c
index 4dee7e8642..ab6db6ad55 100644
--- a/src/server/gdb_server.c
+++ b/src/server/gdb_server.c
@@ -362,11 +362,17 @@ static int gdb_write(struct connection *connection, void 
*data, int len)
        return ERROR_SERVER_REMOTE_CLOSED;
 }
 
-static void gdb_log_incoming_packet(char *packet)
+static void gdb_log_incoming_packet(struct connection *connection, char 
*packet)
 {
+       assert(connection);
+       assert(packet);
+
        if (!LOG_LEVEL_IS(LOG_LVL_DEBUG))
                return;
 
+       struct target *target = get_target_from_connection(connection);
+       assert(target);
+
        /* Avoid dumping non-printable characters to the terminal */
        const unsigned packet_len = strlen(packet);
        const char *nonprint = find_nonprint_char(packet, packet_len);
@@ -380,25 +386,35 @@ static void gdb_log_incoming_packet(char *packet)
                if (packet_prefix_printable) {
                        const unsigned int prefix_len = colon - packet + 1;  /* 
+ 1 to include the ':' */
                        const unsigned int payload_len = packet_len - 
prefix_len;
-                       LOG_DEBUG("received packet: 
%.*s<binary-data-%u-bytes>", prefix_len, packet, payload_len);
+                       LOG_TARGET_DEBUG(target, "received packet: 
%.*s<binary-data-%u-bytes>", prefix_len,
+                               packet, payload_len);
                } else {
-                       LOG_DEBUG("received packet: <binary-data-%u-bytes>", 
packet_len);
+                       LOG_TARGET_DEBUG(target, "received packet: 
<binary-data-%u-bytes>", packet_len);
                }
        } else {
                /* All chars printable, dump the packet as is */
-               LOG_DEBUG("received packet: %s", packet);
+               LOG_TARGET_DEBUG(target, "received packet: %s", packet);
        }
 }
 
-static void gdb_log_outgoing_packet(char *packet_buf, unsigned int packet_len, 
unsigned char checksum)
+static void gdb_log_outgoing_packet(struct connection *connection, char 
*packet_buf,
+       unsigned int packet_len, unsigned char checksum)
 {
+       assert(connection);
+       assert(packet_buf);
+
        if (!LOG_LEVEL_IS(LOG_LVL_DEBUG))
                return;
 
+       struct target *target = get_target_from_connection(connection);
+       assert(target);
+
        if (find_nonprint_char(packet_buf, packet_len))
-               LOG_DEBUG("sending packet: $<binary-data-%u-bytes>#%2.2x", 
packet_len, checksum);
+               LOG_TARGET_DEBUG(target, "sending packet: 
$<binary-data-%u-bytes>#%2.2x",
+                       packet_len, checksum);
        else
-               LOG_DEBUG("sending packet: $%.*s#%2.2x'", packet_len, 
packet_buf, checksum);
+               LOG_TARGET_DEBUG(target, "sending packet: $%.*s#%2.2x", 
packet_len, packet_buf,
+                       checksum);
 }
 
 static int gdb_put_packet_inner(struct connection *connection,
@@ -441,7 +457,7 @@ static int gdb_put_packet_inner(struct connection 
*connection,
 #endif
 
        while (1) {
-               gdb_log_outgoing_packet(buffer, len, my_checksum);
+               gdb_log_outgoing_packet(connection, buffer, len, my_checksum);
 
                char local_buffer[1024];
                local_buffer[0] = '$';
@@ -482,6 +498,7 @@ static int gdb_put_packet_inner(struct connection 
*connection,
                        LOG_WARNING("negative reply, retrying");
                } else if (reply == 0x3) {
                        gdb_con->ctrl_c = true;
+                       gdb_log_incoming_packet(connection, "<Ctrl-C>");
                        retval = gdb_get_char(connection, &reply);
                        if (retval != ERROR_OK)
                                return retval;
@@ -687,6 +704,7 @@ static int gdb_get_packet_inner(struct connection 
*connection,
                                        break;
                                case 0x3:
                                        gdb_con->ctrl_c = true;
+                                       gdb_log_incoming_packet(connection, 
"<Ctrl-C>");
                                        *len = 0;
                                        return ERROR_OK;
                                default:
@@ -3436,9 +3454,10 @@ static int gdb_input_inner(struct connection *connection)
                /* terminate with zero */
                gdb_packet_buffer[packet_size] = '\0';
 
-               gdb_log_incoming_packet(gdb_packet_buffer);
-
                if (packet_size > 0) {
+
+                       gdb_log_incoming_packet(connection, gdb_packet_buffer);
+
                        retval = ERROR_OK;
                        switch (packet[0]) {
                                case 'T':       /* Is thread alive? */

-- 

Reply via email to