]> git.proxmox.com Git - qemu.git/commitdiff
gdbserver fix
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 5 Feb 2007 20:46:05 +0000 (20:46 +0000)
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 5 Feb 2007 20:46:05 +0000 (20:46 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2393 c046a42c-6fe2-441c-8c8c-71466251a162

gdbstub.c
gdbstub.h
monitor.c
vl.c

index a26c12ca6e54e5331f0ccf37f264e5003a3c9c67..aeddc34745419ff3c482abbcf0443a7c94ab9ad3 100644 (file)
--- a/gdbstub.c
+++ b/gdbstub.c
@@ -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
index c5b52c2e22624ed218097adc4c417ad24c94bf2b..41ffc6d089e1edcb9cfc6641d20cf2b82ef57cd1 100644 (file)
--- a/gdbstub.h
+++ b/gdbstub.h
@@ -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
index 33c482b09085a0698562994b66b381a5f0c2fc71..1e9b904bf5b2b35fa285f80da8c7fe982dd201c6 100644 (file)
--- a/monitor.c
+++ b/monitor.c
@@ -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);
diff --git a/vl.c b/vl.c
index c05def228e7f1bea7340c083a09d17dcd9f38431..1757036c0529ae6b148903e10f339bbba9138b0b 100644 (file)
--- a/vl.c
+++ b/vl.c
@@ -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;
@@ -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;
@@ -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:
@@ -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)