2003-11-06  Andrew Cagney  <cagney@redhat.com>

	* mi-cmd-var.c (mi_cmd_var_set_format): Replace STREQN with
	strncmp.

2003-10-24  Andrew Cagney  <cagney@redhat.com>

	* tui-out.c: Fix "fortunatly"[sic].

2003-10-02  Andrew Cagney  <cagney@redhat.com>

	* mi-main.c: Rename REGISTER_RAW_SIZE to
	DEPRECATED_REGISTER_RAW_SIZE.

2003-09-30  Andrew Cagney  <cagney@redhat.com>

	* mi-main.c: Rename REGISTER_VIRTUAL_SIZE to
	DEPRECATED_REGISTER_VIRTUAL_SIZE.

2003-09-17  Andrew Cagney  <cagney@redhat.com>

	* mi-main.c: Rename REGISTER_BYTE to DEPRECATED_REGISTER_BYTE.

2003-09-10  Elena Zannoni  <ezannoni@redhat.com>

	* mi-main.c (mi_setup_architecture_data): Don't use
	DEPRECATED_REGISTER_BYTES because some architecture don't set it
	and its default is 0. 

2003-08-08  Andrew Cagney  <cagney@redhat.com>

	* mi-main.c (captured_mi_execute_command): Add "mi2" and "mi3" to
	interpreters that hack around CLI.
	* mi-interp.c (mi3_command_loop): New function.
	(mi_interpreter_resume): Check for "mi3", default to "mi2".

2003-08-07  Andrew Cagney  <cagney@redhat.com>

	* mi-interp.c (_initialize_mi_interp): Register "mi2" and "mi3".
	Make "mi" select "mi2".

2003-08-05  Andrew Cagney  <cagney@redhat.com>

	* mi-cmd-env.c (env_execute_cli_command): Use an explicit "%s %s"
	when constructing the run command.
	(mi_cmd_env_cd, mi_cmd_env_path, mi_cmd_env_dir): Simplify command
	string removing the "%s".

2003-08-04  Andrew Cagney  <cagney@redhat.com>

	* mi-cmds.h (struct mi_cli): Define.
	(struct mi_cmd): Change type of "cli" to "struct mi_cli".
	* mi-cmds.c (mi_cmds): Update table.
	* mi-parse.c (mi_parse): Update.
	* mi-main.c (mi_execute_cli_command): Add "args_p" parameter, make
	others constant.
	(mi_cmd_execute): Update call.
	(captured_mi_execute_command): Ditto.

2003-08-04  David Carlton  <carlton@kealia.com>

	* mi-main.c (mi_error_last_message): Add "%s" second argument to
	xasprintf call.

2003-06-28  Daniel Jacobowitz  <drow@mvista.com>

	* mi-out.c (mi_ui_out_impl): Add NULL for redirect member.

2003-06-17  Daniel Jacobowitz  <drow@mvista.com>

        * mi-cmds.c (mi_cmds): Add "-target-disconnect".

2003-06-11  David Carlton  <carlton@bactrian.org>

	* mi-cmd-stack.c: Include dictionary.h.
	(list_args_or_locals): Update use of ALL_BLOCK_SYMBOLS.

2003-06-11  Andrew Cagney  <cagney@redhat.com>

	* mi-main.c (get_register): Replace REGISTER_CONVERTIBLE with
	DEPRECATED_REGISTER_CONVERTIBLE.

2003-06-08  Andrew Cagney  <cagney@redhat.com>

	* mi-parse.c (_initialize_mi_parse): Delete function.
	* mi-main.c: Include "mi-main.h".
	* mi-interp.c (_initialize_mi_interp): Add declaration.
	* mi-cmd-stack.c: Include "stack.h".
	(select_frame_command_wrapper): Delete extern declaration.
	(mi_cmd_stack_select_frame): Replace select_frame_command_wrapper
	with select_frame_command.

2003-05-16  Andrew Cagney  <cagney@redhat.com>

	* mi-main.c (mi_setup_architecture_data): 

2003-05-12  Elena Zannoni  <ezannoni@redhat.com>

	* mi-mi-cmd-stack.c (list_args_or_locals): Rename VAR_NAMESPACE to
	VAR_DOMAIN.

2003-05-11  Andrew Cagney  <cagney@redhat.com>

	* mi-symbol-cmds.c: Rename "mi-cmd-symbol.c", avoid 8.3 problem.

2003-05-08  Andrew Cagney  <cagney@redhat.com>

	* mi-main.c (register_changed_p): Use MAX_REGISTER_SIZE instead of
	MAX_REGISTER_RAW_SIZE.

2003-05-08  Andrew Cagney  <cagney@redhat.com>

	* mi-main.c (get_register): Use MAX_REGISTER_SIZE.

2003-05-05  Andrew Cagney  <cagney@redhat.com>

	* mi-main.c (mi_cmd_data_write_register_values): Replace
	REGISTER_SIZE with DEPRECATED_REGISTER_SIZE.

2003-05-03  J. Brobecker  <brobecker@gnat.com>

	From  Thierry Schneider  <tpschneider1@yahoo.com>:
	* mi-cmds.h (mi_cmd_symbol_list_lines): Add declaration.
	* mi-cmds.c (mi_cmds): Add entry for new MI command.
	* mi-cmd-symbol.c (mi_cmd_symbol_list_lines): New source file
	for all symbol-related commands.

2003-04-02  Bob Rossi  <bob_rossi@cox.net>

	* mi-cmd-file.c: New file to implement mi file commands.
	* mi-getopt.c (mi_valid_noargs): Added mi_valid_noargs to verify 
        if a set of parameters passed to an MI function has no arguments
	* mi-getopt.h (mi_valid_noargs): Declare.
	* mi-cmds.c (mi_cmds): Added -file-list-exec-source-file command.
	* mi-cmds.h (mi_cmd_file_list_exec_source_file): Declare.

2003-03-27  Andrew Cagney  <cagney@redhat.com>

	* gdbmi.texinfo: Delete file.  Contents moved to
	../doc/gdb.texinfo.

2003-03-12  Andrew Cagney  <cagney@redhat.com>

	* mi-main.c (get_register): Use frame_register instead of
	get_saved_register.

2003-03-08  Andrew Cagney  <cagney@redhat.com>

	* mi-out.c: Update copyright.
	(mi_out_data): Define typedef.  Use instead of ui_out_data.

2003-03-01  Andrew Cagney  <cagney@redhat.com>

	* mi-main.c (get_register): Use register_type instead of
	REGISTER_VIRTUAL_TYPE.

2003-02-25  David Carlton  <carlton@math.stanford.edu>

	* mi-cmd-stack.c: Replace all instances of SYMBOL_NAME with
	DEPRECATED_SYMBOL_NAME.  Update copyright.

2003-02-21  Daniel Jacobowitz  <drow@mvista.com>

	* mi-cmd-stack.c (list_args_or_locals): Handle LOC_COMPUTED and
	LOC_COMPUTED_ARG.

2003-02-19  David Carlton  <carlton@math.stanford.edu>

	* mi-cmd-stack.c: #include "block.h"

2003-02-09  Andrew Cagney  <ac131313@redhat.com>

	* mi-interp.c (mi_remove_notify_hooks): Convert function
	definition to ISO C.

2003-02-06  Andrew Cagney  <ac131313@redhat.com>

	* mi-cmd-env.c: Include "gdb_stat.h" instead of <sys/stat.h>.

2003-02-04  Jim Ingham <jingham@apple.com>
	    Keith Seitz  <keiths@redhat.com>
            Elena Zannoni  <ezannoni@redhat.com>
            Andrew Cagney  <ac131313@redhat.com>
	
	* mi-main.h: New file.
	* mi-interp.c: New file.
	* mi-main.c: Include "interps.h".
	(mi_error_message): Make global.
	(mi_input): Delete static function, moved to "mi-interp.c".
	(mi_execute_command, mi_execute_command_wrapper): Ditto.
	(mi_command_loop, mi1_command_loop, mi2_command_loop): Ditto.
	(mi_load_progress): Make non-static.
	(mi_error_last_message): New function.
	(captured_mi_execute_command): If the interpreter changed, don't
	print anything.
	(mi_load_progress): Use current_interp_named_p.
	(mi_init_ui): Delete function.
	(_initialize_mi_main): Don't install the mi interpreter, handled
	by "mi-interp.c".
	(mi_exec_async_cli_cmd_continuation): Make static.
	* mi-console.h (mi_console_file_new): Add `quote' parameter.
	* mi-console.c (struct mi_console_file): Add `quote'.
	(mi_console_file_new): Add `quote' parameter.  Initialize `quote'.
	(mi_console_raw_packet): Only quote the output when `quote'.
	* mi-cmds.h (mi_cmd_interpreter_exec): Declare.
	(mi_error_message, mi_error_last_message): Declare.
	(mi_execute_command): Declare.
	* mi-cmds.c: Add `interpreter-exec' command.

2003-02-04  Andrew Cagney  <ac131313@redhat.com>

	From Keith Seitz <keiths@redhat.com>:
	* gdbmi.texinfo (GDB/MI Miscellaneous Commands): Document the
	interpreter-exec command.

2003-02-02  Andrew Cagney  <ac131313@redhat.com>

	From 2002-11-10 Jason Molenda (jason-cl@molenda.com):
        * mi-cmd-var.c (mi_cmd_var_list_children): CHILDREN field is
        now a list; still a tuple when in mi1.
        * gdbmi.texinfo: Update var-list-children example.

2003-01-13  Andrew Cagney  <ac131313@redhat.com>

	* mi-cmd-env.c: Update copyright.

2003-01-13  Elena Zannoni  <ezannoni@redhat.com>

	* mi-main.c (mi_cmd_exec_return): Use print_stack_frame instead of
	show_and_print_stack_frame.

2003-01-09  Andrew Cagney  <ac131313@redhat.com>

	* mi-cmd-env.c: Include "gdb_string.h" instead of <string.h>.
	Move all includes to after "defs.h".

