Skip to content

Commit

Permalink
gdbstub: eliminate gdbserver_fd global
Browse files Browse the repository at this point in the history
We don't really need to track this fd beyond the initial creation of
the socket. We already know if the system has been initialised by
virtue of the gdbserver_state so lets remove it. This makes the later
re-factoring easier.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20200430190122.4592-6-alex.bennee@linaro.org>
  • Loading branch information
stsquad committed May 6, 2020
1 parent 744f1b0 commit e0a1e20
Showing 1 changed file with 11 additions and 13 deletions.
24 changes: 11 additions & 13 deletions gdbstub.c
Original file line number Diff line number Diff line change
Expand Up @@ -398,8 +398,6 @@ static void reset_gdbserver_state(void)
bool gdb_has_xml;

#ifdef CONFIG_USER_ONLY
/* XXX: This is not thread safe. Do we care? */
static int gdbserver_fd = -1;

static int get_char(void)
{
Expand Down Expand Up @@ -2964,7 +2962,7 @@ void gdb_exit(CPUArchState *env, int code)
return;
}
#ifdef CONFIG_USER_ONLY
if (gdbserver_fd < 0 || gdbserver_state.fd < 0) {
if (gdbserver_state.fd < 0) {
return;
}
#endif
Expand Down Expand Up @@ -3011,7 +3009,7 @@ gdb_handlesig(CPUState *cpu, int sig)
char buf[256];
int n;

if (gdbserver_fd < 0 || gdbserver_state.fd < 0) {
if (!gdbserver_state.init || gdbserver_state.fd < 0) {
return sig;
}

Expand Down Expand Up @@ -3060,23 +3058,23 @@ void gdb_signalled(CPUArchState *env, int sig)
{
char buf[4];

if (gdbserver_fd < 0 || gdbserver_state.fd < 0) {
if (!gdbserver_state.init || gdbserver_state.fd < 0) {
return;
}

snprintf(buf, sizeof(buf), "X%02x", target_signal_to_gdb(sig));
put_packet(buf);
}

static bool gdb_accept(void)
static bool gdb_accept(int gdb_fd)
{
struct sockaddr_in sockaddr;
socklen_t len;
int fd;

for(;;) {
len = sizeof(sockaddr);
fd = accept(gdbserver_fd, (struct sockaddr *)&sockaddr, &len);
fd = accept(gdb_fd, (struct sockaddr *)&sockaddr, &len);
if (fd < 0 && errno != EINTR) {
perror("accept");
return false;
Expand Down Expand Up @@ -3137,13 +3135,13 @@ static int gdbserver_open(int port)

int gdbserver_start(int port)
{
gdbserver_fd = gdbserver_open(port);
if (gdbserver_fd < 0)
int gdb_fd = gdbserver_open(port);
if (gdb_fd < 0) {
return -1;
}
/* accept connections */
if (!gdb_accept()) {
close(gdbserver_fd);
gdbserver_fd = -1;
if (!gdb_accept(gdb_fd)) {
close(gdb_fd);
return -1;
}
return 0;
Expand All @@ -3152,7 +3150,7 @@ int gdbserver_start(int port)
/* Disable gdb stub for child processes. */
void gdbserver_fork(CPUState *cpu)
{
if (gdbserver_fd < 0 || gdbserver_state.fd < 0) {
if (!gdbserver_state.init || gdbserver_state.fd < 0) {
return;
}
close(gdbserver_state.fd);
Expand Down

0 comments on commit e0a1e20

Please sign in to comment.