Skip to content

Commit

Permalink
gdb_hostio: Expect other packets from GDB, leading to F-reply
Browse files Browse the repository at this point in the history
* Add a reduced loop like the one in bmp_poll_loop(), allowing BMP
  to service GDB accessing syscall buffers in target memory;
* Use both F-reply and Detach as exit conditions, passing
  a corresponding result code for the target to see when we resume it
  • Loading branch information
ALTracer committed Nov 21, 2023
1 parent fac5c92 commit 374f319
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions src/gdb_hostio.c
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,18 @@ int hostio_reply(target_controller_s *const tc, char *const pbuf, const int len)
static int hostio_get_response(target_controller_s *const tc)
{
char *const packet_buffer = gdb_packet_buffer();
const size_t size = gdb_getpacket(packet_buffer, GDB_PACKET_BUFFER_SIZE);
return gdb_main_loop(tc, packet_buffer, GDB_PACKET_BUFFER_SIZE, size, true);
/* Still have to service normal 'X'/'m'-packets */
while (true) {
/* Get back the next packet to process and have the main loop handle it */
const size_t size = gdb_getpacket(packet_buffer, GDB_PACKET_BUFFER_SIZE);
/* If this was an escape packet (or gdb_if reports link closed), fail the call */
if (size == 1U && packet_buffer[0] == '\x04')
return -1;
const int result = gdb_main_loop(tc, packet_buffer, GDB_PACKET_BUFFER_SIZE, size, true);
/* If this was an F-packet, we're done */
if (packet_buffer[0] == 'F')
return result;
}
}

/* Interface to host system calls */
Expand Down

0 comments on commit 374f319

Please sign in to comment.