Patchwork [06/19] gdbstub: Error locations for -gdb

login
register
mail settings
Submitter Markus Armbruster
Date Feb. 7, 2012, 2:09 p.m.
Message ID <1328623766-12287-7-git-send-email-armbru@redhat.com>
Download mbox | patch
Permalink /patch/139964/
State New
Headers show

Comments

Markus Armbruster - Feb. 7, 2012, 2:09 p.m.
Stash away the option argument with add_device_config(), so we still
have its location when we get around to parsing it.

This doesn't improve any messages I can see just yet, but that'll
change shortly.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 vl.c |   10 ++++------
 1 files changed, 4 insertions(+), 6 deletions(-)
Markus Armbruster - Feb. 9, 2012, 3:08 p.m.
Kevin Wolf <kwolf@redhat.com> writes:

> Am 07.02.2012 15:09, schrieb Markus Armbruster:
>> Stash away the option argument with add_device_config(), so we still
>> have its location when we get around to parsing it.
>> 
>> This doesn't improve any messages I can see just yet, but that'll
>> change shortly.
>> 
>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
>
> gdb isn't really a device, though. Should the struct and the functions
> be renamed?

The current names don't bother me, but I'd be fine with a rename, too.
Unless I need to respin anyway, I'd rather leave it to a follow-up
patch, though.

Patch

diff --git a/vl.c b/vl.c
index e252a9d..1394a08 100644
--- a/vl.c
+++ b/vl.c
@@ -1857,6 +1857,7 @@  struct device_config {
         DEV_PARALLEL,  /* -parallel      */
         DEV_VIRTCON,   /* -virtioconsole */
         DEV_DEBUGCON,  /* -debugcon */
+        DEV_GDB,       /* -gdb, -s */
     } type;
     const char *cmdline;
     Location loc;
@@ -2178,7 +2179,6 @@  int qemu_init_main_loop(void)
 
 int main(int argc, char **argv, char **envp)
 {
-    const char *gdbstub_dev = NULL;
     int i;
     int snapshot, linux_boot;
     const char *icount_option = NULL;
@@ -2598,10 +2598,10 @@  int main(int argc, char **argv, char **envp)
                 log_file = optarg;
                 break;
             case QEMU_OPTION_s:
-                gdbstub_dev = "tcp::" DEFAULT_GDBSTUB_PORT;
+                add_device_config(DEV_GDB, "tcp::" DEFAULT_GDBSTUB_PORT);
                 break;
             case QEMU_OPTION_gdb:
-                gdbstub_dev = optarg;
+                add_device_config(DEV_GDB, optarg);
                 break;
             case QEMU_OPTION_L:
                 data_dir = optarg;
@@ -3482,9 +3482,7 @@  int main(int argc, char **argv, char **envp)
     }
     text_consoles_set_display(ds);
 
-    if (gdbstub_dev && gdbserver_start(gdbstub_dev) < 0) {
-        fprintf(stderr, "qemu: could not open gdbserver on device '%s'\n",
-                gdbstub_dev);
+    if (foreach_device_config(DEV_GDB, gdbserver_start) < 0) {
         exit(1);
     }