2002-12-13  Jeff Johnston  <jjohnstn@redhat.com>

	* mi-cmds.c (-environment-directory) Change to use mi_cmd_env_dir,
	(-environment-cd): Change to use mi_cmd_env_cd,.
	(-environment-pwd): Change to use mi_cmd_env_pwd.
	(-environment-path): Change to use mi_cmd_env_path.
	* mi-cmds.h (mi_cmd_env_cd, mi_cmd_env_dir): New prototypes.
	(mi_cmd_env_path, mi_cmd_env_pwd): Ditto.
	* mi-cmd-env.c: New file.  Part of fix for PR gdb/741.
	* gdbmi.texinfo (environment-cd): Update output and example.
	(environment-pwd): Ditto.
	(environment-dir): Update output, description, and examples.
	(environment-path): Ditto.

2002-11-29  Andrew Cagney  <ac131313@redhat.com>

	* mi/mi-cmd-stack.c, mi/mi-main.c: Update to use
	deprecated_selected_frame.

2002-11-13  Andrew Cagney  <ac131313@redhat.com>

	* mi-main.c (mi_cmd_data_write_register_values): Use
	deprecated_write_register_bytes instead of write_register_bytes.

2002-11-11  Jeff Johnston  <jjohnstn@redhat.com>

	* gdbmi.texinfo (-var-assign): Add comments about interaction
	with -var-update and add an example.  Part of fix for gdb/702.

2002-11-08  Jeff Johnston  <jjohnstn@redhat.com>

	* mi-main.c (mi_command_loop): Initialize raw_stdout and gdb_stdout 
	only if mi version is <= 1.
	(mi_init_ui): Initialize raw_stdout and gdb_stdout if mi version 
	is > 1 so startup message is treated as console output.  This is 
	part of fix for PR gdb/604.

2002-11-06  Jeff Johnston  <jjohnstn@redhat.com>

	* mi-cmd-var.c (mi_cmd_var_create): Change the function used to 
	parse the frame addr from parse_and_eval_address() to 
	string_to_core_addr().  This is a fix for PR gdb/494.

2002-10-23  Jeff Johnston  <jjohnstn@redhat.com>

	* mi-cmd-var.c: Change all remaining occurrences of ui_out_tuple_begin 
	to make_cleanup_ui_out_tuple_begin_end.  Change all remaining 
	occurrences of ui_out_list_begin to make_cleanup_ui_out_list_begin_end.
	Use do_cleanups instead of ui_out_list_end or ui_out_tuple_end.  This 
	is a fix for PR gdb/680.
	* mi-cmd-stack.c: Ditto.
	* mi-main.c: Ditto.

2002-10-22  Keith Seitz  <keiths@redhat.com>

	* mi-main.c (mi_cmd_thread_select): Only return MI_CMD_CAUGHT_ERROR
	when we really did catch an error(). If we got GDB_RC_FAIL, return
	MI_CMD_ERROR instead.

2002-10-03  Jeff Johnston  <jjohnstn@redhat.com>

	* gdbmi.texinfo: Fix examples that show frames to remove
	extraneous blank in level field.  Part of fix for PR gdb/192.
        
2002-10-03  Jeff Johnston  <jjohnstn@redhat.com>
        
	* mi-cmd-var.c (mi_cmd_var_update): Fix for PR gdb/672.  For m2, 
	output list begin and end for "changelist" rather than tuple begin/end.
	(varobj_update_one): For m2, add tuple begin and end for varobj 
	update output.

2002-10-02  Elena Zannoni  <ezannoni@redhat.com>

	* mi-main.c (mi_cmd_exec_return): Don't use
	return_command_wrapper, use return_command instead.
	(mi_cmd_exec_interrupt): Don't use
	interrupt_target_command_wrapper, use interrupt_target_command
	instead.
	(return_command_wrapper, interrupt_target_command_wrapper):
	Delete.
	Include frame.h.

2002-10-01  Andrew Cagney  <ac131313@redhat.com>

	* mi-main.c (mi2_command_loop): New function.
	(mi0_command_loop): Delete function.
	(_initialize_mi_main): Recognize, and default to, "mi2".  Do not
	recognize "mi0".
	* mi-out.c (mi_table_begin): Remove mi0 code.
	(mi_table_body, mi_table_end): Ditto.
	(mi_table_header, mi_open, mi_close): Ditto.

2002-09-29  Andrew Cagney  <ac131313@redhat.com>

	* mi-out.c (mi_version): New function.
	* mi-out.h (mi_version): Declare.

2002-09-27  Andrew Cagney  <ac131313@redhat.com>

	From 2002-07-12 Mo DeJong <supermo@bayarea.net>
	* gdbmi.texinfo (var-evaluate-expression): Note that
	var-list-children must be invoked before child variable
	values can be evaluated.

2002-09-26  Elena Zannoni  <ezannoni@redhat.com>

        * mi-cmd-disas.c (dump_insns): Add text only output for CLI.
        (do_mixed_source_and_assembly): Ditto.

2002-09-11  Keith Seitz  <keiths@redhat.com>

	* mi-main.c (mi_cmd_data_list_register_names): Use cleanups
	for the uiout list. Do the cleanups when returning an error.
	(mi_cmd_data_list_changed_registers): Ditto.
	(mi_cmd_data_list_register_values): Use cleanups for the uiout list
	and tuples. Do the cleanups when returning errors.

2002-07-29  Andrew Cagney  <ac131313@redhat.com>

	* mi-cmd-var.c: Include "gdb_string.h".
	* mi-cmd-disas.c: Ditto.

2002-06-17  Keith Seitz  <keiths@redhat.com>

	* gdbmi.texinfo: Update command examples with real MI behavior.

2002-05-20  Keith Seitz  <keiths@redhat.com>

	* mi-main.c (captured_mi_execute_command): Add uiout parameter.
	"data" is now a structure which is used to pass data to/from this
	function to mi_execute_command.
	Modify function to comply with requirements from catch_exceptions.
	Store real return result and command's return result in data.
	(mi_execute_command): Use catch_exceptions.
	Use enum to handle actions to be performed instead of overloading
	catch_errors return result and the mi return result.

2002-04-14  Andrew Cagney  <ac131313@redhat.com>

	* mi-main.c (mi_cmd_exec_return): 

2002-04-09  Andrew Cagney  <ac131313@redhat.com>

	* mi-main.c (register_changed_p): Use frame_register_read instead
	of read_relative_register_raw_bytes.
	(get_register): Delete out-of-date comment.

2002-04-07  Elena Zannoni  <ezannoni@redhat.com>

        * mi-cmd-disas.c: Run through indent.

2002-04-07  Elena Zannoni  <ezannoni@redhat.com>

        * mi-cmd-disas.c (dump_insns): New function.
        (do_mixed_source_and_assembly): New function.
        (do_assembly_only): New function.
        (do_disassembly): New function.
        (mi_cmd_disassemble): Rewrite using smaller, more modular
        functions.

2002-04-05  Jim Blandy  <jimb@redhat.com>

	* mi-cmd-stack.c (list_args_or_locals): Pass new arg to
	get_frame_block.  (See entry in gdb/ChangeLog.)

2002-04-05  Elena Zannoni  <ezannoni@redhat.com>

	* mi-cmd-disas.c (mi_cmd_disassemble): Use TARGET_PRINT_INSN
	instead of tm_print_insn.
	Update copyright year.

2002-04-04  Daniel Jacobowitz  <drow@mvista.com>

	* mi-cmd-disas.c (mi_cmd_disassemble): Skip end-of-function
	markers in the line table.

2002-03-15  Andrew Cagney  <ac131313@redhat.com>

	* mi-main.c (XMALLOC): Delete macro.
	* mi-out.c (XMALLOC): Ditto.
	* mi-parse.c (XMALLOC): Ditto.
	* mi-console.c (XMALLOC): Ditto.
	* mi-cmd-var.c (XMALLOC): Ditto.
	* mi-cmd-break.c (XMALLOC): Ditto.
	
	* mi/mi-cmd-var.c, mi/mi-console.c, mi/mi-out.c: Update copyright
	* mi/mi-parse.c: Ditto.

2002-02-24  Andrew Cagney  <ac131313@redhat.com>

	From wiz at danbala:
	* gdbmi.texinfo: Fix grammar and typos.
	Fix PR gdb/287.

2002-02-03  Jim Blandy  <jimb@redhat.com>

	* mi-cmd-stack.c (list_args_or_locals): Move declaration of
	print_me inside the loop body, so it gets re-initialized every
	iteration.  The cases for the different symbol kinds leave
	print_me unchanged if they don't want the symbol printed.

2002-01-22  Andrew Cagney  <ac131313@redhat.com>

	* gdbmi.texinfo: Remove makeinfo 3.12 hacks.

2002-01-21  Andrew Cagney  <ac131313@redhat.com>

	* mi-cmd-stack.c: Remove #else clause of #ifdef UI_OUT.
	* mi-cmd-break.c: Ditto.
	* mi-main.c: Ditto.

2001-12-30  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdbmi.texinfo: Fix the application of GFDL in the Copyright notice.

2001-10-12  Daniel Jacobowitz  <drow@mvista.com>

	* mi-cmd-stack.c (list_args_or_locals): Use ALL_BLOCK_SYMBOLS.

2001-09-18  Andrew Cagney  <ac131313@redhat.com>

	* mi-main.c (mi_cmd_thread_select): Pass uiout to
	gdb_thread_select.
	(mi_cmd_thread_list_ids): Pass uiout to gdb_list_thread_ids.

	* mi-cmd-break.c (breakpoint_notify): Pass uiout to
	gdb_breakpoint_query.

2001-08-17  Keith Seitz  <keiths@redhat.com>

	* mi-cmd-var.c (varobj_update_one): Update call to
	varobj_update to reflect recent api change.

2001-07-26  Andrew Cagney  <ac131313@redhat.com>

	* mi-main.c: Include "gdb.h".
	* mi-cmd-break.c: Include "gdb.h".

2001-07-12  Andrew Cagney  <ac131313@redhat.com>

	* mi-main.c (mi_execute_command): Flush output after ``(gdb)''
	prompt.  Bug reported by David Whedon.
	(mi_execute_async_cli_command): Ditto.
	(mi_exec_async_cli_cmd_continuation): Ditto.
	(mi_command_loop): Ditto.

