diff --git a/csrc/jtag_vpi.c b/csrc/jtag_vpi.c index 9c6198ad..de2d9272 100644 --- a/csrc/jtag_vpi.c +++ b/csrc/jtag_vpi.c @@ -40,7 +40,8 @@ #include -#define RSP_SERVER_PORT 5555 +// Calling bind with port 0 will return a socket bound to an unused port. +#define RSP_SERVER_PORT 0 #define XFERT_MAX_SIZE 512 const char * cmd_to_string[] = {"CMD_RESET", @@ -63,8 +64,6 @@ int init_jtag_server(int port) struct sockaddr_in serv_addr; int flags; - printf("Listening on port %d\n", port); - listenfd = socket(AF_INET, SOCK_STREAM, 0); memset(&serv_addr, '0', sizeof(serv_addr)); @@ -76,6 +75,14 @@ int init_jtag_server(int port) listen(listenfd, 10); + socklen_t socklen = sizeof(serv_addr); + if (getsockname(listenfd, (struct sockaddr *)&serv_addr, &socklen) == -1) { + perror("init_jtag_server"); + exit(1); + } else { + printf("Listening on port %d\n", ntohs(serv_addr.sin_port)); + } + printf("Waiting for client connection..."); connfd = accept(listenfd, (struct sockaddr*)NULL, NULL); printf("ok\n"); diff --git a/riscv-tools b/riscv-tools index 83a3143e..886d8131 160000 --- a/riscv-tools +++ b/riscv-tools @@ -1 +1 @@ -Subproject commit 83a3143e93b54d705f38588b3e14351434084bae +Subproject commit 886d8131dbd23533fb04d2d76a80be21d5f9ee7a