Skip to content

Commit

Permalink
gdbserver fix
Browse files Browse the repository at this point in the history
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2393 c046a42c-6fe2-441c-8c8c-71466251a162
  • Loading branch information
bellard committed Feb 5, 2007
1 parent 84f2e8e commit c636bb6
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 16 deletions.
14 changes: 14 additions & 0 deletions gdbstub.c
Original file line number Diff line number Diff line change
Expand Up @@ -1234,4 +1234,18 @@ int gdbserver_start(CharDriverState *chr)
qemu_add_vm_stop_handler(gdb_vm_stopped, s);
return 0;
}

int gdbserver_start_port(int port)
{
CharDriverState *chr;
char gdbstub_port_name[128];

snprintf(gdbstub_port_name, sizeof(gdbstub_port_name),
"tcp::%d,nowait,nodelay,server", port);
chr = qemu_chr_open(gdbstub_port_name);
if (!chr)
return -EIO;
return gdbserver_start(chr);
}

#endif
1 change: 1 addition & 0 deletions gdbstub.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ void gdb_exit(CPUState *, int);
int gdbserver_start(int);
#else
int gdbserver_start(CharDriverState *chr);
int gdbserver_start_port(int port);
#endif

#endif
2 changes: 1 addition & 1 deletion monitor.c
Original file line number Diff line number Diff line change
Expand Up @@ -423,7 +423,7 @@ static void do_gdbserver(int has_port, int port)
{
if (!has_port)
port = DEFAULT_GDBSTUB_PORT;
if (gdbserver_start(port) < 0) {
if (gdbserver_start_port(port) < 0) {
qemu_printf("Could not open gdbserver socket on port %d\n", port);
} else {
qemu_printf("Waiting gdb connection on port %d\n", port);
Expand Down
23 changes: 8 additions & 15 deletions vl.c
Original file line number Diff line number Diff line change
Expand Up @@ -6499,8 +6499,7 @@ static BOOL WINAPI qemu_ctrl_handler(DWORD type)
int main(int argc, char **argv)
{
#ifdef CONFIG_GDBSTUB
int use_gdbstub;
char gdbstub_port_name[128];
int use_gdbstub, gdbstub_port;
#endif
int i, cdrom_index;
int snapshot, linux_boot;
Expand Down Expand Up @@ -6568,7 +6567,7 @@ int main(int argc, char **argv)
bios_size = BIOS_SIZE;
#ifdef CONFIG_GDBSTUB
use_gdbstub = 0;
sprintf(gdbstub_port_name, "%d", DEFAULT_GDBSTUB_PORT);
gdbstub_port = DEFAULT_GDBSTUB_PORT;
#endif
snapshot = 0;
nographic = 0;
Expand Down Expand Up @@ -6812,7 +6811,7 @@ int main(int argc, char **argv)
use_gdbstub = 1;
break;
case QEMU_OPTION_p:
pstrcpy(gdbstub_port_name, sizeof(gdbstub_port_name), optarg);
gdbstub_port = atoi(optarg);
break;
#endif
case QEMU_OPTION_L:
Expand Down Expand Up @@ -7220,19 +7219,13 @@ int main(int argc, char **argv)

#ifdef CONFIG_GDBSTUB
if (use_gdbstub) {
CharDriverState *chr;
int port;

port = atoi(gdbstub_port_name);
if (port != 0)
sprintf(gdbstub_port_name, "tcp::%d,nowait,nodelay,server", port);
chr = qemu_chr_open(gdbstub_port_name);
if (!chr) {
fprintf(stderr, "qemu: could not open gdbstub device '%s'\n",
gdbstub_port_name);
/* XXX: use standard host:port notation and modify options
accordingly. */
if (gdbserver_start_port(gdbstub_port) < 0) {
fprintf(stderr, "qemu: could not open gdbstub device on port '%d'\n",
gdbstub_port);
exit(1);
}
gdbserver_start(chr);
} else
#endif
if (loadvm)
Expand Down

0 comments on commit c636bb6

Please sign in to comment.