2001-07-10  Mark Kettenis  <kettenis@gnu.org>

	* mi-out.c (mi_out_new): Initialize suppress_ouput field of newly
	created `struct ui_out_data'.

2001-07-09  Kevin Buettner  <kevinb@redhat.com>

	* mi-main.c (register_changed_p, get_register): Use alloca()
	to allocate space previously allocated via gcc's
	variable-length array extension.
	(mi_cmd_data_write_register_values, mi_cmd_data_write_memory):
	Change type of ``buffer'' to ``void *''.  Don't cast return value
	from xmalloc().  Add a cleanup to free the xmalloc'd buffer.

2001-07-07  Andrew Cagney  <ac131313@redhat.com>

	* mi-main.c (mi_cmd_data_evaluate_expression): Replace value_ptr
	with `struct value *'.

2001-07-08  Kevin Buettner  <kevinb@redhat.com>

	* mi-out.c (mi_table_header, mi_field_int, mi_field_skip)
	(mi_field_string) Make function declarators match earlier
	declarations.

2001-07-04  Andrew Cagney  <ac131313@redhat.com>

	* mi-out.c (mi_ui_out_impl): Initialize is_mi_like_p to one.

2001-06-27  Andrew Cagney  <ac131313@redhat.com>

	* mi-out.c (mi_table_begin): Include nr_cols and nr_rows in mi1
	table output.
	* mi-out.c (mi_table_begin): Only suppress output when mi0. Change
	the header to a list.
	(mi_table_body): For mi1, close the header list and open a table
	body list.
	(mi_table_end): For mi1, close the body list.
	(mi_table_header): For mi1, output a tuple containing all the
	header information.
	(mi_open, mi_close): Reverse logic of mi_version test.
	* gdbmi.texinfo (GDB/MI Breakpoint Table Commands): Update.

2001-06-26  Andrew Cagney  <ac131313@redhat.com>

	* gdbmi.texinfo (GDB/MI Output Syntax): Delete reference to query
	packet.

2001-06-26  Andrew Cagney  <ac131313@redhat.com>

	* mi-cmd-stack.c (list_args_or_locals): Output a list of "args" or
	"locals" entries.
	* gdbmi.texinfo (stack-list-locals, stack-list-arguments)
	(exec-interrupt, target-select, thread-select): Update
	documentation.

2001-06-26  Andrew Cagney  <ac131313@redhat.com>

	* mi-cmd-stack.c (mi_cmd_stack_list_frames): Output a list of
	"stack" entries.
	(mi_cmd_stack_list_args): Ditto for "stack-args".
	* gdbmi.texinfo (stack-list-frames, stack-list-arguments): Update
	documentation.
	(GDB/MI Stack Manipulation Commands): Fix section title.  Was
	Stack Manipulation Commands in GDB/MI.

2001-06-25  Andrew Cagney  <ac131313@redhat.com>

	* gdbmi.texinfo: Update output examples that contain stop reason
	output, change the args=.... to a list.
	(exec-return): Ditto.

2001-06-25  Andrew Cagney  <ac131313@redhat.com>

	* mi-main.c (mi_cmd_data_read_memory): Output the memory contents
	- memory and data - as a list.
	* gdbmi.texinfo (data-read-memory): Update documentation.

2001-06-25  Andrew Cagney  <ac131313@redhat.com>

	* mi-main.c (mi_cmd_data_list_register_values): Output a list of
	register values.
	* gdbmi.texinfo (data-list-register-values): Update documentation.

2001-06-25  Andrew Cagney  <ac131313@redhat.com>

	* mi-main.c (mi_cmd_data_list_register_names): Output a list of
	register names.
	(mi_cmd_data_list_register_names): Include the pseudo registers.
	(mi_cmd_data_list_register_names): Don't leave holes in the list,
	output "" for NULL registers.
	* gdbmi.texinfo (data-list-register-names): Update documentation.

2001-06-23  Andrew Cagney  <ac131313@redhat.com>

	* mi-main.c (mi_cmd_data_list_changed_registers): Output a list of
	register numbers.
	* gdbmi.texinfo (data-list-changed-registers): Update
	documentation.
	
2001-06-23  Andrew Cagney  <ac131313@redhat.com>

	* gdbmi.texinfo (data-disassemble): Update documentation of
	output.  Produces a list of instructions and a list of source
	lines.

2001-06-22  Andrew Cagney  <ac131313@redhat.com>

	* mi-cmd-disas.c (mi_cmd_disassemble): For "-data-disassemble",
	output a list instead of a tupple.

2001-06-21  Andrew Cagney  <ac131313@redhat.com>

	* mi-out.c (struct ui_out_data): Replace field first_header with
	suppress_output.
	(mi_begin, mi_end): Check suppress_header.
	(mi_field_int, mi_field_skip): Ditto.
	(mi_field_string, mi_field_fmt): Ditto.
	(mi_table_begin): When nr_rows is zero, set suppress_header else,
	output the start of the header.
	(mi_table_body): Clear suppress header.

2001-06-21  Andrew Cagney  <ac131313@redhat.com>

	* mi-out.c (mi_open): For lists, when mi_version > 0, use ``[''.
	(mi_close): Ditto for ``]''.

2001-06-20  Andrew Cagney  <ac131313@redhat.com>

	* mi-out.c (mi_table_header): Add parameter ``col_name''.

2001-06-18  Andrew Cagney  <ac131313@redhat.com>

	* mi-out.c: Include "gdb_assert.h".
	(mi_table_begin): Add parameter ``nr_rows''.

2001-06-18  Andrew Cagney  <ac131313@redhat.com>

	* mi-main.c: Use strncmp as the "mi" test.  Allow "mi", "mi0" and
	"mi1".
	(mi_command_loop): Add parameter mi_version, pass to mi_out_new.
	(mi1_command_loop, mi0_command_loop): New functions.
	(_initialize_mi_main): Recognize "mi", "mi0" and "mi1".
	* mi-out.c (mi_out_new): Add parameter mi_version.
	(struct ui_out_data): Add field mi_version.
	* mi-out.h (mi_out_new): Update.

2001-06-07  Andrew Cagney  <ac131313@redhat.com>

	* gdbmi.texinfo (GDB/MI Output Syntax): Add tuples and lists to
	syntax.
	(GDB/MI Draft Changes to Output Syntax): Delete section.
	
Mon Jun 11 17:22:25 2001  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-out.c: Fix typo. s/supress/suppress/.

2001-06-09  Andrew Cagney  <ac131313@redhat.com>

	* mi-out.c (mi_table_end, mi_table_begin, mi_begin, mi_end): Move
	supress_field_separator updates from here.
	(mi_open, mi_close): To here.
	(mi_open): Add parameter name. Output a field_separator.
	(mi_table_begin): Update.
	(mi_table_header): Update.
	(mi_begin): Update.

2001-06-09  Andrew Cagney  <ac131313@redhat.com>

	* mi-out.c (mi_table_begin): Make char* parameters constant.
	(mi_table_header): Ditto.
	(mi_field_int): Ditto.
	(mi_field_skip): Ditto.
	(mi_field_string): Ditto.
	(mi_field_fmt): Ditto.
	(mi_text): Ditto.
	(mi_message): Ditto.

2001-05-12  Andrew Cagney  <ac131313@redhat.com>

	* mi-out.c (mi_close, mi_open): Output ``[]'' when a list.

Fri May 11 13:55:07 2001  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-cmd-var.c: Replace ui_out_list_begin, ui_out_list_end and
 	make_cleanup_ui_out_list_end with ui_out_tupple_begin,
 	ui_out_tupple_end and make_cleanup_ui_out_tupple_begin_end.
	* mi-cmd-stack.c: Ditto.
	* mi-cmd-disas.c: Ditto.
	* mi-main.c: Ditto.

2001-05-10  Andrew Cagney  <ac131313@redhat.com>

	* mi-out.c (mi_open, mi_close): Replace list_open and list_close.
	(mi_table_begin): Update.
	(mi_table_header): Update.
	(mi_begin): Update.
	(mi_table_body): Update.
	(mi_table_end): Update.
	(mi_end): Update.

Thu May 10 16:28:13 2001  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (mi_execute_async_cli_command): Always initialize
 	old_cleanups.

2001-05-08  Andrew Cagney  <ac131313@redhat.com>

	* mi-out.c (mi_begin, mi_end): Replace mi_list_begin and
	mi_list_end.
	(mi_ui_out_impl): Update.

2001-03-28  Andrew Cagney  <ac131313@redhat.com>

	* mi-main.c (mi_cmd_data_read_memory): Use xcalloc.

2001-03-26  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdbmi.texinfo: Update copyright.  Change Permissions to GFDL.

2001-03-20  Andrew Cagney  <ac131313@redhat.com>

	* mi-cmd-disas.c (mi_cmd_disassemble): Initialize ``file_string''
	and ``line_num''.  Consolidate declaration of argument variables.

2001-03-19  Andrew Cagney  <ac131313@redhat.com>

	* mi-out.h: Remove #ifdef __STDC__.

2001-03-08  Andrew Cagney  <ac131313@redhat.com>

	* mi-main.c (mi_cmd_data_list_register_names): Use NUM_REGS, not
	ARCH_NUM_REGS.
	(mi_cmd_data_list_changed_registers): Ditto.
	(mi_cmd_data_list_register_values): Ditto.
	(mi_cmd_data_write_register_values): Ditto.

2001-03-06  Kevin Buettner  <kevinb@redhat.com>

	* gdbmi.texinfo, mi-cmd-disas.c, mi-cmd-stack.c, mi-cmd-var.c,
	mi-cmds.c, mi-cmds.h, mi-console.c, mi-console.h, mi-getopt.c,
	mi-getopt.h, mi-out.c, mi-out.h, mi-parse.c, mi-parse.h: 
	Update/correct copyright notices.

Wed Feb  7 19:50:37 2001  Andrew Cagney  <cagney@redhat.com>

	* mi-getopt.c: Add __FILE__ and __LINE__ parameter to calls to
 	internal_error.
	* mi-console.c: Ditto.
	* mi-cmds.c: Ditto.
	* mi-cmd-break.c: Ditto.

