This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [PATCH/RFC] interpreters part 2: start up
- From: Elena Zannoni <ezannoni at redhat dot com>
- To: gdb-patches at sources dot redhat dot com
- Cc:
- Date: Mon, 9 Dec 2002 10:39:01 -0500
- Subject: Re: [PATCH/RFC] interpreters part 2: start up
- References: <15816.25138.27791.374641@localhost.redhat.com>
Any comments?
Elena Zannoni writes:
>
> These are the changes that make gdb start the interpreter given on the
> command line, or the console by default.
>
> [btw, in case it wasn't clear, I am not committing any of this yet]
>
> Elena
>
> 2002-11-05 Elena Zannoni <ezannoni@redhat.com>
>
> Written by Jim Ingham <jingham@apple.com> with changes by Keith
> Seitz <keiths@redhat.com> and Elena Zannoni <ezannoni@redhat.com>:
> * top.c (gdb_init): Start the interpreter given on the command
> line or the default one.
> * main.c (captured_main): Allocate memory for interpreter_p.
>
>
> Index: top.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/top.c,v
> retrieving revision 1.68
> retrieving revision 1.62.6.7
> diff -u -p -r1.68 -r1.62.6.7
> --- top.c 26 Sep 2002 17:46:04 -0000 1.68
> +++ top.c 4 Nov 2002 23:27:31 -0000 1.62.6.7
> @@ -63,6 +63,7 @@
> #include <ctype.h>
> #include "ui-out.h"
> #include "cli-out.h"
> +#include "interps.h"
>
> /* Default command line prompt. This is overriden in some configs. */
>
> @@ -2126,17 +2127,30 @@ gdb_init (char *argv0)
> init_ui_hook (argv0);
>
> /* Install the default UI */
> - if (!init_ui_hook)
> - {
> - uiout = cli_out_new (gdb_stdout);
> + /* All the interpreters should have had a look at things by now.
> + Initialize the selected interpreter. */
> + {
>
> - /* All the interpreters should have had a look at things by now.
> - Initialize the selected interpreter. */
> - if (interpreter_p)
> - {
> - fprintf_unfiltered (gdb_stderr, "Interpreter `%s' unrecognized.\n",
> - interpreter_p);
> - exit (1);
> - }
> - }
> + /* There will always be an interpreter. Either the one specified
> + by the user at start up or the console. */
> +
> + struct gdb_interpreter *interp;
> + if (interpreter_p == NULL)
> + interpreter_p = xstrdup (GDB_INTERPRETER_CONSOLE);
> +
> + interp = gdb_interpreter_lookup (interpreter_p);
> +
> + if (interp == NULL)
> + {
> + fprintf_unfiltered (gdb_stderr, "Interpreter `%s' unrecognized.\n",
> + interpreter_p);
> + exit (1);
> + }
> + if (!gdb_interpreter_set (interp))
> + {
> + fprintf_unfiltered (gdb_stderr, "Interpreter `%s' failed to initialize.\n",
> + interpreter_p);
> + exit (1);
> + }
> + }
> }
> Index: main.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/main.c,v
> retrieving revision 1.20
> retrieving revision 1.16.8.3
> diff -u -p -r1.20 -r1.16.8.3
> --- main.c 26 Sep 2002 17:46:04 -0000 1.20
> +++ main.c 1 Oct 2002 00:46:10 -0000 1.16.8.3
> @@ -53,7 +53,9 @@ int display_space;
> processes UI events asynchronously. */
> int event_loop_p = 1;
>
> -/* Has an interpreter been specified and if so, which. */
> +/* Has an interpreter been specified and if so, which.
> + This will be used as a set command variable, so it should
> + always be malloc'ed - since do_setshow_command will free it. */
> char *interpreter_p;
>
> /* Whether this is the command line version or not */
> @@ -359,7 +361,7 @@ extern int gdbtk_test (char *);
> }
> #endif /* GDBTK */
> case 'i':
> - interpreter_p = optarg;
> + interpreter_p = xstrdup (optarg);
> break;
> case 'd':
> dirarg[ndir++] = optarg;