static void * gdbtk_interpreter_init (struct interp *interp, int top_level) { /* Disable interpreter-exec. It causes us big trouble right now. */ struct cmd_list_element *cmd = NULL; struct cmd_list_element *alias = NULL; struct cmd_list_element *prefix = NULL; struct gdbtk_interp_data *data; data = XZALLOC (struct gdbtk_interp_data); data->_stdout = gdbtk_fileopen (); data->_stderr = gdbtk_fileopen (); data->_stdlog = gdbtk_fileopen (); data->_stdtarg = gdbtk_fileopen (); data->_stdtargin = gdbtk_fileopenin (); data->uiout = cli_out_new (data->_stdout), gdbtk_init (); if (lookup_cmd_composition ("interpreter-exec", &alias, &prefix, &cmd)) { set_cmd_cfunc (cmd, hack_disable_interpreter_exec); } return data; }
void _initialize_cli_interp (void) { static const struct interp_procs procs = { cli_interpreter_init, /* init_proc */ cli_interpreter_resume, /* resume_proc */ cli_interpreter_suspend, /* suspend_proc */ cli_interpreter_exec, /* exec_proc */ cli_interpreter_display_prompt_p, /* prompt_proc_p */ /* APPLE LOCAL cli_command_loop */ cli_command_loop, /* APPLE LOCAL completion */ cli_interpreter_complete }; struct interp *cli_interp; /* APPLE LOCAL begin console-quoted interpreter */ /* And here we initialize the console-quoted interpreter. */ static const struct interp_procs quoted_procs = { cli_interpreter_init, /* init_proc */ cli_quoted_interpreter_resume, /* resume_proc */ cli_interpreter_suspend, /* suspend_proc */ cli_interpreter_exec, /* exec_proc */ cli_interpreter_display_prompt_p, /* prompt_proc_p */ cli_command_loop, cli_interpreter_complete }; struct ui_out *tmp_ui_out; struct ui_file *raw_stdout; /* APPLE LOCAL end console-quoted interpreter */ /* Create a default uiout builder for the CLI. */ cli_uiout = cli_out_new (gdb_stdout); cli_interp = interp_new (INTERP_CONSOLE, NULL, cli_uiout, &procs); interp_add (cli_interp); /* APPLE LOCAL begin console-quoted interpreter */ raw_stdout = stdio_fileopen (stdout); tmp_ui_out = cli_quoted_out_new (raw_stdout); cli_interp = interp_new ("console-quoted", NULL, tmp_ui_out, "ed_procs); interp_add (cli_interp); /* second call */ /* APPLE LOCAL end console-quoted interpreter */ }
/* Initialize the IO for gdb in curses mode. */ void tui_initialize_io (void) { #ifdef SIGCONT signal (SIGCONT, tui_cont_sig); #endif /* Create tui output streams. */ tui_stdout = tui_fileopen (stdout); tui_stderr = tui_fileopen (stderr); tui_out = tui_out_new (tui_stdout); /* Create the default UI. It is not created because we installed a deprecated_init_ui_hook. */ tui_old_uiout = uiout = cli_out_new (gdb_stdout); #ifdef TUI_USE_PIPE_FOR_READLINE /* Temporary solution for readline writing to stdout: redirect readline output in a pipe, read that pipe and output the content in the curses command window. */ if (pipe (tui_readline_pipe) != 0) { fprintf_unfiltered (gdb_stderr, "Cannot create pipe for readline"); exit (1); } tui_rl_outstream = fdopen (tui_readline_pipe[1], "w"); if (tui_rl_outstream == 0) { fprintf_unfiltered (gdb_stderr, "Cannot redirect readline output"); exit (1); } setvbuf (tui_rl_outstream, (char*) NULL, _IOLBF, 0); #ifdef O_NONBLOCK (void) fcntl (tui_readline_pipe[0], F_SETFL, O_NONBLOCK); #else #ifdef O_NDELAY (void) fcntl (tui_readline_pipe[0], F_SETFL, O_NDELAY); #endif #endif add_file_handler (tui_readline_pipe[0], tui_readline_output, 0); #else tui_rl_outstream = stdout; #endif }
void _initialize_cli_interp (void) { static const struct interp_procs procs = { cli_interpreter_init, /* init_proc */ cli_interpreter_resume, /* resume_proc */ cli_interpreter_suspend, /* suspend_proc */ cli_interpreter_exec, /* exec_proc */ cli_interpreter_display_prompt_p /* prompt_proc_p */ }; struct interp *cli_interp; /* Create a default uiout builder for the CLI. */ cli_uiout = cli_out_new (gdb_stdout); cli_interp = interp_new (INTERP_CONSOLE, NULL, cli_uiout, &procs); interp_add (cli_interp); }
/* Initialize the IO for gdb in curses mode. */ void tui_initialize_io (void) { #ifdef SIGCONT signal (SIGCONT, tui_cont_sig); #endif /* Create tui output streams. */ tui_stdout = new tui_file (stdout); tui_stderr = new tui_file (stderr); tui_out = tui_out_new (tui_stdout); /* Create the default UI. */ tui_old_uiout = cli_out_new (gdb_stdout); #ifdef TUI_USE_PIPE_FOR_READLINE /* Temporary solution for readline writing to stdout: redirect readline output in a pipe, read that pipe and output the content in the curses command window. */ if (gdb_pipe_cloexec (tui_readline_pipe) != 0) error (_("Cannot create pipe for readline")); tui_rl_outstream = fdopen (tui_readline_pipe[1], "w"); if (tui_rl_outstream == 0) error (_("Cannot redirect readline output")); setvbuf (tui_rl_outstream, (char*) NULL, _IOLBF, 0); #ifdef O_NONBLOCK (void) fcntl (tui_readline_pipe[0], F_SETFL, O_NONBLOCK); #else #ifdef O_NDELAY (void) fcntl (tui_readline_pipe[0], F_SETFL, O_NDELAY); #endif #endif add_file_handler (tui_readline_pipe[0], tui_readline_output, 0); #else tui_rl_outstream = stdout; #endif }
void gdbtk_interp::init (bool top_level) { /* Disable interpreter-exec. It causes us big trouble right now. */ struct cmd_list_element *cmd = NULL; struct cmd_list_element *alias = NULL; struct cmd_list_element *prefix = NULL; _stdout = gdbtk_fileopen (); _stderr = gdbtk_fileopen (); _stdlog = gdbtk_fileopen (); _stdtarg = gdbtk_fileopen (); _stdtargin = gdbtk_fileopen (); uiout = cli_out_new (_stdout), gdbtk_init (); if (lookup_cmd_composition ("interpreter-exec", &alias, &prefix, &cmd)) { set_cmd_cfunc (cmd, hack_disable_interpreter_exec); } }
void _initialize_gdbtk_interp (void) { static const struct interp_procs procs = { gdbtk_interpreter_init, /* init_proc */ gdbtk_interpreter_resume, /* resume_proc */ gdbtk_interpreter_suspend, /* suspend_proc */ gdbtk_interpreter_exec, /* exec_proc */ gdbtk_interpreter_display_prompt_p /* prompt_proc_p */ }; struct interp *gdbtk_interp; gdbtk_data = (struct gdbtk_interp_data *) xmalloc (sizeof (struct gdbtk_interp_data)); memset (gdbtk_data, 0, sizeof (struct gdbtk_interp_data)); gdbtk_data->_stdout = gdbtk_fileopen (); gdbtk_data->_stderr = gdbtk_fileopen (); gdbtk_data->_stdlog = gdbtk_fileopen (); gdbtk_data->_stdtarg = gdbtk_fileopen (); gdbtk_interp = interp_new ("insight", gdbtk_data, cli_out_new (gdbtk_data->_stdout), &procs); interp_add (gdbtk_interp); }
static void * mi_interpreter_init (struct interp *interp, int top_level) { struct mi_interp *mi = XNEW (struct mi_interp); const char *name; int mi_version; /* Assign the output channel created at startup to its own global, so that we can create a console channel that encapsulates and prefixes all gdb_output-type bits coming from the rest of the debugger. */ raw_stdout = gdb_stdout; /* Create MI console channels, each with a different prefix so they can be distinguished. */ mi->out = mi_console_file_new (raw_stdout, "~", '"'); mi->err = mi_console_file_new (raw_stdout, "&", '"'); mi->log = mi->err; mi->targ = mi_console_file_new (raw_stdout, "@", '"'); mi->event_channel = mi_console_file_new (raw_stdout, "=", 0); name = interp_name (interp); /* INTERP_MI selects the most recent released version. "mi2" was released as part of GDB 6.0. */ if (strcmp (name, INTERP_MI) == 0) mi_version = 2; else if (strcmp (name, INTERP_MI1) == 0) mi_version = 1; else if (strcmp (name, INTERP_MI2) == 0) mi_version = 2; else if (strcmp (name, INTERP_MI3) == 0) mi_version = 3; else gdb_assert_not_reached ("unhandled MI version"); mi->mi_uiout = mi_out_new (mi_version); mi->cli_uiout = cli_out_new (mi->out); /* There are installed even if MI is not the top level interpreter. The callbacks themselves decide whether to be skipped. */ observer_attach_signal_received (mi_on_signal_received); observer_attach_end_stepping_range (mi_on_end_stepping_range); observer_attach_signal_exited (mi_on_signal_exited); observer_attach_exited (mi_on_exited); observer_attach_no_history (mi_on_no_history); if (top_level) { observer_attach_new_thread (mi_new_thread); observer_attach_thread_exit (mi_thread_exit); observer_attach_inferior_added (mi_inferior_added); observer_attach_inferior_appeared (mi_inferior_appeared); observer_attach_inferior_exit (mi_inferior_exit); observer_attach_inferior_removed (mi_inferior_removed); observer_attach_record_changed (mi_record_changed); observer_attach_normal_stop (mi_on_normal_stop); observer_attach_target_resumed (mi_on_resume); observer_attach_solib_loaded (mi_solib_loaded); observer_attach_solib_unloaded (mi_solib_unloaded); observer_attach_about_to_proceed (mi_about_to_proceed); observer_attach_traceframe_changed (mi_traceframe_changed); observer_attach_tsv_created (mi_tsv_created); observer_attach_tsv_deleted (mi_tsv_deleted); observer_attach_tsv_modified (mi_tsv_modified); observer_attach_breakpoint_created (mi_breakpoint_created); observer_attach_breakpoint_deleted (mi_breakpoint_deleted); observer_attach_breakpoint_modified (mi_breakpoint_modified); observer_attach_command_param_changed (mi_command_param_changed); observer_attach_memory_changed (mi_memory_changed); observer_attach_sync_execution_done (mi_on_sync_execution_done); /* The initial inferior is created before this function is called, so we need to report it explicitly. Use iteration in case future version of GDB creates more than one inferior up-front. */ iterate_over_inferiors (report_initial_inferior, mi); } return mi; }
cli_interp::cli_interp (const char *name) : cli_interp_base (name) { /* Create a default uiout builder for the CLI. */ this->cli_uiout = cli_out_new (gdb_stdout); }