3 #include <readline/readline.h>
7 static ATTRIBUTE_NORETURN void
8 fatal (const char *fmt, ...)
13 vfprintf (stderr, fmt, ap);
19 console_cb (const char *str, void *data)
25 main (int argc, char **argv)
30 unsigned ex_count = 0, ex_used = 0;
32 setbuf (stdout, NULL);
34 while (*++argv != NULL)
36 if (strcmp (*argv, "-ex") == 0 && argv[1] != NULL)
37 ex[ex_count++] = *++argv;
39 fatal ("Unknown parameter: %s", *argv);
42 mi_set_workaround (MI_PSYM_SEARCH, 0);
44 h = mi_connect_local ();
46 fatal ("Cannot connect to GDB");
48 mi_set_console_cb (h, console_cb, NULL);
54 if (ex_used < ex_count)
56 cmd = strdup (ex[ex_used++]);
57 printf ("(gdb) %s\n", cmd);
61 cmd = readline ("(gdb) ");
63 cmd = strdup ("quit");
66 mi_send (h, "-interpreter-exec console \"%s\"\n", cmd);
69 res = mi_get_response_blk (h);
71 fatal ("mi_get_response_blk == NULL");
73 rec = mi_get_rrecord (res);
75 fatal ("mi_get_rrecord == NULL");
76 if (rec->tclass != MI_CL_DONE)
77 fatal ("mi_get_rrecord != MI_CL_DONE");