This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] Avoid breakpoint query in MI
> I'm not qualified either to decide if I'm qualified to approve this patch :-)
> As far as I'm concerned, this patch is OK.
>
> - Volodya
OK. This is what I've committed.
--
Nick http://www.inet.net.nz/~nickrob
2008-04-19 Nick Roberts <nickrob@snap.net.nz>
* interps.c (top_level_interpreter): Rename static variable...
(top_level_interpreter_ptr): ...to this.
(top_level_interpreter): New function.
* interps.h: New extern for top_level_interpreter.
* linespec.c: Include interps.h and mi/mi-cmds.h.
(decode_line_2): When using MI, always set all breakpoints in menu.
* Makefile.in (linespec.o, mi-interp.o): Add dependencies.
*** interps.c.~1.23.~ 2008-03-15 22:34:07.000000000 +1300
--- interps.c 2008-04-19 16:16:43.000000000 +1200
*************** void _initialize_interpreter (void);
*** 81,87 ****
static struct interp *interp_list = NULL;
static struct interp *current_interpreter = NULL;
! static struct interp *top_level_interpreter = NULL;
static int interpreter_initialized = 0;
--- 81,87 ----
static struct interp *interp_list = NULL;
static struct interp *current_interpreter = NULL;
! static struct interp *top_level_interpreter_ptr = NULL;
static int interpreter_initialized = 0;
*************** interp_set (struct interp *interp, int t
*** 144,150 ****
/* If we already have an interpreter, then trying to
set top level interpreter is kinda pointless. */
gdb_assert (!top_level || !current_interpreter);
! gdb_assert (!top_level || !top_level_interpreter);
if (current_interpreter != NULL)
{
--- 144,150 ----
/* If we already have an interpreter, then trying to
set top level interpreter is kinda pointless. */
gdb_assert (!top_level || !current_interpreter);
! gdb_assert (!top_level || !top_level_interpreter_ptr);
if (current_interpreter != NULL)
{
*************** interp_set (struct interp *interp, int t
*** 165,171 ****
current_interpreter = interp;
if (top_level)
! top_level_interpreter = interp;
/* We use interpreter_p for the "set interpreter" variable, so we need
to make sure we have a malloc'ed copy for the set command to free. */
--- 165,171 ----
current_interpreter = interp;
if (top_level)
! top_level_interpreter_ptr = interp;
/* We use interpreter_p for the "set interpreter" variable, so we need
to make sure we have a malloc'ed copy for the set command to free. */
*************** interpreter_completer (char *text, char
*** 476,486 ****
return matches;
}
! extern void *
top_level_interpreter_data (void)
{
! gdb_assert (top_level_interpreter);
! return top_level_interpreter->data;
}
/* This just adds the "interpreter-exec" command. */
--- 476,492 ----
return matches;
}
! struct interp *
! top_level_interpreter (void)
! {
! return top_level_interpreter_ptr;
! }
!
! void *
top_level_interpreter_data (void)
{
! gdb_assert (top_level_interpreter_ptr);
! return top_level_interpreter_ptr->data;
}
/* This just adds the "interpreter-exec" command. */
*** interps.h.~1.14.~ 2008-03-15 22:34:07.000000000 +1300
--- interps.h 2008-04-19 16:17:10.000000000 +1200
*************** extern int current_interp_display_prompt
*** 66,71 ****
--- 66,72 ----
extern void current_interp_command_loop (void);
/* Returns opaque data associated with the top-level interpreter. */
extern void *top_level_interpreter_data (void);
+ extern struct interp *top_level_interpreter (void);
extern void clear_interpreter_hooks (void);
*** linespec.c.~1.75~ 2008-04-19 17:54:40.000000000 +1200
--- linespec.c 2008-04-19 09:56:08.000000000 +1200
***************
*** 36,41 ****
--- 36,43 ----
#include "linespec.h"
#include "exceptions.h"
#include "language.h"
+ #include "interps.h"
+ #include "mi/mi-cmds.h"
/* We share this one with symtab.c, but it is not exported widely. */
*************** See set/show multiple-symbol."));
*** 524,530 ****
/* If select_mode is "all", then do not print the multiple-choice
menu and act as if the user had chosen choice "1" (all). */
! if (select_mode == multiple_symbols_all)
args = "1";
else
{
--- 526,533 ----
/* If select_mode is "all", then do not print the multiple-choice
menu and act as if the user had chosen choice "1" (all). */
! if (select_mode == multiple_symbols_all
! || ui_out_is_mi_like_p (interp_ui_out (top_level_interpreter ())))
args = "1";
else
{
*** Makefile.in.~1.1001.~ 2008-04-19 10:53:43.000000000 +1200
--- Makefile.in 2008-04-19 18:03:52.000000000 +1200
*************** libunwind-frame.o: libunwind-frame.c $(d
*** 2365,2372 ****
$(gdb_string_h) $(libunwind_frame_h) $(complaints_h)
linespec.o: linespec.c $(defs_h) $(symtab_h) $(frame_h) $(command_h) \
$(symfile_h) $(objfiles_h) $(source_h) $(demangle_h) $(value_h) \
! $(completer_h) $(cp_abi_h) $(parser_defs_h) $(block_h) \
! $(objc_lang_h) $(linespec_h) $(exceptions_h) $(language_h)
linux-fork.o: linux-fork.c $(defs_h) $(inferior_h) $(regcache_h) $(gdbcmd_h) \
$(infcall_h) $(gdb_assert_h) $(gdb_string_h) $(linux_fork_h) \
$(linux_nat_h) $(gdb_wait_h) $(gdb_dirent_h)
--- 2365,2372 ----
$(gdb_string_h) $(libunwind_frame_h) $(complaints_h)
linespec.o: linespec.c $(defs_h) $(symtab_h) $(frame_h) $(command_h) \
$(symfile_h) $(objfiles_h) $(source_h) $(demangle_h) $(value_h) \
! $(completer_h) $(cp_abi_h) $(parser_defs_h) $(block_h) $(interps_h) \
! $(objc_lang_h) $(linespec_h) $(exceptions_h) $(language_h) $(mi_cmds_h)
linux-fork.o: linux-fork.c $(defs_h) $(inferior_h) $(regcache_h) $(gdbcmd_h) \
$(infcall_h) $(gdb_assert_h) $(gdb_string_h) $(linux_fork_h) \
$(linux_nat_h) $(gdb_wait_h) $(gdb_dirent_h)
*************** mi-getopt.o: $(srcdir)/mi/mi-getopt.c $(
*** 3253,3259 ****
mi-interp.o: $(srcdir)/mi/mi-interp.c $(defs_h) $(gdb_string_h) $(interps_h) \
$(event_top_h) $(event_loop_h) $(inferior_h) $(ui_out_h) $(top_h) \
$(exceptions_h) $(mi_main_h) $(mi_cmds_h) $(mi_out_h) \
! $(mi_console_h) $(observer_h) $(gdbthread_h)
$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-interp.c
mi-main.o: $(srcdir)/mi/mi-main.c $(defs_h) $(target_h) $(inferior_h) \
$(gdb_string_h) $(exceptions_h) $(top_h) $(gdbthread_h) $(mi_cmds_h) \
--- 3253,3259 ----
mi-interp.o: $(srcdir)/mi/mi-interp.c $(defs_h) $(gdb_string_h) $(interps_h) \
$(event_top_h) $(event_loop_h) $(inferior_h) $(ui_out_h) $(top_h) \
$(exceptions_h) $(mi_main_h) $(mi_cmds_h) $(mi_out_h) \
! $(mi_console_h) $(observer_h) $(gdbthread_h) $(interps_h)
$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-interp.c
mi-main.o: $(srcdir)/mi/mi-main.c $(defs_h) $(target_h) $(inferior_h) \
$(gdb_string_h) $(exceptions_h) $(top_h) $(gdbthread_h) $(mi_cmds_h) \