2001-01-27  Fernando Nasser  <fnasser@redhat.com>

	From Momchil Velikov  <velco@fadata.bg>
	* mi-cmd-disas.c (gdb_dis_asm_read_memory): Add missing memory
	attributes argument in the call to `xfer_memory'.

2000-12-14  Kevin Buettner  <kevinb@redhat.com>

	* mi-cmd-disas.c, mi-cmd-var.c, mi-console.c, mi-main.c,
	mi-parse.c: Replace occurrences of free() with xfree().

Fri Nov 17 16:07:23 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c: Replace asprintf with xasprintf.
	* mi-cmd-var.c (mi_cmd_var_create): Ditto.

2000-10-16  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdbmi.texinfo (GDB/MI Variable Objects): Dimensions of
	multitable changed to "@columnfractions .4 .6".  Suggested by
	Dmitry Sivachenko <dima@Chg.RU>.

2000-08-23  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdbmi.texinfo: Change flathead -> @sc{gdb/mi}.
	Fix typos and markup mistakes (from Dmitry S.
	Sivachenko <dima@Chg.RU>).

2000-07-24  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdbmi.texinfo: Change GDB -> @value{GDBN}, and
	(gdb) -> (@value{GDBP}).  Fix a few typos and some markup.  From
	Dmitry S. Sivachenko <dima@Chg.RU>.

Tue May 16 14:13:41 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (mi_cmd_execute): Use free_current_contents.
	(free_and_reset): Delete.

Mon May 15 16:17:56 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (mi_cmd_data_assign, mi_cmd_data_evaluate_expression),
 	mi-cmd-var.c (mi_cmd_var_create, mi_cmd_var_delete): Delete
 	make_cleanup_func casts. Not needed.

2000-05-07  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdbmi.texinfo: Lots of typos and grammar fixes from Brian
        Youmans <3diff@flib.gnu.ai.mit.edu>.

Wed Apr 26 18:35:19 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbmi.texinfo (GDB/MI Output Syntax v2.0): Convert Draft 2.0
 	Output Syntax into a new section.  Cross reference.
	(menu): Fix tipo. GDB/MI Compatibility with CLI.

2000-04-23  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdbmi.texinfo: Lots of changes, to include this document as part
	of the GDB manual.

2000-03-13  James Ingham  <jingham@leda.cygnus.com>

	* mi-cmd-var.c (mi_cmd_var_create): Add special frame cookie "@"
	to indicate an "USE_CURRENT_FRAME" variable.
	(varobj_update_one): Add "in_scope" and "type_changed" to the
	result.

2000-03-06  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-cmds.h: Export mi_cmd_data_write_register_values.
	
	* mi-cmds.c (mi_cmds): Implement data-write-register-values with
 	mi_cmd_data_write_register_values.

	* mi-main.c (mi_cmd_data_write_register_values): New
 	function. Write a value into a register.

2000-03-06  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdbmi.texinfo: Update data-disassemble documentation.

2000-03-01  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-cmd-disas.c (mi_cmd_disassemble): Use
 	ui_out_field_core_addr() instead of print_address_numeric(), to
 	maintain consistency throughout MI.

Wed Feb 23 17:09:39 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-cmd-break.c, mi-cmd-disas.c, mi-cmd-stack.c, mi-cmd-var.c,
 	mi-cmds.c, mi-cmds.h, mi-console.c, mi-console.h, mi-getopt.c,
 	mi-getopt.h, mi-main.c, mi-out.c, mi-out.h, mi-parse.c,
 	mi-parse.h: Update copyright information.

Wed Feb 23 13:31:16 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-cmd-disas.c (gdb_dis_asm_read_memory): Change LEN to unsigned
 	long.  Match ../include/dis-asm.h change.

Wed Feb 23 10:30:55 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbmi.texinfo: Update copyright - FSF.  Update version
 	information.

	mi-cmd-break.c, mi-cmd-disas.c, mi-cmd-stack.c, mi-cmd-var.c,
 	mi-cmds.h, mi-main.c, mi-parse.c, mi-parse.h: Re-format using GNU
 	indent.

2000-02-21  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c: Add include of gdbcore.h for write_memory()
 	prototype.

2000-02-18  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-cmd-disas.c (mi_cmd_disassemble): Change syntax of
 	command. Now use options.  
	Instead of printing the symbolic address of instructions via
 	print_address_symbolic(), use build_address_symbolic() and format
 	properly for output.
	(gdb_do_disassmble): Delete.

2000-02-18  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-cmd-disas.c (mi_cmd_disassemble): 

2000-02-17  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (mi_cmd_data_write_memory): New function. Write a
 	value into target memory.

	* mi-cmds.h (mi_cmd_data_write_memory): Export. 

	* mi-cmds.c (mi_cmds): Hook up data-write-memory to
 	mi_cmd_data_write_memory().

2000-02-17  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (mi_cmd_target_download): Correct error message to
 	report right function name.
	(mi_cmd_target_select): Add doing exec cleanups at end.
	(mi_cmd_data_read_memory): Correct typo.
	(mi_cmd_execute): Do not simply free last_async_command, but reset
 	it to NULL as well.
	(free_and_reset): New function, free the argument and set it to
 	NULL.
	(mi_cmd_target_select_continuation): Delete prototype.
	
Tue Feb  1 00:17:12 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-cmd-disas.c, mi-cmds.h, mi-console.c, mi-console.h,
 	mi-main.c, mi-out.c, mi-out.h: Update to reflect rename of
 	gdb-file / GDB_FILE to ui-file / ``struct ui_file''.
	
Mon Jan 31 18:33:28 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (mi_command_loop): Delete reference to
 	fputs_unfiltered_hook.

2000-01-27  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-cmds.c (mi_cmds): Update entries for
 	mi_cmd_data_list_register_names,
 	mi_cmd_data_list_changed_registers,
 	mi_cmd_data_list_register_values.

	* mi-cmds.h (mi_cmd_data_list_register_names,
 	mi_cmd_data_list_changed_registers,
 	mi_cmd_data_list_register_values): Update to mi_cmd_argv_ftype.

	* mi-main.c (mi_cmd_data_list_register_names,
 	mi_cmd_data_list_changed_registers,
 	mi_cmd_data_list_register_values): Update to use argc, argv
 	parameters.
	
2000-01-27  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (mi_cmd_data_read_memory): Correct the computation of
 	next-row.

2000-01-27  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-cmd-var.c (mi_cmd_var_create): Test for NULL type.
	(mi_cmd_var_set_format, mi_cmd_var_show_format,
	mi_cmd_var_info_num_children, mi_cmd_var_list_children,
	mi_cmd_var_info_type, mi_cmd_var_info_expression,
	mi_cmd_var_show_attributes, mi_cmd_var_evaluate_expression,
	mi_cmd_var_assign, mi_cmd_var_update): Prevent possibility of memory
	leak on error.

2000-01-27  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-out.c (mi_field_string): Test for NULL string pointer.

2000-01-17  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-cmd-stack.c (mi_cmd_stack_list_frames): Call
 	print_frmae_info() with the correct arguments.

	* mi-main.c (mi_cmd_exec_return): Call
 	show_and_print_stack_frame() with LOC_AND_ADDRESS, so it does the
 	right thing.  Update Copyright.

2000-01-13  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c: Move disassemble commands from here.

	* mi-cmd-disas.c: To here. New file.

2000-01-13  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-cmd-stack.c: Remove include of mi-out.h.

	* mi-main.c (mi_cmd_disassemble): Update function to use argc/argv
 	interface.

	* mi-cmds.h: Ditto.

	* mi-cmds.c: Ditto.

2000-01-12  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdbmi.texinfo: Update stack commands descriptions.
	Add thread commands descriptions and examples.

	* mi-main.c (mi_cmd_thread_list_ids): Fix typo.

2000-01-12  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (mi_cmd_thread_list_ids): New function, print a list
 	of currently known threads ids, and the total number of threads.
	(mi_cmd_thread_select): New function. Switch current thread.

	* mi-cmds.c (mi_cmds): Implement thread-list-ids by
 	mi_cmd_thread_list_ids, and thread-select by mi_cmd_thread_select.

	* mi-cmds.h (mi_cmd_thread_select, mi_cmd_thread_list_ids): Export.

2000-01-11  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c: Move stack commands from here.

	* mi-cmd-stack.c: To here. New file.

2000-01-07  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (list_args_or_locals): Add a new paramter, the frame
 	for which to display args or locals. Don't use selected_frame
 	anymore, use the new parameter instead. Return void instead of
 	mi_cmd_result, let callers do so.
	(mi_cmd_stack_list_args): Change interface. Now accept low and
 	high frame numbers to display args for a range of frames. Without
 	these two, display args for the whole stack.
	(mi_cmd_stack_list_locals): Adapt to new interface for
 	list_args_or_locals.

2000-01-06  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (mi_cmd_stack_info_depth, mi_cmd_stack_list_args,
 	mi_cmd_stack_list_frames, mi_cmd_stack_list_locals,
 	mi_cmd_stack_select_frame): Change to use argv type of parameters.

	* mi-cmds.c (mi_cmds): Change stack-info-depth,
 	stack-list-arguments, stack-list-frames, stack-list-locals,
 	stack-select-frame to use argv parameters.

	* mi-cmds.h (mi_cmd_stack_info_depth, mi_cmd_stack_list_args,
 	mi_cmd_stack_list_frames, mi_cmd_stack_list_locals,
 	mi_cmd_stack_select_frame): Update definitions.

Tue Jan  4 12:38:54 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (mi_command_loop): Force the MI interface to use seven
 	bit strings.
	* gdbmi.texinfo: Make it clear that a quoted C string is seven
 	bit.

Thu Dec 30 14:15:22 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-getopt.c (mi_getopt): Rewrite.  Allow long options.
	* mi-getopt.h (struct mi_opt): Declare.
	(mi_getopt): Update.

	* mi-main.c (mi_cmd_data_read_memory), mi-cmd-break.c
 	(mi_cmd_break_insert, mi_cmd_break_watch): Update.

Wed Dec 29 23:38:35 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-cmd-break.c (mi_cmd_break_insert): Add support for -c
 	<condition>, -i <ignore-count> and -p <thread>.
	(breakpoint_notify): New function.
	(mi_cmd_break_insert): Wrap GDB call with callback hooks so that
 	MI is notified when ever a breakpoint is created.

	* gdbmi.texinfo: Update.

Fri Dec 24 11:23:22 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (gdb_do_disassemble): Strip out more useless #ifdef
 	UI_OUTs.

1999-12-23  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (gdb_do_disassemble): Fix output. Lines that have no
 	assembly instructions must still be outputted, to keep the source
 	line numbering correct.
	Remove #ifdef UI_OUT's, they are useless.

1999-12-17  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (gdb_do_disassemble): Don't print a new list in mixed
 	mode, every time. Just do it when we actually encounter a new
 	source line.

1999-12-17  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-cmd-var.c (mi_cmd_var_list_children): Add test for C++ pseudo
	variable objects (private, public, protected) as these do not have
        a type and the -var-list-children operation was dumping core.
	
Fri Dec 17 20:23:33 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbmi.texinfo: Document recommended syntax for options.

	* mi-main.c (mi_cmd_data_read_memory): Add support for ``-o
 	<offset>''.
	* gdbmi.texinfo: Document.
	
Wed Dec 15 17:43:08 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-getopt.h (mi_getopt): Change optarg to a char pointer. Check
 	optind.
  	* mi-cmd-break.c (mi_cmd_break_insert): Update.

	* mi-main.c (mi_cmd_data_read_memory): Add fields "next-row-addr",
 	"prev-row-addr", "next-page-addr", "prev-page-addr" and a per row
 	"addr".
	* gdbmi.texinfo: Update.

Wed Dec 15 01:05:40 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-cmds.h (mi_cmd_result): Add MI_CMD_CAUGHT_ERROR for when the
 	error is caught.

	* mi-main.c (captured_mi_execute_command): When
 	MI_CMD_CAUGHT_ERROR return 0 rethrowing the eror.

1999-12-13  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-cmd-break.c (mi_cmd_break_insert): Remove unused var.

	* mi-cmd-var.c (mi_cmd_var_update): Remove unused variables.

Mon Dec 13 18:43:36 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-parse.c (mi_parse): Quote the command when printing it.
	(mi_parse_argv): Fix handling of quoted strings. Was not
 	de-quoting them.
	(mi_parse_argv): Make static.

Mon Dec 13 18:30:03 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-cmds.h (mi_cmd_break_insert, mi_cmd_break_watch): Change type
 	to mi_cmd_argv_ftype.
	* mi-cmds.c (mi_cmds): Update.
	* mi-cmd-break.c (mi_cmd_break_insert, mi_cmd_break_watch): Change
 	to new style of arguments with argc and argv.  Parse arguments
 	using mi_getopt.

	* mi-cmd-break.c (mi_cmd_break_insert): Wrap body in #ifdef UI_OUT
 	to avoid non-ui compile problems.

Mon Dec 13 15:08:36 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-getopt.h, mi-getopt.c: New files. Similar to getopt but with
 	well defined semantics.
	
Mon Dec 13 14:22:21 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (mi_cmd_break_insert, mi_cmd_break_watch, enum
 	wp_type, enum bp_type): Move from here.
	* mi-cmd-break.c: To here.  New file.
	(mi_cmd_break_insert, mi_cmd_break_insert, mi_cmd_break_watch):
 	Use error to report problems.

1999-12-09  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdbmi.texinfo: Update description of exec-interrupt.

	* mi-main.c (mi_cmd_exec_interrupt): If the program is not
 	executing, don't try to interrupt it, but error out instead.  Make
 	sure previous_async_command is not null before duplicating it into
 	last_async_command.

	* gdbmi.texinfo: Add examples for data-evaluate-expression.

1999-12-08  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-cmd-var.c (mi_cmd_var_assign, mi_cmd_var_create,
 	mi_cmd_var_delete, mi_cmd_var_evaluate_expression,
 	mi_cmd_var_info_expression, mi_cmd_var_info_num_children,
 	mi_cmd_var_info_type, mi_cmd_var_list_children,
 	mi_cmd_var_set_format, mi_cmd_var_show_attributes,
 	mi_cmd_var_show_format, mi_cmd_var_update): Change to use new
 	style of arguments with argc and argv.
	(next_arg): Delete.
	(which_var): Delete.

	* mi-cmds.c (mi_cmds): Update entries for mi_cmd_var_assign,
 	mi_cmd_var_create, mi_cmd_var_delete,
 	mi_cmd_var_evaluate_expression, mi_cmd_var_info_expression,
 	mi_cmd_var_info_num_children, mi_cmd_var_info_type,
 	mi_cmd_var_list_children, mi_cmd_var_set_format,
 	mi_cmd_var_show_attributes, mi_cmd_var_show_format,
 	mi_cmd_var_update.

	* mi-cmds.h (mi_cmd_var_assign, mi_cmd_var_create,
 	mi_cmd_var_delete, mi_cmd_var_evaluate_expression,
 	mi_cmd_var_info_expression, mi_cmd_var_info_num_children,
 	mi_cmd_var_info_type, mi_cmd_var_list_children,
 	mi_cmd_var_set_format, mi_cmd_var_show_attributes,
 	mi_cmd_var_show_format, mi_cmd_var_update): Update declarations.

1999-12-08  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdbmi.texinfo: Comment out -data-assign command.  * mi-main.c
 	(mi_cmd_data_assign): Do not use, comment out.  * mi-cmds.h
 	(mi_cmd_data_assign): Remove.  * mi-cmds.c: Remove -data-assign
 	command from MI interface.

1999-12-07  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-parse.c (mi_parse): Add '\n' at end of error messages, so
 	that prompt comes out on new line.

	* gdbmi.texinfo: Update disassembly command output.

1999-12-06  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (gdb_do_disassemble): Update output for UI_OUT case.

1999-12-02  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdbmi.texinfo: Update exec-until output, including the reason
 	for stopping.

Thu Dec  2 17:17:22 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-cmds.c: Include <string.h> for memset.

1999-12-01  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (mi_cmd_exec_return): ifdef the references to
 	return_command_wrapper().
	
1999-12-01  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (mi_cmd_gdb_exit, mi_cmd_exec_interrupt,
 	mi_cmd_target_select, mi_execute_async_cli_command,
 	mi_exec_async_cli_cmd_continuation, mi_load_progress): Don't print
 	last_async_command if it is NULL.
	(mi_cmd_exec_return): 

1999-12-01  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (mi_cmd_exec_return): Reimplement using
 	return_command() instead of mi_execute_async_cli_command().

1999-12-01  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-cmds.h: Export mi_cmd_data_assign and
 	mi_cmd_data_evaluate_expression.

	* mi-cmds.c (mi_cmds): Hook data-assign to mi_cmd_data_assign and
 	data-evaluate-expression to mi_cmd_data_evaluate_expression.

	* mi-main.c (mi_cmd_data_assign): New function. Implement
 	data-assign command.
	(mi_cmd_data_evaluate_expression): New function. Implement
 	data-evaluate-expression command.

1999-12-01  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdbmi.texinfo: Fix some texinfo formatting errors.

1999-12-01  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdbmi.texinfo: Update data-list-register-values description.

	* mi-cmds.h: Export mi_cmd_data_list_register_values.

	* mi-cmds.c (mi_cmds): Hook data-list-register-values to
 	mi_cmd_data_list_register_values.

	* mi-main.c (mi_cmd_data_list_register_values): New
 	function. Implements the -data-list-register-values command.
	(get_register): New function. Output the contents of a given
 	register.

Wed Dec  1 20:27:22 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (mi_execute_async_cli_command): Append missing "\n"
 	for synchronous stopped message.

1999-11-30  James Ingham  <jingham@leda.cygnus.com>

	* gdbmi.texinfo: Fix obvious typo in @end statement.

Wed Dec  1 12:36:27 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-cmd-var.c: Include "value.h".
	* mi-console.c: Include <string.h>.

Wed Dec  1 00:21:03 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (captured_mi_execute_command): For a CLI command, pass
 	"%s" to mi_execute_cli_command to stop core dumps.
	(captured_mi_execute_command): Echo CLI commands on gdb_stdlog.

Wed Dec  1 00:10:07 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbmi.texinfo: Explain NR-BYTES and ADDR.

Tue Nov 30 23:31:57 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-cmd-var.c (mi_cmd_var_create, mi_cmd_var_delete,
 	mi_cmd_var_set_format, mi_cmd_var_show_format,
 	mi_cmd_var_info_num_children, mi_cmd_var_list_children,
 	mi_cmd_var_info_type, mi_cmd_var_info_expression,
 	mi_cmd_var_show_attributes, mi_cmd_var_evaluate_expression,
 	mi_cmd_var_assign, mi_cmd_var_update, varobj_update_one, next_arg,
 	which_var): New file.  Move varobj commands to here from
 	mi-main.c.

	* mi-console.h, mi-console.c (mi_console_file_new,
 	mi_console_file_delete, mi_console_file_fputs,
 	mi_console_raw_packet, mi_console_file_flush): New files. Move
 	mi_console_file to here from mi-main.c.

Tue Nov 30 19:37:25 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (captured_mi_execute_command): Use fputstr_unfiltered
 	when printing error messages.
	(mi_cmd_execute): Ditto.

1999-11-29  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdbmi.texinfo: Describe -data-list-changed-registers,
 	-data-list-register-names. Add examples for
 	-exec-next-instruction, exec-step-instruction, -exec-run,
 	-exec-until.  Format examples for -data-read-memory.
	update example for -target-download.
	
1999-11-29  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdbmi.texinfo: Remove mentioning of inaccurate watchpoint hit
 	count.
	
Mon Nov 29 19:28:55 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (mi_execute_async_cli_command): Return ``enum
 	mi_cmd_cmd_result''.  mi_cmd_exec_run, mi_cmd_exec_next,
 	mi_cmd_exec_step, mi_cmd_exec_step_instruction,
 	mi_cmd_exec_finish, mi_cmd_exec_until, mi_cmd_exec_return,
 	mi_cmd_exec_continue): Update call.
	(mi_execute_async_cli_command): When target is synchronous, fake
 	asynchronous behavour (ulgh).  Allows tests to be run on built-in
 	simulator and native targets.

Mon Nov 29 15:15:16 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-cmds.h (mi_cmd_gdb_exit), mi-cmds.c (mi_cmds), mi-main.c
 	(mi_cmd_gdb_exit): Change function signature to mi_cmd_argv_ftype.

1999-11-28  Andew Cagney  <cagney@rat-in-a-hat.cygnus.com>

	* mi-parse.c: Include <ctype.h> and <string.h>

1999-11-26  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdbmi.texinfo: Added watchpoint command descriptions and
 	examples.

	* mi-main.c (mi_load_progress): Add parameter for total sent so far.
	Print it as well.
	
Fri Nov 26 10:17:49 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbmi.texinfo (section Output Syntax): For lists, the <string>
 	part of a <result> is optional.  Clarify syntax.
	(appendix Proposed v2.0 Output Syntax): New section. Provide
 	record of discussion of possible changes to syntax.

Wed Nov 24 19:41:35 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (mi_cmd_data_read_memory): Simplify.  Fix coredump
 	when arguments were bad.
	(mi_cmd_execute): Change parameter to ``struct mi_parse''.  Handle
 	case of argv_func as well as args_func.
	(captured_mi_execute_command): Update.

	* mi-cmds.c (struct mi_cmd): Add field for mi_cmd_argv_ftype.
	(mi_cmds): Update mi_cmd_data_read_memory.
	(mi_lookup): Return 

	* mi-cmds.h (mi_cmd_args_ftype): Rename mi_cmd_ftype. Make all
 	functions of type this type.
	(mi_cmd_argv_ftype): Declare.
	(mi_cmd_data_read_memory): Change type to mi_cmd_argv_fytpe.
	(struct mi_cmd): Move declaration to here from mi-cmds.c.
	(mi_lookup): Return a pointer to ``struct mi_cmd''.
	
Wed Nov 24 15:03:34 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-parse.c (mi_parse): Initialize TOKEN when a CLI command.

	* gdbmi.texinfo: Allow a <token> before a CLI command.

	* mi-parse.h (struct mi_parse): Declare.
	(mi_parse): Change to return a ``struct mi_parse''.
	(enum mi_command_type): Delete PARSE_ERROR.

	* mi-main.c (struct mi_execute_command_context): Delete.
	(captured_mi_execute_command): Update
	(mi_execute_command): Update.  Check for mi_parse returning NULL.

Wed Nov 24 12:57:14 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-parse.h: Remove const, from cmd parameter.  Causes cascading
 	warnings.

Wed Nov 24 15:03:34 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-parse.c (mi_parse): New function.  Move parse code to here.
	* mi-main.c (parse): From here. Delete.

Wed Nov 24 12:57:14 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-parse.c, mi-parse.h: New files. Implement mi_parse_env.

Wed Nov 24 11:24:05 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-out.c (mi_field_string): Make string parameter constant.

1999-11-23  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-cmds.h (mi_cmd_target_download): Export. 

	* mi-cmds.c (mi_cmds): Add mi_cmd_target_download.

	* mi-main.c: Include <sys/time.h>.
	(mi_cmd_target_download): New function, implement the
 	target-download command.
	(mi_load_progress): New function. Called via the
 	show_load_progress hook. Prints updates every 0.5 secs.
	(mi_command_loop): Initialize the show_load_progress hook.

1999-11-22  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (mi_cmd_exec_until): New function. Implement until
 	command.
	(mi_cmd_exec_step_instruction): New function. Implement stepi
 	command.
	(mi_cmd_exec_next_instruction): New function. Implement nexti
 	command.
	
	* mi-cmds.c (mi_cmds): Add mi_cmd_exec_step_instruction,
 	mi_cmd_exec_next_instruction, mi_cmd_exec_until.

	* mi-cmds.h (mi_cmd_exec_step_instruction,
 	mi_cmd_exec_next_instruction, mi_cmd_exec_until): Export.
	
Tue Nov 23 00:30:37 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi/gdbmi.texinfo: Document -data-read-memory.
	
	* mi-main.c (mi_cmd_data_read_memory): Fix off-by-one check of
 	argc.
	(mi_cmd_data_read_memory): Label the output table with "memory".

Thu Nov 18 18:15:53 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (mi_cmd_exec_interrupt, mi_cmd_break_insert,
 	mi_cmd_break_watch, mi_cmd_disassemble, mi_cmd_execute): Replace
 	strdup with xstrdup.

Thu Nov 18 20:50:09 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (mi_cmd_data_read_memory): New function.  Implement
 	data-read-memory.

	* mi-cmds.h, mi-cmds.c: Add mi_cmd_data_read_memory.
	* mi-cmds.c (mi_cmds): Ditto.

1999-11-11  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-cmds.h (mi_cmd_break_watch): Export.

	* mi-cmds.c (mi_cmds): Hook up break-watch to function
 	mi_cmd_break_watch.

	* mi-main.c (wp_type): New enumeration for the possible types of
 	watchpoints.
	(mi_cmd_break_watch): New function, implements the break-watch
 	command.

1999-11-11  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (mi_cmd_break_insert): Handle case in which the command is
	just a -break-insert w/o args.

Fri Nov 12 00:01:52 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-out.c (mi_field_string): Always quote the string.

1999-11-10  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-cmds.h(mi_cmd_data_list_changed_registers,
 	mi_cmd_data_list_register_names): Export.

	* mi-cmds.c (mi_cmds): Hook up data-list-changed-registers to
 	mi_cmd_data_list_changed_registers and data-list-register-names to
 	mi_cmd_data_list_register_names.

	* mi-main.c (mi_cmd_data_list_changed_registers): New function,
 	implements the data-list-changed-registers command.
	(mi_cmd_data_list_register_names): New function, implements the
 	data-list-register-names command.
	(register_changed_p): New function. Decide whether the register
 	contents have changed.
	(setup_architecture_data): New function. Initialize registers
 	memory.
	(_initialize_mi_main): Call setup_architecture_data(), and
 	register_gdbarch_swap().

Wed Nov 10 18:35:08 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (mi_execute_command): Correctly quote error messages.

Wed Nov 10 11:05:14 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi/gdbmi.texinfo: Delete <stream-output>.  Replaced by
 	<c-string>.

	* mi-main.c (mi_console_raw_packet): Always quote console output.

Tue Nov  9 17:53:05 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (mi_console_file_new), mi-out.c (mi_out_new): Replace
 	the tui_file with a mem_file. Ya!
	
	* mi-out.c (do_write): New function, wrapper to gdb_file_write.
	(mi_out_put): Pass do_write to gdb_file_put.

	* mi-main.c (mi_console_file_flush): Rewrite.  Use
 	mi_console_raw_packet to send data to the console.
	(mi_console_raw_packet): New function. Correctly
 	create quoted C string packets.

1999-11-08  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-cmds.c (mi_cmds): Break-insert is now implemented by
 	mi_cmd_break_insert.
	* mi-cmds.h (mi_cmd_break_insert): Export. 
	* mi-main.c (bp_type): New enumeration.
	(mi_cmd_break_insert): New function. Implements all flavors of
 	breakpoint insertion.

Mon Nov  8 17:49:17 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (mi_console_file_flush): Replace gdb_file_get_strbuf
 	with tui_file_get_strbuf.

Fri Nov  5 17:06:07 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (mi_console_file_delete, mi_console_file_fputs,
 	mi_console_file_flush): Call internal_error instead of error.

Thu Nov  4 19:53:32 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (captured_mi_execute_command): New function.
	(mi_execute_command): Rewrite.  Replace SET_TOP_LEVEL() with call
 	to captured_mi_execute_command via catch_errors.

Thu Nov  4 20:33:58 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (clean): Delete.
	(mi_command_loop): Delete extern declaration of
 	mi_execute_command.

1999-10-28  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (mi_cmd_stack_select_frame): Conditionalize the body
 	on UI_OUT, because select_frame_command_wrapper is only defined if
 	UI_OUT is.
	(mi_cmd_exec_interrupt): Conditionalize the body on UI_OUT,
 	because interrupt_target_command_wrapper is only defined if UI_OUT is.

	* mi-cmds.c (mi_cmds): Implement command exec-interrupt by
 	mi_cmd_exec_interrupt.  

	* mi-main.c (mi_cmd_exec_interrupt): New function. Implements
 	exec-interrupt command.
	(mi_cmd_execute): If the target is running save execution command
 	token in previous_async_command. If the command is not 'interrupt' 
	and the target is running, reject it.
	(clean): New function. Free the arg and reset it to NULL.

	* mi-cmds.h (mi_cmd_exec_interrupt):Export.

1999-10-28  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-cmds.c (mi_cmds): Implement command stack-select-frame by
 	mi_cmd_stack_select_frame.  

	* mi-main.c (mi_cmd_stack_select_frame): New function. Implements
 	stack-select-frame command.

	* mi-cmds.h (mi_cmd_select_frame):Export.

1999-10-26  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-cmds.c (mi_cmds): Implement commands stack-list-locals and
 	stack-list-arguments by mi_cmd_stack_list_locals and
 	mi_cmd_stack_list_args.

	* mi-main.c (mi_cmd_stack_list_locals): New function. Implements
 	stack-list-locals command.
	(mi_cmd_stack_list_args): New function. Implements
 	stack-list-arguments command.
	(list_args_or_locals): New function. Do all the work for the
	listing of locals or arguments.

	* mi-cmds.h (mi_cmd_stack_list_args,mi_cmd_stack_list_locals) :
 	Export.

1999-10-25  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-cmds.c (mi_cmds): Add new command stack-info-depth.

	* mi-main.c (mi_cmd_stack_info_depth): New function. Implements
 	the stack-info-depth command.
	* mi-cmds.h (mi_cmd_stack_info_depth): Export.


1999-10-22  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (mi_execute_command): Handle MI_CMD_ERROR case
 	properly, for command that return error code and don't set
 	mi_error_message.

	* mi-cmds.c (mi_cmds): Hook stack-list-frames command to
 	mi_cmd_stack_list_frames function.
	* mi-cmds.h (mi_cmd_stack_list_frames): Export.
	
	* mi-main.c (mi_execute_command): Deal with a return code of
 	MI_CMD_ERROR from the execution of mi commands.
	(mi_error_message): Static string variable, to contain the error
 	message from mi commands.
	(mi_cmd_stack_list_frames): New function. Prints a backtrace.

1999-10-18  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (mi_cmd_disassemble): Handle the new command line
 	parameter that specifies the number of disassembly lines to be
 	displayed.
	(gdb_do_disassemble): Add new parameter. Count the number of lines
 	that have been displayed, and stop when limit is reached.

Wed Oct 13 18:04:13 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (mi_command_loop): Don't initialize ``flush_hook''.

1999-10-13  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi/gdbmi.texinfo: More reformatting of the grammars.

1999-10-12  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi/gdbmi.texinfo: More TeX formatting.

1999-10-11  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi/gdbmi.texinfo: First pass completed. All commands should have
	some comments/info.
	Escape '@' output special char.
	Reformat for TeX.

1999-10-08  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi/gdbmi.texinfo: Filled in part of file command section, and
 	stack section.

1999-10-07  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi/gdbmi.texinfo: Filled in some sections about execution
 	commands.

Tue Oct  5 15:27:28 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-cmds.h: Sort table
	* mi-cmds.c: Ditto.
	(MI_TABLE_SIZE): Increase to 251.

1999-10-04  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-main.c (mi_cmd_var_create, mi_cmd_var_delete): Add missing
	cleanups.
	
1999-10-04  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-main.c (next_arg): Returns lenght as well.
	(which_var, mi_cmd_var_create, mi_cmd_var_delete,
	mi_cmd_var_set_format, mi_cmd_var_update): Do not modify the input
	string, use allocated storage instead.
	(mi_cmd_var_assign): Adjust call to next_arg() to include new
	argument.

1999-10-04  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-main.c (mi_execute_command): Fix handling of errors.

1999-10-04  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-out.c (mi_out_new): Call tui_sfileopen() instead of
        deprecated gdb_file_init_astream().
	* mi-main.c (mi_console_file_new): Ditto.

Mon Oct  4 15:17:29 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-cmds.h: Sort function declarations.
 	(mi_lookup): Add extern.

	* mi-cmds.c (mi_lookup): Delete dead code.
	(build_table): Call  internal_error instead of error.
	(build_table): Send trace output to gdb_stdlog.

1999-10-01  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (mi_execute_async_cli_command): Don't do the cleanups
 	if target_executing is null.

1999-09-28  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (async_p): Change var name to event_loop_p.

Mon Sep 27 15:11:00 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (mi_execute_async_cli_command, mi_execute_command):
 	Replace target_has_async with function target_can_async_p.

Sun Sep 26 00:12:52 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (mi_cmd_target_select_continuation): Delete function.
	(mi_cmd_target_select): Simplify.  target-connect is guarenteed to
 	be synchronous.

Sun Sep 26 00:12:52 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-cmds.h (mi_cmd_ftype): Replace mi_impl_ftype.
	(enum mi_cmd_result): Define.
	* mi-cmds.c (struct mi_cmd): Update.
	(mi_lookup): Update.
	* mi-main.c (mi_cmd_execute): Update.

	* mi-main.c (mi_cmd_gdb_exit, mi_cmd_exec_run, mi_cmd_exec_next,
 	mi_cmd_exec_step, mi_cmd_target_select, mi_cmd_exec_continue,
 	mi_cmd_exec_return, mi_cmd_exec_finish, mi_cmd_disassemble,
 	mi_cmd_var_create, mi_cmd_var_delete, mi_cmd_var_set_format,
 	mi_cmd_var_show_format, mi_cmd_var_info_num_children,
 	mi_cmd_var_list_children, mi_cmd_var_info_type,
 	mi_cmd_var_info_expression, mi_cmd_var_show_attributes,
 	mi_cmd_var_evaluate_expression, mi_cmd_var_update): Update.
  	Return MI_CMD_DONE.

1999-09-22  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-main.c (mi_cmd_var_create): Use paddr() to format address
	on trace output.

1999-09-21  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-main.c (mi_cmd_var_create): Test for varobjdebug before
	printing trace and send it to gdb_stdlog.

Mon Sep 20 13:41:04 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (mi-out.o): Add dependency list.
	* mi-out.c: Include "mi-out.h".

1999-09-18  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (_initialize_mi_main): Events on stadin are now
 	handled by stdin_event_handler.

1999-09-17  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-cmds.c (mi_cmds): Add var-* commands.

1999-09-17  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-main.c (mi_cmd_var_create, mi_cmd_var_delete,
	mi_cmd_var_set_format, mi_cmd_var_show_format,
	mi_cmd_var_info_num_children, mi_cmd_var_list_children,
	mi_cmd_var_info_type, mi_cmd_var_info_expression,
	mi_cmd_var_show_attributes, mi_cmd_var_evaluate_expression,
	mi_cmd_var_assign, mi_cmd_var_update, varobj_update_one,
	which_var, next_arg): New functions.  Implement the -var-*
	commands.
	* mi-cmds.h: Add prototypes for the above.

1999-09-14  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-cmds.c (mi_cmds): Add detach command.

1999-09-09  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-cmds.c (lookup_table): Fix typo.

1999-09-09  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-cmds.c (mi_cmds): Fix typo and missing command.

1999-09-09  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-main.c: Properly align function prototypes.
	(mi_cmd_target_select): Proper check for NULL value.

1999-09-09  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-main.c (mi_execute_async_cli_command): Fix for native targets
	that do not have async yet.

1999-09-01  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (mi_cmd_disassemble): Remove unused var.
	(gdb_do_disassemble): Ditto.

1999-08-30  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c: Replace all the occurrences of 'asynch' in variable
 	or function names with 'async' to make it consistent with the rest
 	of gdb.

Mon Aug 30 18:16:39 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c: #include <ctype.h> for isspace().

1999-08-27  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (gdb_do_disassemble): This function returns void, not
 	int.

1999-08-26  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (mi_cmd_disassemble): Don't use atoi() on the high
 	address string, just treat it same as address low.
	(gdb_do_disassemble): Parse high_address string before seeing if
 	it is zero.

1999-08-25  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (mi_cmd_disassemble): New function to produce
 	disassembly output for mi.
	(gdb_dis_asm_read_memory): New function. Read the disassembly from
 	the executable file, instead of target memory.
	(compare_lines): New function. Compare order of disassembly lines.
	(gdb_do_disassemble): New function. Do the real job of getting the
 	assembly code out.

	* mi-cmds.c (mi_cmds): Do data-disassemble mi command via the
 	mi_cmd_disassemble function.

	* mi-cmds.h: Export new function mi_cmd_disassemble.

Wed Aug 25 15:58:31 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (mi_command_loop): Remove references to ui-hooks.

1999-08-21  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (mi_execute_asynch_cli_command): Fix the incorrect
	usage of strcat(): allocate enough space for the string.

1999-08-13  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	From Christopher Faylor <cgf@cygnus.com>
	* mi-main.c (mi_execute_command): Make sure we flush all the
 	output after each command.

1999-08-10  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (_initialize_mi_main): Remove casting in call to
 	add_file_handler.

Sun Aug  8 17:20:57 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (mi_cmd_target_select, mi_execute_asynch_cli_command):
 	Replace call to fatal with call to internal_error.

1999-07-26  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-main.c (mi_cmd_execute): Add return code.
	(mi_execute_command): Make appropriate changes when calling the
	function mentioned above.
	(mi_cmd_gdb_exit, mi_cmd_target_select,
	mi_cmd_target_select_continuation, mi_execute_command,
	mi_exec_asynch_cli_cmd, mi_exec_asynch_cli_cmd_continuation):
	Print token, prefix, class and output (if any) in one single group
	of statements.
	(mi_execute_command, mi_cmd_execute): Fix error prefix.
	(mi_cmd_execute): Use exec cleanup for token.
	* mi-out.c (mi_out_rewind): New function.
	* mi-out.h: Prototype for the above.

1999-07-16  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-main.c (mi_cmd_gdb_exit): Use buffer for exit message.
	(mi_cmd_execute): Route error messages to correct file.
	(mi_execute_asynch_cli_command): Insert line feed after running
	message.

1999-07-16  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-out.h (mi_out_buffered): Add extern declaration.
	* mi-out.c (mi_out_buffered): New function. Insert a string at the
	current buffer position.
	* mi-main.c (mi_cmd_target_select, mi_execute_command,
	mi_cmd_execute, mi_execute_asynch_cli_command): Use the above
	function instead of printing to raw_stdout.
	(mi_cmd_target_select, mi_cmd_target_select_continuation,
	mi_execute_command, mi_cmd_execute, mi_execute_cli_command,
	mi_exec_asynch_cli_cmd_continuation): Fix handling of token and
	prefix.
	(mi_execute_cli_command): Remove parameter no longer needed.

1999-07-15  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c (mi_cmd_target_select_continuation): Print the numeric
 	token when we are connected.
	(mi_execute_command): Don't print the token now, do it later.
	(mi_execute_cli_command): Add a new parameter for the numeric
 	token.  Print the token, the prefix and the class after the
 	command has executed, not before.
	(mi_execute_asynch_cli_command): Don't print an extra blank line.

1999-07-15  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-main.c (mi_gdb_exit): Add \n at the end.

1999-07-15  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-main.c (mi_cmd_execute): New function. Dispatch a mi operation.
	(mi_execute_command): Use the above.

1999-07-15  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-main.c: Fix identation.

1999-07-15  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* mi-main.c: Include target.h and inferior.h.
	(mi_cmd_target_select): New function to execute the target-select
 	mi operation.
	(mi_cmd_target_select_continuation): New function. Continuation
 	for the target-select operation.
	(mi_execute_command): In case of an MI command which requires
 	asynchronous execution, do not try to display the result now. If
 	the execution has to look synchronous don't display the "(gdb)"
 	prompt.
	(mi_execute_asynch_cli_command): Invoke real asynchronous
 	commands, set up exec_cleanups, and continuations.
	(mi_exec_asynch_cli_cmd_continuation): New function. Continuation
 	for all the MI execution commands except 'target-select'.
	(mi_execute_command): Handle null commands by exiting gdb, instead
 	of core dumping.

	* mi-cmds.c (mi_cmds): Hook up -target-select operation to new mi
 	function.

	* mi-cmds.h (mi_cmd_target_select): Add extern declaration.

Thu Jul 15 10:31:39 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (struct mi_console_file): Add field ``prefix''.
	(mi_console_file_new): Add argument prefix.  Initialize prefix
 	field.
	(mi_console_file_flush): Use ``prefix'' instead of "~" as the
 	prefix string.
	(mi_command_loop): Update stream output prefixes. gdb_stdout ==
 	"~", gdb_stderr / gdb_stdlog == "&", gdb_stdtarg == "@".

1999-07-13  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-main.c (ui_out_data): New field first_header. Fix output when
	no breakpoints are found.
	(mi_table_begin, mi_table_body, mi_table_header): Test for
	first_header.
	(mi_table_end): Test for supress_field_separator.
	(mi_message): Remove messages from MI output.

1999-06-30  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-cmds.c (mi_cmds[]): Delete gdb-cli operation.
	* mi-main.c (parse): Remove ifdefs for cli commands parsing.
	(mi-execute-command): Ditto.

Mon Jun 28 13:06:52 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-out.h: New file.
	(mi_out_new, mi_out_put): Move mi specific delcarations to here.
	* ui-out.h: From here.

	* mi-main.c: Include "mi-out.h".

1999-06-25  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* top.c (print_gdb_version): Add the word HEADLESS when output
	follows headless format.
	(print_command_lines): Fix typo.

1999-06-25  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* event-loop.h: Export input_fd.  
	* mi-main.c (mi_command_loop): Use the event loop if running
 	asynchronously.
	(mi_execute_command_wrapper): New function.
	(_initialize_mi-main): Set things up for running asynchronously.

1999-06-18  Fernando Nasser  <fnasser@totem.to.cygnus.com>

        * mi-cmds.c (mi_lookup): Deleted.
        (lookup_table): New function. Replaces old mi_lookup() for local
        use.
        (mi_lookup): New function. External interface for command table
        searchs.
        (build_table): New definition.
        (mi_cmds[]): Add several command implementations and the gdb-cli
        special operation.
        (mi_cmd_execute): Deleted.
        * mi-cmds.h: Add type definition for command implementation
        function pointers, add declaration for new implementation
        functions and a declaration for mi_lookup().
        * mi-main.c (mi_execute_asynch_cli_command): New
        function. Captures code that was repeated for all asynch
        operations.
        (mi_cmd_exec_*): Use the above new function.
        (mi_gdb_cmd_exit): Fix the output, printing something appropriate.
        (mi_cmd_exec_finish): New operation implementation function.
        (mi_cmd_exec_return): Ditto.
        (parse): Prepare to remove cli commands.
        (mi_execute_command): Fix the output and change the way mi-cmds is
        used.

1999-06-18  Fernando Nasser  <fnasser@totem.to.cygnus.com>

        * mi-out.c (mi_table_begin): Add missing field separator call.

Thu Jun 17 21:05:40 1999  Fernando Nasser  <fnasser@tofu.to.cygnus.com>

	* breakpoint.c (breakpoint_1): Remove space in breakpoint table
	id.
	(mention): Use ui_out for last new line (forgotten).

1999-06-16  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-main.c (mi_console_file_flush): Prevent prefix printing when
	buffer empty; change prefix to '~'.
	(mi_cmd_exec_*): Prefix normal output with '^' instead of
	','; remove unwanted new lines before "stopped".

1999-06-16  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-cmds.c (struct mi_cmds): Updated entries for -exec-continue
	and exec-next operations.
	(mi_cmd_execute): New text for error messages.
	* mi-cmds.h: Add declaration for mi_cmd_exec_next and
	mi_cmd_exec_continue.
	* mi-main.c (mi_cmd_exec_next): New function. Implements exec-next
	operation.
	(mi_cmd_exec_continue): New function. Implements exec-continue
	operation.
	(mi_execute_comand): Add missing space to prompt.
	(mi_cmd_exec_run): Ditto.
	(mi_cmd_exec_step): Ditto.
	* mi-out.c (mi_out_new): Add flags argument to ui_out_new call.
	(ui_list_end): Reset supress_field_separator flag.

Sat Jun 12 11:49:10 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-cmds.h. mi-cmds.c (exec step): Command implemented by
 	mi_cmd_exec_step instead of cli call.
	* mi-main.c (mi_cmd_exec_step): New function.

	* mi-cmds.h. mi-cmds.c (exec run): Command implemented by
 	mi_cmd_exec_run instead of cli call.
	* mi-main.c (mi_cmd_exec_run): New function.

	* mi-cmds.h. mi-cmds.c (gdb exit): Command implemented by
 	mi_cmd_gdb_exit instead of quit_force.
	* mi-main.c (mi_cmd_gdb_exit): New function.

Sat Jun 12 11:33:23 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (mi_command_loop): Pass mi_input to
 	simplified_command_loop.
	(mi_input): New function.  Calls gdb_readline with no prompt.

Sat Jun 12 11:19:02 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (mi_console_file_fputs): Re-implement.  Use a buffer
 	to accumulate output.

	* mi-main.c (struct mi_console_file): Add a buffer.
	(mi_console_file_new): Create a buffer.
	(mi_console_file_flush): New function.

Sat Jun 12 10:59:39 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-cmds.h (raw_stdout): Declare.  Will be moved later.
	* mi-cmds.c (mi_cmd_execute): Send error messages to RAW stdout.
	(mi_cmds): Sort by class.

	* mi-main.c (raw_stdout): Make global.
	* mi-main.c: Remove #ifdef UI_OUT.  File assumes UI_OUT is
 	present.
	* mi-main.c: Include "gdb_string.h".
	(mi_out_put): Delete declaration.

1999-06-11  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-main.c: Add pre-processor test for UI_OUT.
	(mi_execute_command): Add pre-processor test for UI_OUT.

Fri Jun 11 23:11:41 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (raw_stdout): New variable.
	(mi_execute_command): Write mi-out direct to raw_stdout.
	(mi_command_loop): Create raw_stdout. Attach gdb_stdout to the
 	console.
	(mi_console_file_fputs, mi_console_file_delete,
 	mi_console_file_new): New functions.
	(struct mi_console_file): Declare.

Fri Jun 11 18:34:33 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c (mi_execute_command): Call mi_out_put to display the
 	result.
	* mi-out.c (mi_out_put): New function.
	* ui-out.h (mi_out_put): Add declare.  Will move later.
	* Makefile.in (mi-cmds.o, mi-main.o): Add dependency on ui-out.h.

	* mi-out.c (mi_field_string, mi_field_fmt, mi_message, mi_flush,
 	out_field_fmt, list_open, list_close): Replace gdb_stdout with
 	data->buffer.
	(field_separator, list_open, list_close): Add uiout parameter.
	(mi_table_begin, mi_table_body, mi_table_end, mi_list_begin,
 	mi_list_end, mi_field_string, mi_field_fmt, out_field_fmt,
 	out_field_fmt): Update.

	* mi-out.c (mi_out_new): Initialize supress_field_separator.
	(supress_field_separator): Move into mi-out local data object.
	(mi_table_begin, mi_list_begin, field_separator): Update.

Fri Jun 11 16:08:37 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-out.c (mi_out_new): New function, replace init_mi_out.
	* mi-main.c (mi_command_loop): Call mi_out_new().

	* ui-out.h (mi_out_new): Add declaration.  Will move later.
	(mi_ui_out_impl): Delete.

Wed Jun  9 16:42:16 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* mi-main.c: Include "ui-hooks.h".
 	(mi_init_ui, mi_command_loop): New functions.
	(_initialize_mi_main): Install ``mi'' as the interpreter when
 	selected.

Mon Jun  7 18:43:43 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	From Fernando Nasser  <fnasser@totem.to.cygnus.com>
	* mi-cmds.c (build_table): Clean up error message.
	* mi-cmds.c (mi_cmd_execute), mi-main.c (mi_execute_command): Only
 	print debug information when mi_debug_p.
	* mi-cmds.h (mi_debug_p), mi-main.c: Global, control debug messages.
	
Thu Jun  3 00:44:52 1999  Andrew Cagney  <cagney@b1.cygnus.com>

  	From Fernando Nasser  <fnasser@totem.to.cygnus.com>:
	* mi-cmds.c: Add CLI definitions for "exec-arguments",
 	"exec-next", "gdb-exit", "break-list", "break-info", "exec-step"
 	and "stack-list-frames" to mi_cmds.
	(struct mi_command): Add ``from_tty'' argument to func.
	* mi-cmds.h (quit_force): Declare.

1999-05-31  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-out.c (mi_table_end): Remove unwanted "\n".

Thu May 27 14:59:06 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* top.c: Include "ui-hooks.h".
	(call_interp_loop): Tempoary.  Pass mi_execute_command to
 	simplified_command_loop.  Initialize gdb_stdout & gdb_stderr to
 	stdio gdb_file streams.  Force all hooks to null.

	* mi-cmds.h, mi-main.c, mi-cmds.c: New files.
	* Makefile.in (SFILES): Add mi-main.c, mi-cmds.c
	(COMMON_OBS): Add mi-main.o, mi-cmds.o.
	(mi_cmds_h): Define.

Wed May 26 12:39:49 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* top.c (call_interp_loop): Hack.  Add extern declaration for
 	mi_ui_out_impl.

1999-05-25  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-out.c: New table syntax.

Mon May 24 16:16:29 1999  Andrew Cagney  <cagney@amy.cygnus.com>

	mi-out.c (_initialize_mi_out): Add external declaration.

1999-05-21  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-out.c (mi_table_begin): Added missing parameter.

1999-05-21  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-out.c: Changed table markers and added table id.

1999-05-21  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* mi-out.c: New file. Implements low-level ui-out primitives for
	CLI-based interaction.


Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:
