2005-11-20  Mark Kettenis  <kettenis@gnu.org>

	* inf-ptrace.c (inf_ptrace_xfer_partial): Use PIOD_WRITE_I instead
	of PIOD_WRITE_D.

2005-11-19  Jim Blandy  <jimb@redhat.com>

	* tracepoint.c (memrange_absolute): New enum constant.
	(struct memrange, memrange_cmp, add_memrange, collect_symbol,
	stringify_collection_list, encode_actions): Use it instead of '-1'
	to indicate an fixed-address memory range.
	(Suggested by Eli Zaretskii.)

	* tracepoint.c (stringify_collection_list): Indicate absolute
	memory ranges by using "-1" as the memory range's base register
	number, not "FFFFFFFF".

2005-11-19  Randolph Chung  <tausq@debian.org>

	* dwarf2loc.c (dwarf2_tracepoint_var_ref): Remove extra add for
	DW_OP_fbreg.  Handle DW_OP_breg0 through DW_OP_breg31.  Print 
	DWARF opcode for unsupported case.

2005-11-19  Randolph Chung  <tausq@debian.org>

	* hppa-hpux-tdep.c (hppa_hpux_sigtramp_frame_unwind_cache): Use 
	HPPA_HPUX_SS_* constants.  Ensure "off" is large enough to hold 
	64-bit offset.  Set proper signal context offset for 64-bit 
	programs.  Set pc properly for signal frames.

2005-11-19  Randolph Chung  <tausq@debian.org>

	* hppa-hpux-tdep.c (hppa_hpux_sigtramp_unwind_sniffer): Rely on the
	unwind record to determine a signal frame, instead of hardcoding
	a function name.

2005-11-19  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c (skip_prologue_hard_way): Add one more insn pattern 
	for "std rp,-0x10(sp)".
	(hppa_frame_cache): Likewise.
	(hppa_fallback_frame_cache): Likewise.

2005-11-19  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c (hppa_frame_cache): Reformat code and enhance 
	debugging.

2005-11-18  Jim Blandy  <jimb@redhat.com>

	* tracepoint.c (struct memrange, collect_symbol): Doc fix.

2005-11-18  Andrew Stubbs  <andrew.stubbs@st.com>

	* mi/mi-main.c (mi_load_progress): Ensure the use of the correct mi
	uiout for the duration of the function.

2005-11-18  Nick Roberts  <nickrob@snap.net.nz>

	* mi/gdb-mi.el (gdb-source-file-list): Declare.
	(gdbmi): Bind new functions.
	(gdbmi-var-list-children-handler, gdbmi-var-list-children-regexp):
	Handle string expressions properly.  Move "type" field into regexp.
	(gdbmi-var-update-regexp, gdbmi-var-update-handler): Handle string
	expressions properly.  Update speedbar.
	(gdbmi-breakpoints-buffer, gdb-stack-buffer, gdb-locals-buffer)
	(gdb-registers-buffer): Use def-gdb-auto-update-trigger instead of
	def-gdb-auto-updated-buffer as handlers is defined explicitly.
	(gdb-stack-list-locals-handler): Handle string expressions properly.
	(gdb-data-list-register-values-handler)
	(gdb-data-list-register-values-custom): Fontify buffer.

2005-11-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* version.in: Update to 6.4.50.

2005-11-16  Andrew Stubbs  <andrew.stubbs@st.com>

	* NEWS (6.4): Mention $argc.

2005-11-15  Andrew Stubbs  <andrew.stubbs@st.com>

	* NEWS: Add --batch-silent, --return-child-result, and --eval-command
	options to the 6.4 section.

2005-11-15  Andrew Stubbs  <andrew.stubbs@st.com>

	* cli/cli-script.c: Include gdb_assert.h.
	(locate_arg): Detect $argc.
	(insert_args): Substitute $argc.
	* Makefile.in (cli-script.o): Add dependency on gdb_assert.h.

2005-11-14  James E Wilson  <wilson@specifix.com>

	PR 2024
	* dwarf2loc.c (dwarf_expr_frame_base): Use get_frame_address_in_block
	instead of get_frame_pc.
	(loclist_read_variable): Likewise.

2005-11-14  Andrew Stubbs  <andrew.stubbs@st.com>

	* MAINTAINERS (Write After Approval): Add myself to the list.

2005-11-14  Andrew Stubbs  <andrew.stubbs@st.com>

	* thread.c (_initialize_thread): Correct the 'thread apply' help
	message.

2005-11-13  Daniel Jacobowitz  <dan@codesourcery.com>

	* elfread.c (elf_symtab_read): Remove if (1) and reindent.

2005-11-13  Daniel Jacobowitz  <dan@codesourcery.com>

	* arm-linux-tdep.c (eabi_linux_arm_le_breakpoint)
	(eabi_linux_arm_be_breakpoint): New variables.
	(arm_linux_init_abi): Use them.

2005-11-11  Michael Snyder  <msnyder@redhat.com>

	* inftarg.c (child_wait): Delete unused local variable.

2005-11-11  Stephane Carrez  <stcarrez@nerim.fr>

	PR tui/1995
	* tui/tui-command.c (tui_dispatch_ctrl_char): Handle CTRL-L even if the
	focus is on the command window.

2005-11-11  Stephane Carrez  <stcarrez@nerim.fr>

	* tui/tui-win.c (tui_update_gdb_sizes): Use tui_term_width() and
	tui_term_height() to restore the terminal size when leaving the
	TUI mode.

2005-11-11  Stephane Carrez  <stcarrez@nerim.fr>

	* m68hc11-tdep.c (m68hc11_pseudo_register_write): Use gdb_byte
	for buffers.
	(m68hc11_pseudo_register_read): Likewise.
	(m68hc11_return_value): Likewise.
	(m68hc11_frame_prev_register): Likewise.
	(m68hc11_frame_align): Remove as its seems no longer necessary.
	(m68hc11_gdbarch_init): Don't install frame_align handler.
	(m68hc11_scan_prologue): Fix crash that occurred when called from
	m68hc11_skip_prologue

2005-11-10  Mark Kettenis  <kettenis@gnu.org>

	* MAINTAINERS: Mark m68k-elf, sparc-elf and vax-netbsd as no
	longer broken.

2005-11-09  Randolph Chung <tausq@debian.org>

	* hppa-linux-nat.c (_initialize_hppa_linux_nat): Use
	hppa_linux_{store,fetch}_inferior_registers instead of
	arm_linux_{store,fetch}_inferior_registers.

2005-11-08  Kei Sakamoto  <sakamoto.kei@renesas.com>

	* remote-m32r-sdi.c: Update copyright years.
	(m32r_resume): Write DBT at word-aligned addresses.
	(m32r_wait): Use SDI_WRITE_MEMORY to remove DBT.

2005-11-08  Kei Sakamoto  <sakamoto.kei@renesas.com>

	* m32r-linux-tdep.c (linux_sigtramp_code): Use 'gdb_byte' instead
	of 'unsigned char'.
	(m32r_linux_sigtramp_start): Likewise.
	(linux_rt_sigtramp_code): Likewise.
	(m32r_linux_rt_sigtramp_start): Likewise.
	(m32r_linux_sigtramp_frame_prev_register): Use 'gdb_byte *' instead
	of 'void *'.
	* m32r-tdep.c (m32r_memory_insert_breakpoint): Use 'gdb_byte'
	instead of 'char'.
	(m32r_memory_remove_breakpoint): Likewise.
	(m32r_breakpoint_from_pc): Likewise.
	(m32r_store_return_value): Likewise.
	(decode_prologue): Likewise.
	(m32r_push_dummy_call): Likewise.
	(m32r_return_value): Use 'gdb_byte *' instead of 'void *'.
	* remote-m32r-sdi.c (m32r_xfer_memory): Use 'gdb_byte' instead of
	'char'.

2005-11-07  Kevin Buettner  <kevinb@redhat.com>

	* ia64-tdep.c (floatformat_valid): Change type of `from' from
	`const char *' to `const void *'.

2005-11-07  Kevin Buettner  <kevinb@redhat.com>

	* frv-linux-tdep.c (frv_linux_sigtrapm_frame_prev_register): Change
	type of `valuep' argument to `gdb_byte *'.
	* frv-tdep.c (frv_pseudo_register_write): Change type of `buffer'
	argument to `gdb_byte *'.
	(frv_extract_return_value): Change type of `valbuf' argument to
	`gdb_byte *'.
	(frv_store_return_value): Likewise.
	(frv_frame_prev_register): Change type of `bufferp' argument to
	`gdb_byte *'
	* solib-frv.c (ext_Elf32_Half, ext_Elf32_Addr, ext_Elf32_Word)
	(ext_ptr): Change base type from `unsigned char' to `gdb_byte'.  Adjust
	calls to extract_unsigned_integer which use struct members declared
	with these array types to not try to take the address of those
	members.
	(fetch_loadmap, frv_current_sos): Change cast in target_read_memory()
	calls from `char *' to `gdb_byte *'.
	(lm_base): Change base type of `buf' from `char' to `gdb_byte'.
	(enable_break2): Change type of `buf' from `char *' to `gdb_byte *'.
	Change base type of `addr_buf' from `char' to `gdb_byte'.
	(find_canonical_descriptor_in_load_object): Change base type of `buf'
	from `char' to `gdb_byte'.

2005-11-07  Paul Gilliam  <pgilliam@us.ibm.com

	* ppc-sysv-tdep.c (ppc64_sysv_abi_return_value): Copy code from
	ppc_sysv_abi_return_value() to handle a vector return value.

2005-11-07  Andrew Stubbs  <andrew.stubbs@st.com>

	* main.h (return_child_result, return_child_result_value): Declare.
	* infrun.c: Include main.h.
	(print_stop_reason): Remove declaration of return_child_result_value.
	* top.c: Include main.h.
	(quit_force): Remove declarations of return_child_result_value and
	return_child_result.
	* Makefile.in (top.o, infrun.o): Add main.h to dependencies.

2005-11-07  Andrew Stubbs  <andrew.stubbs@st.com>

	* Makefile.in (tui-winsource.o): Add gdb_assert.h to dependencies.

2005-11-07  Andrew Stubbs  <andrew.stubbs@st.com>

	* main.c (captured_main): Define struct cmdarg. Change type of cmdarg.
	Add new options --eval-command and alias -ex.
	Adjust --command to use the new struct cmdarg.
	Execute commands given with --eval-command.
	(print_gdb_help): Add new options --eval-command, -ex and mention -x.

2005-11-07  Andrew Stubbs  <andrew.stubbs@st.com>

	* main.c (main): Use INTERP_TUI instead of "tui".
	Set interpreter to INTERP_INSIGHT when '-w' given.
	* interps.h (INTERP_INSIGHT): New define.
	* tui/tui-interp.c (_initialize_tui_interp): Use INTERP_TUI instead
	of "tui".

2005-11-04  Andrew Stubbs  <andrew.stubbs@st.com>

	* infrun.c (print_stop_reason): Set return_child_result_value on exit.
	* main.c (return_child_result): New variable.
	(return_child_result_value): Likewise.
	(captured_main): Add option --return-child-result.
	Replace call to target_detach and exit (in batch mode) with quit_force.
	(print_gdb_help): Add option --return-child-result.
	* top.c (quit_force): Return child result if appropriate.

2005-11-03  Wu Zhou  <woodzltc@cn.ibm.com>

        Checked in by Elena Zannoni  <ezannoni@redhat.com>

	* dwarf2read.c (read_structure_type): Add IBM XL C++
	specific code to set TYPE_VPTR_FIELDNO and TYPE_VPTR_BASETYPE
	of a virtual class if a field named "__vfp" is found. 

2005-11-03  Jim Blandy  <jimb@redhat.com>

        Checked in by Elena Zannoni  <ezannoni@redhat.com>	

	* dwarf2read.c (file_full_name): Cope with file numbers that are
	out of range for the given line header.

2005-11-03  Daniel Jacobowitz  <dan@codesourcery.com>

        Checked in by Elena Zannoni  <ezannoni@redhat.com>

	* elfread.c (elf_symtab_read): Add number_of_symbols and
	symbol_table as arguments.  Do not load the symbol table
	here.
	(elf_symfile_read): Load the static and dynamic symbol tables
	here, before calling elf_symtab_read.  Also load any synthetic
	symbols and process those.
	
2005-11-03 Andrew Cagney  <cagney@gnu.org>

	Checked in by Elena Zannoni  <ezannoni@redhat.com>

	* dwarf2loc.c (dwarf2_evaluate_loc_desc): Handle DW_OP_piece
	reads.

2006-11-03  Daniel Jacobowitz  <dan@codesourcery.com>

	* linux-nat.c (linux_nat_resume): Add more debugging messages.  Do
	not short-circuit resuming all threads if the signal will be ignored
	in linux_nat_wait.

2005-11-02  Andrew Stubbs  <andrew.stubbs@st.com>

	* monitor.c (monitor_xfer_memory): Change char to gdb_byte.
	(monitor_insert_breakpoint): Likewise.
	(monitor_remove_breakpoint): Likewise.
	* remote-e7000.c (e7000_xfer_inferior_memory): Likewise.
	* sh-tdep.c (sh_return_value_nofpu): Change void to gdb_byte.
	(sh_return_value_fpu): Likewise.
	(sh_pseudo_register_read): Likewise.
	(sh_pseudo_register_write): Likewise.
	(sh_frame_prev_register): Likewise.
	* sh64-tdep.c (sh64_extract_return_value): Change char to gdb_byte.
	(sh64_return_value): Change void to gdb_byte.
	(sh64_pseudo_register_read): Likewise.
	(sh64_pseudo_register_write): Likewise.
	(sh64_frame_prev_register): Likewise.

2005-11-01  Joel Brobecker  <brobecker@adacore.com>

	* event-top.c (gdb_setup_readline): Add missing type in extern
	declaration.

2005-11-01  Paul Gilliam  <pgilliam@us.ibm.com>

        * rs6000-tdep.c (rs6000_gdbarch_init): On GNU/Linux, assume that
	 bfd_mach_ppc64 has altivec unit, just like bfd_mach_ppc.

2005-11-01  Andrew Stubbs  <andrew.stubbs@st.com>

	* tui/tui-data.h (tui_line_or_address): Encapsulate the union in a
	struct with a tag.
	(tui_source_element, tui_source_info): Update.
	* tui/tui-disasm.c, tui/tui-source.c: Update to use the tagged union.
	* tui/tui-source.h, tui/tui-stack.c, tui/tui-win.c: Likewise.
	* tui/tui-winsource.c, tui/tui-data.c, tui/tui-layout.c: Likewise.
	* tui/tui-winsource.h: Likewise.

2005-11-01  Christopher Faylor  <cgf@timesys.com>

	* win32-nat.c (CYGWIN_SIGNAL_STRING): Delete.
	(_CYGWIN_SIGNAL_STRING): Define if not already defined in cygwin.h.
	(win32_add_thread): Use XZALLOC rather than xmalloc/memset.
	(register_loaded_dll): Ditto.
	(handle_load_dll): Call solib_add here.
	(handle_unload_dll): Ditto.
	(info_dll_command): Delete.
	(handle_output_debug_string): Use official _CYGWIN_SIGNAL_STRING.
	(win32_current_sos): Duplicate table to pass off to caller rather than
	deleting our version.
	(set_win32_aliases): New function.
	(_initialize_win32_nat): Remove local handling of "info shared".  Set
	deprecated_init_ui_hook to allow late setting of "info dll" alias.

2005-11-01  Andrew Stubbs  <andrew.stubbs@st.com>

	* event-top.c (gdb_setup_readline): Don't set gdb_stdout when
	--batch-silent option was given.
	* main.c (batch_silent): New variable.
	(captured_main): Add new option --batch-silent.
	(print_gdb_help): Likewise.

2005-11-01  Mark Kettenis  <kettenis@gnu.org>

	* NEWS: Mention VAX floating point support.

2005-10-31  Christopher Faylor  <cgf@timesys.com>

	* win32-nat.c (get_relocated_section_addrs): Reinstate.
	(solib_symbols_add): New function.
	(lm_info): Remove end_addr field.
	(register_loaded_dll): Don't try to find end_addr since gdb will do
	this automatically now.  Make so_original_name == so_name for now.
	Eliminate strcpy by using so_name directly.  Read in symbols if new
	paramater "readsyms" is true.
	(handle_load_dll): Pass auto_solib_add to register_loaded_dll to
	control when symbols should be read.
	(win32_free_so): Don't free objfile here.
	(win32_create_inferior_hook): New function.
	(handle_unload_dll): Remove left-over cruft.
	(win32_special_symbol_handling): New (dummy) function.
	(map_single_dll_code_section): Reinstate.
	(dll_code_sections_add): Reinstate.
	(core_section_load_dll_symbols): Reinstate.  Don't issue an error on
	duplicate attempts to read same dll.  Make sure that UNIX-like name is
	used to register DLL.
	(win32_current_sos): Handle core files.  Reset private list before
	passing start of list pointer to gdb.
	(init_win32_ops): Fill out (currently unused)
	solib_create_inferior_hook.  Fill out special_symbol_handling.
	* config/i386/tm-cygwin.h: Remove most special solib stuff.

2005-10-31  Christopher Faylor  <cgf@timesys.com>

	* win32-nat.c: Remove comment intended only for debugging.

2005-11-01  Mark Kettenis  <kettenis@gnu.org>

	* doublest.c (floatformat_normalize_byteorder): Handle
	floatformat_vax.
	(convert_doublest_to_floatformat): Use
	floatformat_normalize_byteorder to swap bytes if necessary.
	* vax-tdep.c: Include floatformat.h.
	(vax_gdbarch_init): Set float_format, double_format,
	long_double_format and long_double_bit.
	* Makefile.in (vax-tdep.o): Update dependencies.

2005-10-31  Christopher Faylor  <cgf@timesys.com>

	Change child_ to win32_ throughout.
	* win32-nat.c (win32_ops): New variable.
	(win32_so_ops): Ditto.
	(psapi_get_dll_name): Make function static.
	(struct so_stuff): Delete.
	(struct lm_info): New struct.
	(solib_start, solib_end): Redefine as struct so_list.
	(safe_symbol_file_add_stub): Use so_list rather than so_stuff.
	(register_loaded_dll): Ditto.  Special-case ntdll.dll.  Fill in lm_info
	field of so_list with information previously stored in so_stuff.
	(get_image_name): Make function static.
	(max_dll_name_len): Make variable static.
	(win32_free_so): New function.
	(win32_current_sos): Ditto.
	(win32_relocate_section_addresses): Ditto.
	(handle_unload_dll): Use so_list rather than so_stuff.  Call free_so to
	delete shared library.
	(solib_address): Delete function.
	(child_solib_loaded_library_pathname): Ditto.
	(win32_clear_solib): Rename from child_clear_solibs.  Use so_list
	rather than so_stuff.  Just clear win32-specific stuff.
	(get_relocated_section_addrs): Delete.
	(solib_symbols_add): Ditto.
	(info_dll_command): Make static.  Use lm_info field from so_list to
	retrieve load address.
	(fake_create_process): Make function static.
	(win32_xfer_memory): Ditto.
	(win32_kill_inferior): Ditto.
	(win32_resume): Ditto.
	(cygwin_pid_to_str): Ditto.
	(do_initial_win32_stuff): Use win32_ops rather than
	deprecated_child_ops.
	(child_detach): Ditto.
	(win32_mourn_inferior): Ditto.
	(_initialize_win32_nat): Ditto.
	(init_win32_ops): Ditto.  Fill out win32_so_ops and set
	current_target_so_ops to win32_so_ops.
	(core_dll_symbols_add): Delete.
	(map_single_dll_code_section): Ditto.
	(dll_code_sections_add): Ditto.
	(core_section_load_dll_symbols): Ditto.
	(child_solib_add): Ditto.

2005-10-31  Andrew Stubbs  <andrew.stubbs@st.com>

	* tui/tui-command.c (tui_dispatch_ctrl_char): Test output of
	getenv() before using it.

2005-10-29  Mark Kettenis  <kettenis@gnu.org>

	* hppa-tdep.h (HPPA_INSN_SIZE): New define.
	* hppa-hpux-tdep.c (hppa_hpux_search_pattern)
	(hppa64_hpux_search_dummy_call_sequence): Rewrite to avoid
	assumption on sizeof(unsigned).

	* inf-ttrace.c (inf_ttrace_wait): Comment out TARGET_WAITKIND_EXEC
	code; return TARGET_WAITKIND_STOPPED instead.

2005-10-28  Mark Kettenis  <kettenis@gnu.org>

	* ppc-tdep.h (PPC_INSN_SIZE): Define.

	* inf-ttrace.c (inf_ttrace_mourn_inferior): Remove redundant cast.
	(inf_ttrace_kill): Renamed from inf_ttrace_kill_inferior.
	(inf_ttrace_target): Resort assignments.

2005-10-28  Nick Roberts  <nickrob@snap.net.nz>

	* mi/gdb-mi.el: Sync with Emacs 22.0.50.

2005-10-25  Andreas Schwab  <schwab@suse.de>

	* regformats/reg-ia64.dat: Remove NAT registers.

2005-10-20  Mark Kettenis  <kettenis@gnu.org>

	* rs6000-tdep.c (info_powerpc_cmdlist): Remove variable.
	(rs6000_info_powerpc_command): Remove function.

2005-10-21  Andreas Schwab  <schwab@suse.de>

	* dwarf2read.c (isreg): Removed.
	(decode_locdesc): Don't set it.

2005-10-20  Joel Brobecker  <brobecker@adacore.com>

	* Makefile.in (YYFILES): Add ada-lex.c

2005-10-17  Jim Blandy  <jimb@redhat.com>

	* dwarf2expr.c (dwarf_expr_fetch): Use correct comparison to
	detect stack underflow.

2005-10-14  Paul Gilliam  <pgilliam@us.ibm.com>

        * rs6000-tdep.c (rs6000_register_reggroup_p): Add vscr to test for
        vector registers.

2005-10-13  Andreas Schwab  <schwab@suse.de>

	* Makefile.in (linux-thread-db.o): Depend on $(gdbcore_h).

	* linux-thread-db.c (enable_thread_event): Extend pointer value as
	specified by target.
	(thread_db_get_thread_local_address): Likewise.

2005-10-09  Joel Brobecker  <brobecker@adacore.com>

	* i386-tdep.c (i386_reg_struct_return_p): Allow array types as well.
	(i386_return_value): Add handling for functions that return array
	types.

2005-10-09  Joel Brobecker  <brobecker@adacore.com>

	* ada-valprint.c (print_optional_low_bound): Handle properly
	cases where the array index type is a TYPE_CODE_RANGE.

2005-10-09  Joel Brobecker  <brobecker@adacore.com>

	* valprint.c (val_print_array_elements): Check array size before
	computing its low bound. If zero, then use a default bound of zero.

2005-10-06  Alan Modra  <amodra@bigpond.net.au>

	PR 1659
	* rs6000-tdep.c (rs6000_push_dummy_call): Correct size of
	backchain write.
	(rs6000_convert_from_func_ptr_addr): Correct comment.

2005-10-03  Joel Brobecker  <brobecker@adacore.com>

	* MAINTAINERS: Add section for release management.

2005-10-03  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Add entry for new "set print array-indexes" command.

2005-10-03  Joel Brobecker  <brobecker@adacore.com>

	* language.h (language_defn): New field la_print_array_index.
	(LA_PRINT_ARRAY_INDEX): New macro.
	(default_print_array_index): Add declaration.
	* language.c (default_print_array_index): new function.
	(unknown_language): Add value for new field.
	(auto_language): Likewise.
	(local_language): Likewise.
	* ada-lang.c (ada_print_array_index): New function.
	(ada_language_defn): Add value for new field.
	* c-lang.c (c_language_defn): Likewise.
	(cpluc_language_defn): Likewise.
	(asm_language_defn): Likewise.
	(minimal_language_defn): Likewise.
	* f-lang.c (f_language_defn): Likewise.
	* jv-lang.c (java_language_defn): Likewise.
	* m2-lang.c (m2_language_defn): Likewise.
	* objc-lang.c (objc_language_defn): Likewise.
	* p-lang.c (pascal_language_defn): Likewise.
	* scm-lang.c (scm_language_defn): Likewise.
	* valprint.h (print_array_indexes_p): Add declaration.
	(get_array_low_bound): Add declaration.
	(maybe_print_array_index): Add declaration.
	* valprint.c (print_array_indexes): New static variable.
	(show_print_array_indexes): New function.
	(print_array_indexes_p): New function.
	(get_array_low_bound): New function.
	(maybe_print_array_index): New function.
	(val_print_array_elements): Print the index of each element if
	requested by the user.
	(_initialize_valprint): Add new array-indexes "set/show print" command.
	* ada-valprint.c (print_optional_low_bound): Replace extracted code
	by call to ada_get_array_low_bound_and_type(). Stop printing the low
	bound if indexes will be printed for all elements of the array.
	(val_print_packed_array_elements): Print the index of each element
	of the array if necessary.

2005-10-03  Joel Brobecker  <brobecker@adacore.com>

	* hppa-tdep.c (read_unwind_info): Fix typo in comment.

2005-10-02  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb_gcore.sh: Use a temporary file.  Use gdb from $PATH.

2005-09-29  Andreas Schwab  <schwab@suse.de>

	PR threads/2015
	* infrun.c (adjust_pc_after_break): Don't use the state from a
	non-matching thread context.

2005-09-29  Daniel Jacobowitz  <dan@codesourcery.com>

	* rs6000-tdep.c (rs6000_frame_cache): Handle misdetected frameless
	functions.

2005-09-29  Nick Roberts  <nickrob@snap.net.nz>

	* annotate.c (breakpoints_changed, annotate_frames_invalid)
	(_initialize_annotate): Print breakpoints-invalid and
	frames-invalid for level 2 annotations only.

2005-09-28  Daniel Jacobowitz  <dan@codesourcery.com>

	* infrun.c (init_execution_control_state): Initialize
	ecs->another_trap.

2005-09-28  Nick Roberts  <nickrob@snap.net.nz>

	* Makefile.in (TAGS): Put DEPFILES back and add as a dependency.

2005-09-26  Nick Roberts  <nickrob@snap.net.nz>

	* Makefile.in (HFILES_NO_SRCDIR): Remove minimon.h, symfile-mem.h.
	(ALLDEPFILES) Correct typo amdfbsd-nat.c -> amd64fbsd-nat.c.
	Remove irix4-nat.c, m3-nat.c, mipsm3-nat.c, ns32k-tdep.c
	symm-tdep.c and symm-nat.c.
	(TAGFILES_NO_SRCDIR): Add CONFIG_SRCS.
	(DEPFILES): Remove CONFIG_OBS and include it explicitly where
	needed.

2005-09-26  Jan Beulich  <jbeulich@novell.com>

	* MAINTAINERS (Write After Approval): Add myself.

2005-09-26  Jan Beulich  <jbeulich@novell.com>

	* amd64-tdep.h (AMD64_FCTRL_REGNUM, AMD64_FSTAT_REGNUM,
	AMD64_MXCSR_REGNUM): New.
	* amd64-tdep.c (amd64_dwarf_regmap): Add eflags, selector regs,
	mxcsr, fp control and status words.
	* i386-tdep.c (): Add selector regs, mxcsr, fp control and status
	words.

2005-09-26  Paul Brook  <paul@codesourcery.com>

	* arm-tdep.c (arm_type_align): New function.
	(arm_push_dummy_call): Use it.  Ensure proper argument alignment.
	(arm_extract_struct_value_address): Remove.
	(arm_use_struct_convention): Rename...
	(arm_return_in_memory): ... To this.  Return nonzero for all small
	aggregates under the EABI.
	(arm_return_value): New function.
	(arm_gdbarch_init): Default for VFP float model for EABI binaries.
	Use set_gdbarch_return_value instead of obsolete functions.

2005-09-21  Mark Kettenis  <kettenis@gnu.org>

	* mips-tdep.c (n32n64_floatformat_always_valid): Use 'const void
	*' for second argument instead of 'const char *'.

2005-09-20  Paul Gilliam  <pgilliam@us.ibm.com>

        * gdb.arch/altivec-abi.exp: Elide the 'in' from what's expected
         after a 'finish' command.

2005-09-20  Wu Zhou  <woodzltc@cn.ibm.com>

	* c-exp.y (parse-number): Modify the float parsing logic to let it 
	recognize a suffix.

2005-09-20  Wu Zhou  <woodzltc@cn.ibm.com>

	* expression.h (enum exp_opcode): Fix a format error of a comment.
 
2005-09-20  Wu Zhou  <woodzltc@cn.ibm.com>

	* expression.h (enum exp_opcode): Add a new operator for F90
	subrange.
	* f-lang.h (enum f90_range_type): New enumeration type to identify
	F90 subrange type.
	* f-exp.y (yyparse): Add support for parsing F90 subrange and
	change substring parsing to subrange parsing.
	* parse.c (operator_length_standard): Set the operator length
	and args number for OP_F90_RANGE.
	* eval.c (evaluate_subexp_standard): Add code to evaluate F90
	array section and substring.
	(value_f90_subarray): New function to evaluate F90 array section.
	(evaluate_subexp_standard): Delete label op_f77_substr and its code
	because the logic is implemented by function value_f90_subarray now.

2005-09-19  Paul Gilliam  <pgilliam@us.ibm.com>

	* rs6000-tdep.c (_initialize_rs6000_tdep): Get rid of the unused
	'info powerpc' command prefix.

2005-09-11  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/nm-linux.h (KERNEL_U_SIZE): Remove.
	(PTRACE_ARG3_TYPE, PTRACE_XFER_TYPE): Likewise.
	(s390_stopped_by_watchpoint, s390_insert_watchpoint,
	s390_remove_watchpoint, TARGET_CAN_USE_HARDWARE_WATCHPOINT,
	TARGET_REGION_OK_FOR_HW_WATCHPOINT, HAVE_CONTINUABLE_WATCHPOINT,
	STOPPED_BY_WATCHPOINT, target_insert_watchpoint,
	target_remove_watchpoint): Likewise.
	* s390-nat.c: Remove include of <sys/user.h>.
	(kernel_u_size): Remove.
	(s390_stopped_by_watchpoint): Make static.
	(s390_insert_watchpoint, s390_remove_watchpoint): Likewise.
	(s390_can_use_hw_breakpoint): New function.
	(s390_region_size_ok_for_hw_watchpoint): Likewise.
	(_initialize_s390_nat): Add watchpoint methods to target.

2005-09-10  Daniel Jacobowitz  <dan@codesourcery.com>
	    Ulrich Weigand  <uweigand@de.ibm.com>

	* Makefile.in (ALLDEPFILES): Update.
	(alpha-linux-nat.o, sparc-linux-nat.o): New rules.
	(amd64-linux-nat.o, arm-linux-nat.o, hppa-linux-nat.o)
	(i386-linux-nat.o, ia64-linux-nat.o, linux-nat.o, m32r-linux-nat.o)
	(m68klinux-nat.o, mips-linux-nat.o, ppc-linux-nat.o, s390-nat.o)
	(sparc64-linux-nat.o): Update dependencies.
	* alpha-linux-nat.c, sparc-linux-nat.c: New files.
	* amd64-linux-nat.c (amd64_linux_fetch_inferior_registers): Renamed
	from fetch_inferior_registers and made static.
	(amd64_linux_store_inferior_registers): Renamed from
	store_inferior_registers and made static.
	(amd64_linux_child_post_start_inferior): Renamed from
	child_post_startup_inferior and made static.  Call
	super_post_startup_inferior.
	(super_post_startup_inferior): New.
	(_initialize_amd64_linux_nat): Set it.  Call linux_target and
	add_target.
	* arm-linux-nat.c (arm_linux_fetch_inferior_registers): Renamed
	from fetch_inferior_registers and made static.
	(arm_linux_store_inferior_registers): Renamed from
	store_inferior_registers and made static.
	(_initialize_arm_linux_nat): Add a prototype.  Use linux_target and
	add_target.
	* hppa-linux-nat.c (hppa_linux_fetch_inferior_registers): Renamed
	from fetch_inferior_registers and made static.
	(hppa_linux_store_inferior_registers): Renamed from
	store_inferior_registers and made static.
	(_initialize_hppa_linux_nat): New function.
	* i386-linux-nat.c (i386_linux_fetch_inferior_registers): Renamed
	from fetch_inferior_registers and made static.
	(i386_linux_store_inferior_registers): Renamed from
	store_inferior_registers and made static.
	(i386_linux_resume): Renamed from child_resume and made static.
	(i386_linux_child_post_start_inferior): Renamed from
	child_post_startup_inferior and made static.  Call
	super_post_startup_inferior.
	(super_post_startup_inferior): New.
	(_initialize_i386_linux_nat): New function.
	* i386-nat.c: Remove LINUX_CHILD_POST_STARTUP_INFERIOR #ifndef.
	* ia64-linux-nat.c (ia64_linux_xfer_unwind_table): Remove.
	(super_xfer_partial): New.
	(ia64_linux_xfer_partial): New function.  Use it.
	(_initialize_ia64_linux_nat): New function.
	* ia64-tdep.c (getunwind_table): Revert 2005-06-08 change; use
	target_read_partial and document the problem.
	* inf-ptrace.c (inf_ptrace_fetch_register): Use
	CANNOT_FETCH_REGISTER.  Fix some comments.
	(inf_ptrace_store_register): Use CANNOT_STORE_REGISTER.  Fix some
	comments.
	* linux-nat.c: Include "inf-ptrace.h" and "auxv.h".
	(linux_ops, super_xfer_partial): New variables.
	(linux_child_post_startup_inferior): Make static.
	(child_post_startup_inferior): Delete.
	(linux_nat_attach, linux_nat_detach, resume_callback)
	(linux_nat_resume, linux_nat_wait, linux_nat_create_inferior)
	(linux_nat_mourn_inferior): Use linux_ops instead of
	deprecated_child_ops.
	(child_wait): Do not depend on CHILD_WAIT.
	(linux_nat_xfer_memory): Remove, replace by ...
	(linux_nat_xfer_partial): ... this.  Use linux_ops->to_xfer_partial
	instead of linux_proc_xfer_memory and child_xfer_memory.
	(linux_nat_fetch_registers, linux_nat_store_registers)
	(linux_nat_child_post_startup_inferior): New functions.
	(init_linux_nat_ops): Use the new functions.
	(linux_proc_xfer_memory): Remove, replace by ...
	(linux_proc_xfer_partial): ... this.  Make static.
	(linux_xfer_partial, linux_register_u_offset, linux_target): New
	functions.
	(_initialize_linux_nat): Do not modify deprecated_child_ops.
	* linux-nat.h (linux_proc_xfer_memory): Remove prototype.
	(struct mem_attrib, struct target_ops): Remove forward declarations.
	(linux_child_post_startup_inferior): Remove prototype.
	(linux_target): Add prototype.
	* linux-thread-db.c (thread_db_xfer_memory): Remove, replace by ...
	(thread_db_xfer_partial): ... this.
	(init_thread_db_ops): Set to_xfer_partial instead of
	deprecated_xfer_memory.
	* m32r-linux-nat.c (m32r_linux_fetch_inferior_registers): Renamed
	from fetch_inferior_registers and made static.
	(m32r_linux_store_inferior_registers): Renamed from
	store_inferior_registers and made static.
	(_initialize_m32r_linux_nat): New function.
	* m68klinux-nat.c (m68k_linux_fetch_inferior_registers): Renamed
	from fetch_inferior_registers and made static.
	(m68k_linux_store_inferior_registers): Renamed from
	store_inferior_registers and made static.
	(old_fetch_inferior_registers, old_store_inferior_registers): Made
	static.
	(_initialize_m68k_linux_nat): Use linux_target and add_target.
	* mips-linux-nat.c (_initialize_mips_linux_nat): New function.
	* ppc-linux-nat.c (ppc_linux_fetch_inferior_registers): Renamed
	from fetch_inferior_registers and made static.
	(ppc_linux_store_inferior_registers): Renamed from
	store_inferior_registers and made static.
	(_initialize_ppc_linux_nat): New function.
	* s390-nat.c (s390_linux_fetch_inferior_registers): Renamed
	from fetch_inferior_registers and made static.
	(s390_linux_store_inferior_registers): Renamed from
	store_inferior_registers and made static.
	(_initialize_s390_nat): New function.
	* sparc64-linux-nat.c (_initialize_sparc64_linux_nat): Use
	linux_target and add_target.
	* config/nm-linux.h: Don't include "auxv.h".
	(struct target_waitstatus, child_wait, CHILD_WAIT)
	(CHILD_PID_TO_EXEC_FILE, CHILD_INSERT_FORK_CATCHPOINT)
	(CHILD_INSERT_VFORK_CATCHPOINT, CHILD_INSERT_EXEC_CATCHPOINT)
	(CHILD_POST_STARTUP_INFERIOR, CHILD_POST_ATTACH, CHILD_FOLLOW_FORK)
	(DEPRECATED_KILL_INFERIOR, NATIVE_XFER_AUXV): Delete.
	* config/alpha/alpha-linux.mh (NATDEPFILES): Replace infptrace.o
	and inftarg.o with inf-ptrace.o and alpha-linux-nat.o.
	* config/sparc/linux.mh (NATDEPFILES): Replace infptrace.o and
	inftarg.o with sparc-linux-nat.o.
	* config/sparc/linux64.mh (NATDEPFILES): Remove infptrace.o and
	inftarg.o.
	* config/arm/linux.mh (NATDEPFILES): Replace infptrace.o and
	inftarg.o with inf-ptrace.o.
	* config/i386/linux.mh (NATDEPFILES): Likewise.
	* config/i386/linux64.mh (NATDEPFILES): Likewise.
	* config/ia64/linux.mh (NATDEPFILES): Likewise.
	* config/m32r/linux.mh (NATDEPFILES): Likewise.
	* config/m68k/linux.mh (NATDEPFILES): Likewise.
	* config/mips/linux.mh (NATDEPFILES): Likewise.
	* config/pa/linux.mh (NATDEPFILES): Likewise.
	* config/powerpc/linux.mh (NATDEPFILES): Likewise.
	* config/powerpc/ppc64-linux.mh (NATDEPFILES): Likewise.
	* config/s390/s390.mh (NATDEPFILES): Likewise.
	* config/i386/nm-linux.h (DEPRECATED_CHILD_RESUME): Don't define.
	(LINUX_CHILD_POST_STARTUP_INFERIOR): Don't define.
	* config/i386/nm-linux64.h (LINUX_CHILD_POST_STARTUP_INFERIOR):
	Don't define.
	* config/ia64/nm-linux.h: Don't include "target.h".
	(NATIVE_XFER_UNWIND_TABLE, ia64_linux_xfer_unwind_table): Remove.
	* config/djgpp/fnchange.lst: Add alpha-linux-tdep.c,
	alpha-linux-nat.c, sparc-linux-tdep.c, and sparc-linux-nat.c.

2005-09-08  Kevin Buettner  <kevinb@redhat.com>

	From Kevin Buettner, Andrew Cagney, Jackie Smith Cashion, and
	Alexandre Oliva:
	* mn10300-tdep.c (am33_2_register_name): New function.
	(my_frame_is_in_sp, my_frame_is_in_fp, my_frame_is_last)
	(set_my_stack_size): Delete.
	(set_movm_offsets, set_reg_offsets): Rename the former to the
	latter.  Update for handling am33.
	(mn10300_analyze_prologue): Update for handling am33.  Also, make
	minor improvements in quality of prologue analysis.
	(mn10300_gdbarch_init):  Add am33 support.
	* mn10300-tdep.h (E_NUM_REGS): Delete.

2005-09-06  Kevin Buettner  <kevinb@redhat.com>

	* mn10300-linux-tdep.c (mn10300_linux_svr4_fetch_link_map_offsets):
	Delete.
	(am33_linux_init_osabi): Register svr4_ilp32_fetch_link_map_offsets
	instead.

2005-09-06  Kevin Buettner  <kevinb@redhat.com>

	* mn10300-linux-tdep.c (solib-svr4.h): Include.
	(mn10300_linux_svr4_fetch_link_map_offsets): New function.
	(am33_linux_init_osabi): Register it.
	* Makefile.in (mn10300-linux-tdep.o): Update dependencies.

2005-09-06  Kevin Buettner  <kevinb@redhat.com>

	* mn10300-tdep.c (mn10300_analyze_prologue): Delete code disabled
	via "#if 0".

2005-09-06  Kevin Buettner  <kevinb@redhat.com>

	* mn10300-tdep.c (mn10300_analyze_prologue): Use
	safe_frame_unwind_memory() in place of deprecated_read_memory_nobpt().

2005-09-04  Daniel Jacobowitz  <dan@codesourcery.com>

	* inf-child.c (inf_child_follow_fork): Add OPS argument.
	* inf-ptrace.c (inf_ptrace_follow_fork): Likewise.
	* inf-ttrace.c (inf_ttrace_follow_fork): Likewise.
	* inftarg.c (child_follow_fork): Likewise.
	* linux-nat.c (child_follow_fork): Likewise.  Use ops instead of
	&deprecated_child_ops.
	* target.c (update_current_target): Do not inherit to_follow_fork.
	(target_follow_fork): New function.
	(debug_to_follow_fork): Remove.
	(setup_target_debug): Don't set to_follow_fork.
	* target.h (struct target_ops): Add struct target_ops * to
	to_follow_fork.
	(child_follow_fork): Add struct target_ops * argument.
	(target_follow_fork): Replace macro with prototype.

2005-09-02  Kevin Buettner  <kevinb@redhat.com>

	* mn10300-tdep.c (mn10300_dwarf2_reg_to_regnum): Use ARRAY_SIZE.
	Change internal error to warning.  Add i18n markup to warning
	string.
	
2005-09-02  Kevin Buettner  <kevinb@redhat.com>

	* mn10300-tdep.c (mn10300_dwarf2_reg_to_regnum): New function.
	(mn10300_gdbarch_init): Register mn10300_dwarf2_reg_to_regnum().

2005-09-02  Kevin Buettner  <kevinb@redhat.com>

	* mn10300-tdep.c (is_my_frame_in_sp, is_my_frame_in_fp)
	(is_my_frame_last): Delete these unused functions.

2005-09-02  Kevin Buettner  <kevinb@redhat.com>

	* mn10300-tdep.c (mn10300_frame_prev_register): Change type of
	``bufferp'' from ``void *'' to ``gdb_byte *''.

2005-09-02  Kevin Buettner  <kevinb@redhat.com>

	* mn10300-tdep.c (mn10300_use_struct_convention): Delete parameter
	``gcc_p''.  Adjust all callers.
	(mn10300_store_return_value, mn10300_extract_return_value): Add new
	parameter ``gdbarch''.
	(mn10300_return_value): New function.
	(mn10300_gdbarch_init): Delete old-style return value code calls.
	Add call to set_gdbarch_return_value().

2005-09-02  Kevin Buettner  <kevinb@redhat.com>
	
	* mn10300-tdep.c (regcache.h): Delete duplicate include.
	* Makefile.in (mn10300-tdep.o): Update dependencies.

2005-09-02  Kevin Buettner  <kevinb@redhat.com>

	* mn10300-tdep.c (osabi.h): Include.
	(mn10300_gdbarch_init): Invoke gdbarch_init_osabi().
	* Makefile.in (mn10300-tdep.o): Update dependencies.

2005-09-02  Michael Snyder  <msnyder@redhat.com>
            Kevin Buettner  <kevinb@redhat.com>

	* mn10300-linux-tdep.c: New file.
	* Makefile.in (mn10300-linux-tdep.o): New Makefile target.
	* config/mn10300/linux.mt (TDEPFILES): Add mn10300-linux-tdep.o and
	corelow.o.
	* mn10300-tdep.h (E_E8_REGNUM, E_E9_REGNUM, E_E10_REGNUM)
	(E_FPCR_REGNUM, E_FS0_REGNUM): New constants.

2005-09-02  Mark Kettenis  <kettenis@gnu.org>

	* infcall.c (call_function_by_hand): Remove code handling
	deprecated_push_arguments.  Bail out early if push_dummy_call
	isn't available.
	* gdbarch.sh (deprecated_push_arguments): Delete.  Adjust a few
	comments accordingly.
	* gdbarch.h, gdbarch.c: Regenerate.

2005-09-01  Paul Gilliam  <pgilliam@us.ibm.com>

        * ppc-tdep.h (struct gdbarch_tdep): Better explanation of using
        -1 for nonexistant registers.
        * rs6000-tdep.c (rs6000_register_reggroup_p): Don't assume that
        tdep->ppc_vr0_regnum and tdep->ppc_ev0_regnum are not -1.

2005-09-01  Richard Earnshaw  <richard.earnshaw@arm.com>

	* arm-linux-tdep.c (arm_linux_push_arguments): Delete.
	(arm_linux_init_abi): Don't register it.

2005-08-31  Mark Kettenis  <kettenis@gnu.org>

	* symfile.c (symbol_file_command, set_initial_language)
	(symfile_bfd_open, get_section_index, add_symtab_fns)
	(find_sym_fns): Reformat code and comments.  Tweak comments.

	* m68k-tdep.c (m68k_register_name): Use ARRAY_SIZE.

2005-08-31  Jim Wilson  <wilson@specifix.com>

	* i386fbsd-tdep.c (i386fbsd_sc_reg_offset): Make it non-static.

2005-08-29  Mark Kettenis  <kettenis@gnu.org>

	* environ.c (unset_in_environ): Use strncmp instead of
	DEPRECATED_STREQN.
	* exec.c (exec_file_attach): Remove DEPRECATED_HPUX_TEXT_END.
	* language.c (set_case_command, language_enum): Use strcmp instead
	of DEPRECATED_STREQ.
	* source.c (select_source_symtab): Sprinkle a few consts.  Use
	strcmp instead of DEPRECATED_STREQ.

	* solib-svr4.c (svr4_current_sos, svr4_fetch_objfile_link_map):
	Use XZALLOC and xzalloc instead of xmalloc where appropriate.

2005-08-27  Eli Zaretskii  <eliz@gnu.org>

	* main.c (print_gdb_help): Don't advertise the (long non-existent)
	option --mapped.

2005-08-21  Mark Kettenis  <kettenis@gnu.org>

	* doublest.c (floatformat_mantissa): Use xsnprintf instead of
	sprintf.

	* vaxobsd-tdep.c: New file.
	* config/vax/obsd.mt (TDEPFILES): Add vaxobsd-tdep.o.
	* Makefile.in (vaxobsd-tdep.o): New dependency.

	* ppcobsd-tdep.c: Include "frame.h" and "frame-unwind.h".  Don't
	include "tramp-frame.h".
	(ppcobsd_sigtramp_cache_init): Remove function.
	(ppcobsd_sigtramp): Remove variable.
	(ppcobsd_page_size, ppcobsd_sigreturn_offset): New variables.
	(ppcobsd_sigtramp_p): New function.
	(ppcobsd_sigtramp_frame_cache, ppcobsd_sigtramp_frame_this_id)
	(ppcobsd_sigtramp_frame_prev_register): New functions.
	(ppcobsd_sigtramp_frame_unwind): New variable.
	(ppcobsd_sigtramp_frame_sniffer): New function.
	(ppcobsd_init_abi): Adjust to register new sigtramp sniffer
	instead of the old one.
	* Makefile.in (ppcobsd-tdep.o): Update dependencies.

	* infcall.c (call_function_by_hand): For
	RETURN_VALUE_ABI_RETURNS_ADDRESS and
	RETURN_VALUE_ABI_PRESERVES_ADDRESS, use gdbarch_return_value to
	get return value.

	* valarith.c (value_equal, value_less): Avoid compiler bug on
	systems where `long double' values are returned in static storage.

2005-08-18  Mark Kettenis  <kettenis@gnu.org>

	* stack.c: Reformat.  Improve comments.  Include "valprint.h".
	(args_info, locals_info, backtrace_command, backtrace_command_1)
	(backtrace_full_command, frame_info, frame_command, down_command)
	(down_silently_base, down_silently_command, up_command)
	(up_silently_base, up_silently_command, parse_frame_specification)
	(current_frame_command, print_frame_args_vars, catch_info)
	(args_plus_locals_info), print_frame_label_vars)
	(print_block_frame_labels, print_block_frame_locals)
	(func_command): Remove prototypes.
	(print_stack_frame, backtrace_command_stub, backtrace_command,
	backtrace_full_command, print_frame_args, print_frame_arg_vars,
	print_args_stub, func_command): Remove redundant casts.
	(addressprint): Remove extern declaration.
	(frame_command): Make static.
	(struct print_stack_frame_args, struct print_args_args): Rename
	`fi' member to `frame'.
	(print_stack_frame, print_frame_nameless_args, print_frame_args)
	(set_current_sal_from_frame, print_frame_info, print_frame)
	(show_stack_frame, print_block_frame_locals)
	(print_frame_local_vars, print_frame_label_vars)
	(print_frame_arg_vars, select_and_print_frame): Rename `fi'
	argument to `frame'.
	(func_command): Rename `fp' variable to `frame'.
	(get_language): Restructure.
	* Makefile.in (stack.o): Update dependencies.

2005-08-17  Kevin Buettner  <kevinb@redhat.com>

	* NEWS (ms1-elf): New target.

2005-08-17  Mark Kettenis  <kettenis@gnu.org>

	* m68k-tdep.c (m68k_return_value): Properly return contents of
	structures passed in memory.

	* infcmd.c (print_return_value): Move CHECK_TYPEDEF up.  Deal with
	RETURN_VALUE_ABI_PRESERVED_ADDRESS.

	* ppc-sysv-tdep.c (do_ppc_sysv_return_value): Fix the code that
	deals with the broken GCC convention.
	
2005-08-16  Mark Kettenis  <kettenis@gnu.org>

	* ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Set condition
	register appropriately for varargs functions.

2005-08-15  Kevin Buettner  <kevinb@redhat.com>

	* MAINTAINERS (ms1): New target ISA entry.  List myself as
	maintainer.

2005-08-15  Michael Snyder  <msnyder@redhat.com>
            Kevin Buettner  <kevinb@redhat.com>

	* Makefile.in (ms1-tdep.o): Add dependencies.
	* configure.tgt: Add ms1-*-* target.
	* ms1-tdep.c: New file.
	* config/ms1/ms1.mt: New file.

2005-08-15  Mark Kettenis  <kettenis@gnu.org>

	* Makefile.in (m68kbsd-tdep.o): Ad missing space.

2005-08-15  Ulrich Weigand  <uweigand@de.ibm.com>

	* s390-tdep.c (op1_lgfi, op2_lgfi, op1_agfi, op2_agfi,
	op1_afi, op2_afi, op1_algfi, op2_algfi, op1_alfi, op2_alfi,
	op1_slgfi, op2_slgfi, op1_slfi, op2_slfi): New opcode enums.
	(s390_analyze_prologue): Recognize new z9-109 instructions.

2005-08-14  Mark Kettenis  <kettenis@gnu.org>

	* solib-som.c (som_current_sos): Cast to 'gdb_byte *' where
	appropriate.

	* inf-ptrace.c (inf_ptrace_him) [PT_GET_PROCESS_STATE]: Move
	code...
	(inf_ptrace_post_startup_inferior): ...here.  New function.
	(inf_ptrace_attach) [PT_GET_PROCESS_STATE]: Move code...
	(inf_ptrace_post_attach): ...here.
	(inf_ptrace_target) [PT_GET_PROCESS_STATE]: Set
	to_post_startup_inferior and to_post_attch.

	* sparc-tdep.c (sparc_breakpoint_from_pc): Constify break_insn.

	* sparc-sol2-tdep.c (sparc_sol2_pc_in_sigtramp): Check for
	"__sighndlr".

2005-08-13  Mark Kettenis  <kettenis@gnu.org>

	* i386-linux-nat.c (fetch_register, store_register) 
	(supply_gregset, fill_gregset): Remove redundant casts.

2005-08-12  Kris Warkentin  <kewarken@qnx.com>

	* i386-nto-tdep.c (i386nto_init_abi): Don't set gdbarch skip
	trampoline code hook.
	* nto-procfs.c (procfs_post_attach): Call solib_create_inferior_hook
	instead of  SOLIB_CREATE_INFERIOR_HOOK.
	(procfs_create_inferior): Ditto.
	* config/tm-nto.h: Don't define SKIP_TRAMPOLINE_CODE.

2005-08-11  Andreas Schwab  <schwab@suse.de>

	PR exp/1978
	* valarith.c (value_binop): Fix result type for the shift
	operators.

2005-08-09  Mark Kettenis  <kettenis@gnu.org>

	* sparc64obsd-tdep.c: Tweak comments.
	(sparc64obsd_sigreturn_offset): Add offset for new OpenBSD 3.8
	signal trampoline.

2005-08-09  Andrew Cagney  <cagney@gnu.org>

	* linux-nat.h (linux_proc_xfer_memory): Change type of "myaddr" a
	"gdb_byte" pointer.
	* linux-nat.c (linux_proc_xfer_memory): Update.
	(get_signo): Cast signo to a "gdb_byte" pointer.
	* i386-linux-nat.c (child_resume): Make "buf" a gdb_byte, delete
	redundant casts.
	(child_resume): Cast eflags to a "gdb_byte" pointer.

2005-08-08  Mark Kettenis  <kettenis@gnu.org>

	* tramp-frame.h (struct tramp_frame): Allow for 16 instructions
	instead of 8.
	* m68kbsd-tdep.c: Include "frame.h", "trad-frame.h" and
	"tramp-frame.h".
	(m68kobsd_sigtramp_cache_init): New function.
	(m68kbsd_aout_init_abi): Prepend m68kobsd_sigtramp unwinder.

2005-08-02  Fred Fish  <fnf@specifix.com>

	* defs.h (parse_frame_specification): Remove prototype.
	* stack.c (parse_frame_specification): Add prototype and
	make function static.
	(frame_info): Move common code outside if..then..else.

2005-08-01  Daniel Jacobowitz  <dan@codesourcery.com>

	* value.c (value_contents_writeable): Use value_contents_raw.

2005-08-01  Daniel Jacobowitz  <dan@codesourcery.com>

	Suggested by Shaun Jackman <sjackman@gmail.com>:
	* defs.h (print_transfer_performance): Update prototype.
	* m32r-rom.c (m32r_load, m32r_upload_command): Use gettimeofday
	for print_transfer_performance.
	* remote-m32r-sdi.c (m32r_load): Likewise.
	* symfile.c (generic_load): Likewise.
	(report_transfer_performance): Create a dummy struct timeval.
	(print_transfer_performance): Use a more accurate measure
	of performance.

2005-08-01  Fred Fish  <fnf@specifix.com>

	* stack.c (parse_frame_specification_1): Remove use of obsolete
	SETUP_ARBITRARY_FRAME macro.

2005-08-01  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2-frame.c (read_signed_leb128): Handle values that do not
	fit in 32 bits.
	* dwarf2read.c (read_signed_leb128): Likewise.

2005-07-31  Daniel Jacobowitz  <dan@codesourcery.com>

	From Josef Ezra <jezra@emc.com>:
	* tracepoint.c (stringify_collection_list): Correct pointer
	arithmetic.

2005-07-31  Daniel Jacobowitz  <dan@codesourcery.com>

	Suggested by Vladimir Prus <ghost@cs.msu.su>:
	* infrun.c (handle_inferior_event): Check for line information in
	undebuggable functions.

2005-07-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cli-out.c (cli_field_fmt, cli_message, out_field_fmt): Add
	ATTR_FORMAT or ATTRIBUTE_FPTR_PRINTF.
	* complaints.c (vcomplaint): Likewise.
	* defs.h (xvasprintf, xstrvprintf, verror, vfatal)
	(internal_verror, internal_vwarning, vwarning)
	(deprecated_query_hook, deprecated_warning_hook)
	(deprecated_readline_begin_hook): Likewise.
	* disasm.c (fprintf_disasm): Likewise.
	* exceptions.c (throw_it): Likewise.
	* exceptions.h (throw_verror, throw_vfatal): Likewise.
	* mi/mi-interp.c (mi_interp_query_hook): Likewise.
	* mi/mi-out.c (mi_field_fmt, mi_message): Likewise.
	* tui/tui-hooks.c (tui_query_hook): Likewise.
	* tui/tui-out.c (tui_field_fmt, tui_message, out_field_fmt):
	Likewise.
	* ui-out.c (default_field_fmt, default_message, uo_field_fmt)
	(uo_message): Likewise.
	* ui-out.h (ui_out_field_fmt, ui_out_message, field_fmt_ftype)
	(message_ftype): Likewise.
	* utils.c (vfprintf_maybe_filtered, internal_vproblem)
	(defaulted_query, printchar): Likewise.
	
2005-07-26  Mark Kettenis  <kettenis@gnu.org>

	* i386obsd-tdep.c (i386obsd_sigreturn_offset): New variable.
	(i386obsd_sigtramp_p): Deal with an arbitrary number of possible
	offsets.
	(i386obsd_aout_supply_regset): Avoid bogus cast.

2005-07-25  Mark Kettenis  <kettenis@gnu.org>

	* inf-ptrace.c [PT_GET_PROCESS_STATE] (inf_ptrace_follow_fork):
	New function.
	(inf_ptrace_him, inf_ptrace_attach) [PT_GET_PROCESS_STATE]: Set
	PTRACE_FORK event flag.
	(inf_ptrace_wait) [PT_GET_PROCESS_STATE]: Handle PTRACE_FORK
	event.
	(inf_ptrace_target) [PT_GET_PROCESS_STATE]: Set to_follow_fork.

2005-07-25  Mark Kettenis  <kettenis@gnu.org>

	* gdb_ptrace.h (PT_TRACE_ME): Define to zero if not already
	defined.
	* inf-ptrace.c: Tweak comments.
	(inf_ptrace_me): Use PT_TRACE_ME instead of hardcoded zero.
	(inf_ptrace_mourn_inferior): Call waitpid.
	(inf_ptrace_attach): Use pid_t, Remove unnecessary cast.
	(inf_ptrace_detach): Use pid_t.  Use ptid_get_pid instead of
	PIDGET.
	(inf_ptrace_kill): Rename from inf_ptrace_kill_inferior.  Use
	pid_t.  Use ptid_get_pid instead of PIDGET.
	(inf_ptrace_kill): Call waitpid instead of wait.
	(inf_ptrace_resume): Use pid_t.  Use ptid_get_pid instead of
	PIDGET.
	(inf_ptrace_wait): Use waitpid instead wait.  Use pid_t.  Don't
	call target_has_exited or target_thread_alive.  Properly ignore
	terminated detached child processes.
	(inf_ptrace_has_exited): Remove function.
	(inf_ptrace_xfer_partial): Use pid_t.  Use ptid_get_pid instead of
	PIDGET.  Use gdb_byte instead of `unsigned char'.
	(inf_ptrace_thread_alive): Use ptid_get_pid instead of PIDGET.
	(inf_ptrace_pid_to_str): Remove function.
	(inf_ptrace_target): Use inf_ptrace_kill instead of
	inf_ptrace_kill_inferior.  Use normal_pid_to_str instead of
	inf_ptrace_pid_to_str.  Don't set to_has_exited.
	(inf_ptrace_fetch_register, inf_ptrace_store_register): Reformat
	long lines.

2005-07-25  Mark Kettenis  <kettenis@gnu.org>

	* inf-ptrace.c: Reorder functions.
	(inf_ptrace_open, inf_ptrace_reported_exec_events_per_call)
	(inf_ptrace_can_run, inf_ptrace_post_attach): Removed.
	(inf_ptrace_target): Don't set to_open,
	to_reported_exec_events_per_call, to_can_run, to_post_attach,
	to_stratum, to_has_all_memory, to_has_memory, to_has_stack,
	to_has_registers, to_has_execution, to_magic.  Reorder remaining
	initializations.

2005-07-25  Mark Mitchell  <mark@codesourcery.com>

	* configure.ac: On MinGW, do not require a termcap library, and
	use win32-termcap.c.
	* configure: Regenerated.
	* win32-termcap.c: New file.

2005-07-24  Mark Mitchell  <mark@codesourcery.com>

	* ser-tcp.c (close): Define as a function-like macro on MinGW.

2005-07-21  Eric Christopher  <echristo@apple.com>

	* MAINTAINERS (Misc): Update affiliation.

2005-07-21  Mark Kettenis  <kettenis@gnu.org>

	* inf-ttrace.c (inf_ttrace_wait): Properly report TTEVT_EXEC
	events as TARGET_WAITKIND_EXECD.
	(inf_ttrace_detach): Reorder local variables.

2005-07-20  Mark Kettenis  <kettenis@gnu.org>

	* inf-ttrace.c (inf_ttrace_vfork_ppid): New variable.
	(inf_ttrace_follow_fork): New function.
	(inf_ttrace_him, inf_ttrace_attach): Ask for TTEVT_FORK and
	TTEVT_VFORK events.  Replace TTEO_NOSTRCHLD option with
	TTEO_PROC_INHERIT.
	(inf_ttrace_create_inferior, inf_ttrace_attach): Add checks for
	inf_ttrace_vfork_ppid.
	(inf_ttrace_kill_inferior, inf_ttrace_detach): Detach from waiting
	parent if appropriate.
	(inf_ttrace_wait): Handle TTEVT_FORK and TTEVT_VFORK.
	(inf_ttrace_target): Set to_follow_fork.

2005-07-20  Wu Zhou  <woodzltc@cn.ibm.com>

	* remote.c (remote_pid_to_str): Use xsnprintf instead of snprintf.

2005-07-18  Mark Kettenis  <kettenis@gnu.org>

	* target.c (normal_pid_to_str): Use xsnprintf instead of snprintf.
	* bsd-uthread.c (bsd_uthread_pid_to_str): Likewise.
	* inf-ttrace.c (inf_ttrace_pid_to_str): Likewise.

	* hppa-tdep.h (hppa_frame_prev_register_helper): Change types of
	last argument to `gdb_byte *'.
	* hppa-tdep.c (hppa32_convert_from_func_ptr_addr): Rewrite.
	(hppa_frame_prev_register_helper): Change types of last argument
	to `gdb_byte *'.
	* hppa-hpux-tdep.c (hppa_hpux_sigtramp_frame_prev_register):
	Change types of last argument to `gdb_byte *'.

2005-07-18  Mark Kettenis  <kettenis@gnu.org>
	    Jason Molenda  <jmolenda@apple.com>

	* i386-tdep.c (i386_match_insn): Match complete instruction
	pattern.

2005-07-18  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.c (i386_reg_struct_return_p): Handle structures with a
	single 'long double' member correctly.
	(i386_return_value): Tweak comment.

2005-07-16  Nick Roberts  <nickrob@snap.net.nz>

	* mi/gdb-mi.el:  Update for changes in Emacs 22.0.50.  Bring more
	features over from gdb-ui.el.  Use "-var-update --all-values" for
	faster re-display of watch expressions.

2005-07-15  Mark Kettenis  <kettenis@gnu.org>
	    Marcel Moolenaar  <marcel@xcllnt.net>

	* sparc64fbsd-nat.c: Include "regcache.h", <sys/types.h>,
	<machine/pcb.h> and "bsd-kvm.h".
	(sparc64fbsd_kvm_supply_pcb): New function.
	(_initialize_sparc64fbsd_nat): Enable libkvm interface.
	* config/sparc/fbsd.mh (NATDEPFILES): Add bsd-kvm.o.
	(LOADLIBES): New variable.
	* Makefile.in (sparc64fbsd-nat.o): Update dependencies.

2005-07-15  Nick Roberts  <nickrob@snap.net.nz>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* mi/mi-cmds.h (mi_no_values, mi_simple_values, mi_all_values): New
	declarations.
	* mi/mi-cmd-stack.c (mi_cmd_stack_list_locals): Use string
	constants instead of literals for MI command options.
	* mi/mi-cmd-var.c (mi_no_values, mi_simple_values, mi_all_values):
	New variables.
	(mi_parse_values_option, mi_print_value_p): New functions.
	(mi_cmd_var_list_children): Use mi_parse_values_option and
	mi_print_value_p.
	(mi_cmd_var_update): Support a PRINT_VALUES option.  Update calls
	to varobj_update_one.
	(varobj_update_one): Take a print_values argument.  Call
	mi_print_value_p.
	* varobj.c (varobj_get_gdb_type): New function.
	* varobj.h (varobj_get_gdb_type): New prototype.

2005-07-13  Daniel Jacobowitz  <dan@codesourcery.com>

	* ppc-linux-tdep.c (ppc_linux_init_abi): Set 64-bit link map offsets.

2005-07-12  Mark Kettenis  <kettenis@gnu.org>

	* dwarf2expr.h: Tweak comment.
	(struct dwarf_expr_context): Use `gdb_byte *' in read_mem and
	get_frame_base function pointers.
	(read_uleb128, read_sleb128): Change return type and types of
	first two arguments to `gdb_byte *'.
	(dwarf2_read_address): Change types of first two arguments to
	`gdb_byte *'.
	* dwarf2expr.c: Tweak comment.
	(dwarf_expr_eval): Change type of second argument to `gdb_byte *'.
	(read_uleb128, read_sleb128): Change return type and types of
	first two arguments to `gdb_byte *'.
	(dwarf2_read_address): Change types of first two arguments to
	`gdb_byte *'.
	(execute_stack_op): Change types of last two arguments to
	`gdb_byte *'.  Use `gdb_byte *' for byte buffers.
	* dwarf2loc.h: Tweak comment.
	(struct dwarf2_locexpr_baton, struct dwarf2_loclist_baton): Use
	`gdb_byte *' for byte buffers.
	* dwarf2loc.c (find_location_expression): Change return type to
	`gdb_byte *'.  Use `gdb_byte *' for byte buffers.  Change length
	to `unsigned int'.
	(dwarf_expr_read_reg): Use `gdb_byte *' for byte buffer.  Remove
	bogus cast.
	(dwarf_expr_read_mem): Change type of second argument to
	`gdb_byte *'.
	(dwarf_expr_frame_base): Change type of second argument to
	`gdb_byte **'.
	(dwarf2_evaluate_loc_desc): Change type of third argument to
	`gdb_byte *'.
	(needs_frame_read_mem): Change type of second argument to
	`gdb_byte *'.
	(needs_frame_frame_base): Change type of second argument
	`gdb_byte **'.  Use gdb_byte for lit0.
	(dwarf2_tracepoint_var_ref): Change type of fourth argument to
	`gdb_byte *'.  Use `gdb_byte *' for byte buffer.
	(loclist_read_variable, loclist_tracepoint_var_ref): Use `gdb_byte
	*' for byte buffer.
	* dwarf2-frame.c (struct dwarf2_cie, struct dwarf2_fde)
	(struct dwarf2_frame_state): Use gdb_byte instead of `unsigned
	char'.
	(read_reg): Use `gdb_byte *' for byte buffers.  Remove redundant
	cast.
	(read_mem): Change second argument to `gdb_byte *'.
	(no_get_frame_base): Change second argument to `gdb_byte **'.
	(execute_stack_op): Change first argument to `gdb_byte *'.
	(execute_cfa_program): Change first two arguments to `gdb_byte *'.
	Use gdb_byte instead of `unsigned int'.  Use temprorary variable
	to store result of read_uleb128.
	(struct comp_unit): Use `gdb_byte *' for byte buffers.
	(read_1_byte, read_4_bytes, read_8_bytes): Change last argument to
	`gdb_byte *'.
	(read_unsigned_leb128, read_signed_leb128): Change second argument
	to `gdb_byte *'.  Use gdb_byte instead of `unsigned char'.
	(read_initial_length): Change second argument to `gdb_byte *'.
	Remove redundant casts.
	(read_encoded_value): Use gdb_byte instead of `unsigned char'.
	Remove bogus casts.
	(decode_frame_entry_1): Change return type and second argument to
	`gdb_byte *'.  Use `gdb_byte *' for byte buffers.  Use gdb_byte
	instead of `unsigned char'.
	(decode_frame_entry): Change return type and second argument to
	`gdb_byte *'.  Use `gdb_byte *' for byte buffers.
	(dwarf2_build_frame_info): Use `gdb_byte *' for byte buffers.

2005-07-12  Mark Kettenis  <kettenis@gnu.org>

	* objc-lang.c (print_object_command): Use gdb_byte for c.
	* arch-utils.c (legacy_extract_return_value): Use 'gdb_byte *' for
	registers.

2005-07-11  Mark Kettenis  <kettenis@gnu.org>

	* bsd-kvm.c: Include <paths.h>.
	(bsd_kvm_corefile): New variable.
	(core_kd, bsd_kvm_paddr, bsd_kvm_supply_pcb, bsd_kvm_ops): Make
	static.
	(bsd_kvm_open): Set bsd_kvm_corefile.
	(bsd_kvm_files_info): New function.
	(bsd_kvm_add_target): Set to_files_info.

2005-07-07  Andreas Schwab  <schwab@suse.de>

	* observer.sh: Use different temporary file name depending on mode
	of operation to avoid clash during parallel build.

2005-07-06  Bob Rossi  <bob@brasko.net>

	* fork-child.c (fork-inferior): Use accessor function for
	inferior_io_terminal.
	* infcmd.c (inferior_io_terminal): Make static.
	(set_inferior_io_terminal): New function.
	(get_inferior_io_terminal): Ditto.
	(tty_command): Use accessor function.
	(_initialize_infcmd): Add inferior_tty setshow variable.
	(_initialize_infcmd): Remove tty command.
	(_initialize_infcmd): Add a tty command that is an alias.
	* inferior.h (set_inferior_io_terminal): New prototype.
	(get_inferior_io_terminal): Ditto.
	(new_tty_prefork): Add const qualifier to parameter.
	* inflow.c (inferior_thisrun_terminal): Add const qualifier.
	(new_tty_prefork): Add const qualifier to parameter.
	* nto-procfs (procfs_create_inferior): Use accessor function.
	(procfs_create_inferior): Add const qualifier to locals.
	* win32-nat.c (child_create_inferior): Ditto.
	* mi/mi-cmd-env.c (mi_cmd_inferior_tty_set): New function.
	(mi_cmd_inferior_tty_set): Ditto.
	* mi/mi-cmds.c (mi_cmds): Add inferior-tty-set and inferior-tty-show
	* mi/mi-cmds.h (mi_cmd_inferior_tty_set): Add prototype.
	(mi_cmd_inferior_tty_show): Ditto.

2005-07-06  Wu Zhou  <woodzltc@cn.ibm.com>

	* tui/tui-win.c (parse_scrolling_args): Fix SEGV error with invalid
	scroll command.

2005-07-06  Wu Zhou  <woodzltc@cn.ibm.com>

	* f-exp.y (yyparse): Add code to support exponentiation expression.
	(yylex): Add code to scan exponentiation operator.
	* eval.c (evaluate_subexp_standard): Add support for BINOP_EXP.
	* valarith.c (value_binop): Reset errno to 0 before calling pow
	to do exponentiation operation.

2005-07-04  Mark Kettenis  <kettenis@gnu.org>

	* i386nbsd-nat.c (i386nbsd_supply_pcb): Cast to 'gdb_byte *' in
	read_memory call.
	* bsd-uthread.c (bsd_uthread_wait): Use gdb_byte for byte buffer.

	* bsd-kvm.c (bsd_kvm_open): Properly cast sentinel in concat call.
	* coffread.c (patch_type, process_coff_symbol): Likewise.
	* corelow.c (core_open): Likewise.
	* dwarf2read.c (dwarf_decode_lines, dwarf2_start_subfile):
	* language.c (set_lang_str, set_type_str, set_range_str)
	(set_case_str): Likewise.
	* source.c (add_path, openp): Likewise.
	* stabsread.c: Likewise.
	* top.c (init_history): Likewise.
	* utils.c (xfullpath): Likewise.
	* value.c (lookup_internalvar): Likewise.
	* cli/cli-cmds.c (cd_command): Likewise.
	* cli/cli-dump.c (add_dump_command): Likewise.

	* i387-tdep.c (print_i387_value, print_i387_ext, i387_tag): Change
	type of first argument to `const gdb_byte *'.
	(i387_print_float_info, i387_register_to_value)
	(i387_value_to_register, i387_supply_fsave, i387_collect_fsave)
	(i387_supply_fxsave, i387_collect_fxsave): Use gdb_byte for byte
	buffers.

2005-07-04  Ben Elliston  <bje@gnu.org>

	* Makefile.in (RUNTEST): Set to runtest.

2005-07-03  Richard Henderson  <rth@redhat.com>

	* amd64-tdep.c (amd64_sse_type): New.
	(amd64_register_info): Use it for xmm registers.  Constify.
	(amd64_register_type): Initialize amd64_sse_type as needed.

2005-07-03  Steve Ellcey  <sje@cup.hp.com>

	* configure.ac: Add arguments to AC_DEFINE calls.
	* acconfig.h: Remove file.
	* acinclude.m4 (AC_GNU_SOURCE): Remove definition.
	* configure: Regenerate.
	* config.in: Regenerate.

2005-07-01  Mark Kettenis  <kettenis@gnu.org>

	* mips-tdep.c (mips_insn16_frame_prev_register)
	(mips_insn32_frame_prev_register, mips_stub_frame_prev_register):
	Change type of last argument to `gdb_byte *'.

2005-07-01  Steve Ellcey  <sje@cup.hp.com>

	* MAINTAINERS (Write After Approval): Add myself.

2005-07-01  Mark Kettenis  <kettenis@gnu.org>

	* solib-svr4.c: Include "solib.h".
	* Makefile.in (solib-svr4.o): Update dependencies.

2005-06-28  Mark Kettenis  <kettenis@gnu.org>

	* eval.c (evaluate_struct_tuple): Use strcmp instead of
	DEPRECATED_STREQ.

2005-06-27  Michael Snyder  <msnyder@redhat.com>

	* mn10300-linux-tdep.c: New file.  OSABI sniffer at end.
	* Makefile.in: Add rule for mn10300-linux-tdep.c.
	* config/mn10300/linux.mt: Add mn10300-linux-tdep.c to tdep files.

2005-06-27  Michael Snyder  <msnyder@redhat.com>

	* config/mn10300/linux.mt: New file.
	* configure.tgt: Add rule for am33 / mn10300-linux.
	* mn10300-tdep.c, mn10300-tdep.h: Bump copyright year.

2005-06-27  Wu Zhou  <woodzltc@cn.ibm.com>

	* gdbtypes.c (get_discrete_bounds): Fix a comment typo.

2005-06-25  Mark Kettenis  <kettenis@gnu.org>

	* sol-thread.c (sol_thread_xfer_memory): Change type of second
	argument to `gdb_byte *'.
	(sol_thread_xfer_partial): Change type of readbuf and writebuf
	arguments to `gdb_byte *'.

	* mips-tdep.c (mips_xfer_register, mips_o32_return_value)
	(mips_integer_to_address): Use gdb_byte instead of bfd_byte.

2005-06-24  Mark Kettenis  <kettenis@gnu.org>

	* ppcobsd-nat.c: Include "gdbcore.h", <sys/signal.h>,
	<machine/frame.h>, <machine/pcb.h> and "bsd-kvm.h".
	(ppcobsd_supply_pcb): New function.
	(_initialize_ppcobsd_nat): Enable libkvm interface.
	* Makefile.in (ppcobsd-nat.o): Update dependencies.
	* config/powerpc/obsd.mh (NATDEPFILES): Add bsd-kvm.o.
	(LOADLIBES): New variable.

2005-06-24  Corinna Vinschen  <vinschen@redhat.com>

	* i386-tdep.c (struct i386_frame_cache): Define sp_offset as LONGEST.

2005-06-23  Andreas Schwab  <schwab@suse.de>

	* gdb_ptrace.h: Fix typos when checking for PT_ATTACH.  Reported
	by Chad Harrington <harrington.chad@gmail.com>.

2005-06-22  Mark Kettenis  <kettenis@gnu.org>

	* remote.c (extended_remote_restart): Pass buffer in call to
	xsnprintf instead of a pointer to the buffer.

2005-06-21  Andrew Cagney  <cagney@gnu.org>

	* MAINTAINERS: List GDB's Steering Committee as responsible for
	GDB's maintenance.

2005-06-21  Mark Kettenis  <kettenis@gnu.org>

	* inf-ttrace.c (inf_ttrace_xfer_partial): Change type of readbuf
	and writebuf arguments to `gdb_byte *'.

2005-06-21  Wu Zhou  <woodzltc@cn.ibm.com>

	* MAINTAINERS (Write After Approval): Add myself.

2005-06-20  Mark Kettenis  <kettenis@gnu.org>

	* hppabsd-tdep.c: Include "symtab.h", "objfiles.h", "target.h",
	"value.h" and "elf/common.h".
	(hppabsd_supply_gregset): Use `gdb_byte *' for byte buffer.
	(hppabsd_find_global_pointer): New function.
	(hppabsd_init_abi): Set TDEP->find_global_pointer to
	hppabsd_find_global_pointer.
	* Makefile.in (hppabsd-tdep.o): Update dependencies.

2005-06-12  Mark Kettenis  <kettenis@gnu.org>

	* hppa-tdep.c (hppa_pointer_to_address_hack): Remove function.
	(unwind_command): Use %lx to print pointer.

2005-06-19  Mark Kettenis  <kettenis@gnu.org>

	* remote-sim.c (gdbsim_xfer_inferior_memory): Remove prototype.
	Change type of second argument to`gdb_byte *'.

2005-06-19  Nick Roberts  <nickrob@snap.net.nz>

	* mi/mi-cmd-stack.c (mi_cmd_stack_info_frame): New function.

	* mi/mi-cmds.c (mi_cmds): Replace entry for -stack-info-frame.
	Make it use mi_cmd_stack_info_frame

	* mi/mi-cmds.h (mi_cmd_stack_info_frame): New declaration.

2005-06-18  Mark Kettenis  <kettenis@gnu.org>

	* hppa-tdep.c (hppa_fallback_frame_cache): Don't error out if we
	can't find the bounds of the current function.  Wrap some long
	lines in the process.

	* regcache.c (regcache_raw_supply, regcache_raw_collect): Change
	type of last argument back to `void *'.
	* regcache.h (regcache_raw_supply, regcache_raw_collect): Likewise.

2005-06-18  Nick Roberts  <nickrob@snap.net.nz>

	* mi/mi-cmds.c (mi_cmds): Remove entry for -stack-info-frame.

	* mi/mi-cmd-stack.c (mi_cmd_stack_list_frames)
	(mi_cmd_stack_info_depth): Don't test for stack.
	(mi_cmd_stack_select_frame): Make the argument mandatory.
	Don't test for stack.

2005-06-17  Wu Zhou  <woodzltc@cn.ibm.com>

	* remote.c (set_thread, remote_thread_alive): Replace sprintf
	call with xsnprintf.
	(remote_threads_extra_info, extended_remote_restart)
	(remote_check_symbols, store_register_using_P)
	(compare_sections_command): Ditto.

2005-06-16  David Ung  <davidu@mips.com>

	* MAINTAINERS (Write After Approval): Add self.

2005-06-15  Mark Kettenis  <kettenis@gnu.org>

	* hppa-hpux-nat.c (hppa_hpux_fetch_register)
	(hppa_hpux_store_register): Add casts in extract_unsigned_integer
	and store_usigned_integer calls.

2005-06-14  Nick Roberts  <nickrob@snap.net.nz>

	* mi/mi-main.c (mi_cmd_data_list_register_values): Remove test for
	registers now that mi_execute_command rewinds after an error.

2005-06-13  Mark Kettenis  <kettenis@gnu.org>

	* configure.ac: Use AC_CHECK_TYPES to check for uintptr_t.
	* configure, config.in: Regenerate.

	* ser-tcp.c: Tweak comment.
	[!HAVE_SOCKLEN_T]: Typedef socklen_t.
	* configure.ac: Add check for socklen_t.
	* configure, config.in: Regenerate.

2005-06-13  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/linux64.mt (TDEPFILES): Add symfile-mem.o.

2005-06-13  Richard Sandiford  <richard@codesourcery.com>

	* MAINTAINERS: Update my email address.

2005-06-13  Mark Mitchell  <mark@codesourcery.com>

	* corelow.c (core_open): Use bfd_fopen, not bfd_fdopenr.
	* exec.c (exec_file_attach): Likewise.
	* solib-frv.c (enable_break2): Likewise.
	* solib-svr4.c (enable_break): Likewise.
	* solib.c (solib_map_sections): Likewise.
	* symfile.c (symfile_bfd_open): Likewise.

2005-06-13  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (symfile.o): Add $(exec_h).
	* exec.h (exec_set_section_address): Add prototype.
	* exec.c (exec_set_section_address): New function.
	* symfile.c: Include "exec.h".
	(struct place_section_arg, place_section): New.
	(default_symfile_offsets): Call place_section for each
	section of a relocatable file.

2005-06-13  Joel Brobecker  <brobecker@adacore.com>

	* hppa-tdep.c (hppa_pc_requires_run_before_use): Really test all
	bits of top byte in address.

2005-06-13  Wu Zhou  <woodzltc@cn.ibm.com>

	* eval.c (evaluate_subexp_standard): Add code to check the target
	type of a TYPE_CODE_PTR value when we encounter a f77 undetermined
	arglist.  If it is array, string or function, work on the target
	value instead.

2005-06-12  Daniel Jacobowitz  <dan@codesourcery.com>
	    Nick Roberts  <nickrob@snap.net.nz>

	* mi/mi-main.c (register_changed_p, get_register): Use
	get_selected_frame.
	(mi_execute_command): Call mi_out_rewind after an error.

2005-06-12  Mark Kettenis  <kettenis@gnu.org>

	* hppa-tdep.c (hppa_frame_prev_register)
	(hppa_fallback_frame_prev_register)
	(hppa_stub_frame_prev_register): Change type of last argument to
	`gdb_byte *'.
	(hppa_fetch_pointer_argument): Tweak comment.  Use
	get_frame_register_unsigned instead of get_frame_register.
	(hppa32_return_value, hppa64_return_value): Change type of readbuf
	and writebuf arguments to `gdb_byte *'.  Remove unecessary casts
	and local variables.
	(hppa_pseudo_register_read): Change type of last argument to
	`gdb_byte *'.

	* m68k-tdep.c (m68k_frame_prev_register): Change type of last
	argument to `gdb_byte *'.

	* arm-tdep.c (set_disassembly_style, _initialize_arm_tdep):
	Consitify regnames.

	* alpha-tdep.c (alpha_sigtramp_frame_prev_register)
	(alpha_heuristic_frame_prev_register): Change type of last
	argument to `gdb_byte *'.
	(alpha_register_to_value, alpha_value_to_register)
	(alpha_extract_return_value, alpha_store_return_value): Likewise.
	* alpha-mdebug-tdep.c (alpha_mdebug_frame_prev_register): Likewise.

	* arm-tdep.c (arm_prologue_prev_register)
	(arm_sigtramp_prev_register): Change type of last argument to
	`gdb_byte *'.

	* m88k-tdep.c (m88k_frame_prev_register): Change type of last
	argument to `gdb_byte *'.

	* vax-tdep.c (vax_frame_prev_register): Change type of last
	argument to `gdb_byte *'.

	* sparc-tdep.c (sparc32_frame_prev_register): Change type of last
	argument to `gdb_byte *'.
	* sparcnbsd-tdep.c (sparc32nbsd_sigcontext_frame_prev_register):
	Likewise.
	* sparcobsd-tdep.c (sparc32obsd_frame_prev_register): Likewise.
	* sparc-sol2-tdep.c (sparc32_sol2_sigtramp_frame_prev_register):
	Likewise.
	* sparc64-tdep.c (sparc64_frame_prev_register): Likewise.
	* sparc64fbsd-tdep.c (sparc64fbsd_sigtramp_frame_prev_register):
	Likewise.
	* sparc64nbsd-tdep.c (sparc64nbsd_sigcontext_frame_prev_register):
	Likewise.
	* sparc64obsd-tdep.c (sparc64obsd_frame_prev_register): Likewise.
	* sparc64-sol2-tdep.c (sparc64_sol2_sigtramp_frame_unwind):
	Likewise.

	* amd64-tdep.c (amd64_frame_prev_register)
	(amd64_sigtramp_frame_prev_register): Change type of last argument
	to `gdb_byte *'.

2005-06-11  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.c (i386_register_type): Return
	builtin_type_void_func_ptr for %eip and builtin_type_void_data_ptr
	for %ebp and %esp.

2005-06-10  Ben Elliston  <bje@au.ibm.com>

	* valprint.c (print_floating): Fix comment typo.

2005-06-09  Jeff Johnston  <jjohnstn@redhat.com>

	* ia64-tdep.c (ia64_pseudo_register_read): Use gdb_byte and
	protect libunwind references with HAVE_LIBUNWIND_IA64_H flag.
	(ia64_pseudo_register_write): Use gdb_byte to remove warning.
	(ia64_register_to_value, ia64_value_to_register): Ditto.
	(ia64_frame_prev_register): Ditto.
	(ia64_libunwind_frame_prev_register): Ditto.
	(ia64_sigtramp_frame_prev_register): Ditto.
	(ia64_libunwind_sigtramp_frame_prev_register): Ditto.
	(ia64_store_return_value): Ditto.

2005-06-08  Jeff Johnston  <jjohnstn@redhat.com>
	    David Mosberger <davidm@hpl.hp.com>

	* ia64-tdep.c (KERNEL_START): New macro.
	(ia64_pseudo_register_read): Fix code to use libunwind to properly
	get the rse registers.
	(ia64_frame_this_id): Mark outermost frame with null frame id.
	(ia64_sigtramp_frame_prev_register): Fix up debug output.
	(ia64_access_rse_reg): New accessor function.
	(ia64_access_mem): Add special logic for accessing the
	kernel's unwind table.
	(getunwind_table): Fix for corefiles.
	(get_kernel_table): Fix to handle vDSO.
	(ia64_libunwind_frame_this_id): Check for null frame id and
	don't unwind past pc value of 0.  Fix debugging output.
	(ia64_libunwind_sigtramp_frame_this_id): New function.
	(ia64_libunwind_sigtramp_frame_prev_register): Ditto.
	(ia64_libunwind_sigtramp_frame_sniffer): Ditto.
	(ia64_libunwind_sigtramp_frame_unwind): New unwinder.
	(ia64_unw_rse_accessors): New libunwind accessors.
	(ia64_libunwind_descr): Add ia64_unw_rse_accessors.
	(ia64_gdbarch_init)[HAVE_LIBUNWIND_IA64_H]: Use
	ia64_libunwind_sigtramp_frame_sniffer instead of
	ia64_sigtramp_frame_sniffer.
	* libunwind-frame.c (libunwind_frame_set_descr): Add
	special register accessors.
	(libunwind_frame_cache): Add special logic to check for
	0 pc value.  Check for a signal trampoline frame.
	(libunwind_frame_this_id): Check if libunwind_frame_cache
	returns NULL.
	(libunwind_frame_prev_register): Check for NULL cache.
	(libunwind_frame_base_address): Ditto.
	(libunwind_sigtramp_frame_sniffer): New function.
	(libunwind_get_reg_special): Ditto.
	(libunwind_load): Add unw_is_signal_frame support.
	* libunwind-frame.h (struct libunwind_descr): Add special_accessors
	field.
	(libunwind_sigtramp_frame_sniffer): New prototype.
	(libunwind_get_reg_special): Ditto.

2005-06-08  Wu Zhou  <woodzltc@cn.ibm.com>

	* expression.h (enum exp_opcode): Fix a comment typo.

2005-06-06  Manoj Iyer  <manjo@austin.ibm.com>

	* solib-svr4.c (struct lm_info): Change type of 'lm' to gdb_byte.
	(elf_locate_base): Converted types of buf, bufend, pbuf, to gdb_byte.
	(first_link_map_member): Converted type of r_map_buf to gdb_byte.
	(open_symbol_file_object): Converted type of l_name_buf to gdb_byte.
	(svr4_fetch_objfile_link_map): Converted type of l_name_buf to
	gdb_byte.

2005-06-04  Richard Sandiford  <rsandifo@nildram.co.uk>

	* MAINTAINERS: Update my email address.

2005-06-03  Joel Brobecker  <brobecker@adacore.com>

	* symmisc.c (dump_symtab_1): Renamed from dump_symtab.
	(dump_symtab): New function.

2005-04-02  Joel Brobecker  <brobecker@adacore.com>

	* exceptions.h: Include ui-out.h.
	(ui_out): Remove declaration.
	* Makefile.in (exceptions_h): Add dependency on ui-out.h.

2005-05-30  Andrew Cagney  <cagney@gnu.org>

	* MAINTAINERS (Can Commit Without Approval): New section,
	previously burried under "Target Instruction Set Architectures".
	Note that cagney "can commit" changes to powerpc-linux.

	* MAINTAINERS: Drop architecture and target vectors.

2005-05-29  Eli Zaretskii  <eliz@gnu.org>

	* config/djgpp/fnchange.lst: Add mappings for linux-ppc-low.c and
	linux-ppc64-low.c.

2005-05-28  Bob Rossi  <bob@brasko.net>
	* Makefile.in (SUBDIR_MI_OBS, SUBDIR_MI_SRCS): Add mi-common.
	(gdb/mi/ headers): Add mi_common_h.
	(breakpoint.o, infrun.o): Add dependencies mi_common_h.
	* breakpoint.c (include): Add include 'mi/mi-common.h'.
	(print_it_typical): Use async_reason_lookup.
	(watchpoint_check): Ditto.
	* infrun.c (include): Add include 'mi/mi-common.h'.
	(print_stop_reason): Use async_reason_lookup.
	* mi/mi-common.h: New file.
	* mi/mi-common.c: Ditto.

2005-05-29  Joel Brobecker  <brobecker@adacore.com>

	* alpha-tdep.c (alpha_next_pc): Use correct register number
	for floating-point branch instructions.

2005-05-28  Daniel Jacobowitz  <dan@codesourcery.com>
	    Jonathan Larmour  <jifl@eCosCentric.com>

	PR backtrace/1760
	* frame.c (backtrace_limit): Change type to int.
	(get_prev_frame): Update backtrace limit support.
	(_initialize_frame): Use add_setshow_integer_cmd for backtrace_limit.

2005-05-28  Daniel Jacobowitz  <dan@codesourcery.com>

	* configure.tgt (powerpc64-*-linux*): Enable gdbserver.
	* regformats/reg-ppc64.dat: New file.

2005-05-28  Daniel Jacobowitz  <dan@codesourcery.com>

	From Wu Zhou <woodzltc@cn.ibm.com>:
	* remote.c (struct gdb_ext_thread_info): Fix a comment typo.
	(remote_unpack_thread_info_response): Likewise.

2005-05-28  Daniel Jacobowitz  <dan@codesourcery.com>

	* cli/cli-setshow.c (do_setshow_command): Partially revert previous
	change.  Cast to "char **" for var_string.

2005-05-28  Daniel Jacobowitz  <dan@codesourcery.com>

	* cp-name-parser.y (parse_escape): Revert previous change.  Return
	the input character by default.

2005-05-28  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2-frame.c (dwarf2_frame_prev_register): Use gdb_byte.
	* i386-linux-nat.c (fetch_register, store_register, supply_gregset)
	(fill_gregset): Likewise.
	* i386-tdep.c (i386_frame_prev_register)
	(i386_sigtramp_frame_prev_register): Likewise.
	* linux-nat.c (linux_nat_xfer_memory, linux_nat_make_corefile_notes):
	Likewise.
	* linux-thread-db.c (thread_db_xfer_memory): Likewise.
	* remote.c (remote_insert_hw_breakpoint, remote_remove_hw_breakpoint):
	Likewise.
	* target.c (debug_to_insert_hw_breakpoint)
	(debug_to_remove_hw_breakpoint, update_current_target): Likewise.

2005-05-28  Hans-Peter Nilsson  <hp@axis.com>

	* MAINTAINERS: Change cris-elf state to non-broken.
	* cp-name-parser.y (parse_escape): Initialize target_char to zero.

2005-05-27  Orjan Friberg  <orjanf@axis.com>

	* cris-tdep.c (crisv32_scan_prologue): Add.
	(cris_frame_unwind_cache, cris_skip_prologue): Call
	crisv32_scan_prologue when debugging CRISv32.

2005-05-27  Orjan Friberg  <orjanf@axis.com>

	* cris-tdep.c (cris_sigtramp_start, cris_rt_sigtramp_start)
	(cris_frame_prev_register, cris_sigtramp_frame_prev_register)
	(cris_return_value): Use gdb_byte for byte buffers.
	(struct cris_frame_unwind, struct cris_frame_base): Fix formatting.

2005-05-26  Chris Demetriou  <cgd@netbsd.org>

	* MAINTAINERS (Write After Approval): Remove myself.

2005-05-27  Andrew Cagney  <cagney@gnu.org>

	* jv-lang.c (get_java_utf8_name): Add cast.
	(evaluate_subexp_java): Use gdb_byte for buffers.
	* jv-valprint.c (java_value_print, java_value_print): Use gdb_byte
	for buffers.
	* scm-lang.c (scm_get_field, scm_unpack)
	(scm_evaluate_string): Use gdb_byte for buffers.
	(scm_lookup_name): Add cast.
	* scm-valprint.c (scm_scmval_print, scm_scmval_print): Use
	gdb_byte for buffers.
	* tui/tui.h (tui_get_command_dimension): Make parameters unsigned.
	* tui/tui.c (tui_get_command_dimension): Make parameters unsigned.
	* value.h (check_field): Change "name" to a string.
	* valops.c (check_field): Change "name" to a string.
	* scm-lang.h (scm_parse): Use gdb_byte for buffers.
	* source.c (get_current_source_symtab_and_line)
	(set_current_source_symtab_and_line): Initialize all fields of sal
	structures.
	* cli/cli-cmds.c (list_command): Use gdb_byte for buffers.

2005-05-26  Andrew Cagney  <cagney@gnu.org>

	* command.h (add_setshow_integer_cmd): Make VAR an integer.
	* cli/cli-decode.c (add_setshow_integer_cmd): Update to match.
	* valops.c (value_string): Add a cast.
	* eval.c (evaluate_subexp_standard): Use gdb_byte for byte buffers.
	* breakpoint.c (re_enable_breakpoints_in_shlibs): Use gdb_byte for
	byte buffers.
	* target.h (struct target_ops): For to_insert_hw_breakpoint and
	to_remove_hw_breakpoint use gdb_byte for byte buffer parameters.
	* breakpoint.h (struct bp_location): Make shadow_contents a
	gdb_byte buffer.
	* cli/cli-setshow.c (do_setshow_command): Fix cast.
	* cli/cli-dump.c (restore_section_callback)
	(restore_binary_file): Use gdb_byte for byte buffers.
	* proc-service.c (ps_ptwrite, ps_ptread, ps_pdwrite): Fix casts.
	(ps_xfer_memory): Use gdb_byte for byte buffers.
	* tracepoint.c (mem2hex): Use gdb_byte for byte buffers, and char
	for string buffers.
	* ser-tcp.c (net_open): Make len a socklen_t.

2005-05-24  Andrew Cagney  <cagney@gnu.org>

	* rs6000-tdep.c (ppc_supply_reg, ppc_collect_reg): Use gdb_byte
	for byte buffers.
	(rs6000_fetch_pointer_argument): Use get_frame_register_unsigned.
	(rs6000_software_single_step, sstep_breaks, skip_prologue)
	(rs6000_push_dummy_call, rs6000_push_dummy_call)
	(rs6000_push_dummy_call, rs6000_push_dummy_call)
	(rs6000_register_to_value, e500_pseudo_register_read)
	(rs6000_store_return_value, e500_pseudo_register_write)
	(rs6000_frame_prev_register, rs6000_extract_return_value): Ditto.
	* ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call)
	(ppc_sysv_abi_push_dummy_call, do_ppc_sysv_return_value)
	(do_ppc_sysv_return_value, ppc_sysv_abi_return_value)
	(ppc_sysv_abi_broken_return_value)
	(ppc64_sysv_abi_push_dummy_call, ppc64_sysv_abi_push_dummy_call)
	(ppc64_sysv_abi_push_dummy_call, ppc64_sysv_abi_return_value)
	(ppc64_sysv_abi_return_value, ppc64_sysv_abi_return_value): Ditto.
	* ppc-linux-tdep.c (ppc_linux_in_sigtramp)
	(ppc_linux_at_sigtramp_return_path)
	(ppc_linux_skip_trampoline_code)
	(ppc_linux_memory_remove_breakpoint, ppc_linux_return_value):
	* rs6000-tdep.c (rs6000_value_to_register)
	(rs6000_register_to_value): Ditto.
	* ppc-tdep.h (ppc_sysv_abi_return_value)
	(ppc64_sysv_abi_return_value, ppc_sysv_abi_broken_return_value)
	(ppc_linux_memory_remove_breakpoint): Ditto.

2005-05-24  Ulrich Weigand  <uweigand@de.ibm.com>

	* s390-tdep.c (s390_frame_prev_register): Change type of last
	argument to 'gdb_byte *'.
	(s390_stub_frame_prev_register): Likewise.
	(s390_sigtramp_frame_prev_register): Likewise.

2005-05-24  Kris Warkentin  <kewarken@qnx.com>

	* config/i386/nto.mt: Remove remote-nto.o.

2005-05-24  Orjan Friberg  <orjanf@axis.com>

	* config/djgpp/fnchange.lst: Add mappings for
	gdbserver/linux-cris-low.c and gdbserver/linux-crisv32-low.c.

2005-05-23  Michael Snyder  <msnyder@redhat.com>
	From Nora Pan <qpan@mvista.com>
	* linux-nat.c (read_mapping): Don't stumble over entries in
	mapping that have name but zero inode.

2005-05-23  Andrew Cagney  <cagney@gnu.org>

	* target.h (child_xfer_memory): Use gdb_byte for byte buffer
	parameters.
	* inftarg.c (child_xfer_partial): Update.
	* wince.c (child_xfer_memory): Update.
	* win32-nat.c (child_xfer_memory): Update.
	* rs6000-nat.c (child_xfer_memory): Update.
	* infptrace.c (child_xfer_memory): Update.
	* dcache.c (struct dcache_block): Use gdb_byte for the byte
	buffers.
	(dcache_read_line, dcache_xfer_memory, dcache_poke_byte)
	(dcache_peek_byte, dcache_write_line): Ditto.

	* auxv.h (target_auxv_read, procfs_xfer_auxv)
	(target_auxv_parse): Use gdb_byte for byte buffer parameters.
	* auxv.c (target_auxv_read, procfs_xfer_auxv, target_auxv_parse)
	(target_auxv_search, fprint_target_auxv): Update.

2005-05-23  Orjan Friberg  <orjanf@axis.com>

	* cris-tdep.c: Tweak values for cris-mode.

2004-05-23  Joel Brobecker  <brobecker@adacore.com>

	* mdebugread.c (record_minimal_symbol): New procedure.
	(parse_partial_symbols): Use record_minimal_symbol to record
	the new minimal symbols instead of prim_record_minimal_symbol
	and prim_record_minimal_symbol_and_info.

2005-05-22  Mark Kettenis  <kettenis@gnu.org>

	* NEWS: Mention OpenBSD/arm as a new native configuration.

	* armnbsd-nat.c: Include "gdb_string.h" and "inf_ptrace.h".
	Reorder includes.  Don't require FETCH_INFERIOR_REGISTERS to be
	defined.
	(armnbsd_fetch_registers): Rename from armnbsd_fetch_registers.
	Make static.
	(armnbsd_store_registers): Rename from armnbsd_store_registers.
	Make static.
	(_initialize_arm_netbsd_nat): Construct and add target vector.
	* Makefile.in (armnbsd-nat.o): Update dependencies.
	* config/arm/nbsdaout.mh (NATDEPFILES): Remove infptrace.o and
	intarg.o, add inf-ptrace.o.
	(NAT_FILE): Set to solib.h.
	* config/arm/nbsdelf.mh (NATDEPFILES): Remove infptrace.o and
	inftarg.o, add inf-ptrace.o.
	(NAT_FILE): Remove.

	* arm-tdep.c (arm_extract_return_value, arm_store_return_value):
	Change type of last argument to `gdb_byte *'.

	* configure.host: Add arm*-*-openbsd*.
	* configure.tgt: Add arm*-*-openbsd*.

2005-05-22  Andrew Cagney  <cagney@gnu.org>

	* frame.h (frame_register_unwind, frame_unwind_register)
	(get_frame_register, frame_register, put_frame_register)
	(get_frame_memory, safe_frame_unwind_memory)
	(frame_register_read): Use gdb_byte for byte buffer parameters.
	* trad-frame.h (trad_frame_get_register)
	(frame_get_prev_register): Ditto.
	* frame-unwind.h (frame_prev_register_ftype): Ditto.
	* frame.c (frame_pop, frame_register, frame_unwind_register)
	(get_frame_register, frame_unwind_register_signed)
	(frame_unwind_register_unsigned, frame_unwind_unsigned_register)
	(frame_register_read, get_frame_memory): Update.
	* trad-frame.c (trad_frame_get_prev_register): Update.
	(trad_frame_get_register): Update.
	* gdbcore.h (deprecated_read_memory_nobpt, read_memory): Ditto.
	* breakpoint.c (deprecated_read_memory_nobpt): Update.
	* corefile.c (read_memory): Update.
	* tramp-frame.c (tramp_frame_prev_register): Update.
	* valops.c (value_assign): Update.
	* sentinel-frame.c (sentinel_frame_prev_register): Update.
	* std-regs.c (value_of_builtin_frame_fp_reg)
	(value_of_builtin_frame_pc_reg): Update.
	* infcmd.c (default_print_registers_info): Update
	* dummy-frame.c (dummy_frame_prev_register): Update.
	* findvar.c (value_of_register, value_from_register): Update.
	* tui/tui-regs.c (tui_register_format, tui_get_register): Update.
	* mi/mi-main.c (register_changed_p, get_register): Update.

2005-05-20  Eli Zaretskii  <eliz@gnu.org>

	* configure.ac: Add snprintf and vsnprintf to AC_CHECK_DECLS.  Fix
	bad description of _MSE_INT_H that caused each word in config.in
	to be enclosed in [].
	* configure, config.in: Regenerate.

2005-05-20  Joel Brobecker  <brobecker@adacore.com>

	* alpha-tdep.c (fp_register_zero_p): New function.
	(fp_register_sign_bit): New function.
	(alpha_next_pc): Add support for floating-point control instructions.

2005-05-19  Andrew Cagney  <cagney@gnu.org>

	* defs.h (extract_signed_integer, extract_unsigned_integer)
	(extract_long_unsigned_integer, extract_typed_address)
	(store_signed_integer, store_unsigned_integer)
	(store_typed_address): Use gdb_byte for byte buffer parameters.
	(push_bytes, push_word): Delete declaration.
	* valops.c (push_bytes, push_word): Delete function.
	* findvar.c (extract_signed_integer, extract_unsigned_integer)
	(extract_typed_address, store_signed_integer)
	(store_unsigned_integer): Update.

	* regcache.h (regcache_raw_read, regcache_raw_write)
	(regcache_raw_read_part, regcache_raw_write_part)
	(regcache_cooked_read_part, regcache_cooked_write_part)
	(regcache_cooked_read, regcache_cooked_write)
	(regcache_raw_supply, regcache_raw_collect)
	(regcache_cooked_read_ftype, regcache_save, regcache_restore)
	(deprecated_read_register_gen, deprecated_write_register_gen)
	(deprecated_read_register_bytes, deprecated_write_register_bytes)
	(deprecated_grub_regcache_for_registers): Use gdb_byte for byte
	buffer parameters.
	* ia64-tdep.c (ia64_extract_return_value): Update.
	* frame.c (do_frame_register_read): Update.
	* regcache.c (deprecated_grub_regcache_for_registers)
	(struct regcache, regcache_save, regcache_restore, regcache_cpy)
	(do_cooked_read, regcache_xmalloc, register_buffer)
	(deprecated_read_register_bytes, regcache_raw_read)
	(regcache_raw_read_signed, regcache_raw_read_unsigned)
	(deprecated_read_register_gen, regcache_cooked_read)
	(regcache_cooked_read_signed, regcache_cooked_read_unsigned)
	(deprecated_write_register_gen, regcache_cooked_write)
	(deprecated_write_register_bytes, regcache_raw_read_part)
	(regcache_raw_write_part, regcache_cooked_read_part)
	(regcache_cooked_write_part, read_register, regcache_raw_supply):

2005-05-17  Corinna Vinschen  <vinschen@redhat.com>

	* MAINTAINERS: Undelete v850.
	* Makefile.in: Re-add v850-tdep.o dependencies.
	* configure.tgt: Re-add v850.
	* v850-tdep.c: Reorder code slightly.  Add register number enumerator.
	(struct v850_frame_cache): New structure.
	(v850_processor_type_table): Remove. Move functionality into
	v850_register_name, v850e_register_name and v850_gdbarch_init.
	(v850_register_name): New function.
	(v850e_register_name): New function.
	(struct prologue_info): Remove definition.
	(v850_register_type): New function.
	(v850_type_is_scalar): New function.
	(v850_use_struct_convention): Align to gcc behaviour.
	(v850_handle_prepare): Renamed from handle_prepare. Change third
	parameter to struct v850_frame_cache *.
	(v850_handle_pushm): Renamed from handle_pushm. Change third parameter
	to struct v850_frame_cache *.
	(v850_is_save_register): New function to evaluate if a register is
	caller-save.
	(v850_analyze_prologue): Replace v850_scan_prologue.  Change to support
	new frame code.
	(v850_init_extra_frame_info): Remove.
	(v850_frame_chain): Remove.
	(v850_find_callers_reg): Remove.
	(v850_skip_prologue): Make static.
	(v850_pop_frame): Remove.
	(v850_frame_align): New function.
	(v850_push_dummy_call): Replace v850_push_arguments.
	(v850_push_return_address): Remove.
	(v850_extract_return_value): New function.
	(v850_store_return_value): New function.
	(v850_return_value): New function.
	(v850_frame_saved_pc): Remove.
	(v850_breakpoint_from_pc): New function.
	(v850_alloc_frame_cache): New function.
	(v850_fix_call_dummy): Remove.
	(v850_frame_cache): New function.
	(v850_target_architecture_hook): Remove.
	(v850_frame_prev_register): New function.
	(v850_frame_this_id): New function.
	(v850_frame_unwind): New structure.
	(v850_frame_sniffer): New function.
	(v850_unwind_sp): New function.
	(v850_unwind_pc): New function.
	(v850_unwind_dummy_id): New function.
	(v850_frame_base_address): New function.
	(v850_frame_base): New structure.
	(v850_gdbarch_init): New function.
	* config/v850/v850.mt: Undelete.  Drop TM_FILE.

2005-05-17  Daniel Jacobowitz  <dan@codesourcery.com>
	    Dennis Brueni  <dennis@slickedit.com>

	* stack.c (print_frame): In MI mode, output a fullname attribute
	with the stack frame.

2005-05-16  Mark Kettenis  <kettenis@gnu.org>

	* corelow.c (core_xfer_partial): Change type of readbuf and
	writebuf to `gdb_byte *'.
	* sparc-nat.c (sparc_xfer_wcookie, sparc_xfer_partial): Change
	type of readbuf and writebuf to `gdb_byte *'.
	* bsd-uthread.c (bsd_uthread_xfer_partial): Change type of readbuf
	and writebuf to `gdb_byte *'.
	* inf-ptrace.c (inf_ptrace_xfer_partial): Change type of readbuf
	and writebuf to `gdb_byte *'.
	* bsd-kvm.c (bsd_kvm_xfer_memory): Replace.
	(bsd_kvm_xfer_partial): New function.
	(bsd_kvm_add_target): Set to_xfer_partial instead of
	to_xfer_memory.
	* bfd-target.c (target_bfd_xfer_partial): Change type of readbuf
	and writebuf to `gdb_byte *'.
	* target.c (deprecated_debug_xfer_memory): Remove prototype.
	(deprecated_debug_xfer_memory): Change type of second argument to
	`gdb_byte *'.
	* remote.c (remote_xfer_memory): Remove prototype.
	(remote_xfer_memory): Change type of second argument to `gdb_byte
	*'.
	(remote_xfer_partial): Change type of readbuf and writebuf to
	`gdb_byte *'.

	* config/sparc/fbsd.mt (TDEPFILES): Add solib.o and solib-svr4.o.
	* config/sparc/fbsd.mh (NATDEPFILES): Remove solib.o, solib-svr4.o
	and solib-legacy.o.
	(NAT_FILE): Remove.

2005-05-16  Ulrich Weigand  <uweigand@de.ibm.com>

	* s390-tdep.c (s390_return_value): Remove unnecessary casts.
	(s390_breakpoint_from_pc): Change type of return value and
	'breakpoint' to const gdb_byte *.

2005-05-16  Ulrich Weigand  <uweigand@de.ibm.com>

	* s390-tdep.c (s390_pseudo_register_read, s390_pseudo_register_write):
	Change type of 'buf' argument to gdb_byte *.
	(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
	(s390_register_to_value): Change type of 'out' to gdb_byte *, change
	type of 'in' to gdb_byte [].
	(s390_value_to_register): Change type of 'in' to gdb_byte *, change
	type of 'out' to gdb_byte [].
	(s390_return_value): Change type of 'out' and 'in' to gdb_byte *.

2005-05-16  Andrew Cagney  <cagney@gnu.org>

	* target.h (target_read_partial, target_write_partial)
	(do_xfer_memory, xfer_memory, target_read, target_write)
	(get_target_memory): For buffers, change "void*" to gdb_byte.
	(struct target_ops): Ditto for to_xfer_partial and
	deprecated_xfer_memory.
	* dcache.h (dcache_xfer_memory): Ditto.
	* target.c (default_xfer_partial, target_read_partial)
	(target_write_partial, target_read, target_write)
	(do_xfer_memory, update_current_target, get_target_memory): Update.
	(target_read_string): Change buf to a gdb_byte.
	* dcache.c (dcache_xfer_memory): Update.
	* exec.c (xfer_memory): Make buffer type to gdb_byte.
	* mem-break.c (default_memory_insert_breakpoint): Remove cast.
	* disasm.c (dis_asm_read_memory): Remove cast, use gdb_byte.

2005-05-16  Mark Kettenis  <kettenis@gnu.org>

	* sol-thread.c (ignore): Change last argument to `gdb_byte.'

	* config/i386/fbsd.mt (DEPRECATED_TM_FILE): Remove.
	* config/i386/fbsd64.mt (DEPRECATED_TM_FILE): Remove.
	* config/i386/nbsd.mt (DEPRECATED_TM_FILE): Remove.
	* config/i386/nbsd64.mt (DEPRECATED_TM_FILE): Remove.
	* config/sparc/nbsd.mt (DEPRECATED_TM_FILE): Remove.
	* config/sparc/nbsd64.mt (DEPRECATED_TM_FILE): Remove.

	* observer.sh: Quote $DJGPP.

2005-05-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (.y.c): Update ylwrap invocation.

2005-05-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* linux-nat.c (child_follow_fork, linux_handle_extended_wait)
	(lin_lwp_attach_lwp, linux_nat_attach, wait_lwp, child_wait)
	(linux_nat_wait, kill_wait_callback): Use my_waitpid.
	(_initialize_linux_nat, lin_thread_get_thread_signals): Use
	SA_RESTART.

2005-05-14  Mark Kettenis  <kettenis@gnu.org>

	* configure.tgt (vax-*-openbsd*): Set gdb_target to obsd.
	* config/vax/obsd.mt (TDEPFILES): New file.

	* i386-tdep.c (i386_supply_gregset, i386_collect_gregset): Use
	gdb_byte instead of bfd_byte.

	* mips-tdep.c (mips_pseudo_register_read)
	(mips_pseudo_register_write): Change type of last argument to
	`gdb_byte *'.
	(mips_register_to_value, mips_value_to_register): Change type of
	last argument to `gdb_byte *'.  Remove casts that are no longer
	needed.
	(mips_fetch_instruction, fetch_mips_16): Use gdb_byte for buf.
	(mips_eabi_push_dummy_call, mips_n32n64_push_dummy_call)
	(mips_o32_push_dummy_call, mips_o32_return_value): Use `const
	gdb_byte *' for val and gdb_byte for valbuf.  Remove casts that
	are no longer needed.
	(mips_eabi_return_value, mips_n32n64_return_value)
	(mips_o32_return_value, mips_o64_return_value): Change type of
	readbuf and writebuf arguments to `gdb_byte *'.
	(mips_read_fp_register_single): Change type of last argument to
	`gdb_byte *'.  Use `gdb_byte *' for raw_buffer.
	(mips_read_fp_register_double): Change type of last argument to
	`gdb_byte *'.
	(mips_print_fp_register): Use `gdb_byte *' for raw_buffer.  Remove
	casts that are no longer needed.
	(mips_print_register, print_gp_register_row): Use gdb_byte for
	raw_buffer.  Remove casts that are no longer needed.
	(mips_single_step_through_delay): Use gdb_byte for buf.
	(mips_breakpoint_from_pc): Change return type to `const gdb_byte
	*'.  Use gdb_byte for mips16_big_breakpoint, big_breakpoint,
	pmon_big_breakpoint, idt_big_breakpoint, mips16_little_breakpoint,
	little_breakpoint, pmon_little_breakpoint and
	idt_little_breakpoint.
	(mips_integer_to_address): Use `gdb_byte *' for tmp.

	* config/m68k/obsd.mt (DEPRECATED_TM_FILE): Remove.
	* config/i386/obsd.mt (DEPRECATED_TM_FILE): Remove.
	* config/i386/obsd64.mt (DEPRECATED_TM_FILE): Remove.
	* config/pa/obsd.mt (DEPRECATED_TM_FILE): Remove.
	* config/sparc/obsd.mt (DEPRECATED_TM_FILE): Remove.
	* config/sparc/obsd64.mt (DEPRECATED_TM_FILE): Remove.

	* sparc-tdep.c (sparc_fetch_instruction, sparc_fetch_wcookie): Use
	gdb_byte for buf.
	(sparc32_pseudo_register_read, sparc32_pseudo_register_write):
	Change type of last argument to `gdb_byte *'.  Remove casts that
	are no longer needed.
	(sparc32_push_dummy_code, sparc32_store_arguments): Use gdb_byte
	for buf.
	(sparc_breakpoint_from_pc): Change return type to `const gdb_byte
	*'.  Use gdb_byte for break_insn.
	(sparc32_extract_return_value, sparc32_store_return_value): Change
	type of last argument to `gdb_byte *'.  Use gdb_byte for buf.
	(sparc32_return_value): Change type of readbuf and writebuf
	arguments to `gdb_byte *'.
	(sparc_software_single_step): Use gdb_byte for npc_save and
	nnpc_save.
	(sparc_supply_rwindow, sparc_collect_rwindow): Use gdb_byte for
	buf.
	(sparc32_supply_gregset, sparc32_collect_gregset)
	(sparc32_supply_fpregset, sparc32_collect_fpregset): Use `gdb_byte
	*' for regs.
	* sparc64-tdep.c (sparc64_pseudo_register_read)
	(sparc64_pseudo_register_write): Change type of last argument to
	`gdb_byte *'.  Remove casts that are no longer needed.
	(sparc64_store_floating_fields, sparc64_extract_floating_fields):
	Change type of valbuf argument to `gfd_byte *'.
	(sparc64_store_arguments): Use `gdb_byte *' for valbuf.  use
	gdb_byte for buf.
	(sparc64_extract_return_value, sparc64_store_return_value): Change
	type of last argument to `gdb_byte *'.  Use gdb_byte for buf.
	(sparc64_return_value): Change type of readbuf and writebuf
	arguments to `gdb_byte *'.
	(sparc64_supply_gregset, sparc64_collect_gregset)
	(sparc64_supply_fpregset, sparc64_collect_fpregset): Use `gdb_byte
	*' for regs.

	* m68k-tdep.c (m68k_local_breakpoint_from_pc): Change return type
	to `const gdb_byte *'.  Use gdb_byte for break_insn.
	(m68k_register_to_value): Change type of last argument to
	`gdb_byte *'.  Use gdb_byte for from.
	(m68k_value_to_register): Change type of last argument to
	`gdb_byte *'.  Use gdb_byte for to.
	(m68k_extract_return_value): Change type of last argument to
	`gdb_byte *'.  Use gdb_byte for buf.  Remove unnecessary cast.
	(m68k_svr4_extract_return_value): Change type of last argument to
	`gdb_byte *'.  Use gdb_byte for buf.
	(m68k_store_return_value): Change type of last argument to
	`gdb_byte *'.  Remove unnecessary cast.
	(m68k_svr4_store_return_value): Change type of last argument to
	`gdb_byte *'.  Use gdb_byte for buf.
	(m68k_return_value, m68k_svr4_return_value): Change type of
	readbuf and writebuf arguments to `gdb_byte *'.
	(m68k_push_dummy_call, m68k_unwind_pc, m68k_frame_cache)
	(m68k_unwind_dummy_id): Use gdb_byte for buf.
	(m68k_get_longjmp_target): Use `gdb_byte *' for buf.
	* m68kbsd-tdep.c (m68kbsd_supply_fpregset)
	(m68kbsd_supply_gregset): Use `gdb_byte *' for regs.

	* m88k-tdep.c (m88k_breakpoint_from_pc): Change return type to
	`const gdb_byte *'.  Use gdb_byte for break_insn.
	(m88k_return_value): Change type of readbuf and
	writebuf arguments to `gdb_byte *'.  Use gdb_byte for buf.
	(m88k_supply_gregset): Use `gdb_byte *' for regs.

	* vax-tdep.c (vax_return_value): Change type of readbuf and
	writebuf arguments to `gdb_byte *'.

	* amd64-tdep.c (amd64_return_value): Change type of readbuf and
	writebuf arguments to `gdb_byte *'.  Remove now redundant casts.
	* i386-tdep.c (i386_return_value): Change type of readbuf and
	writebuf arguments to `gdb_byte *'.
	(i386_pseudo_register_read, i386_pseudo_register_write): Change
	type of last argument to `gdb_byte *'.
	(i386_register_to_value, i386_value_to_register): Change type of
	last argument to `gdb_byte *'.  Simplify function a bit.
	* i387-tdep.h (i387_value_to_register, i387_register_to_value):
	Change type of last argument to `gdb_byte *'.
	* i387-tdep.c: Likewise.

2005-05-13  Andrew Cagney  <cagney@gnu.org>

	* gdbarch.sh (pseudo_register_read, pseudo_register_write)
	(value_to_register, register_to_value, pointer_to_address)
	(address_to_pointer, return_value, extract_return_value)
	(store_return_value): Instead of a void pointer, use gdb_byte.
	* gdbarch.h, gdbarch.c: Regenerate.
	* inferior.h (unsigned_address_to_pointer)
	(signed_pointer_to_address, address_to_signed_pointer)
	(unsigned_pointer_to_address): Update.
	* arch-utils.h (legacy_return_value):
	* arch-utils.c (legacy_extract_return_value)
	(legacy_return_value): Update.
	* findvar.c (unsigned_pointer_to_address)
	(signed_pointer_to_address, unsigned_address_to_pointer)
	(address_to_signed_pointer): Update.

2005-05-13  Orjan Friberg  <orjanf@axis.com>

	* cris-tdep.c (_initialize_cris_tdep): Improve help strings for
	cris-version, cris-mode, and cris-dwarf2-cfi settings.

2005-05-13  Orjan Friberg  <orjanf@axis.com>

	* cris-tdep.c (usr_cmd_cris_version): Change type to int.
	(cris_mode_normal, cris_mode_guru, cris_modes, usr_cmd_cris_mode): Add.
	(struct gdbarch_tdep): Change type of cris_version to int.  Add
	cris_mode.
	(cris_mode, set_cris_mode): New functions.
	(crisv32_single_step_through_delay): Read from NRP register instead
	of ERP register in guru mode.
	(cris_breakpoint_from_pc): Rename break_insn to break8_insn.
	Add break15_insn, returned in guru mode.
	(_initialize_cris_tdep): Add call to add_setshow_enum_cmd for new
	cris-mode setting.
	(cris_dump_tdep): Add dump of cris_mode.
	(cris_gdbarch_init): Add cris_mode to search criteria for architecture.
	Register the sigtramp frame sniffer only if not in guru mode.

2005-05-13  Eli Zaretskii  <eliz@gnu.org>

	* Makefile.in (go32-nat.o): Add $(top_h) to prerequisites.

	* go32-nat.c: Include top.h.  Update copyright years.
	(init_go32_ops): Override the default value of gdbinit[] with
	"gdb.ini".

	* cli/cli-cmds.c: Don't define GDBINIT_FILENAME.
	(init_cli_cmds): Use gdbinit[] instead of a compile-time literal
	string GDBINIT_FILENAME.

	* top.c (PATH_MAX): Define if not defined.
	(gdbinit): Declare with a constant size PATH_MAX.

	* config/i386/go32.mh (XM_FILE): Remove.

	* config/i386/xm-go32.h: Remove file.

2005-05-12  Mark Kettenis  <kettenis@gnu.org>

	* sol-thread.c: Include "solib.h".
	(sol_thread_attach): Use solib_add instead of SOLIB_ADD.
	* Makefile.in (sol-thread.o): Update dependencies.

	* NEWS: Mention OpenBSD/mips64 as a new native configuration.

2005-05-12  Eli Zaretskii  <eliz@gnu.org>

	* observer.sh (texi) [DJGPP]: If the file name includes a colon,
	convert it to the /dev/x/ form.

2005-05-12  Mark Kettenis  <kettenis@gnu.org>

	* solib.h (CLEAR_SOLIB, SOLIB_ADD)
	(SOLIB_CREATE_INFERIOR_HOOK, SOLIB_REMOVE_INFERIOR_HOOK)
	(SOLIB_IN_DYNAMIC_LINKER, SOLIB_RESTART)
	(DISABLE_UNSETTABLE_BREAK, PC_SOLIB)
	(IN_SOLIB_DYNSYM_RESOLVE_CODE): Remove defines and orphaned
	comments.
	* breakpoint.c: Include "solib.h".
	(insert_bp_location) [!DISABLE_UNSETTABLE_BREAK]: Call
	solib_address.
	(remove_solib_event_breakpoints, create_solib_event_breakpoint)
	(disable_breakpoints_in_shlibs)
	(disable_breakpoints_in_unloaded_shlib)
	(re_enable_breakpoints_in_shlibs): Compile if SOLIB_ADD isn't
	defined. If PC_SOLIB isn't defined, call solib_address.
	(_initialize_breakpoint): Unconditionally install observer.
	* corelow.c: Include "solib.h".
	[SOLIB_ADD] (solib_add_stub): Remove prototype.
	(core_close) [!CLEAR_SOLIB]: Call clear_solib.
	(solib_add_stub) [!SOLIB_ADD] Call solib_add.
	(core_open): Unconditionally call solib_add_stub.
	* fork-child.c: Include "solib.h".
	(fork_inferior) [!SOLIB_CREATE_INFERIOR_HOOK]: Call
	solib_create_inferior_hook.
	* infcmd.c: Include "solib.h".
	(attach_command) [!SOLIB_ADD]: Call shlib_rescan.  Unconditionally
	call re_enable_breakpoints_in_shlibs.
	* infrun.c: Include "solib.h".
	(SOLIB_IN_SYNSYM_RESOLVE_CODE): Don't define if not already
	defined.
	(stop_on_solib_events, show_stop_on_solib_events): Include
	unconditionally.
	(follow_exec) [!SOLIB_CREATE_INFERIOR_HOOK]: Call
	solib_create_inferior_hook.
	(handle_inferior_event) [!SOLIB_ADD]: Call shlib_add.
	[!IN_SOLIB_DYNSYM_RESOLVE_CODE]: Call in_solib_dynsym_resolve_code.
	(_initialize_infrun): Unconditionally add "stop_on_solib-events"
	command.
	* remote.c: Include "solib.h".
	(remote_open_1): Unconditionally call no_shared_libraries.
	[!SOLIB_CREATE_INFERIOR_HOOK] Call solib_create_inferior_hook.
	* stack.c: Include "solib.h".
	(print_frame) [!PC_SOLIB] Call shlib_for_pc.
	* xcoffsolib.c (no_shared_libraries): Remove function.
	* Makefile.in (SFILES): Add solib.c.
	(ALLDEPFILES): Remove solib.c.
	(COMMON_OBS): Add solib.o.
	(breakpoint.o, corelow.o, fork-chiled.o, infcmd.o, infrun.o)
	(remote.o, stack.o): Update dependencies.

2005-05-12  Daniel Jacobowitz  <dan@codesourcery.com>

	* cp-names.y: Renamed to ...
	* cp-name-parser.y: ... this.
	* Makefile.in (SFILES, YYFILES, YYOBJ): Rename cp-names.y to
	cp-name-parser.y.
	(test-cp-names.o): Renamed to test-cp-name-parser.o.
	(test-cp-names): Renamed to test-cp-name-parser.
	(clean, local-maintainer-clean): Update.
	(cp-names.o): Renamed to cp-name-parser.o.

2005-05-12  Eli Zaretskii  <eliz@gnu.org>

	* observer.sh: Use observer.tmp instead of observer.inc-tmp which
	on 8+3 filesystems overwrites observer.inc.  Update copyright year
	of the resultant file.

	* gnu-v3-abi.c (init_gnuv3_ops): Cast is_gnu_v3_mangled_dtor and
	is_gnu_v3_mangled_ctor to avoid compiler warnings.

	* config/djgpp/config.sed: Adapt to latest Autoconf.

	* config/djgpp/djconfig.sh: Add -Wpointer-arith and
	-Wuninitialized to the build warnings.

2005-05-11  Eli Zaretskii  <eliz@gnu.org>

	* config/djgpp/fnchange.lst: Add mappings for inttypes*.m4,
	ChangeLog-2004, reg-cris*.dat, dw2-intermix.*, semcris*-switch.c.
	Fix mappings for hilo-hazard-?.s.

	* config/djgpp/README: Update GDB versions and my email address.

2005-05-09  Andrew Cagney  <cagney@gnu.org>

	Use gdb_byte in preference to bfd_byte.
	* gdbarch.sh: Update.
	* gdbarch.h, gdbarch.c: Re-generate.
	* ada-lang.c, ada-lang.h, ada-valprint.c, arch-utils.c: Update.
	* c-lang.c, c-lang.h, c-valprint.c, cp-valprint.c: Update.
	* f-lang.c, f-lang.h, f-valprint.c, gdbcore.h, jv-lang.h: Update.
	* jv-valprint.c, language.c, language.h, m2-lang.c: Update.
	* m2-lang.h, m2-valprint.c, objc-lang.c, p-lang.c: Update.
	* p-lang.h, p-valprint.c, regcache.c, scm-lang.c: Update.
	* scm-lang.h, scm-valprint.c, target.c, target.h: Update.
	* tramp-frame.c, valarith.c, valops.c, valprint.c: Update.
	* valprint.h, value.c, value.h: Update.

2005-05-09  Mark Kettenis  <kettenis@gnu.org>

	* vaxbsd-nat.c (vaxbsd_supply_gregset, vaxbsd_collect_gregset):
	Use `gdb_byte *' for regs.
	* vax-tdep.c (vax_supply_gregset): Use `gdb_byte *' for regs;
	(vax_store_arguments, vax_push_dummy_call, vax_return_value): Use
	gdb_byte for buf.
	(vax_breakpoint_from_pc): Change return type to `const gdb_byte
	*'.  Use gdb_byte for break_insn.
	(vax_skip_prologue): Use gdb_byte for op.

	* i387-tdep.c: Remove outdated comments.

	* defs.h: Unconditionally include <sys/types.h>.

2005-05-08  Daniel Jacobowitz  <dan@codesourcery.com>

	* mips-tdep.c (mips_stub_frame_sniffer): Handle .MIPS.stubs
	section like .plt.

2005-05-08  Mark Kettenis  <kettenis@gnu.org>

	* i386-linux-tdep.c (linux_sigtramp_code, linux_rt_sigtramp_code):
	Change type to `static const gdb_byte'.
	(i386_linux_sigtramp_start, i386_linux_rt_sigtramp_start)
	(i386_linux_sigcontext_addr): Use gdb_byte for buf.
	* amd64-linux-tdep.c (linux_sigtramp_code): Change type to `static
	const gdb_byte'.
	(amd64_linux_sigtramp_start, amd64_linux_sigcontext_addr): Use
	gdb_byte for buf.
	* amd64fbsd-tdep.c (amd64fbsd_supply_uthread)
	(amd64fbsd_collect_uthread): Use gdb_byte for buf.

	* config/ia64/nm-aix.h: Remove file.

	* amd64-tdep.c (amd64_return_value): Use `gdb_byte *' in casts.
	(amd64_push_arguments): Use gdb_byte instead of bfd_byte.  Use
	gdb_byte for buf.
	(amd64_push_dummy_call): Use gdb_byte for buf.
	(amd64_analyze_prologue): Use gdb_byte for proto, buf and op.
	(amd64_frame_cache, amd64_sigtramp_frame_cache)
	(amd64_unwind_dummy_id): Use gdb_byte for buf.
	(amd64_supply_fxsave, amd64_collect_fxsave): Use `gdb_byte *' for
	regs.
	* amd64obsd-tdep.c (amd64obsd_supply_regset): Use `gdb_byte *' in
	casts.
	(amd64obsd_sigtramp_p): Use gdb_byte for sigreturn and `gdb_byte
	*' for buf,

	* i386-tdep.c (i386_breakpoint_from_pc): Change return type to
	`const gdb_byte *'.  Use gdb_byte for break_insn.
	(i386_follow_jump): Use gdb_byte for op.
	(i386_analyze_struct_return): Use gdb_byte for proto1, proto2, buf
	and op.
	(i386_skip_probe): Use gdb_byte for buf and op.
	(struct i386_insn): Use gdb_byte for insn and mask.
	(i386_match_insn, i386_analyze_frame_setup)
	(i386_analyze_register_saves): Use gdb_byte for op.
	(i386_skip_prologue): Use gdb_byte for pic_pat and op;
	(i386_unwind_pc, i386_frame_cache, i386_sigtramp_frame_cache)
	(i386_unwind_dummy_id, i386_get_longjmp_target): Use gdb_byte for
	buf.
	(i386_extract_return_value, i386_store_return_value): Use
	`gdb_byte *' instead of `void *' for valbuf argument.  Remove now
	redundant cast.
	(i386_pseudo_register_read, i386_pseudo_register_write): Use
	gdb_byte for mmx_buf.
	(i386_register_to_value, i386_value_to_register): Use `gdb_byte *'
	instead of `char *' for buf.
	(i386_supply_gregset, i386_collect_gregset): Use `gdb_byte *'
	instead of `char *' for regs.
	(i386_svr4_sigcontext_addr): Use gdb_byte for buf.
	* i386obsd-tdep.c (i386obsd_sigtramp_p): Use gdb_byte for
	sigreturn and `gdb_byte *' for buf.
	(i386obsd_aout_supply_regset): Use `const gdb_byte *' in cast.
	(i386obsd_supply_uthread, i386obsd_collect_uthread): Use gdb_byte
	for buf.
	* i386bsd-tdep.c (i386bsd_sigcontext_addr): Use gdb_byte for buf.

	* defs.h (gdb_byte): New typedef.  Tweak comments.

	* target.h (target_link): Remove prototype.
	* target.c (target_link): Remove function.
	* symfile.c: Remove comment about rombug.

2005-05-04  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/cygwin.mh (XM_FILE): Remove variable.
	* config/i386/xm-cygwin.h: Remove file.

2005-05-03  Ben Elliston  <bje@au.ibm.com>

	* infrun.c (handle_inferior_event): Update the comment about users
	of stepped_after_stopped_by_watchpoint.

2005-05-02  Corinna Vinschen  <vinschen@redhat.com>

	* MAINTAINERS: Remove hint that sh64 doesn't build.
	* sh64-tdep.c (sh64_push_dummy_call): Cast buf in call to write_memory.
	(sh64_do_fp_register): make raw_buffer unsigned.
	(sh64_do_register): Ditto.

2005-05-02  Mark Kettenis  <kettenis@gnu.org>

	* bsd-uthread.c: Include "solib.h".
	* Makefile.in (bsd-uthread.o): Update dependencies.

2005-05-01  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdbarch.sh (deprecated_current_gdbarch_select_hack): Flush
	cached frames when changing gdbarch.
	* gdbarch.c: Regenerated.

2005-05-01  Andrew Cagney  <cagney@gnu.org>

	* MAINTAINERS: Note that cris, m68k, mn10300, sh64, sparc and vax
	do not build.

	* gdbarch.sh (deprecated_extract_return_value)
	(breakpoint_from_pc, deprecated_store_return_value)
	(memory_insert_breakpoint, memory_remove_breakpoint): Change type
	of buffer to a bfd_byte pointer.
	* gdbarch.h, gdbarch.c: Re-generate.
	* mem-break.c (memory_insert_breakpoint)
	(memory_remove_breakpoint, default_memory_insert_breakpoint)
	(default_memory_remove_breakpoint): Update.
	* target.h (memory_insert_breakpoint)
	(memory_remove_breakpoint, default_memory_insert_breakpoint)
	(default_memory_remove_breakpoint): Update declarations.
	(struct target_ops): Update to_insert_breakpoint and
	to_remove_breakpoint.
	* target.c (debug_to_remove_breakpoint)
	(debug_to_insert_breakpoint): Update.
	* remote-m32r-sdi.c (m32r_remove_breakpoint)
	(m32r_insert_breakpoint): Update.
	* m32r-tdep.c (m32r_memory_insert_breakpoint)
	(m32r_memory_remove_breakpoint): Update.
	* remote-e7000.c (e7000_insert_breakpoint)
	(e7000_remove_breakpoint): Update.
	* remote-rdi.c (arm_rdi_insert_breakpoint)
	(arm_rdi_remove_breakpoint): Update.
	* remote-sim.c (gdbsim_insert_breakpoint)
	(gdbsim_remove_breakpoint): Update.
	* exec.c (ignore): Update.
	* rs6000-tdep.c (rs6000_extract_return_value): Update.
	* ia64-tdep.c (ia64_memory_insert_breakpoint)
	(ia64_memory_remove_breakpoint): Update.
	* remote-rdp.c (remote_rdp_insert_breakpoint)
	(remote_rdp_remove_breakpoint): Update.

2005-05-01  Mark Kettenis  <kettenis@gnu.org>

	* somsolib.c, somsolib.h: Remove files.
	* Makefile.in (somsolib_h): Remove.
	(somsolib.o): Remove dependency.

	* fbsd-nat.c: Include <sys/sysctl.h>.
	(fbsd_pid_to_exec_file): Use KERN_PROC_PATHNAME sysctl if
	available.  Plug memory leak.  Fixes PR gdb/1922.

2005-04-29  Mark Kettenis  <kettenis@gnu.org>

	* solist.h (TARGET_SO_FREE_SO, TARGET_SO_CLEAR_SOLIB)
	(TARGET_SO_SOLIB_CREATE_INFERIOR_HOOK)
	(TARGET_SO_SPECIAL_SYMBOL_HANDLING, TARGET_SO_CURRENT_SOS)
	(TARGET_SO_OPEN_SYMBOL_FILE_OBJECT): Remove defines.
	* solib.c (solib_data): New variable.
	(solib_init, solib_ops): New functions.
	(solib_open, solib_map_sections, free_so, update_solib_list)
	(solib_add, clear_solib, solib_create_inferior_hook)
	(in_solib_dynsym_resolve_code): Call architecture-dependent code
	using solib_ops.
	(_initialize_solib): Register SOLIB_DATA.

2005-04-29  Kevin Buettner  <kevinb@redhat.com>

	* frv-tdep.c (find_func_descr): Verify that entry point can be
	found in symbol table prior to looking up its function descriptor.
	* solib-frv.c (find_canonical_descriptor_in_load_object): Add
	test for non-NULL link map.

2005-04-29  Corinna Vinschen  <vinschen@redhat.com>

	* MAINTAINERS: Revert h8300 state to un-deleted.
	* Makefile.in: Re-add h8300-tdep.o dependencies.
	* h8300-tdep.c: Slightly rearrange type definitions and functions.
	(struct frame_extra_info): Remove.
	(struct h8300_frame_cache): Replace locals with differently defined
	uses_fp member.
	(h8300_unwind_pc): Simplify.
	(h8300_unwind_sp): New function.
	(h8300_unwind_dummy_id): Simplify.
	(h8300_init_frame_cache): New function.
	(h8300_is_argument_spill): Use reworked defines for opcode scanning.
	(h8300_skip_prologue): Rewrite.
	(h8300_alloc_frame_cache): Remove.
	(h8300_analyze_frame_setup): Remove.
	(h8300_analyze_register_saves): Remove.
	(h8300_analyze_prologue): Rewrite.
	(h8300_frame_cache): Use h8300_init_frame_cache instead of
	h8300_alloc_frame_cache.  Use BINWORD instead of constant 4 to
	accomodate 16 bit mode.  Fix saved_sp and register offset evaluation.
	(h8300_frame_this_id): Correctly calculate this_id using saved stack
	pointer instead of base.
	(h8300_frame_prev_register): Drop needless braces.
	(h8300_frame_base_address): New function.
	(h8300_frame_base): New frame_base.
	(h8300_push_dummy_call): Return correct CFA value.
	(h8300h_extract_return_value): Fix 8 byte value handling.
	(h8300_use_struct_convention): New function.
	(h8300h_use_struct_convention): New function.
	(h8300h_store_return_value): Fix 8 byte value handling.
	(h8300_return_value): New function.
	(h8300h_return_value): New function.
	(h8300_extract_struct_value_address): Remove deprecated functionality.
	(h8300_push_dummy_code): Remove.
	(h8300_gdbarch_init): Replace set_gdbarch_extract_return_value and
	set_gdbarch_store_return_value calls by set_gdbarch_return_value.
	Remove calls to set_gdbarch_deprecated_fp_regnum,
	set_gdbarch_deprecated_extract_struct_value_address,
	set_gdbarch_deprecated_use_struct_convention and
	set_gdbarch_push_dummy_code.
	Add calls to set_gdbarch_unwind_sp and frame_base_set_default.
	Slightly rearrange code.

2005-04-28  Jim Blandy  <jimb@redhat.com>

	* parse.c (namecopy): Change allocation conventions.
	(namecopy_size): New variable.
	(copy_name): Allocate namecopy using xrealloc, instead of assuming
	it has adequate space allocated to it.
	(parse_exp_1): Don't try to allocate space for namecopy here.

2005-04-28  Eli Zaretskii  <eliz@gnu.org>

	* cli/cli-cmds.c (edit_command): If symtab->fullname is not yet
	set, use symtab_to_fullname, instead of trying to do its job.  Use
	xstrprintf instead of malloc and sprintf.

2005-04-28  Kevin Buettner  <kevinb@redhat.com>

	* remote.c (init_remote_state): Eliminate use of
	deprecated_register_bytes().

2005-04-28  Andrew Cagney  <cagney@gnu.org>

	* valops.c (check_field): Make buffer a bfd_byte.
	* value.c (unpack_long, unpack_double, unpack_pointer)
	(unpack_field_as_long, modify_field): Ditto.
	* value.h: Update declarations.

2005-04-28  Paul Brook  <paul@codesourcery.com>

	* exceptions.c (print_flush): Handle NULL gdb_stdout_serial.

2005-04-27  Mark Kettenis  <kettenis@gnu.org>

	* solib-svr4.c (_initialize_svr4_solib)
	[SVR4_FETCH_LINK_MAP_OFFSETS]: Don't set non-existent variable
	svr4_legacy_fetch_link_map_offsets.

	* sh-tdep.c (sh_linux_svr4_fetch_link_map_offsets): Remove function.
	(sh_gdbarch_init): Remove redundant prototype.
	* sh-linux-tdep.c: New file.
	* config/sh/tm-linux.h (sh_linux_svr4_fetch_link_map_offsets):
	Remove prototype.
	(SVR4_FETCH_LINK_MAP_OFFSETS): Remove define.
	* config/sh/linux.mt (TDEPFILES): Add sh64-tdep.o, remove
	solib-legacy.o.
	* Makefile.in (sh-linux-tdep.o): New.

	* solib-svr4.c: Update copyright year.  Include "gdb_assert.h".
	(SVR4_FETCH_LINK_MAP_OFFSETS): Don't define if not already
	defined.
	(legacy_fetch_link_map_offsets): Remove prototype.
	(fetch_link_map_offsets_gdbarch_data): Remove.
	(LM_ADDR, LM_NEXT, IGNORE_FIRST_LINK_MAP_ENTRY)
	(first_link_map_member, open_symbol_file_object, svr4_current_sos)
	(svr4_fetch_objfile_link_map): Call svr4_fetch_link_map_offsets
	instead of SVR4_FETCH_LINK_MAP_OFFSETS.
	(solib_svr4_data): New variable.
	(struct solib_svr4_ops): New.
	(solib_svr4_init): New fynction.
	(legacy_fetch_link_map_offsets, init_fetch_link_map_offsets):
	Remove functions.
	(svr4_fetch_link_map_offsets, svr4_have_link_map_offsets): Rewrite
	using the new `struct solib_svr4_ops'.
	(_initialize_svr4_solib): Replace registration of per-architecture
	data.  Add temporary hack to set
	svr4_legacy_fetch_link_map_offsets if SVR4_FETCH_LINK_MAP_OFFSETS
	is set.
	* Makefile.in (solib-svr4.o): Update dependencies.

2005-04-26  Mark Kettenis  <kettenis@gnu.org>

	* configure.tgt (*-*-freebsd*): Set gdb_osabi to
	GDB_OSABI_FREEBSD_ELF.  Partial fix for PR gdb/1922.

2005-04-26  Andrew Cagney  <cagney@gnu.org>

	* remote.c (remote_open_1): Move "ex"'s declaration to where it is
	used.
	(remote_get_thread_local_address): Use throw_error, include a
	printed string.
	* linux-thread-db.c (thread_db_get_thread_local_address): Ditto.
	* dwarf2loc.c (dwarf_expr_tls_address): Ditto.
	* cli/cli-script.c (script_from_file): Mark up throw_error message.
	* linespec.c (symtab_from_filename, decode_variable): Ditto.

2005-04-26  Andrew Cagney  <cagney@gnu.org>

	Rename 'struct exception' to 'struct gdb_exception'.
	* wrapper.c: Update.
	* varobj.c: Update.
	* tui/tui-interp.c: Update.
	* remote.c: Update.
	* mi/mi-main.c: Update.
	* mi/mi-interp.c: Update.
	* linux-thread-db.c: Update.
	* interps.h: Update.
	* interps.c: Update.
	* exceptions.h: Update.
	* exceptions.c: Update.
	* dwarf2loc.c: Update.
	* cli/cli-interp.c: Update.
	* cli/cli-script.c: Update.
	* breakpoint.c: Update.

2005-04-25  Mark Mitchell  <mark@codesourcery.com>

	* event-loop.c (gdb_select): Program defensively.

	* event-loop.c (gdb_assert.h): Include.
	(<windows.h>): Include under Windows.
	(<io.h>): Likeiwse.
	(gdb_select): New function.
	(gdb_wait_for_event): Use it.
	* Makefile.in (event-loop.o): Depend on $(gdb_assert_h).

2005-04-23  Mark Kettenis  <kettenis@gnu.org>

	* sparc64-tdep.c: Include "dwarf2-frame.h".
	(sparc64_dwarf2_frame_init_reg): New function.
	* Makefile.in (sparc64-tdep.o): Update dependencies.

2005-04-22  David S. Miller  <davem@davemloft.net>

	* sparc64-linux-tdep.c (sparc64_linux_init_abi): Add call to
	sparc64_init_abi().

2005-04-22  Mark Kettenis  <kettenis@gnu.org>

	* ser-base.c: Include "ser-base.h" instead of "ser-unix.h".

2005-04-22  Mark Mitchell  <mark@codesourcery.com>

	* ser-base.c (<sys/time.h>): Include.

2005-04-22  Mark Kettenis  <kettenis@gnu.org>

	* ppcobsd-tdep.c (ppcobsd_init_abi): Set return_value.

	* sparc-linux-tdep.c: Reorder includes.  Tweak a few comments.
	(LINUX32_SIGTRAMP_INSN0, LINUX32_SIGTRAMP_INSN1)
	(LINUX32_RT_SIGTRAMP_INSN0, LINUX32_RT_SIGTRAMP_INSN1): Remove
	macros.
	(sparc32_linux_sigframe, sparc32_linux_rt_sigframe): Hardcode
	instructions.
	* sparc64-linux-tdep.c: Reorder includes.  Tweak a few comments.
	(LINUX64_RT_SIGTRAMP_INSN0, LINUX64_RT_SIGTRAMP_INSN1): Remove
	macros.
	(sparc64_linux_rt_sigframe): Hardcode instructions.
	* Makefile.in (sparc-linux-tdep.o, sparc64-linux-tdep.o): Update
	dependencies.

	* sparc-linux-tdep.c: Update copyright year.
	(sparc32_linux_init_abi): Set skip_trampoline_code and
	solib_svr4_fetch_link_map_offsets.  Set TDEP->plt_entry_size.
	Don't set software_single_step and don't call
	sparc32_sol2_init_abi.
	* sparc64-linux-tdep.c: Update copyright year.
	(sparc64_linux_init_abi): Set skip_trampoline_code and
	solib_svr4_fetch_link_map_offsets.  Set TDEP->plt_entry_size.
	Don't set software_single_step and don't call
	sparc64_sol2_init_abi.

2005-04-22  Eli Zaretskii  <eliz@gnu.org>

	* remote-st.c (_initialize_remote_st2000): Remove the extraneous
	"<command>" string from the call to add_com.

	* remote-sim.c (_initialize_remote_sim): Ditto.

	* remote-utils.c (_initialize_sr_support): Ditto.

	* remote-mips.c (_initialize_remote_mips): Ditto.

2005-04-21  David S. Miller  <davem@davemloft.net>

	* sparc-linux-tdep.c (sparc32_linux_sigframe_init): New function.
	(sparc32_linux_sigframe, sparc32_linux_rt_sigframe): New tramp_frames.
	(sparc_linux_sigtramp_start, sparc32_linux_sigtramp_start,
	sparc32_linux_rt_sigtramp_start, sparc32_linux_sigtramp_p,
	sparc32_linux_sigtramp_frame_cache,
	sparc32_linux_sigtramp_frame_this_id,
	sparc32_linux_sigtramp_frame_prev_register,
	sparc32_linux_sigtramp_frame_unwind,
	sparc32_linux_sigtramp_frame_sniffer): Delete.
	(sparc32_linux_init_abi): Register new tramp unwinders.  Kill
	register of old sigtramp sniffer.
	* sparc64-linux-tdep.c (sparc64_linux_sigframe_init): New
	function.
	(sparc64_linux_rt_sigframe): New tramp frame.
	(sparc64_linux_sigtramp_start, sparc64_linux_sigtramp_p,
	sparc64_linux_sigtramp_frame_cache,
	sparc64_linux_sigtramp_frame_this_id,
	sparc64_linux_sigtramp_frame_prev_register,
	sparc64_linux_sigtramp_frame_unwind,
	sparc64_linux_sigtramp_frame_sniffer): Delete.
	(sparc64_linux_init_abi): Register new tramp unwinders.  Kill
	register of old sigtramp sniffer.
	Makefile.in (sparc64-linux-tdep.o): Update dependencies.
	(sparc-linux-tdep.o): Likewise.

2005-04-21  Mark Kettenis  <kettenis@gnu.org>

	* ser-base.c: Include "gdb_string.h".
	* Makefile.in (ser-base.o): Update dependencies.

2005-04-20  David S. Miller  <davem@davemloft.net>

	* sparc-linux-tdep.c (sparc32_linux_sigtramp_p): Fix
	signal return stub symbol names, __restore and __restore_rt are
	the i386 symbol names not the sparc ones.
	(sparc32_linux_sigtramp_frame_cache): Document bits/sigcontext.h
	as where the offsets were obtained from.
	* sparc64-linux-tdep.c (LINUX64_RT_SIGTRAMP_INSN0,
	LINUX64_RT_SIGTRAMP_INSN1): New defines.
	(sparc64_linux_sigtramp_start, sparc64_linux_sigtramp_p,
	sparc64_linux_sigtramp_frame_cache,
	sparc64_linux_sigtramp_frame_this_id,
	sparc64_linux_sigtramp_frame_prev_register,
	sparc64_linux_sigtramp_frame_sniffer): New functions.
	(sparc64_linux_sigtramp_frame_unwind): New frame unwinder.
	(sparc64_linux_init_abi): Register sigtramp frame sniffer.
	* Makefile.in (sparc64-linux-tdep.o): Update dependencies.

2005-04-20  Mark Mitchell  <mark@codesourcery.com>

	* configure.ac: On MinGW, define USE_WIN32API and link with
	-lws2_32.
	* ser-tcp.c (<winsock2.h>): Include, for Windows.
	(ETIMEDOUT): Define, for Windows.
	(ioctl): Likewise.
	(closesocket): Define, for POSIX.
	(net_open): Adjust for differences in socket functions between
	Windows and UNIX.
	(net_close): Likweise.
	(net_read_prim): New function.
	(net_write_prim): Likewise.
	(_initialize_ser_tcp): Initialize winsock.  Fill in read_prim and
	write_prim.
	* ser-unix.h (ser_unix_readcchar): Remove.
	(ser_unix_read_prim): Declare.
	(ser_unix_write_prim): Likewise.
	* ser-unix.c (generic_readchar): Move to ser-base.c.
	(ser_unix_wait_for): Likewise.
	(do_unix_readchar): Likewise.
	(ser_unix_readchar): Likewise.
	(_initialize_ser_hardwire): Initialize read_prim and write_prim.
	(ser_unix_read_prim): New function.
	(ser_unix_write_prim): Likewise.
	* ser-base.h (generic_readchar): Declare.
	(ser_base_readchar): Likewise.
	* ser-base.c (<winsock2.h>): Include, for windows.
	(fd_event): Use the read primitive specified by the serial
	interface.
	(ser_base_wait_for): Moved from ser-unix.c
	(do_ser_base_read_char): Likewise.
	(generic_readchar): Likewise.
	(ser_base_readchar): Likewise.
	(ser_base_write): Use the write primitive specified by the serial
	interface.
	* ser-pipe.c (_initialize_ser_pipe): Use ser_base_readchar, not
	ser_unix_readchar.  Initialize read_prim and write_prim.
	* serial.c (struct serial_ops): Add read_prim and write_prim.
	* configure: Regenerate.

2005-04-19  Ben Elliston  <bje@au.ibm.com>

	* c-lang.c (c_create_fundamental_type): Comment fix.

2005-04-18  Michael Snyder  <msnyder@redhat.com>

	* mn10300-tdep.c: Assimilate code from mn10300-prologue.c.
	* mn10300-prologue.c: Remove.
	* mn10300-tdep.h: Add enums from mn10300-prologue.c.
	Remove prototypes.
	* config/mn10300/mn10300.mt: Remove mn10300-prologue module.

2005-04-18  Michael Snyder  <msnyder@redhat.com>

	* config/mn10300/mn10300.mt: Add mn10300-prologue module.
	* ia64-tdep.c (ia64_get_dyn_info_list): Fix indent.

2005-04-18  Mark Kettenis  <kettenis@gnu.org>

	* config/nm-bsd.h: Remove file.

	* hppabsd-nat.c: Update copyright year.  Include "target.h" and
	"inf-ptrace.h".
	(hppabsd_fetch_registers): Renamed from fetch_inferior_registers;
	made static.
	(hppabsd_store_registers): Renamed from store_inferior_registers;
	made static.
	(_initialize_hppabsd_nat): New function and prototype.
	* config/pa/obsd.mh (NATDEPFILES): Remove infptrace.o and
	inftarg.o.  Add inf-ptrace.o.
	(NAT_FILE): Remove.
	* Makefile.in (hppabsd-nat.o): Update dependencies.

2005-04-17  Mark Kettenis  <kettenis@gnu.org>

	* pa64solib.c, pa64solib.h: Remove files.
	* Makefile.in (pa64solib_h): Remove variable
	(pa64solib.o): Remove dependency.

2005-04-16  Mark Kettenis  <kettenis@gnu.org>

	* ppcobsd-nat.c: Update copyright year.  Include "inf-ptrace.h".
	(ppcobsd_fetch_registers): Renamed from fetch_inferior_registers;
	made static.
	(ppcobsd_store_registers): Renamed from store_inferior_registers;
	made static.
	(_initialize_ppcobsd_nat): Construct and add target vector.
	* config/powerpc/obsd.mh (NATDEPFILES): Remove infptrace.o and
	inftarg.o.  Add inf-ptrace.o.
	(NAT_FILE): Remove.
	* Makefile.in (ppcobsd-nat.o): Update dependencies.

	* ppcobsd-tdep.c: Include "floatformat.h".
	(ppcobsd_init_abi): Set long_double_bit and long_double_format.
	* Makefile.in (ppcobsd-tdep.o): Update dependencies.

	* ppcobsd-tdep.c: Fix typo in comment.
	(_initialize_ppcobsd_tdep): Register GDB_OSABI_OPENBSD_ELF for
	bfd_arch_rs6000 too.

2005-04-15  Kevin Buettner  <kevinb@redhat.com>

	* remote.c (remote_get_thread_local_address): Throw a more
	meaningful exception when remote target doesn't have support
	for the qGetTLSAddr packet.

2005-04-15  Kevin Buettner  <kevinb@redhat.com>

	* remote.c (remote_protocol_qGetTLSAddr): New static global variable.
	(set_remote_protocol_qGetTLSAddr_packet_cmd)
	(show_remote_protocol_qGetTLSAddr_packet_cmd)
	(remote_get_thread_local_address): New functions.
	(init_all_packet_configs): Initialize remote_protocol_qGetTLSAddr
	variable.
	(init_remote_ops): Initialize ``to_get_thread_local_address'' in
	target vector.
	(show_remote_cmd): Call show_remote_protocol_qGetTLS_Addr_packet_cmd().
	(_initialize_remote):  Register the following commands:
	"set remote get-thread-local-storage-address-packet" and
	"show remote get-thread-local-address-packet".

2005-04-15  Kevin Buettner  <kevinb@redhat.com>

	* remote.c (add_packet_config_cmd): Delete unused variables.

2005-04-15  Kevin Buettner  <kevinb@redhat.com>

	* remote.c (show_remote_protocol_vcont_packet_cmd )
	(show_remote_protocol_qSymbol_packet_cmd)
	(show_remote_protocol_P_packet_cmd)
	(show_remote_protocol_Z_software_bp_packet_cmd)
	(show_remote_protocol_Z_hardware_bp_packet_cmd)
	(show_remote_protocol_Z_write_wp_packet_cmd)
	(show_remote_protocol_Z_read_wp_packet_cmd)
	(show_remote_protocol_Z_access_wp_packet_cmd)
	(show_remote_protocol_binary_download_cmd)
	(show_remote_protocol_qPart_auxv_packet_cmd)
	(show_remote_protocol_p_packet_cmd ): Delete calls to
	deprecated_show_value_hack().

2005-04-15  Corinna VInschen  <vinschen@redhat.com>

	* MAINTAINERS: Change sh64-elf state to non-broken.
	* Makefile.in: Fix dependencies for sh64-tdep.o.
	* configure.tgt: Add sh64-*-elf case.
	* sh-tdep.c (sh_gdbarch_init): Reactivate bfd_mach_sh5 case.
	* sh64-tdep.c: Rework to replace all deprecated mechanisms with
	modern methods.
	* config/sh/embed.mt (TDEPFILES): Add sh64-tdep.o.
	* config/sh/sh64.mt: Resurrect.

2005-04-15  Kei Sakamoto <sakamoto.kei@renesas.com>

	* regformats/reg-m32r.dat: New file.

2005-04-14  Daniel Jacobowitz  <dan@codesourcery.com>

	* arm-tdep.c (fp_model_strings): Add terminating NULL.
	(arm_abi_strings, arm_abi_global, arm_abi_string): New
	variables.
	(arm_extract_return_value, arm_store_return_value): Don't use
	arm_get_fp_model.
	(arm_get_fp_model, arm_set_fp): Delete.
	(arm_update_current_architecture): New function.
	(set_fp_model_sfunc): Call arm_update_current_architecture.
	(show_fp_model): Update output messages.
	(arm_set_abi, arm_show_abi): New functions.
	(arm_elf_osabi_sniffer): Only handle ELFOSABI_ARM.
	(arm_gdbarch_init): Infer the object's ABI separately from its
	OSABI.  Search for a matching architecture.  Honor the global
	ABI and FPU settings.  Set floating point format based on the
	architecture.
	(arm_init_abi_eabi_v1, arm_init_abi_eabi_v2, arm_init_abi_apcs):
	Delete.
	(_initialize_arm_tdep): Don't call gdbarch_register_osabi.
	Create "arm set abi" command.
	* arm-tdep.h (arm_get_fp_model): Delete prototype.
	(enum arm_abi_kind): New type.
	(struct gdbarch_tdep): Add arm_abi field.
	* arm-linux-tdep.c (arm_linux_init_abi): Only override
	tdep->fp_model if it is ARM_FLOAT_AUTO.
	* armnbsd-tdep.c (arm_netbsd_aout_init_abi): Likewise.
	(arm_netbsd_elf_init_abi): Likewise.
	* defs.h (enum gdb_osabi): Delete ARM-specific OSABIs.
	* osabi.c (gdb_osabi_name): Likewise.

2005-04-11  Daniel Jacobowitz  <dan@codesourcery.com>

	* config/djgpp/fnchange.lst: Remove entries for gdb.gdbserver.

2005-04-10  Mark Kettenis  <kettenis@gnu.org>

	* rs6000-tdep.c (ppc_supply_fpregset): Increment offset by 8 for
	floating-point registers.
	(ppc_collect_fpregset): Likewise.  Fix collection of registers.

2005-04-09  Mark Kettenis  <kettenis@gnu.org>

	* ppcobsd-tdep.c: Update copyright year.  Include "trad-frame.h"
	and "tramp-frame.h".
	(ppcobsd_sigtramp_cache_init): New function.
	(ppcobsd_sigtramp): New variable.
	(ppcobsd_init_abi): Prepend signal trampoline unwinder.
	* Makefile.in (ppcobsd-tdep.o): Update dependencies.

2005-04-08  Andrew Cagney  <cagney@gnu.org>

	* MAINTAINERS (GDB/MI): Andrew Cagney, Elena Zannoni, and Fernando
	Nasser have decided to step back from GDB/MI.

2005-04-08  Daniel Jacobowitz  <dan@codesourcery.com>

	* config/fnchange.lst: Add testsuite/gdb.gdbserver entries.

2005-04-08  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2-frame.c (struct dwarf2_frame_cache): New field
	undefined_retaddr.
	(dwarf2_frame_cache): Initialize undefined_retaddr.
	(dwarf2_frame_this_id): Return an invalid frame ID if
	undefined_retaddr.

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

	Move construction of IA-32 vector types to i386-tdep.c.
	* gdbtypes.c (build_builtin_type_vec64i,
	build_builtin_type_vec128i): Delete functions.
	(builtin_type_vec64i, builtin_type_vec128i): Delete variables.
	(build_gdbtypes): Don't initialize them.
	(_initialize_gdbtypes): Don't register GDBARCH swap entries for
	them.
	* gdbtypes.h (builtin_type_vec64i, builtin_type_vec128i): Delete
	declarations.
	(builtin_type_v2_float, builtin_type_v2_int32,
	builtin_type_v4_int16, builtin_type_v8_int8,
	builtin_type_v2_double, builtin_type_v4_float,
	builtin_type_v2_int64, builtin_type_v4_int32,
	builtin_type_v8_int16, builtin_type_v16_int8): Add extern
	declarations.
	* i386-tdep.c (i386_mmx_type, i386_sse_type): New variables.
	(i386_build_mmx_type, i386_build_sse_type): New functions.
	(i386_register_type): Call them, rather than referring to
	builtin_type_vec64i and builtin_type_vec128i.

2005-04-02  Daniel Jacobowitz  <dan@codesourcery.com>

	* mips-linux-tdep.c (mips_linux_o32_sigframe_init): Adjust
	big-endian correction code to not offset 32-bit registers.
	Locate floating point registers correctly.

2005-04-02  Mark Kettenis  <kettenis@gnu.org>

	* main.c: Update copyright year.
	(captured_main): Avoid using strcpy and strcat.

2005-04-01  Michael Snyder  <msnyder@redhat.com>

	* dummy-frame.c (dummy_frame_sniffer): Optimization: don't bother
	computing this_id if there are no dummy frames on the stack.

	* mn10300-tdep.c (mn10300_frame_unwind_cache): Use
	find_partial_func instead of unwind_pc to identify frame.
	(mn10300_push_dummy_call): Handle struct args, struct_return.

	* mn10300-prologue.c (set_movm_offsets): Don't test variable
	before setting it.
	* mn10300-tdep.c (mn10300_skip_prologue): Use analyze_prologue
	instead of skip_prologue_using_sal.

2005-03-31  Kevin Buettner  <kevinb@redhat.com>

	* solib-frv.c (struct lm_info): Add new field ``lm_addr''.
	(main_lm_addr): New static global.
	(frv_current_sos): Retain the link map address for each entry.
	(frv_clear_solib): Clear main_lm_addr.
	(frv_fetch_objfile_link_map): New function.
	* frv-tdep.c (frv_gdbarch_init): Register TLS load module fetcher.
	* frv-tdep.h (frv_fetch_objfile_link_map): Declare.

2005-03-31  Kevin Buettner  <kevinb@redhat.com>

	* gdbarch.sh (fetch_tls_load_module_address): New architecture method.
	* gdbarch.c, gdbarch.h: Regenerate.
	* dwarf2loc.c (dwarf_expr_tls_address): Fetch TLS load module
	address and pass this address, instead of the objfile address, to
	target_get_thread_local_address().
	* linux-thread-db.c (thread_db_get_thread_local_address): Change
	second parameter from type ``struct objfile *'' to CORE_ADDR.  Do
	not call svr4_fetch_objfile_link_map() to fetch the load module
	address.
	* target.h (struct target_ops): Change second parameter of
	``to_get_thread_local_address'' from ``struct objfile *'' to
	``CORE_ADDR''.
	* alpha-linux-tdep.c (solib-svr4.h): Include.
	(alpha_linux_init_abi): Register TLS load module fetcher.
	* amd64-linux-tdep.c (amd64_linux_init_abi): Likewise.
	* hppa-linux-tdep.c (hppa_linux_init_abi): Likewise.
	* i386-linux-tdep.c (i386_linux_init_abi): Likewise.
	* ia64-linux-tdep.c (solib-svr4.h): Include.
	(ia64_linux_init_abi): Register TLS load module fetcher.
	* m32r-linux-tdep.c (m32r_linux_init_abi): Likewise.
	* m68klinux-tdep.c (m68k_linux_init_abi): Likewise.
	* mips-linux-tdep.c (mips_linux_init_abi): Likewise.
	* s390-tdep.c (s390_gdbarch_init): Likewise.
	* sparc-linux-tdep.c (sparc32_linux_init_abi): Likewise.
	* sparc64-linux-tdep.c (solib-svr4.h): Include.
	(sparc64_linux_init_abi): Register TLS load module fetcher.
	* Makefile.in (alpha-linux-tdep.o, ia64-linux-tdep.o)
	(sparc-linux-tdep.o): Update dependencies.

2005-03-29  Daniel Jacobowitz  <dan@codesourcery.com>

	* c-valprint.c (c_value_print): Fix up some formatting.  Use
	check_typedef.

2005-03-29  Daniel Jacobowitz  <dan@codesourcery.com>

	* arm-linux-nat.c (store_register, store_regs): Handle
	ARM_PS_REGNUM.

2005-03-29  Daniel Jacobowitz  <dan@codesourcery.com>

	* arm-linux-tdep.c (arm_linux_thumb_be_breakpoint)
	(arm_linux_thumb_le_breakpoint): New.  Update comments.
	(arm_linux_init_abi): Set Thumb breakpoints also.

2005-03-29  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (arm-tdep.o): Update dependencies.
	* arm-tdep.c: Include "objfiles.h" and "dwarf2-frame.h".
	(arm_gdbarch_init): Register dwarf2_frame_sniffer.

2005-03-28  Joel Brobecker  <brobecker@adacore.com>

	* irix5-nat.c (supply_fpregset): Fix bug that caused the FSR
	register value to be incorrectly written in the regcache.
	(fill_fpregset): Fix bug that caused the FSR register value
	to be incorrectly read from the regcache.

2005-03-28  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote-rdi.c (arm_rdi_insert_breakpoint): Don't call
	arm_pc_is_thumb_dummy.

2005-03-28  Mark Kettenis  <kettenis@gnu.org>

	* sparc64nbsd-tdep.c (sparc64nbsd_sigcontext_saved_regs): Handle
	StackGhost.

	* sparc-tdep.c (sparc_supply_rwindow, sparc_collect_rwindow):
	Handle StackGhost in 64-bit code.
	* sparc64-tdep.c (sparc64_frame_prev_register): Handle StackGhost.

2005-03-27  Christopher Faylor  <cgf@timesys.com>

	* win32-nat.c (handle_exception): Treat win32 routines which check for
	valid addresses as "special" and don't stop when a SEGV is detected.
	(get_child_debug_event): Properly flag exception as unhandled.

2005-03-26  Daniel Jacobowitz  <dan@codesourcery.com>

	* cp-support.c (cp_class_name_from_physname): Rewrite.
	(unqualified_name_from_comp): New function, broken out from
	method_name_from_physname.  Correct handling for typed names
	and templates.
	(method_name_from_physname): Use unqualified_name_from_comp.
	(cp_func_name, remove_params): Move earlier in the file.  Add
	better comments.  Use the component tree to parse the name.
	(_initialize_cp_support): Remove stray whitespace.

2005-03-26  Mark Kettenis  <kettenis@gnu.org>

	* exec.c (bfdsec_to_vmap): Use strcmp instead of DEPRECATED_STREQ.

	* inflow.h: Update copyright year.  Remove #ifdef SHORT_PGRP code.
	Callapse HAVE_TERMIO and HAVE_SGTTY.

	* dwarf2-frame.c (execute_cfa_program): Implement
	DW_CFA_GNU_window_save.

2005-03-25  Mark Kettenis  <kettenis@gnu.org>

	* config/sparc/nbsd64.mh (NAT_FILE): Remove.

	* config/i386/obsd64.mt (TDEPFILES): Add obsd-uthread.o.

2005-03-25  Daniel Jacobowitz  <dan@codesourcery.com>

	* arm-tdep.c (target_is_thumb, caller_is_thumb)
	(arm_pc_is_thumb_dummy): Remove.
	(arm_breakpoint_from_pc): Don't call arm_pc_is_thumb_dummy.

2005-03-25  Anthony Green  <green@redhat.com>

	* remote.c (remote_store_registers): Fix memset usage.
	* std-regs.c (value_of_builtin_frame_reg): Ditto.
	(value_of_builtin_frame_fp_reg): Ditto.
	(value_of_builtin_frame_reg): Ditto.

2005-03-25  Mark Mitchell  <mark@codesourcery.com>

	* ser-base.c (ser_unix_write): Rename to ...
	(ser_base_write): ... this.
	(ser_unix_nop_flush_output): Rename to ...
	(ser_base_flush_output): ... this.
	(ser_unix_flush_input): Rename to ...
	(ser_base_flush_input): ... this.
	(ser_unix_nop_send_break): Rename to ...
	(ser_base_send_break): ... this.
	(ser_unix_nop_drain_output): Rename to ...
	(ser_base_drain_output): ... this.
	(ser_unix_nop_raw): Rename to ...
	(ser_base_raw): ... this.
	(ser_unix_nop_get_tty_state): Rename to ...
	(ser_base_set_tty_state): ... this.
	(ser_unix_nop_noflush_set_tty_state): Rename to ...
	(ser_base_noflush_set_tty_state): ... this.
	(ser_unix_nop_print_tty_state): Rename to ...
	(ser_base_print_tty_state): ... this.
	(ser_unix_nop_setbaudrate): Rename to ...
	(ser_base_setbaudrate): ... this.
	(ser_unix_nop_setstopbits): Rename to ...
	(ser_base_setstopbits): ... this.
	(ser_unix_async): Rename to ...
	(ser_base_async): ... this.
	* ser-base.h (ser_unix_write): Rename to ...
	(ser_base_write): ... this.
	(ser_unix_nop_flush_output): Rename to ...
	(ser_base_flush_output): ... this.
	(ser_unix_flush_input): Rename to ...
	(ser_base_flush_input): ... this.
	(ser_unix_nop_send_break): Rename to ...
	(ser_base_send_break): ... this.
	(ser_unix_nop_drain_output): Rename to ...
	(ser_base_drain_output): ... this.
	(ser_unix_nop_raw): Rename to ...
	(ser_base_raw): ... this.
	(ser_unix_nop_get_tty_state): Rename to ...
	(ser_base_set_tty_state): ... this.
	(ser_unix_nop_noflush_set_tty_state): Rename to ...
	(ser_base_noflush_set_tty_state): ... this.
	(ser_unix_nop_print_tty_state): Rename to ...
	(ser_base_print_tty_state): ... this.
	(ser_unix_nop_setbaudrate): Rename to ...
	(ser_base_setbaudrate): ... this.
	(ser_unix_nop_setstopbits): Rename to ...
	(ser_base_setstopbits): ... this.
	(ser_unix_async): Rename to ...
	(ser_base_async): ... this.
	* ser-pipe.c (_initialize_ser_pipe): Update accordingly.
	* ser-tcp.c (_initialize_ser_tcp): Likewise.
	* ser-unix.c (hardwire_flush_input): Likewise.
	(_initializer_ser_hardwire): Likewise.

	* Makefile.in (SFILES): Add ser-base.c.
	(ser_base_h): New variable.
	(ser-base.o): New target.
	(ser-pipe.o): Depend on $(ser_base_h).
	(ser-tcp.o): Likewise.
	(ser-unix.o): Likewise.  Do not depend on $(event_loop_h).
	* configure.ac (SER_HARDWIRE): Include ser-base.o where
	appropriate.
	* ser-base.c: New file.
	(push_event): Move from ser-unix.c.
	(fd_event): Likewise.
	(reschedule): Likewise.
	(ser_unix_write): Likewise.
	(ser_unix_nop_flush_output): Likewise.
	(ser_unix_flush_input): Likewise.
	(ser_unix_nop_send_break): Likewise.
	(ser_unix_nop_drain_output): Likewise.
	(ser_unix_nop_raw): Likewise.
	(ser_unix_nop_get_tty_state): Likewise.
	(ser_unix_nop_set_tty_state): Likewise.
	(ser_unix_nop_noflush_set_tty_state): Likewise.
	(ser_unix_nop_print_tty_state): Likewise.
	(ser_unix_nop_setbaudrate): Likewise.
	(ser_unix_nop_setstopbits): Likewise.
	(ser_unix_async): Likewise.
	* ser-base.h: New file.
	* ser-pipe.c (ser-base.h): Include it.
	* ser-tcp.c (ser-base.h): Likewise.
	* ser-unix.h (ser_unix_nop_flush_output): Remove.
	(ser_unix_flush_input): Likewise.
	(ser_unix_nop_send_break): Likewise.
	(ser_unix_nop_raw): Likewise.
	(ser_unix_nop_get_tty_state): Likewise.
	(ser_unix_nop_set_tty_state): Likewise.
	(ser_unix_nop_print_tty_state): Likewise.
	(ser_unix_nop_noflush_set_tty_state): Likewise.
	(ser_unix_nop_setbaudrate): Likewise.
	(ser_unix_nop_setstopbits): Likewise.
	(ser_unix_nop_drain_output): Likewise.
	(ser_unix_wait_for): Likewise.
	(ser_unix_write): Likewise.
	(ser_unix_async): Likewise.
	* ser-unix.c (event-loop.h): Do not include it.
	(push_event): Move to ser-base.c.
	(fd_event): Likewise.
	(reschedule): Likewise.
	(ser_unix_write): Likewise.
	(ser_unix_nop_flush_output): Likewise.
	(ser_unix_flush_input): Likewise.
	(ser_unix_nop_send_break): Likewise.
	(ser_unix_nop_drain_output): Likewise.
	(ser_unix_nop_raw): Likewise.
	(ser_unix_nop_get_tty_state): Likewise.
	(ser_unix_nop_set_tty_state): Likewise.
	(ser_unix_nop_noflush_set_tty_state): Likewise.
	(ser_unix_nop_print_tty_state): Likewise.
	(ser_unix_nop_setbaudrate): Likewise.
	(ser_unix_nop_setstopbits): Likewise.
	(ser_unix_async): Likewise.
	(ser_unix_wait_for): Make it static.
	* configure: Regenerated.

2005-03-25  Mark Kettenis  <kettenis@gnu.org>

	* dwarf2-frame.h: Update copyrigh year.
	(enum dwarf2_frame_reg_rule): Add DWARF2_FRAME_REG_RA_OFFSET.
	* dwarf2-frame.c: Update copyright year.
	(struct dwarf2_frame_cache): Add member `retaddr_reg'.
	(dwarf2_frame_cache): Deal with DWARF2_FRAME_REG_RA_OFFSET.
	(dwarf2_frame_prev_register): Handle DWARF2_FRAME_REG_RA_OFFSET.

2005-03-23  Martin Hunt  <hunt@redhat.com>

	* configure.ac: Remove -fwritable-strings from CFLAGS.
	* configure: Regenerate.

2005-03-21  Michael Snyder  <msnyder@redhat.com>

	* mn10300-prologue.c (fix_frame_pointer): Delete.
	(set_movm_offsets) Don't return just because movm_args is
	zero -- still need to save pc and sp in saved_regs.
	(mn10300_analyze_prologue): Don't return prematurely without
	calling set_movm_offsets (for pc and sp at minimum).

2005-03-21  Mark Mitchell  <mark@codesourcery.com>

	* configure.ac (stat.st_blksize): Check for it.
	(getuid): Likewise.
	(getgid): Likewise.
	* configure: Regenerated.
	* config.in: Likewise.
	* remote-fileio.c (remote_fileio_to_fio_stat): Check
	HAVE_STRUCT_STAT_ST_BLKSIZE.

2005-03-21  Christopher Faylor  <cgf@timesys.com>

	* win32-nat.c (do_initial_child_stuff): Don't clear the thread list
	here.
	(do_initial_child_stuff): Move clearing of thread list to a place
	before a thread ould be created.
	(child_attach): Ditto.

2005-03-21  Michael Snyder  <msnyder@redhat.com>

	* mn10300-tdep.c (mn10300_frame_unwind_cache): Use func addr
	instead of pc addr for frame_id.  Otherwise "until" won't work.

2005-03-21  Kevin Buettner  <kevinb@redhat.com>

	* frv-linux-tdep.c (frv_linux_sigcontext_reg_addr): Fix typo in
	comment.

2005-03-20  Mark Kettenis  <kettenis@gnu.org>

	* dwarf2loc.c (dwarf_expr_tls_address): Mark addr as volatile.
	* varobj.c (my_value_equal): Mark val2 as volatile.

	* cp-names.y: Add prototype for yyparse.

2005-03-19  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2loc.c (dwarf_expr_tls_address): Initialize ADDR.
	* gnu-v3-abi.c (gnuv3_baseclass_offset): Update type of
	VALADDR.

2005-03-18  Kevin Buettner  <kevinb@redhat.com>

	* Makefile.in (dwarf2loc.o, linux-thread-db.o): Add dependencies.
	* exceptions.h (TLS_NO_LIBRARY_SUPPORT_ERROR, TLS_GENERIC_ERROR)
	(TLS_LOAD_MODULE_NOT_FOUND_ERROR, TLS_NOT_ALLOCATED_YET_ERROR):
	New error/exception enums.
	* dwarf2loc.c (exceptions.h): Include.
	(dwarf_expr_tls_address): Invoke target_get_thread_local_address()
	via TRY_CATCH mechanism.  Print error messages for TLS related
	exceptions.
	* linux-thread-db.c (thread_db_get_thread_local_address): Throw
	exceptions instead of printing errors.

2005-03-18  Mark Kettenis  <kettenis@gnu.org>

	* utils.c (safe_strerror): Use xsnprintf instead of sprintf.
	(decimal2str, octal2str): Change to return a string allocated by
	get_cell.  Use xsnprint instead of snprintf.
	(paddr_u, paddr_d): Adjust for changed calling convention of
	decimal2str.
	(phex, phex_nz, hex_string): Use xsnprintf instead of snprintf.
	(int_string): Likewise.  Adjust for changed calling convention of
	decimal2str and octal2str.

2005-03-18  Kevin Buettner  <kevinb@redhat.com>

	* frv-linux-tdep.c (frv_linux_sigcontext_reg_addr): Update comments.
	Adjust incorrectly computed constant for realtime signal frame.

2005-03-18  Mark Kettenis  <kettenis@gnu.org>

	From Ralf Corsepius <ralf.corsepius@rtems.org>
	* configure.tgt: Add m68*-*-rtems*.

2005-03-17  Mark Kettenis  <kettenis@gnu.org>

	* defs.h (xsnprintf): New prototype.
	* utils.c (xsnprintf): New function.

	* corelow.c (get_core_register_section): Replace usage of sprintf
	and strcpy with xstrprintf and xstrdup.

	* mips-tdep.c (mips_single_step_through_delay): Put back check for
	breakpoint lost with the introduction of this function.

2005-03-17  Paul Brook  <paul@codesourcery.com>

	* amd64-tdep.c (amd64_dwarf_reg_to_regnum): Fix broken logic.
	* s390-tdep.c (s390_dwarf_reg_to_regnum): Ditto.

2005-03-16  Mark Mitchell  <mark@codesourcery.com>

	* event-top.c (handle_sigquit): Do not define for systems without
	SIGQUIT.
	(sigquit_token): Likewise.
	(async_init_signals): Allow for systems that do not
	define SIGQUIT.
	* ser-tcp.c (net_open): Allow for systems that do not have SIGPIPE.

2005-03-15  Mark Mitchell  <mark@codesourcery.com>

	* utils.c (internal_vproblem): Guard call to fork with
	HAVE_WORKING_FORK.
	* cli/cli-cmds.c (shell_escape): Guard call to vfork with
	HAVE_WORKING_VFORK and HAVE_WORKING_FORK.

	* remote-fileo.c (remote_fileio_mode_to_host): Accomodate lack of
	S_IRGRP and related macros.
	(remote_fileio_mode_to_target): Likewise.

2005-03-14  Ben Elliston  <bje@au.ibm.com>

	* Makefile.in (CLIBS): Link libbfd after libopcodes, as it is a
	more primitive library.

2005-03-13  Mark Kettenis  <kettenis@gnu.org>

	* inf-ttrace.c (inf_ttrace_pid_to_str): Use snprintf instead of
	sprintf.
	* target.c (normal_pid_to_str): Likewise.
	* remote.c (remote_pid_to_str): Use snprint instead of sprintf.
	Change capitalization of "thread".  Use ptid_get_pid instead of
	GETPID.

	* cp-abi.c (set_cp_abi_as_auto_default): Use xasprintf instead of
	a combination of xmalloc and sprintf.

2005-03-13  Jim Blandy  <jimb@redhat.com>

	* configure.ac: Use '=', not '=='; the latter is a GNU extension.
	* configure: Regenerated.

2005-03-11  Michael Snyder  <msnyder@redhat.com>

	* mn10300-tdep.c (mn10300_dummy_unwind_dummy_id): Replace
	stub fn with real implementatin mn10300_unwind_dummy_id.
	(mn10300_push_dummy_call): Implement.  Bare bones version,
	does not handle structs or floats.

2005-03-11  Jim Blandy  <jimb@redhat.com>

	Avoid warnings due to the use of -Wuninitialized without -O.
	* configure.ac (build_warnings): Include -Wuninitialized only if
	CFLAGS is unset at configure time, or CFLAGS is set and includes
	some -O option other than -O0.
	* configure: Regenerated.

	* mips-tdep.c (show_mips_abi): Change calling conventions to match
	those expected by add_setshow_enum_cmd.  Use 'file' argument as
	appropriate.

2005-03-10  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (SFILES): Add cp-names.y.
	(libiberty_h, safe_ctype_h): New.
	(YYFILES): Add cp-names.c.
	(YYOBJ): Add cp-names.o.
	(test-cp-names.o, test-cp-names$(EXEEXT), cp-names.o): New rules.
	(clean): Remove test-cp-names$(EXEEXT).
	(local-maintainer-clean): Remove cp-names.c.
	* cp-names.y: New file.
	* cp-support.c (find_last_component): Delete.
	(d_left, d_right): Define.
	(cp_canonicalize_string, mangled_name_to_comp): New functions.
	(cp_class_name_from_physname, method_name_from_physname): Rewrite
	to use mangled_name_to_comp.
	* cp-support.h (cp_canonicalize_string, cp_demangled_name_to_comp)
	(cp_comp_to_string): New prototypes.
	* config/djgpp/fnchange.lst: Add cp-names.c.

2005-03-10  Bob Rossi  <bob@brasko.net>

	* main.c (print_gdb_help): Remove the --[no]async help message.

2005-03-10  Mark Kettenis  <kettenis@gnu.org>

	* proc-api.c: Update copyright year.
	(_initialize_proc_api): Revert previous patch, removing spurious
	space instead.

2005-03-09  Joel Brobecker  <brobecker@adacore.com>

	* regcache.c: Fix typo in comment.

2005-03-09  David Lecomber  <david@lecomber.net>

	* proc-api.c (_initialize_proc_api): Fix invalid multi-line
	i18n text.

2005-03-09  Mark Kettenis  <kettenis@gnu.org>

	* sparc-tdep.c (sparc_frame_cache): Adjust cached frame base
	address for 64-bit code.
	(sparc_unwind_dummy_id): Likewise.
	* sparc64-tdep.c (sparc64_frame_prev_register): Adjust for new
	frame base address convention.
	(sparc64_push_dummy_call): Likewise.
	* sparc64nbsd-tdep.c: Update copyright year.
	(sparc64nbsd_sigcontext_frame_cache): Adjust cached frame base
	address for 64-bit code.
	(sparc64nbsd_init_abi): Tweak comment.
	* sparc64obsd-tdep.c: Update copyright year.
	(sparc64obsd_frame_cache): Adjust cached frame base address for
	64-bit code.
	(sparc64obsd_init_abi): Tweak comment.

2005-03-09  Corinna Vinschen  <vinschen@redhat.com>

	* exceptions.h (TRY_CATCH): Define setjmp/sigsetjmp macro safe.

2005-03-09  Joel Brobecker  <brobecker@adacore.com>

	* dwarf2read.c (dwarf_decode_lines): Use the complete filename
	when creating include psymtabs.

2005-03-08  Mark Mitchell  <mark@codesourcery.com>

	* environ.h (struct environ): Rename to ...
	(struct gdb_environ): ... this.
	(make_environ): Update prototype.
	(free_environ): Likewise.
	(init_environ): Likewise.
	(get_in_environ): Likewise.
	(set_in_environ): Likewise.
	(unset_in_environ): Likewise.
	(environ_vector): Likewise.
	* environ.c (make_environ): Replace "struct environ" with "struct
	gdb_environ".
	(free_environ): Likewise.
	(init_environ): Likewise.
	(environ_vector): Likewise.
	(get_in_environ): Likewise.
	(set_in_environ): Likewise.
	(unset_in_environ): Likewise.
	* infcmd.c (inferior_environ): Likewise.
	* inferior.h (inferior_environ): Likewise.

2005-03-08  Joel Brobecker  <brobecker@adacore.com>

	* infcmd.c (run_command_1): New function, extracted from
	run_command.
	(run_command): Replace implementation by call to run_command_1.
	(start_command): Use run_command_1 to insert the temporary
	breakpoint and run the program. Remove code that's no longer
	needed, as already done at the proper time by run_command_1.

2005-03-08  Daniel Jacobowitz  <dan@codesourcery.com>

	* symfile.c (clear_symtab_users): Call
	clear_current_source_symtab_and_line first.

2005-03-08  Nathan Sidwell  <nathan@codesourcery.com>

	* ax-gdb.c (gen_expr): Add UNOP_PLUS case.
	* c-exp.y (exp): Add unary plus.
	* eval.c (evaluate_subexp_standard): Add UNOP_PLUS case.
	* valarith.c (value_x_unop): Add UNOP_PLUS case.
	(value_pos): New.
	* value.h (value_pos): Declare.

	* remote.c (MIN_REMOTE_PACKET_SIZE): Set to 20.
	(remote_fetch_registers): Allow uppercase hex when resyncing.
	(remote_write_bytes): Only call get_memory_write_packet_size once.
	Robustify packet size calculation for very small packets. Check
	that at least one byte will be written.

	* tracepoint.c (target_is_remote): Allow extended-remote.
	(struct collection_list): Allow 256 registers, like the comment
	said.
	(add_memrange): Fix comment.
	(read_actions): Turn EOF into 'end'.

2005-03-08  Corinna Vinschen  <vinschen@redhat.com>

	* Makefile.in: Add dependencies for iq2000-tdep.o.
	* configure.tgt: Add iq2000-*-* target.
	* iq2000-tdep.c: New file.
	* config/iq2000/iq2000.mt: New file.

2005-03-07  Joel Brobecker  <brobecker@adacore.com>

	* doc/observer.texi (executable_changed): New observer.
	* symtab.c: Include "observer.h".
	(find_main_name): New function.
	(main_name): If name_of_main is unset, then compute it
	using find_main_name.
	(symtab_observer_executable_changed): New function.
	(_initialize_symtab): Attach executable_changed observer.
	* exec.c: Include "observer.h".
	(exec_file_attach): Emit executable_changed notification.
	* symfile.c: Include "observer.h".
	(reread_symbols): Send an executable_changed if appropriate.
	* Makefile.in (exec.o): Add dependency on observer.h.
	(symfile.o): Likewise.
	(symtab.o): Likewise.

2005-03-07  Daniel Jacobowitz  <dan@codesourcery.com>

	* findvar.c (read_var_value): Don't allocate V when it will not
	be used.  Add missing break for LOC_INDIRECT.

2005-03-06  Mark Kettenis  <kettenis@gnu.org>

	* sparc64fbsd-tdep.c: Include "solib-svr4.h".
	(sparc64fbsd_init_abi): Set skip_trampoline_code and
	solib_svr4_fetch_link_map_offsets.
	* Makefile.in (sparc64fbsd-tdep.o): Update dependencies.

2005-03-06  Daniel Jacobowitz  <dan@codesourcery.com>

	* linux-nat.c (child_follow_fork): Call target_terminal_ours before
	printing output.  Use fprintf_unfiltered.  Only print output when
	debugging.

2005-03-05  Mark Kettenis  <kettenis@gnu.org>

	* sparc64-tdep.c (sparc64_store_floating_fields): Constify third
	argument.
	(sparc64_store_arguments): Constify.

2005-03-05  Mark Kettenis  <kettenis@gnu.org>

	* alphabsd-nat.c: Update copyright year.  Include "inf-ptrace.h".
	(alphabsd_fetch_inferior_registers): Rename from
	fetch_inferior_registers.  Make static.
	(alphabsd_store_inferior_registers): Rename from
	store_inferior_registers.  Make static.
	(_initialize_alphabsd_nat): New function.
	* Makefile.in (alphabsd-nat.o): Update dependencies.
	* config/alpha/fbsd.mh (NATDEPFILES): Remove infptrace.o and
	inftarg.o.  Add inf-ptrace.o, fbsd-nat.o and gcore.o.
	* config/alpha/nbsd.mh (NAT_CLIBS): Remove variable.
	(NATDEPFILES): Remove infptrace.o and inftarg.o.  Add
	alphabsd-nat.o.
	* config/alpha/nm-fbsd.h: Update copyright year.  Don't include
	"config/nm-bsd.h" and "elf/common.h".
	* config/alpha/nm-nbsd.h: Update copyright year.  Don't include
	"config/nm-nbsd.h".

	* mips64obsd-tdep.c (mips64obsd_init_abi): Don't set
	software_single_step.

2005-03-04  Michael Snyder  <msnyder@redhat.com>

	* mn10300-prologue.c: New file.  Prologue analysis.
	* mn10300-tdep.c: Move REGNUM values to mn10300-tdep.h.
	(mn10300_frame_unwind_cache): Don't call trad_frame_set_id
	until after analyze_prologue, and don't call trad_frame_set_base
	at all (let analyze_prologue do it).

2005-03-04  Michael Snyder  <msnyder@redhat.com>

	* trad-frame.c (trad_frame_set_reg_value): New function.
	* trad-frame.h (trad_frame_set_reg_value): Export.

2005-03-04  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (remote.o): Update dependencies.
	* remote.c: Include "observer.h".

2005-03-04  Daniel Jacobowitz  <dan@codesourcery.com>

	* target.c (target_read_memory_partial): Always initialize
	ERR.
	(target_write_memory_partial): Likewise.

2005-03-03  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (remote_open_1): Call observer_notify_inferior_created.

2005-03-03  Daniel Jacobowitz  <dan@codesourcery.com>

	* arm-tdep.c (arm_make_stub_cache, arm_stub_this_id)
	(arm_stub_unwind, arm_stub_unwind_sniffer): New.
	(arm_gdbarch_init): Add arm_stub_unwind_sniffer.

2005-03-02  Daniel Jacobowitz  <dan@codesourcery.com>

	* linux-nat.c (linux_supports_tracevforkdone, child_follow_fork):
	Use LWP IDs.

2005-02-28  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2loc.c (loclist_read_variable): Set optimized_out
	instead of reporting an error.
	* valprint.c (value_check_printable): New function.
	(common_val_print): New function.  Use value_check_printable.
	(value_print): Use value_check_printable.
	* value.h (common_val_print): Add prototype.

	* c-valprint.c (c_val_print): Use common_val_print.
	* cp-valprint.c (cp_print_value_fields): Likewise.
	(cp_print_hpacc_virtual_table_entries): Likewise.
	* f-valprint.c (f_val_print): Likewise.
	* jv-valprint.c (java_value_print, java_print_value_fields):
	Likewise.
	* scm-valprint.c (scm_value_print): Likewise.
	* stack.c (print_frame_args): Likewise.
	* varobj.c (c_value_of_variable): Likewise.
	* p-valprint.c (pascal_val_print, pascal_value_print): Likewise.
	(pascal_object_print_value_fields): Likewise.  Update call to
	pascal_object_print_static_field.
	(pascal_object_print_static_field): Remove TYPE argument.  Use
	common_val_print.

2005-02-25 Mark Kettenis  <kettenis@gnu.org>

	Committed by Elena Zannoni <ezannoni@redhat.com>

	* dwarf2read.c (dwarf2_build_psymtabs_hard): Adjust
	info_ptr before building psymtabs for included files.
	(create_all_comp_units): Initailize initial length size of
	compilation header to zero.
	(read_initial_length): Complain if both 32-bit and 64-bit DWARF
	sections are encountered within the same compilation header.
	(dwarf_decode_line_header): Pass compilation header in call to
	read_initial_length.

2005-02-24  Andrew Cagney  <cagney@gnu.org>

	Add show_VARIABLE functions, update add_setshow call.
	* varobj.c (_initialize_varobj, show_varobjdebug): Add and update.
	* valprint.c (_initialize_valprint, show_print_max)
	(show_stop_print_at_null, show_repeat_count_threshold)
	(show_prettyprint_structs, show_unionprint)
	(show_prettyprint_arrays, show_addressprint, show_input_radix)
	(show_output_radix): Ditto.
	* valops.c (_initialize_valops, show_overload_resolution): Ditto.
	* utils.c (initialize_utils, show_chars_per_line)
	(show_lines_per_page, show_demangle, show_pagination_enabled)
	(show_sevenbit_strings, show_asm_demangle): Ditto
	* tui/tui-win.c (_initialize_tui_win, show_tui_border_kind)
	(show_tui_border_mode, show_tui_active_border_mode): Ditto.
	* top.c (init_main, show_new_async_prompt)
	(show_async_command_editing_p, show_write_history_p)
	(show_history_size, show_history_filename, show_caution)
	(show_annotation_level, init_main): Ditto.
	* target.c (initialize_targets, show_targetdebug)
	(show_trust_readonly): Ditto.
	* symfile.c (_initialize_symfile, show_symbol_reloading)
	(show_ext_args, show_download_write_size)
	(show_debug_file_directory): Ditto.
	* source.c (_initialize_source, show_lines_to_list): Ditto.
	* solib.c (_initialize_solib, show_auto_solib_add)
	(show_solib_search_path): Ditto.
	* p-valprint.c (_initialize_pascal_valprint)
	(show_pascal_static_field_print): Ditto.
	* printcmd.c (_initialize_printcmd, show_max_symbolic_offset)
	(show_print_symbol_filename): Add and update.
	* parse.c (_initialize_parse, show_expressiondebug): Dito.
	* observer.c (_initialize_observer, show_observer_debug): Dito.
	* maint.c (_initialize_maint_cmds, show_watchdog)
	(show_maintenance_profile_p): Dito.
	* linux-nat.c (_initialize_linux_nat, show_debug_linux_nat): Dito.
	* infrun.c (_initialize_infrun, show_debug_infrun)
	(show_stop_on_solib_events, show_follow_fork_mode_string)
	(show_scheduler_mode, show_step_stop_if_no_debug): Ditto.
	* infcall.c (_initialize_infcall, show_coerce_float_to_double_p)
	(show_unwind_on_signal_p): Ditto.
	* gdbtypes.c (build_gdbtypes, show_opaque_type_resolution)
	(_initialize_gdbtypes, show_overload_debug): Ditto.
	* gdb-events.c, gdb-events.sh (_initialize_gdb_events)
	(show_gdb_events_debug): Ditto.
	* gdbarch.c, gdbarch.sh (show_gdbarch_debug)
	(_initialize_gdbarch): Ditto.
	* frame.c (_initialize_frame, show_backtrace_past_main)
	(show_backtrace_past_entry, show_backtrace_limit)
	(show_frame_debug): Ditto.
	* exec.c (_initialize_exec, show_write_files): Ditto.
	* dwarf2read.c (_initialize_dwarf2_read)
	(show_dwarf2_max_cache_age): Ditto.
	* demangle.c (_initialize_demangler)
	(show_demangling_style_names): Ditto.
	* dcache.c (_initialize_dcache, show_dcache_enabled_p): Ditto.
	* cp-valprint.c (show_static_field_print)
	(_initialize_cp_valprint, show_vtblprint, show_objectprint): Ditto.
	* corefile.c (_initialize_core, show_gnutarget_string): Ditto.
	* cli/cli-logging.c (_initialize_cli_logging)
	(show_logging_overwrite, show_logging_redirect)
	(show_logging_filename): Ditto.
	* cli/cli-cmds.c (show_info_verbose, show_history_expansion_p)
	(init_cli_cmds, show_baud_rate, show_remote_debug)
	(show_remote_timeout, show_max_user_call_depth): Ditto.
	* charset.c (show_host_charset_name, show_target_charset_name)
	(initialize_charset): Ditto.
	* breakpoint.c (show_can_use_hw_watchpoints)
	(show_pending_break_support, _initialize_breakpoint): Ditto.

2005-02-23  Jim Blandy  <jimb@redhat.com>

	* disasm.c (gdb_disassemble_info): Call disassemble_init_for_target.

2005-02-23  Andrew Cagney  <cagney@gnu.org>

	* cli/cli-dump.c (dump_bfd_file): Replace magic constant with
	SEC_XXX flags.

2005-02-22  Andrew Cagney  <cagney@gnu.org>

	* configure.ac: Only enaable insight when itcl is present.
	* configure: Re-generate.

2005-02-21  Thiemo Seufer  <seufer@csv.ica.uni-stuttgart.de>

	Committed by Andrew Cagney.
	* infptrace.c (store_register): Fix typo.

2005-02-21  Andrew Cagney  <cagney@gnu.org>

	* command.h (deprecated_add_set_cmd): Rename add_set_cmd.
	* cli/cli-decode.h (add_set_cmd): Delete declaration.
	* cli/cli-decode.c (deprecated_add_set_cmd): Rename add_set_cmd.
	* i386-nat.c (_initialize_i386_nat): Update call.
	* valprint.c (_initialize_valprint): Update comment.
	* gnu-nat.c (_initialize_gnu_nat): Update call.

2005-02-21  Alan Modra  <amodra@bigpond.net.au>

	* elfread.c (elf_symtab_read): Discard section syms.

2005-02-21  Andrew Cagney  <cagney@gnu.org>

	* cli/cli-decode.c (add_set_enum_cmd): Delete function.
	(deprecated_add_show_from_set): Delete function.
	* command.h (add_set_enum_cmd): Delete declaration.
	(deprecated_add_show_from_set): Delete declaration.
	* cli/cli-decode.h (add_set_enum_cmd): Delete declaration.
	(deprecated_add_show_from_set): Delete declaration.
	* arm-tdep.c (_initialize_arm_tdep): Update comment.
	* kod.c (kod_set_os): Simplify.
	* infrun.c (set_schedlock_func): Simplify.
	* cli/cli-dump.c (add_dump_command): Update comment.

	Replace string variables with a filename completer with
	add_setshow_optional_filename_cmd.
	* solib.c, symfile.c: Update.
	* cli/cli-setshow.c: Do not tidle expand the file.

	Add more uses of add_setshow_string_cmd, add_setshow_integer_cmd,
	and add_setshow_string_noescape_cmd.
	* cli/cli-setshow.c (deprecated_show_value_hack): Do not print a
	NULL command's value.
	* kod.c, language.c, ocd.c, remote-e7000.c, remote-mips.c: Update.
	* remote-sds.c, remote.c, symfile.c, top.c: Update.

2005-02-20  Andrew Cagney  <cagney@gnu.org>

	Use add_setshow_enum_cmd through out.
	* arch-utils.c, charset.c, demangle.c, i386-tdep.c: Update.
	* infrun.c, mips-tdep.c, osabi.c, serial.c, tui/tui-win.c: Update.

	* mi/mi-main.c (captured_mi_execute_command): Use
	mi_cmd_interpreter_exec.

	* cli/cli-decode.c (add_setshow_optional_filename_cmd): New
	function.
	* cli/cli-setshow.c (deprecated_show_value_hack)
	(do_setshow_command): Handle var_optional_filename.
	* command.h (enum var_types): Add var_optional_filename.
	(add_setshow_optional_filename_cmd): Declare.
	* infcmd.c (notice_args_read): Use.

	* symfile-mem.c (symbol_file_add_from_memory): Pass
	target_read_memory to bfd_elf_bfd_from_remote_memory.
	(do_target_read_memory): Delete.

2005-02-16  Mark Kettenis  <kettenis@gnu.org>

	* value.h (value_contents_equal): New prototype.
	* value.c (value_contents_equal): New function.
	* varobj.c: Include "exceptions.h" and "gdb_assert.h".  Don't
	include <math.h>.
	(varobj_set_value): Initialize error to zero.
	(varobj_update): Rename error2 to error and initialize it to zero.
	Slightly change the wording of some comments.
	(my_value_equal): Reimplement using TRY_CATCH and
	value_contents_equal.

2005-02-18  Andrew Cagney  <cagney@gnu.org>

	* cli/cli-decode.c (add_setshow_integer_cmd): New function.
	* command.h (add_setshow_integer_cmd): Declare.
	* cli/cli-cmds.c: Update.

	Use add_setshow_uinteger_cmd through out.
	* printcmd.c, source.c, utils.c, valprint.c: Update.

	Use add_setshow_zinteger_cmd through out.  Re-sync gdbarch.sh
	and gdbarch.c.
	* breakpoint.c, frame.c, gdb-events.sh, gdbarch.sh: Update.
	* gdbtypes.c, infrun.c, linux-nat.c, maint.c, monitor.c: Update.
	* pa64solib.c, parse.c, remote-mips.c, ser-go32.c: Update.
	* serial.c, solib-frv.c, somsolib.c, target.c, top.c: Update.
	* varobj.c, cli/cli-cmds.c: Update.
	* gdbarch.c, gdb-events.c: Regenerate.

	Use add_setshow_boolean_command through out.  Delete #ifdef 0'ed
	code adding set/show boolean commands.
	* cp-valprint.c, dcache.c, exec.c, gdbtypes.c, infrun.c: Update.
	* monitor.c, p-valprint.c, pa64solib.c, printcmd.c: Update.
	* proc-api.c, remote-mips.c, remote.c, solib.c: Update.
	* somsolib.c, symfile.c, top.c, utils.c, valops.c: Update.
	* valprint.c, win32-nat.c, wince.c, xcoffsolib.c: Update.
	* cli/cli-cmds.c: Update.

2005-02-17  Andrew Cagney  <cagney@gnu.org>

	* cli/cli-decode.c (add_setshow_filename_cmd): Set the completer
	to filename_completer.
	* solib.c (_initialize_solib, reload_shared_libraries): Use
	add_setshow_filename_cmd.
	* serial.c (_initialize_serial): Ditto.
	* remote-utils.c (_initialize_sr_support): Ditto.

	* cli/cli-decode.c (add_setshow_string_noescape_cmd): New function.
	* command.h (add_setshow_string_noescape_cmd): Declare.
	* wince.c (_initialize_wince): Use.
	* symfile.c (_initialize_symfile): Use.
	(set_ext_lang_command): Update declaration.
	* corefile.c (_initialize_core): Use.

	* cli/cli-decode.c (add_setshow_cmd_full, add_setshow_enum_cmd)
	(add_setshow_auto_boolean_cmd, add_setshow_boolean_cmd)
	(add_setshow_filename_cmd, add_setshow_string_cmd)
	(add_setshow_uinteger_cmd, add_setshow_zinteger_cmd): Delete
	fprint_setshow parameter.
	* command.h (fprint_setshow_ftype): Delete.
	(add_setshow_cmd_full, add_setshow_enum_cmd)
	(add_setshow_auto_boolean_cmd, add_setshow_boolean_cmd)
	(add_setshow_filename_cmd, add_setshow_string_cmd)
	(add_setshow_uinteger_cmd, add_setshow_zinteger_cmd): Delete
	fprint_setshow parameter.
	* aix-thread.c, alpha-tdep.c, arm-tdep.c, breakpoint.c: Update.
	* complaints.c, cris-tdep.c, dwarf2read.c, frame.c: Update.
	* hppa-tdep.c, infcall.c, m32r-rom.c, maint.c: Update.
	* mips-tdep.c, nto-tdep.c, observer.c, remote-rdi.c: Update
	* remote.c, target.c, cli/cli-logging.c: Update.

2005-02-16  Andrew Cagney  <cagney@gnu.org>

	Merge setshow print and show parameters.
	* command.h (show_value_ftype): Define.
	(deprecated_show_value_hack): Declare.
	(add_setshow_enum_cmd, add_setshow_auto_boolean_cmd)
	(add_setshow_boolean_cmd, add_setshow_filename_cmd)
	(add_setshow_string_cmd, add_setshow_uinteger_cmd)
	(add_setshow_zinteger_cmd): Change type of show_func to
	show_value_ftype.
	* cli/cli-decode.h (struct cmd_list_element): Replace
	fprint_setshow with show_value_func.
	* cli/cli-decode.c (add_setshow_cmd_full): Update show_func
	parameter.  Set show_value_func.  Do not set cmd_sfunc.
	(add_setshow_enum_cmd, add_setshow_auto_boolean_cmd)
	(add_setshow_boolean_cmd, add_setshow_filename_cmd)
	(add_setshow_string_cmd, add_setshow_uinteger_cmd)
	(add_setshow_zinteger_cmd): Update.
	* complaints.c (complaints_show_value): Replace
	fprint_setshow_complaints.
	(_initialize_complaints): Update.
	* mips-tdep.c (show_mask_address): Update.
	* arm-tdep.c (show_fp_model): Update.
	* cli/cli-setshow.c (do_setshow_command): Call show_value_func
	instead of fprint_setshow.  Use deprecated_show_value_hack.
	(deprecated_show_value_hack): New function.
	* remote.c (add_packet_config_cmd, show_remote_cmd):
	(show_remote_protocol_P_packet_cmd)
	(show_remote_protocol_P_packet_cmd)
	(show_remote_protocol_Z_access_wp_packet_cmd)
	(show_remote_protocol_Z_hardware_bp_packet_cmd)
	(show_remote_protocol_Z_packet_cmd)
	(show_remote_protocol_Z_read_wp_packet_cmd)
	(show_remote_protocol_Z_software_bp_packet_cmd)
	(show_remote_protocol_Z_write_wp_packet_cmd)
	(show_remote_protocol_binary_download_cmd)
	(show_remote_protocol_p_packet_cmd)
	(show_remote_protocol_qPart_auxv_packet_cmd)
	(show_remote_protocol_qSymbol_packet_cmd)
	(show_remote_protocol_vcont_packet_cmd): Update.

2005-02-16  Mark Kettenis  <kettenis@gnu.org>

	* wrapper.h: Update copyright year.  Properly wrap a few
	prototypes.
	(struct gdb_wrapper_arguments): Remove forward declaration.
	* wrapper.c: Update copyright year.  Include "ui-out.h".
	(struct gdb_wrapper_arguments): Remove.
	(struct captured_value_struct_elt_args): Remove.
	(wrapper_parse_exp_1, wrap_evaluate_expression)
	(wrap_value_fetch_lazy, wrap_value_equal, wrap_value_assign)
	(wrap_value_subscript, wrap_value_ind, wrap_parse_and_eval_type)
	(do_captured_value_struct_elf): Remove functions.
	(gdb_parse_exp_1, gdb_evaluate_expression, gdb_value_fetch_lazy)
	(gdb_value_equal, gdb_value_assign, gdb_value_subscript)
	(gdb_value_ind, gdb_parse_and_eval_type, gdb_value_struct_elt):
	Re-implement using TRY_CATCH.

2005-02-16  Yoshinori Sato  <ysato@users.sourceforge.jp>

	* remote-e7000.c: unuse TM_FILE defined macro.
	(e7000_fetch_registers)
	(e7000_store_registers)
	(e7000_wait): delete NUM_REALREGS.
	* remote-hms.c: move TM_FILE macro.
	(CCR_REGNO): move define from tm-h8300.h.

2005-02-15  Mark Kettenis  <kettenis@gnu.org>

	* amd64-linux-tdep.c: Update copyright year.
	(amd64_linux_sigtramp_start): Use sizeof operator instead of
	LINUX_SIGTRAMP_LEN.

2004-02-15  Joel Brobecker  <brobecker@gnat.com>

	From Paul Hilfinger <hilfinger@gnat.com>
	* dwarf2read.c (new_symbol): Use SYMBOL_SEARCH_NAME rather than
	SYMBOL_NATURAL_NAME to set type names.

2005-02-15  Andrew Cagney  <cagney@gnu.org>

	Mark up add_com, add_info and add_prefix_cmd.
	* breakpoint.c, cp-support.c, dcache.c, dwarf2read.c: Update.
	* exec.c, f-valprint.c, frame.c, gcore.c, gnu-nat.c: Update.
	* go32-nat.c, infcmd.c, inflow.c, infptrace.c, infrun.c: Update.
	* kod.c, language.c, linux-nat.c, m32r-rom.c, macrocmd.c: Update.
	* maint.c, memattr.c, mips-tdep.c, nto-procfs.c, objc-lang.c: Update.
	* ocd.c, pa64solib.c, printcmd.c, procfs.c, regcache.c: Update.
	* remote-e7000.c, remote-m32r-sdi.c, remote-mips.c: Update.
	* remote-sds.c, remote-sim.c, remote-st.c, remote-utils.c: Update.
	* remote.c, rs6000-tdep.c, ser-go32.c, serial.c: Update.
	* sh-tdep.c, solib.c, somsolib.c, source.c, stack.c: Update.
	* symfile.c, symtab.c, target.c, thread.c, top.c: Update.
	* tracepoint.c, typeprint.c, utils.c, valprint.c: Update.
	* win32-nat.c, xcoffsolib.c, cli/cli-cmds.c, cli/cli-dump.c: Update.
	* cli/cli-logging.c, tui/tui-layout.c, tui/tui-regs.c: Update.
	* tui/tui-stack.c, tui/tui-win.c: Update.

2005-02-14  Andrew Cagney  <cagney@gnu.org>

	* config/h8300/h8300.mt (DEPRECATED_TM_FILE): Delete.
	* config/h8300/tm-h8300.h: Delete file.

	Mark up add_cmd.
	* arch-utils.c, avr-tdep.c, breakpoint.c, corefile.c: Update.
	* cp-abi.c, cp-namespace.c, cp-support.c, dummy-frame.c: Update.
	* exec.c, gnu-nat.c, go32-nat.c, hppa-tdep.c, infcmd.c: Update.
	* infrun.c, interps.c, macrocmd.c, maint.c, memattr.c: Update.
	* mips-tdep.c, ocd.c, osabi.c, printcmd.c, regcache.c: Update.
	* reggroups.c, remote-fileio.c, remote-rdi.c, remote.c: Update.
	* sol-thread.c, source.c, stack.c, symfile-mem.c: Update.
	* symfile.c, thread.c, tracepoint.c, valprint.c, value.c: Update.
	* win32-nat.c, cli/cli-cmds.c, cli/cli-dump.c: Update.
	* cli/cli-logging.c, tui/tui-regs.c: Update.

	Mark up add_setshow functions, replace "PRINT:" comment prefix
	with "FIXME: i18n:".
	* aix-thread.c, alpha-tdep.c, arm-tdep.c, breakpoint.c: Update.
	* cris-tdep.c, dwarf2read.c, frame.c, hppa-tdep.c: Update.
	* infcall.c, m32r-rom.c, maint.c, mips-tdep.c: Update.
	* nto-tdep.c, observer.c, remote-rdi.c, remote.c: Update.
	* target.c, cli/cli-logging.c: Update.

	* utils.c (paddress): New function.
	* defs.h (paddress): Declare.
	* printcmd.c (deprecated_print_address_numeric): Rename
	print_address_numeric, call paddress.
	* valprint.c, ui-out.c, tui/tui-stack.c, tracepoint.c: Update.
	* symmisc.c, symfile.c stack.c, p-valprint.c, printcmd.c: Update.
	* maint.c, m32r-rom.c, infcmd.c, f-valprint.c, exec.c: Update.
	* dwarf2read.c, dve3900-rom.c, defs.h, c-valprint.c: Update.
	* corefile.c, cli/cli-cmds.c, breakpoint.c, annotate.c: Update.
	* ada-valprint.c: Update.

2005-02-13  Ramana Radhakrishnan  <ramana.radhakrishnan@codito.com>

	* MAINTAINERS: Add myself to "Write After Approval".

2005-02-12  Yoshinori Sato <ysato@users.sourceforge.jp>

	Restore h8300 support.
	* configure.tgt: Add h8300-*-*
	* h8300-tdep.c: New file. Rewrite new frame code.
	* config/h8300/h8300.mt: New file. Restored Rev 1.3
	* config/h8300/tm-h8300.h: New file. Restored Rev 1.21

	* MAINTAINERS: Add myself to "Write After Approval".

2005-02-11  Andrew Cagney  <cagney@gnu.org>

	Mark up some of printf_filtered and printf_unfiltered.
	* ada-lang.c, annotate.c, arch-utils.c, breakpoint.c: Update.
	* corelow.c, cp-namespace.c, cp-support.c, dcache.c: Update.
	* demangle.c, dsrec.c, dwarf2read.c, dwarfread.c: Update.
	* event-loop.c, event-top.c, exec.c, f-valprint.c: Update.
	* gdbtypes.c, inf-loop.c, inf-ptrace.c, inf-ttrace.c: Update.
	* infcmd.c, inflow.c, infrun.c, inftarg.c, language.c: Update.
	* linespec.c, linux-nat.c, linux-thread-db.c, maint.c: Update.
	* mdebugread.c, memattr.c, monitor.c, objc-lang.c: Update.
	* ocd.c, osabi.c, printcmd.c, procfs.c, regcache.c: Update.
	* remote.c, solib-som.c, solib.c, somsolib.c, source.c: Update.
	* stack.c, symfile.c, symmisc.c, target.c, thread.c: Update.
	* top.c, utils.c, valprint.c, value.c, cli/cli-cmds.c: Update.
	* cli/cli-dump.c, cli/cli-logging.c, tui/tui-hooks.c: Update.
	* tui/tui-regs.c, tui/tui-win.c: Update.

	Mark up error_no_arg, query, perror_with_name, complaint, and
	internal_error.
	* breakpoint.c, cp-abi.c, cp-namespace.c, cp-support.c: Update.
	* cris-tdep.c, dbxread.c, dictionary.c, dsrec.c: Update.
	* dummy-frame.c, dve3900-rom.c, dwarf2-frame.c, dwarf2expr.c: Update.
	* dwarf2read.c, dwarfread.c, elfread.c, event-loop.c: Update.
	* exceptions.c, exec.c, f-lang.c, findvar.c, fork-child.c: Update.
	* frame-unwind.c, frame.c, frv-linux-tdep.c, frv-tdep.c: Update.
	* gdb_assert.h, gdbarch.c, gdbtypes.c, gnu-nat.c: Update.
	* go32-nat.c, hppa-tdep.c, hppabsd-nat.c, hpread.c: Update.
	* i386-linux-nat.c, i386-nat.c, i386-tdep.c, i386bsd-nat.c: Update.
	* i386fbsd-nat.c, inf-ptrace.c, inf-ttrace.c, infcall.c: Update.
	* infcmd.c, inflow.c, infptrace.c, infrun.c, inftarg.c: Update.
	* interps.c, language.c, linespec.c, linux-nat.c: Update.
	* m32r-linux-nat.c, m68k-tdep.c, m68kbsd-nat.c: Update.
	* m68klinux-nat.c, m88kbsd-nat.c, macroexp.c, macroscope.c: Update.
	* macrotab.c, maint.c, mdebugread.c, memattr.c: Update.
	* mips-linux-tdep.c, mips-tdep.c, mips64obsd-nat.c: Update.
	* mipsnbsd-nat.c, mn10300-tdep.c, monitor.c, nto-procfs.c: Update.
	* objc-lang.c, objfiles.c, objfiles.h, ocd.c, osabi.c: Update.
	* parse.c, ppc-bdm.c, ppc-linux-nat.c, ppc-sysv-tdep.c: Update.
	* ppcnbsd-nat.c, ppcobsd-nat.c, printcmd.c, procfs.c: Update.
	* regcache.c, reggroups.c, remote-e7000.c, remote-mips.c: Update.
	* remote-rdp.c, remote-sds.c, remote-sim.c, remote-st.c: Update.
	* remote-utils.c, remote.c, rs6000-nat.c, rs6000-tdep.c: Update.
	* s390-nat.c, s390-tdep.c, sentinel-frame.c, serial.c: Update.
	* sh-tdep.c, sh3-rom.c, sh64-tdep.c, shnbsd-nat.c: Update.
	* solib-aix5.c, solib-svr4.c, solib.c, source.c: Update.
	* sparc-nat.c, stabsread.c, stack.c, symfile.c, symtab.c: Update.
	* symtab.h, target.c, tracepoint.c, ui-file.c, ui-out.c: Update.
	* utils.c, valops.c, valprint.c, vax-nat.c, vaxbsd-nat.c: Update.
	* win32-nat.c, xcoffread.c, xstormy16-tdep.c: Update.
	* cli/cli-cmds.c, cli/cli-logging.c, cli/cli-script.c: Update.
	* cli/cli-setshow.c, mi/mi-cmd-break.c, mi/mi-cmds.c: Update.
	* mi/mi-console.c, mi/mi-getopt.c, mi/mi-out.c: Update.
	* tui/tui-file.c, tui/tui-interp.c: Update.

2005-02-10  Andrew Cagney  <cagney@gnu.org>

	Mark up all error and warning messages.
	* ada-lang.c, amd64-tdep.c, arch-utils.c, breakpoint.c: Update.
	* bsd-kvm.c, bsd-uthread.c, coff-solib.h, coffread.c: Update.
	* core-aout.c, core-regset.c, corefile.c, corelow.c: Update.
	* cp-abi.c, cp-support.c, cp-valprint.c, cris-tdep.c: Update.
	* dbxread.c, demangle.c, doublest.c, dsrec.c: Update.
	* dve3900-rom.c, dwarf2expr.c, dwarf2loc.c: Update.
	* dwarf2read.c, dwarfread.c, elfread.c, eval.c: Update.
	* event-top.c, exec.c, expprint.c, f-lang.c: Update.
	* f-typeprint.c, f-valprint.c, fbsd-nat.c, findvar.c: Update.
	* frame.c, frv-linux-tdep.c, gcore.c, gdbtypes.c: Update.
	* gnu-nat.c, gnu-v2-abi.c, gnu-v3-abi.c, go32-nat.c: Update.
	* hpacc-abi.c, hppa-hpux-nat.c, hppa-hpux-tdep.c: Update.
	* hppa-linux-nat.c, hppa-linux-tdep.c, hppa-tdep.c: Update.
	* hpread.c, hpux-thread.c, i386-linux-nat.c: Update.
	* i386-linux-tdep.c, i386-tdep.c, i386bsd-nat.c: Update.
	* i386gnu-nat.c, i387-tdep.c, ia64-linux-nat.c: Update.
	* ia64-tdep.c, inf-child.c, inf-ptrace.c, inf-ttrace.c: Update.
	* infcall.c, infcmd.c, inflow.c, infptrace.c, infrun.c: Update.
	* inftarg.c, interps.c, irix5-nat.c, jv-lang.c: Update.
	* kod-cisco.c, kod.c, language.c, libunwind-frame.c: Update.
	* linespec.c, linux-nat.c, linux-thread-db.c, m2-lang.c: Update.
	* m32r-rom.c, m68hc11-tdep.c, m68k-tdep.c: Update.
	* m68klinux-nat.c, macrocmd.c, macroexp.c, main.c: Update.
	* maint.c, mdebugread.c, mem-break.c, memattr.c: Update.
	* mips-linux-tdep.c, mips-tdep.c, mipsread.c, monitor.c: Update.
	* nlmread.c, nto-procfs.c, objc-lang.c, objfiles.c: Update.
	* observer.c, ocd.c, p-lang.c, p-typeprint.c: Update.
	* p-valprint.c, pa64solib.c, parse.c, ppc-linux-tdep.c: Update.
	* ppcnbsd-tdep.c, printcmd.c, procfs.c, remote-e7000.c: Update.
	* remote-fileio.c, remote-m32r-sdi.c, remote-rdi.c: Update.
	* remote-rdp.c, remote-sim.c, remote-st.c: Update.
	* remote-utils.c, remote-utils.h, remote.c: Update.
	* rom68k-rom.c, rs6000-nat.c, s390-tdep.c, scm-lang.c: Update.
	* ser-e7kpc.c, ser-tcp.c, ser-unix.c, sh-tdep.c: Update.
	* sh3-rom.c, shnbsd-tdep.c, sol-thread.c, solib-aix5.c: Update.
	* solib-frv.c, solib-irix.c, solib-osf.c, solib-pa64.c: Update.
	* solib-som.c, solib-sunos.c, solib-svr4.c, solib.c: Update.
	* somread.c, somsolib.c, source.c, stabsread.c: Update.
	* stack.c, std-regs.c, symfile-mem.c, symfile.c: Update.
	* symmisc.c, symtab.c, target.c, thread.c, top.c: Update.
	* tracepoint.c, trad-frame.c, typeprint.c, utils.c: Update.
	* uw-thread.c, valarith.c, valops.c, valprint.c: Update.
	* value.c, varobj.c, version.in, win32-nat.c, wince.c: Update.
	* xcoffread.c, xcoffsolib.c, cli/cli-cmds.c: Update.
	* cli/cli-decode.c, cli/cli-dump.c, cli/cli-logging.c: Update.
	* cli/cli-script.c, cli/cli-setshow.c, mi/mi-cmd-break.c: Update.
	* mi/mi-cmd-disas.c, mi/mi-cmd-env.c, mi/mi-cmd-file.c: Update.
	* mi/mi-cmd-stack.c, mi/mi-cmd-var.c, mi/mi-getopt.c: Update.
	* mi/mi-symbol-cmds.c, tui/tui-layout.c, tui/tui-stack.c: Update.
	* tui/tui-win.c: Update.

2005-02-10  Ian Lance Taylor  <ian@airs.com>

	* MAINTAINERS: Update my e-mail address.

2005-02-10  Daniel Jacobowitz  <dan@debian.org>

	From Ramana Radhakrishnan <ramana.radhakrishnan@codito.com>:
	PR exp/1821
	* cp-valprint.c: Include "language.h".
	(cp_print_value_fields): Pass the current language to
	fprintf_symbol_filtered.
	* Makefile.in (cp-valprint.o): Update dependencies.

2005-02-10  Andrew Cagney  <cagney@gnu.org>

	* cli/cli-decode.c (add_setshow_enum_cmd, add_setshow_cmd_full)
	(add_setshow_auto_boolean_cmd, add_setshow_boolean_cmd)
	(add_setshow_filename_cmd, add_setshow_string_cmd)
	(add_setshow_uinteger_cmd, add_setshow_zinteger_cmd): Replace
	print string parameter with fprint_setshow function.
	* command.h (fprint_setshow_ftype): Define.  Update declarations.
	* cli/cli-setshow.c (do_setshow_command): When fprint_setshow is
	available, use that.
	* cli/cli-decode.h (struct cmd_list_element): Add field
	fprint_setshow.
	* complaints.c (fprint_setshow_complaints): New function.
	(_initialize_complaints): Pass to add_setshow_zinteger_cmd.
	* hppa-tdep.c (_initialize_hppa_tdep): Replace "print" parameter
	with NULL.
	* mips-tdep.c (_initialize_mips_tdep): Ditto.
	* m32r-rom.c (_initialize_m32r_rom): Ditto.
	* cris-tdep.c (_initialize_cris_tdep): Ditto.
	* arm-tdep.c (_initialize_arm_tdep): Ditto.
	* remote-rdi.c (_initialize_remote_rdi): Ditto.
	* alpha-tdep.c (_initialize_alpha_tdep): Ditto.
	* dwarf2read.c (_initialize_dwarf2_read): Ditto.
	* frame.c (_initialize_frame): Ditto.
	* target.c (initialize_targets): Ditto.
	* maint.c (_initialize_maint_cmds): Ditto.
	* observer.c (_initialize_observer): Ditto.
	* infcall.c (_initialize_infcall): Ditto.
	* breakpoint.c (_initialize_breakpoint): Ditto.
	* cli/cli-logging.c (_initialize_cli_logging): Ditto.
	* remote.c (add_packet_config_cmd, _initialize_remote): Ditto.

	* cli/cli-setshow.c (do_setshow_command): Move code printing the
	value to the end of the function.  Handle MI and non-MI output
	differently.

2005-02-09  Andrew Cagney  <cagney@gnu.org>

	* cli/cli-decode.c (add_setshow_enum_cmd): Drop set_result and
	show_result parameters.
	* mips-tdep.c (_initialize_mips_tdep): Update calls.
	* command.h: Update declaration.
	* arm-tdep.c (_initialize_arm_tdep, _initialize_arm_tdep): Update
	calls.

	* NEWS: Mention removed commands.
	* m68hc11-tdep.c (show_regs): Delete, unused.
	(_initialize_m68hc11_tdep): Delete deprecated "regs" command.
	* gdb-events.sh: Delete deprecated "set eventdebug" and "show
	eventdebug" commands.
	* gdb-events.c: Regenerate.
	* gdbarch.sh: Delete deprecated "set archdebug" and "show
	archdebug" commands.
	* gdbarch.c: Regenerate.
	* cli/cli-cmds.c (init_cli_cmds): Delete deprecated "set
	remotedebug" and "show remotedebug".
	* arm-tdep.c (_initialize_arm_tdep): Delete deprecated "set arm
	disassembly-flavor", "show arm disassembly-flavor", and
	"othernames" commands.
	(arm_othernames): Delete unused function.

	* ppc-sysv-tdep.c (ppc64_sysv_abi_push_dummy_call)
	(convert_code_addr_to_desc_addr): Convert any function code
	address to the corresponding function's descriptor.
	(ppc64_sysv_abi_return_value): have TYPE_CODE_ENUM and
	TYPE_CODE_INT use the same code paths as TYPE_CODE_INT.  When
	writing, convert any function code address to the corresponding
	descriptor.

	* config/sh/linux.mt (TDEPFILES): Add symfile-mem.o.
	* config/powerpc/linux.mt (TDEPFILES): Ditto.
	* config/pa/linux.mt (TDEPFILES): Ditto.
	* config/mips/linux.mt (TDEPFILES): Ditto.
	* config/m68k/linux.mt (TDEPFILES): Ditto.
	* config/m32r/linux.mt (TDEPFILES): Ditto.
	* config/ia64/linux.mt (TDEPFILES): Ditto.
	* config/arm/linux.mt (TDEPFILES): Ditto.

2005-02-09  Corinna Vinschen  <vinschen@redhat.com>

	* symmisc.c: Include gdb_stat.h.
	(maintenance_print_msymbols): Use inode numbers to compare files.

2005-02-08  Andrew Cagney  <cagney@gnu.org>

	* value.h (METHOD_PTR_IS_VIRTUAL, METHOD_PTR_FROM_VOFFSET)
	(METHOD_PTR_TO_VOFFSET): Move from here ...
	* cp-support.h (METHOD_PTR_IS_VIRTUAL, METHOD_PTR_FROM_VOFFSET)
	(METHOD_PTR_TO_VOFFSET): ... to here.
	* cp-valprint.c, p-valprint.c, eval.c: Include "cp-support.h".
	* Makefile.in: Update dependencies.

	* exceptions.c: Do not include <setjmp.h>.
	(SIGJMP_BUF, SIGSETJMP, SIGLONGJMP): Delete macros.
	(catch_exception, catch_exceptions_with_msg, catch_errors)
	(catch_command_errors): Use TRY_CATCH.
	(struct catcher): Use EXCEPTIONS_SIGJMP_BUF.
	(exceptions_state_mc_init): Rename catcher_init.
	(exceptions_state_mc): Rename catcher_state_machine.
	(exceptions_state_mc_action_iter)
	(exceptions_state_mc_action_iter_1): New functions.
	* exceptions.h: Include <setjmp.h>.
	(EXCEPTIONS_SIGJMP_BUF, EXCEPTIONS_SIGSETJMP)
	(EXCEPTIONS_SIGLONGJMP): Define.
	(exceptions_state_mc_init, exceptions_state_mc_action_iter)
	(exceptions_state_mc_action_iter_1): Declare.
	(TRY_CATCH): Define.

	* ppc-linux-tdep.c (ppc_linux_init_abi): Do not set malloc name,
	no longer needed.

	* ppc-linux-nat.c (ppc_register_u_addr): Hack around 64-bit
	PT_FPSCR breakage.

	* value.c (struct value): Move to here ...
	* value.h (struct value): ... from here.  Copy comments to
	corresponding function declarations, re-order.

2005-02-07  Andrew Cagney  <cagney@gnu.org>

	* value.c (set_value_bitpos, set_value_bitsize): Define.
	* value.h (set_value_bitpos, set_value_bitsize): Declare.
	* ada-lang.c, valarith.c: Update.

	* cp-valprint.c, c-valprint.c, infcall.c: Use value_contents or
	value_contents_writeable, include note that there are problems.
	* breakpoint.c, infcall.c: Use VALUE_LVAL.

	* value.h (set_value_offset): Declare.
	* value.c (set_value_offset): Declare.
	* gnu-v2-abi.c, jv-valprint.c, valarith.c, valops.c: Update.
	* findvar.c: Update.

	* value.h (value_next): Declare.
	* value.c (value_next): Define.
	* breakpoint.c: Update.

	* value.h (deprecated_set_value_modifiable)
	(deprecated_value_modifiable): Declare.
	* value.c (deprecated_set_value_modifiable): Define.
	(deprecated_value_modifiable): Define.
	* ada-lang.c, valops.c, breakpoint.c, tracepoint.c: Update.

	* value.h (deprecated_set_value_type): Declare.
	* value.c (deprecated_set_value_type): Define.
	* hpacc-abi.c, gnu-v2-abi.c, cp-valprint.c: Update.
	* c-valprint.c, jv-lang.c, objc-lang.c, ada-lang.c: Update.
	* infcall.c, printcmd.c, valops.c, eval.c, p-exp.y: Update.
	* ax-gdb.c, tracepoint.c: Update.

	* value.h (deprecated_value_lval_hack)
	(deprecated_value_address_hack)
	(deprecated_value_internalvar_hack)
	(deprecated_value_regnum_hack): Declare.
	(VALUE_LVAL, VALUE_ADDRESS, VALUE_INTERNALVAR)
	(VALUE_FRAME_ID, VALUE_REGNUM): Use.
	* value.c (deprecated_value_lval_hack)
	(deprecated_value_address_hack)
	(deprecated_value_internalvar_hack)
	(deprecated_value_regnum_hack): Define.

	* value.h (VALUE_POINTED_TO_OFFSET): Delete.
	(set_value_pointed_to_offset, value_pointed_to_offset): Declare.
	* value.c (set_value_pointed_to_offset): Define
	(value_pointed_to_offset): Define.
	* valops.c: Update.

	* value.h (VALUE_EMBEDDED_OFFSET): Delete.
	(value_embedded_offset, set_value_embedded_offset): Declare.
	* value.c (value_embedded_offset): Define.
	(set_value_embedded_offset): Define.
	* valops.c, p-valprint.c, mi/mi-main.c, hpacc-abi.c: Update.
	* gnu-v3-abi.c, eval.c, c-valprint.c, cp-valprint.c: Update.
	* cp-abi.h: Update.

	* value.h (VALUE_LAZY): Delete
	(set_value_lazy): Declare.
	* value.c (set_value_lazy): Define.
	* valops.c, valarith.c, jv-valprint.c, jv-lang.c: Update.
	* gnu-v2-abi.c, findvar.c, dwarf2loc.c, ada-lang.c: Update.

2005-02-06  Andrew Cagney  <cagney@gnu.org>

	* value.h (VALUE_OPTIMIZED_OUT): Delete.
	(value_optimized_out, set_value_optimized_out): Declare.
	* value.c (set_value_optimized_out, value_optimized_out): Define.
	* valprint.c, findvar.c, dwarf2loc.c: Update.

	* value.c (value_contents, value_contents_writeable): New
	functions.
	* value.h (VALUE_CONTENTS): Delete macro.
	(value_contents, value_contents_writeable): Declare.
	* xstormy16-tdep.c, value.c, valops.c, valarith.c: Update.
	* stack.c, sparc-tdep.c, sparc64-tdep.c, sh-tdep.c: Update.
	* sh64-tdep.c, scm-valprint.c, scm-exp.c, s390-tdep.c: Update.
	* rs6000-tdep.c, p-valprint.c, printcmd.c: Update.
	* ppc-sysv-tdep.c, mips-tdep.c, mi/mi-main.c: Update.
	* m88k-tdep.c, m68hc11-tdep.c, m32r-tdep.c: Update.
	* jv-valprint.c, ia64-tdep.c, hppa-tdep.c: Update.
	* hpacc-abi.c, f-valprint.c, frv-tdep.c, eval.c: Update.
	* c-valprint.c, cris-tdep.c, cp-valprint.c: Update.
	* cli/cli-dump.c, breakpoint.c, avr-tdep.c, arm-tdep.c: Update.
	* arm-linux-tdep.c, amd64-tdep.c, alpha-tdep.c: Update.
	* ada-valprint.c, ada-lang.c: Update.

2005-02-03  Andrew Cagney  <cagney@gnu.org>

	* utils.c (xzalloc): New function.
	* defs.h (XZALLOC): Use xzalloc.
	(xzalloc): Declare.
	* value.c (allocate_value): Allocate a zeroed buffer.
	* mdebugread.c (xzalloc): Delete.

2005-02-02  Andrew Cagney  <cagney@gnu.org>

	* value.h (value_lazy): Declare.
	* varobj.c, value.c, valops.c, valarith.c, printcmd.c: Update.
	* cp-valprint.c, breakpoint.c, ada-lang.c: Update.

	* value.h (VALUE_CONTENTS_ALL): Delete.
	(value_contents_all): Declare.
	* value.c (value_contents_all): New function.
	* hpacc-abi.c, cp-valprint.c, valops.c, c-valprint.c: Update.
	* m68k-tdep.c, i386-tdep.c, infcall.c, valops.c: Update.

	* value.c (value_enclosing_type): New function.
	* value.h (VALUE_ENCLOSING_TYPE): Delete.
	(value_enclosing_type): Declare.
	* xstormy16-tdep.c, vax-tdep.c, m68k-tdep.c, i386-tdep.c: Update.
	* gnu-v3-abi.c, hpacc-abi.c, infcall.c, valops.c: Update.

	* value.c (value_contents_all_raw)
	(value_contents_raw): New functions.
	* value.h (VALUE_CONTENTS_ALL_RAW, VALUE_CONTENTS_RAW): Delete.
	(value_contents_raw, value_contents_all_raw): Declare functions.
	(VALUE_CONTENTS, VALUE_CONTENTS_ALL): Update.
	* std-regs.c, valarith.c, valops.c, eval.c: Update.
	* tracepoint.c, findvar.c: Update.

2005-02-01  Orjan Friberg  <orjanf@axis.com>

	* regformats/reg-cris.dat: New file with register definitions for CRIS.
	* regformats/reg-crisv32.dat: Ditto for CRISv32.

2005-01-31  Andrew Cagney  <cagney@gnu.org>

	* configure: Regenerate to track ../gettext.m4.

2005-01-29  Baurzhan Ismagulov  <ibr@radix50.net>

	* MAINTAINERS: Add myself to "Write After Approval".

	* ax-gdb.c, ax-general.c, bcache.c, bfd-target.c, bsd-kvm.c,
	* buildsym.c, c-lang.c, c-typeprint.c, c-valprint.c, charset.c,
	* coff-pe-read.c, coffread.c, complaints.c, copying.c: I18n markup.

2005-01-29  Mark Kettenis  <kettenis@gnu.org>

	* configure.ac: Remove extra check for ranlib.
	* configure: Regenerated.

2005-01-28  Andrew Cagney  <cagney@gnu.org>

	* language.h (struct language_defn): Make la_val_print's buffer
	parameter a const bfd_byte.
	* cp-valprint.c (cp_print_value_fields, cp_print_value): Update.
	* ada-lang.c (ada_aligned_value_addr)
	(ada_value_primitive_packed_val, ada_which_variant_applies): Update.
	* valprint.c (val_print_array_elements): Update.
	* valprint.h (val_print_array_elements): Update.
	* ada-lang.h (ada_val_print, ada_aligned_value_addr)
	(ada_value_primitive_packed_val, ada_which_variant_applies): Update.
	* ada-valprint.c (ada_val_print, struct ada_val_print_args)
	(ada_val_print_1, ada_print_floating, printable_val_type)
	(print_record, val_print_packed_array_elements)
	(print_field_values, print_variant_part): Update.
	* c-lang.h (c_val_print, cp_print_value_fields): Update.
	* c-valprint.c (c_val_print): Update.
	* f-lang.h (f_val_print): Update.
	* f-valprint.c (f_val_print, f77_print_array_1)
	(f77_print_array): Update.
	* jv-lang.h (java_val_print): Update.
	* jv-valprint.c (java_print_value_fields, java_val_print): Update.
	* language.c (unk_lang_val_print): Update.
	* m2-lang.h (m2_val_print): Update.
	* m2-valprint.c (m2_val_print): Update.
	* p-lang.h (pascal_val_print): Update.
	(pascal_object_print_value_fields): Update.
	* p-valprint.c (pascal_val_print)
	(pascal_object_print_value_fields, pascal_object_print_value)
	(pascal_object_print_value): Update.
	* scm-lang.h (scm_val_print): Update.
	* scm-valprint.c (scm_val_print): Update.
	* value.h (val_print): Update.

	* p-lang.h (pascal_object_print_class_member)
	(pascal_object_print_class_method): Make buffer a const bfd_byte.
	* p-valprint.c (pascal_object_print_class_method)
	(pascal_object_print_class_method): Ditto.

	* language.h (struct language_defn): Make la_printstr's buffer
	parameter a const bfd_byte.
	* p-lang.h (pascal_printstr): Update function to match.
	* ada-valprint.c (ada_printstr): Update function to match.
	* scm-lang.c (scm_printstr): Update function to match.
	* p-lang.c (pascal_printstr): Update function to match.
	* ada-lang.h (ada_printstr): Update function to match.
	* m2-lang.c (m2_printstr): Update function to match.
	* objc-lang.c (objc_printstr): Update function to match.
	* c-lang.h (c_printstr): Update function to match.
	* f-lang.c (f_printstr): Update function to match.
	* c-lang.c (c_printstr): Update function to match.
	* language.c (unk_lang_printstr): Update function to match.

	* valprint.c (val_print_type_code_int): Make buffer a const bfd_byte.
	* valprint.h (val_print_type_code_int): Ditto.

	* objc-lang.h (c_val_print, c_value_print): Delete declarations.

	* cp-valprint.c (cp_print_class_method)
	(cp_print_class_member): Make buffer a const bfd_byte.
	* c-lang.h (cp_print_class_member, cp_print_class_method): Ditto.

	* ada-lang.c (value_from_contents_and_address)
	(to_record_with_fixed_variant_part)
	(value_tag_from_contents_and_address, ada_to_fixed_type)
	(to_fixed_variant_branch_type, to_fixed_record_type)
	(ada_template_to_fixed_record_type, cond_offset_host)
	(ada_template_to_fixed_record_type_1): Make buffer a const
	bfd_byte.
	* ada-lang.h (ada_template_to_fixed_record_type_1)
	(value_from_contents_and_address, ada_to_fixed_type): Ditto.

	* ada-valprint.c (char_at, printstr): Make buffer a const bfd_byte.

	* gdbtypes.h (print_scalar_formatted): Make buffer a const bfd_byte.
	* printcmd.c (print_scalar_formatted): Update.

	* value.h (value_bit_index, print_floating)
	(find_rt_vbase_offset): Make buffer a const bfd_byte.
	* valprint.c (print_floating): Update.
	* valarith.c (value_bit_index): Update.
	* valops.c (find_rt_vbase_offset): Update.

	* valprint.h (print_octal_chars, print_char_chars)
	(print_hex_chars, print_decimal_chars, print_binary_chars): Make
	buffer a const bfd_byte.
	* valprint.c (print_binary_chars, print_octal_chars)
	(print_decimal_chars, print_hex_chars, print_char_chars): Make
	"valaddr"buffer a const bfd_byte, ditto for local variables
	referencing that buffer.

	* m2-valprint.c: Include "c-lang.h".
	(c_val_print): Delete extern declaration.
	* scm-valprint.c: Include "c-lang.h".
	(c_val_print): Delete extern declaration.
	Makefile.in: Update dependencies.

	* gnu-v2-abi.h (gnuv2_baseclass_offset): Make "valaddr" a const
	bfd_byte.
	* cp-abi.h (baseclass_offset): Make "valaddr" a const bfd_byte.
	(struct cp_abi_ops): Make baseclass_offset's "valaddr" a const
	bfd_byte.
	* cp-abi.c (baseclass_offset): Update.
	* gnu-v2-abi.c (gnuv2_baseclass_offset): Update.

	* gnu-v2-abi.h: New file.
	* gnu-v2-abi.c: Include "gnu-v2-abi.h".
	(gnuv2_baseclass_offset): Delete declaration.
	* hpacc-abi.c: Include "gnu-v2-abi.h".
	(gnuv2_baseclass_offset): Delete extern declaration.
	* Makefile.in: Update dependencies.

	* doublest.c (floatformat_is_negative, floatformat_is_nan)
	(floatformat_mantissa, get_field): Make the buffer a const
	bfd_byte, simplify.

2005-01-27  Andrew Cagney  <cagney@gnu.org>

	* value.h (struct value): Change type of contents to bfd_byte.
	(VALUE_CONTENTS_RAW): Simplify.

	* gdbarch.sh (integer_to_address): Change buf parameter to a const
	bfd_byte, make pure-multi-arch.
	* gdbarch.h, gdbarch.c: Regenerate.
	* mips-tdep.c (mips_integer_to_address): Update.
	* value.c (value_as_address): Update.

	* cli/cli-dump.h (fopen_with_cleanup): Make "filename" const.
	* cli/cli-dump.c (dump_binary_file, dump_bfd_file): Make string
	parameters const, change buf to a const bfd_byte.
	(fopen_with_cleanup, bfd_openw_with_cleanup): Make all string
	parameters const.

	* corefile.c (write_memory): Update, make a copy of the read-only
	buffer.
	* target.c (target_read_memory): Update.
	(target_write_memory): Update, make a copy of the read-only
	buffer.
	* gdbcore.h (write_memory): Change buffer type to bfd_byte, make
	const.
	* target.h (target_read_memory, target_write_memory): Change
	buffer type to bfd_byte; for write_memory, make it const.
	* symfile-mem.c (do_target_read_memory): New function.
	(symbol_file_add_from_memory): Pass do_target_read_memory to
	bfd_elf_bfd_from_remote_memory.

	* value.h: Indent using gdb_indent.sh.

	* configure: Regenerate to track ../gettext.m4 change.

2005-01-26  Andrew Cagney  <cagney@gnu.org>

	* rs6000-tdep.c: Include "reggroups.h".
	(rs6000_gdbarch_init): Set register_reggroup_p.
	(rs6000_register_reggroup_p): New function.

2005-01-26  Orjan Friberg  <orjanf@axis.com>

	* cris-tdep.c (enum cris_num_regs, enum cris_regnums)
	(cris_sigtramp_frame_unwind_cache, cris_register_size): Update for
	CRISv32.
	(crisv32_single_step_through_delay, cris_can_use_hardware_watchpoint)
	(cris_region_ok_for_watchpoint, cris_stopped_data_address)
	(crisv32_cannot_fetch_register, crisv32_cannot_store_register)
	(crisv32_register_type, cris_special_register_name)
	(crisv32_register_name): New functions.
	(cris_spec_reg_applicable): Recognize more versions.
	(cris_register_name): Update with call to cris_special_register_name.
	(find_cris_op): Filter out CRISv32 instructions.  Tweaked comment and
	warning when unable to find step target.
	(CRISV10_ELF_NGREG, CRISV32_ELF_NGREG, crisv32_elf_gregset_t): Define.
	(supply_gregset): Add struct gdbarch_tdep.  Set pseudo-PC register for
	CRISv32.
	(fetch_core_registers): Update for CRISv32.
	(cris_gdbarch_init): Set pc_regnum, register_type, num_regs,
	register_name, cannot_store_register, cannot_fetch_register,
	have_nonsteppable_watchpoint, single_step_through_delay for CRISv32.

2005-01-26  Nick Roberts  <nickrob@snap.net.nz>

	* interps.c (interpreter_exec_cmd): Use condition,
	e.reason < 0, to raise an error.

2005-01-25  Andrew Cagney  <cagney@gnu.org>

	* ppc-linux-tdep.c: Include "tramp-frame.h"
	(struct ppc_linux_sigtramp_cache)
	(ppc_linux_sigtramp_this_id, ppc_linux_sigtramp_prev_register)
	(ppc_linux_sigtramp_unwind, ppc_linux_sigtramp_sniffer)
	(ppc_linux_sigtramp_cache): Delete.
	(ppc32_linux_sigaction_cache_init)
	(ppc64_linux_sigaction_cache_init)
	(ppc32_linux_sighandler_cache_init)
	(ppc64_linux_sighandler_cache_init)
	(ppc32_linux_sigaction_tramp_frame)
	(ppc64_linux_sigaction_tramp_frame)
	(ppc32_linux_sighandler_tramp_frame)
	(ppc64_linux_sighandler_tramp_frame)
	(ppc_linux_sigtramp_cache, ppc_linux_init_abi): Implement 32 and
	64-bit, sigaction and siginfo tramp-frame unwinders.

	* ppc-linux-tdep.c (ppc_linux_init_abi): Always set
        long_double_bit to 8.

2005-01-24  Andrew Cagney  <cagney@gnu.org>

	* infrun.c (handle_inferior_event): Handle back-to-back and nested
	signals where the step_resume_breakpoint may have already been
	inserted.

2005-01-24  Andrew Cagney  <cagney@gnu.org>

	* configure: Regenerate, ../gettext.m4 was updated.

2005-01-23  Mark Kettenis  <kettenis@gnu.org>

	* NEWS: Mention new BSD user-level threads support.

	* i386obsd-tdep.c: Update copyright year.  Include
	"bsd-uthread.h".
	(i386obsd_uthread_reg_offset): New variable.
	(I386OBSD_UTHREAD_ESP_OFFSET): New define.
	(i386obsd_supply_uthread, i386obsd_collect_uthread): New
	functions.
	(i386obsd_init_abi): Set supply_uthread and collect_uthread.
	* Makefile.in (i386obsd-tdep.o): Update dependencies.
	* config/i386/obsd.mt (TDEPFILES): Add bsd-uthread.o.

2005-01-23  Christopher Faylor  <cgf@timesys.com>

	* win32-nat.c: Update copyright year.
	(child_init_thread_list): Set thread linked list point to NULL so that
	it won't be reused after clearing.

2005-01-21  Mark Kettenis  <kettenis@gnu.org>

	* acconfig.h (HAVE_STRUCT_REG_R_FS, HAVE_STRUCT_R_GS): Remove
	undefs.
	* configure.ac: Use AC_CHECK_MEMBERS to check whether `struct
	thread' has a td_pcb member and whether `struct reg' has r_fs and
	r_gs members.
	* configure, config.in: Regenerate.

2005-01-21  Mark Kettenis  <kettenis@gnu.org>

	* configure.ac: Remove ia64-*-aix* junk.
	* configure: Regenerate.

	* configure.ac: Use AC_CHECK_DECLS instead of gcc_AC_CHECK_DECLS
	and BFD_NEED_DECLARATION.  Don't check if a declaration of strdup
	is necessary.
	* configure, config.in: Regenerate.
	* utils.c: Adjust for usage of AC_CHECK_DECLS instead of
	BFD_NEED_DECLARATION.  Never provide a prototype for
	caninicalize_file_name.
	* gdb_string.h: Adjust for usage of AC_CHECK_DECLS instead of
	BFD_NEED_DECLARATION.

	* configure.ac (targ_archs): Use standard autoconf check for
	"struct stat.st_blocks" instead of rolling our own.
	* configure: Regenerated.
	* acconfig.h (HAVE_STRUCT_STAT_ST_BLOCKS): Remove undef.
	* config.in: Regenerated.

2005-01-21  Mark Kettenis  <kettenis@gnu.org>

	* configure.ac: Modernize checks for `long long' and `long double'
	support.
	* configure: Regenerated.
	* acconfig.h (CC_HAS_LONG_LONG, PRINTF_HAS_LONG_LONG)
	(PRINT_HAS_LONG_DOUBLE,	SCANF_HAS_LONG_DOUBLE): Remove undefs.
	* config.in: Regenerated.

2005-01-20  Mark Kettenis  <kettenis@gnu.org>

	* acconfig.h (HAVE_STRUCT_SAVE_STATE_T)
	(HAVE_STRUCT_MEMBER_SS_WIDE): Remove undefs.
	* configure.ac: Remove checks for HP-UX save_state structure.
	* configure: Regenerated.

2005-01-19  Andrew Cagney  <cagney@gnu.org>

	* utils.c (quit): Simplify, call fatal.
	* exceptions.c: Include "serial.h"
	(print_flush): Mimic flush code found in utils.c:quit.
	* Makefile.in: Update dependencies.

2005-01-19  Jim Blandy  <jimb@redhat.com>

	* configure.tgt: Set build_rdi_share to "yes" on those targets
	that use that debugging protocol.
	Set build_nlm to yes to build NLM stub for Netware targets.
	* configure.ac: If build_rdi_share is "yes", then configure the
	rdi-share subdirectory.
	If build_nlm is "yes", the configure the "nlm" subdirectory.
	* configure: Regenerated.

	* rdi-share/configure, rdi-share/aclocal.m4: Regenerated using
	autoconf 2.59 and automake 1.9.3.

2005-01-19  Andrew Cagney  <cagney@gnu.org>

	* exceptions.h (deprecated_throw_reason): Rename throw_reason.
	* exceptions.c (deprecated_throw_reason): Rename throw_reason.
	* utils.c (internal_verror, quit): Update.
	* remote-sds.c (interrupt_query): Update.
	* remote-mips.c (mips_error, mips_kill): Update.
	* remote-fileio.c (remote_fileio_ctrl_c_signal_handler): Update.
	* remote.c (interrupt_query): Update.
	* ocd.c (interrupt_query): Update.
	* nto-procfs.c (interrupt_query): Update.
	* monitor.c (monitor_interrupt_query): Update.
	* breakpoint.c (break_command_1): Update.

	* infrun.c: (resume, proceed, wait_for_inferior)
	(handle_inferior_event, stop_stepping)
	(prepare_to_wait): Write debug output to gdb_stdlog.

2005-01-19  Mark Kettenis  <kettenis@gnu.org>

	* inf-ptrace.c (inf_ptrace_prepare_to_store)
	(inf_ptrace_post_startup_inferior)
	(inf_ptrace_acknowledge_created_inferior)
	(inf_ptrace_insert_fork_catchpoint)
	(inf_ptrace_remove_fork_catchpoint)
	(inf_ptrace_insert_vfork_catchpoint):
	(inf_ptrace_remove_vfork_catchpoint, inf_ptrace_follow_fork)
	(inf_ptrace_insert_exec_catchpoint)
	(inf_ptrace_remove_exec_catchpoint): Remove functions.
	(inf_ptrace_reported_exec_events_per_exec_call): Tweak comment.
	(inf_ptrace_target): Don't set to_prepare_to_store,
	to_post_startup_inferior, to_acknowledge_created_inferior,
	to_insert_fork_ctachpoint, to_remove_fork_catchpoint,
	to_insert_vfork_catchpoint, to_remove_vfork_catchpoint,
	to_follow_fork, to_insert_exec_catchpoint,
	to_remove_exec_catchpoint.

2005-01-18  Andrew Cagney  <cagney@gnu.org>

	* target.h (struct target_ops): Change return type of
	to_insert_fork_catchpoint, to_insert_vfork_catchpoint and
	to_insert_exec_catchpoint to void.
	(child_insert_fork_catchpoint, child_insert_vfork_catchpoint)
	(child_insert_exec_catchpoint): Change return type to void.
	* target.c (update_current_target): Update.
	(debug_to_insert_fork_catchpoint)
	(debug_to_insert_vfork_catchpoint)
	(debug_to_insert_exec_catchpoint): Update.
	* inf-child.c (inf_child_insert_fork_catchpoint)
	(inf_child_insert_vfork_catchpoint)
	(inf_child_insert_exec_catchpoint): Update.
	* breakpoint.c (insert_catchpoint): Update, do not throw an error.
	* linux-nat.c (child_insert_fork_catchpoint)
	(child_insert_vfork_catchpoint)
	(child_insert_exec_catchpoint): Update.
	* inftarg.c (child_insert_fork_catchpoint)
	(child_insert_vfork_catchpoint,)
	(child_insert_exec_catchpoint): Update.

	* remote.c (remote_open_1): Use throw_exception.

2005-01-17  Michael Snyder  <msnyder@redhat.com>

	* mips-linux-tdep.c: Whitespace tweaks.

2005-01-17  Corinna Vinschen  <vinschen@redhat.com>

	* infcmd.c (attach_command): Call CLEAR_SOLIB if available.

2005-01-17  Andrew Cagney  <cagney@gnu.org>

	* top.h (source_error, source_pre_error): Delete declaration.
	* cli/cli-script.c (source_error_allocated, source_error): Delete.
	(script_from_file, source_cleanup_lines): Do not manipulate
	source_error_allocated, error_pre_print and source_error.
	(struct source_cleanup_lines_args): Delete fields old_pre_error,
	and old_error_pre_print.
	* top.c (source_error_allocated, source_error)
	(source_pre_error): Delete.
	(command_line_input): Do not set error_pre_print.
	* event-top.c (command_line_handler): Do not set error_pre_print.

2005-01-16  Jason Thorpe  <thorpej@netbsd.org>

	* MAINTAINERS: Update my email address.

2005-01-16  Mark Kettenis  <kettenis@gnu.org>

	* configure.ac: Provide prerequisite headers when checking
	<term.h>.
	* configure: Regenerate.

	* amd64fbsd-tdep.c: Update copyright year.  Include "gdb_assert.h"
	and "bsd-uthread.h".
	(amd64fbsd_jmp_buf_reg_offset): New variable.
	(amd64fbsd_supply_uthread, amd64fbsd_collect_uthread): New
	functions.
	(amd64fbsd_init_abi): Set supply_uthread and collect_uthread.
	* i386fbsd-tdep.c: Fix typo.
	* Makefile.in (amd64fbsd-tdep.o): Update dependencies.
	* config/i386/fbsd64.mt (TDEPFILES): Add bsd-uthread.o.

2005-01-16  Andrew Cagney  <cagney@gnu.org>

	* cli/cli-script.c: Include "exceptions.h".
	(struct wrapped_read_command_file_args): Define.
	(wrapped_read_command_file): New function.
	(script_from_file): Replace direct call to read_command_file by
	one wrapped by an exception handler.
	* exceptions.c (throw_it): Free the old message after creating the
	new.
	* Makefile.in: Update dependencies.

2005-01-16  Mark Kettenis  <kettenis@gnu.org>

	* sparc64fbsd-tdep.c: Update copyright year.
	(sparc64fbsd_collect_gregset, sparc64fbsd_collect_fpregset): New
	functions.
	(sparc64fbsd_init_abi): Create register sets with collect
	functions.

	* sparc64fbsd-nat.c: Include "fbsd-nat.h".
	(_initialize_sparc64fbsd_nat): Add some extra features to the
	generic SPARC target.
	* Makefile.in (sparc64fbsd-nat.o): Update dependencies.
	* config/sparc/fbsd.mh (NATDEPFILES): Add fbsd-nat.o and gcore.o.
	(NAT_FILE): Set to solib.h.
	* config/sparc/nm-fbsd.h: Remove file.

	* sparc64-tdep.c (sparc64_store_arguments): Fix typo.

	* sparc-tdep.c (sparc_integral_or_pointer_p): Simplify.

2005-01-16  Andrew Cagney  <cagney@gnu.org>

	* exceptions.c (struct catcher): Delete saved_error_pre_print and
	saved_quit_pre_print.
	(catcher_init): Delete parameter errstring, do not override the
	pre_print strings.
	(catcher_pop): Do not restore the pre_print strings.
	(catch_exception, catch_exceptions_with_msg, catch_errors)
	(catch_command_errors): Update catch_init calls.

2005-01-16  Mark Kettenis  <kettenis@gnu.org>

	* Makefile.in (sparc64fbsd-nat.o): Update dependencies.
	* sparc64fbsd-nat.c: Update copyright year.  Include "target.h".

2005-01-15  Andrew Cagney  <cagney@gnu.org>

	* acinclude.m4: Include ../bfd/bfd.m4 instead of
	../bfd/acinclude.m4.  Include ../gettext.m4.
	* aclocal.m4, configure: Re-generate.

	* exceptions.c (do_captured_command)
	(struct captured_command_args): Delete.
	(catch_command_errors): Simplify by inlining call to catch_errors.

	* exceptions.c (struct catcher): Delete field print_message.
	(catcher_init): Delete print_message parameter.
	(catch_exception, catch_exceptions_with_msg, catch_errors): Update.
	(throw_it): Delete prefix parameter.
	(throw_verror, throw_vfatal, throw_error): Update.

2005-01-14  Andrew Cagney  <cagney@gnu.org>

	* exceptions.c (print_and_throw): Delete, replaced by throw_it.
	(throw_reason): Leave the exception's message field blank.
	(throw_it): New function, create the exception and throw it.
	(throw_verror, throw_vfatal, throw_error): Call throw_it.
	(print_any_exception): New function.
	(catch_errors, catch_exceptions_with_msg): Call
	print_any_exception.
	(throw_exception): Move code calling annotate_error and
	annotate_quit from here ...
	(print_exception): ... to here.

	* exceptions.c (exception_fprintf, exception_print): Move printing
	of \n from here ...
	(print_exception): ... to here.
	(print_flush): New function.
	(exception_print, exception_fprintf): Replace duplicated flush and
	wrap code with call to print_flush.
	(print_and_throw): Simplify, by using xstrvprintf, print_flush,
	and print_exception.
	(do_write): Delete.

	* remote-sds.c (interrupt_query): Call throw_reason instead of
	throw_exception.
	* remote-mips.c (mips_error, mips_kill): Ditto
	* ocd.c (interrupt_query): Ditto.
	* nto-procfs.c (interrupt_query): Ditto.
	* monitor.c (monitor_interrupt_query): Ditto.

2005-01-14  Jeff Johnston  <jjohnstn@redhat.com>

	* ia64-linux-nat.c: Include "ia64-tdep.h" to get register definitions.

2005-01-14  Andrew Cagney  <cagney@gnu.org>

	* exceptions.h (catch_exceptions): Delete errstring parameter.
	(catch_exceptions_with_msg): Ditto.
	* exceptions.c (catch_exceptions_with_msg): Update.
	(catch_exceptions): Update.
	* symfile-mem.c (add_vsyscall_page): Update.
	* frame.c (get_current_frame): Update.
	* wrapper.c (gdb_value_struct_elt): Update.
	* exceptions.c (catch_exceptions): Update.
	* thread.c (gdb_list_thread_ids, gdb_thread_select): Update.
	* breakpoint.c (gdb_breakpoint_query, gdb_breakpoint): Update.
	* remote-fileio.c (remote_fileio_request): Update.

	* exceptions.h (exception_fprintf): Declare.
	(exception_print): Drop pre_print parameter.
	* mi/mi-main.c (mi_execute_command): Update exception_print call.
	* cli/cli-interp.c (safe_execute_command): Update exception_print
	call.
	* remote.c (remote_open_1): Instead of passing an error prefix to
	catch_exceptions, use catch_exceptions and exception_fprintf.
	(remote_start_remote): Change return type to void.
	* breakpoint.c (insert_bp_location): Instead of passing an error
	prefix to catch_exceptions, use catch_exceptions and
	exception_fprintf.
	(insert_catchpoint): Change return type to void.
	(break_command_1): Update exception_print call.
	* exceptions.c (exception_fprintf): New function.
	(print_exception): New function.
	(exception_print): Use print_exception.

	* utils.c (error_output_message): Delete function.
	* defs.h (error_output_message): Delete declaration.

	* linespec.c (symtab_from_filename, decode_variable): Use
	throw_error instead of error_silent.
	* breakpoint.c (do_captured_parse_breakpoint): Change return type
	to void.
	(break_command_1): Use catch_exception and check the error return
	status.
	* exceptions.c (throw_error): New function.
	(throw_vsilent): Delete function.
	* exceptions.h (throw_error): Declare.
	(throw_vsilent): Delete declaration.
	* utils.c (error_silent): Delete function.
	* defs.h (error_silent): Delete declaration.

	* mi/mi-main.c (mi_execute_command): Print the exception.
	* cli/cli-interp.c (safe_execute_command): Print the exception.
	* exceptions.h (exception_print): Declare.
	* exceptions.c (struct catcher): Add field print_message.
	(catcher_init): Add parameter print_message, store in the catcher
	struct.
	(print_and_throw): Only print the message when print_message.
	(catch_exceptions_with_msg, catch_errors): Pass print_message=1 to
	catcher_init.
	(catch_exception): Pass print_message=0 to catcher_init.

	* varobj.c (varobj_create): Add missing \n.

2005-01-13  Michael Snyder  <msnyder@redhat.com>

	* cli/cli-decode.h: Whitespace tweaks.
	* wince.c: Whitespace tweaks.
	* uw-thread.c: Whitespace tweaks.
	* utils.c: Whitespace tweaks.
	* tracepoint.[ch]: Whitespace tweaks.
	* solist.h: Whitespace tweaks.

2005-01-13  Andrew Cagney  <cagney@gnu.org>

	* exceptions.h (struct exception): Make message const.
	* mi/mi-main.c (mi_execute_command): Pass result.message directly
	to fputstr_unfiltered.

2005-01-13  Michael Snyder  <msnyder@redhat.com>

	* stack.c: Whitespace tweaks.
	* somsolib.[ch]: Whitespace tweaks.
	* solib-aix.c: Whitespace tweaks.
	* solib.c: Whitespace tweaks.
	* solib-frv.c: Whitespace tweaks.
	* solib.h: Whitespace tweaks.
	* solib-irix.c: Whitespace tweaks.
	* solib-som.c: Whitespace tweaks.
	* solib-sunos.c: Whitespace tweaks.
	* solib-svr4.[ch]: Whitespace tweaks.
	* ser-tcp.c: Whitespace tweaks.
	* ser-unix.c: Whitespace tweaks.
	* serial.h: Whitespace tweaks.
	* scm-valprint.c: Whitespace tweaks.
	* rs6000-tdep.c: Whitespace tweaks.
	* rs6000-nat.c: Whitespace tweaks.
	* remote.c: Whitespace tweaks.

2005-01-13  Andrew Cagney  <cagney@gnu.org>

	* defs.h (error_last_message, error_init): Delete declaration.
	* utils.c (fatal, vfatal): Call throw_vfatal.
	(error, verror): Call throw_verror;
	(do_write, error_stream_1): Delete function.
	(error_stream): Simplify, call error.
	(error_last_message, error_init, gdb_lasterr): Delete.
	(error_silent): Simplify, call throw_vsilent.
	* mi/mi-interp.c (mi_cmd_interpreter_exec): Dup the message.
	* main.c (captured_main): Delete call to error_init.
	* exceptions.c (throw_verror, throw_verror)
	(throw_vsilent): New functions.
	(do_write, print_and_throw): New functions.
	(last_message): New global.
	(throw_reason): Replace error_last_message with last_message.
	(catch_exceptions_with_msg): Dup the message.
	* exceptions.h (throw_verror, throw_vfatal, throw_vsilent):
	Declare.

2005-01-13  Michael Snyder  <msnyder@redhat.com>

	* remote-st.c: Whitespace tweaks.
	* remote-sim.c: Whitespace tweaks.
	* remote-mips.c: Whitespace tweaks.
	* pa64solib.[ch]: Whitespace tweaks.
	* mdebugread.c: Whitespace tweaks.
	* main.c: Whitespace tweaks.
	* interps.c: Whitespace tweaks.
	* infrun.c: Whitespace tweaks.
	* infcmd.c: Whitespace tweaks.
	* hpux-thread.c: Whitespace tweaks.
	* hppa-hpux-tdep.c: Whitespace tweaks.
	* gdbcore.h: Whitespace tweaks.
	* gdbcmd.h: Whitespace tweaks.
	* gdb-events[.c, .h, .sh]: Whitespace tweaks.
	* corefile.c: Whitespace tweaks.
	* completer.c: Whitespace tweaks.
	* coff-solib.c: Whitespace tweaks.
	* coff-solib.h: Whitespace tweaks.
	* cli-out.c: Whitespace tweaks.
	* breakpoint.c: Whitespace tweaks.
	* cli/cli-interp.c: Tweak comments, per coding standard.

2005-01-13  Andrew Cagney  <cagney@gnu.org>

	* breakpoint.c (gdb_breakpoint_query): Update, use
	catch_exceptions_with_msg.
	(do_captured_breakpoint): Add uiout parameter.
	(gdb_breakpoint): Update, use catch_exceptions_with_msg.
	* mi/mi-main.c (mi_cmd_thread_select): Pass mi_error_message to
	gdb_thread_select.  Return MI_CMD_ERROR instead of
	MI_CMD_CAUGHT_ERROR.
	(mi_cmd_thread_list_ids): Ditto for gdb_list_thread_ids.
	(enum captured_mi_execute_command_actions): Delete
	EXECUTE_COMMAND_DISPLAY_ERROR.
	(captured_mi_execute_command): Delete code handling
	MI_CMD_CAUGHT_ERROR.
	(mi_execute_command): Don't check for
	EXECUTE_COMMAND_DISPLAY_ERROR.
	* mi/mi-cmd-break.c (breakpoint_notify): Update call to
	gdb_breakpoint_query.
	(mi_cmd_break_insert): Pass mi_error_message to gdb_breakpoint.
	* mi/mi-cmds.h (enum mi_cmd_result): Delete MI_CMD_CAUGHT_ERROR.
	* gdb.h (gdb_thread_select, gdb_list_thread_ids)
	(gdb_breakpoint, gdb_breakpoint_query): Add error_message
	parameter.
	* thread.c (thread_command): Update call.
	(gdb_thread_select, gdb_list_thread_ids): Update, call
	catch_exceptions_with_msg.

	* mi/mi-main.c (mi_execute_command): Use catch_exception,
	eliminate call to error_last_message.
	(captured_mi_execute_command): Change return type to void.

2005-01-12  Andrew Cagney  <cagney@gnu.org>

	* exceptions.c (exception_none): New variable.
	* Makefile.in: Update dependencies.
	* interps.c: Include "exceptions.h".
	(interpreter_exec_cmd, interp_exec): Update to return "struct
	exception"
	* exceptions.h (no_exception): Declare.
	* tui/tui-interp.c (tui_exec): Update to return "struct exception"
	* mi/mi-interp.c: Include "exceptions.h".
	(mi_cmd_interpreter_exec, mi_interpreter_exec): Update to return
	'struct exception".
	* cli/cli-interp.c (cli_interpreter_exec, safe_execute_command)
	(do_captured_execute_command): Update to use catch_exception.
	* interps.h: Include "exceptions.h".
	(interp_exec_ftype, interp_exec): Return "struct exception".

	* exceptions.h (throw_reason): Rename throw_exception.
	(enum errors, struct exception): Define.
	(catch_exception_ftype): Define.
	(catch_exception, throw_exception): Declare.
	* exceptions.c (throw_exception): Rewrite.
	(throw_reason): New function.
	(struct catcher, catcher_state_machine): Replace "reason" with
	"exception", delete "gdberrmsg".
	(catch_exception): New function.
	(catcher_init): Replace "gdberrmsg" parameter with "exception".
	(catch_errors, catch_exceptions_with_msg): Re-implement passing
	exception to catcher_init.
	* utils.c (error_silent, error_stream_1): Use throw_reason.
	(internal_verror, quit): Ditto.
	* breakpoint.c (insert_catchpoint, break_command_1): Ditto.
	* remote-fileio.c (remote_fileio_ctrl_c_signal_handler): Ditto.
	* remote.c (remote_open_1, interrupt_query): Ditto.

2005-01-12  Mark Kettenis  <kettenis@gnu.org>

	* i386fbsd-tdep.c: Update copyright year.  Include "gdbcore.h",
	"regcache.h", "gdb_assert.h" and "bsd-uthread.h".
	(i386fbsd_jmp_buf_reg_offset): New variable.
	(i386fbsd_supply_uthread, i386fbsd_collect_uthread): New
	functions.
	(i386fbsdaout_init_abi): Set supply_uthread and collect_uthread.
	* Makefile.in (i386fbsd-tdep.o): Update dependency.
	* config/i386/fbsd.mt (TDEPFILES): Add bsd-uthread.o.

	* bsd-uthread.h: New file.
	* bsd-uthread.c: New file.
	* Makefile.in (bsd_uthread_h): New variable.
	(ALLDEPFILES): Add bsd-uthread.c.
	(bsd-uthread.o): New dependency.

	* solib.h Update copyright year.
	(struct so_list): Forward declaration.
	(solib_read_symbols): New prototype.
	* solib.c (solib_read_symbols): New function.
	(solib_add): Call solib_read_symbols to read in symbols.
	(update_solib_list): Call observer_notify_solib_loaded.

	* i386bsd-nat.c: Update copyright year.  Don't include
	<sys/param.h> and <sys/user.h>.
	(register_u_addr, kernel_u_size): Remove functions.
	* config/i386/obsd.mh (NAT_FILE): Remove.
	* config/i386/obsdaout.mh (NAT_FILE): Set to solib.h.
	* config/i386/nm-obsd.h: Remove file.

2005-01-12  Andrew Cagney  <cagney@gnu.org>

	* exceptions.c: Include "gdb_string.h".
	(enum catcher_state, struct catcher): Define.
	(current_catcher): New global, replaces catch_return;
	(catch_return): Delete.
	(throw_exception): Use current_catcher->buf;
	(catcher_init, catcher_pop, catcher_state_machine): New functions.
	(catcher): Delete.
	(struct catch_errors_args): Delete.
	(do_catch_errors): Delete.
	(catch_exceptions): Replace body with call to
	catch_exceptions_with_msg.
	(catcher): Delete.
	(catch_exceptions_with_msg, catch_errors): Re-implement using
	catcher_state_machine.

	* exceptions.h (enum return_reason, RETURN_MASK)
	(RETURN_MASK_QUIT, RETURN_MASK_ERROR, RETURN_MASK_ALL)
	(return_mask, throw_exception, catch_exceptions_ftype)
	(catch_exceptions_with_msg, catch_errors_ftype, catch_errors)
	(catch_command_errors_ftype, catch_command_errors): Move to
	exceptions.h.
	* exceptions.c, exceptions.h: New files.
	* top.c: Do not include <setjmp.h>.
	(SIGJMP_BUF, SIGSETJMP, SIGLONGJMP, catch_return)
	(throw_exception, catcher, catch_exceptions)
	(catch_exceptions_with_msg, struct catch_errors_args)
	(do_catch_errors, catch_errors, struct captured_command_args)
	(do_captured_command, catch_command_errors): Move to exceptions.c.
	* wrapper.c, wince.c, win32-nat.c, utils.c: Include "exceptions.h".
	* tui/tui-interp.c, top.c, thread.c, symmisc.c: Ditto.
	* symfile-mem.c, stack.c, solib.c, rs6000-nat.c: Ditto.
	* remote-sds.c, remote-mips.c, remote-fileio.c: Ditto.
	* remote-e7000.c, objc-lang.c, ocd.c: Ditto.
	* remote.c, nto-procfs.c, monitor.c, mi/mi-main.c: Ditto.
	* main.c, m32r-rom.c, infrun.c, inf-loop.c: Ditto.
	* hppa-hpux-tdep.c, frame.c, event-top.c, event-loop.c: Ditto.
	* corelow.c, corefile.c, cli/cli-interp.c, breakpoint.c: Ditto.
	* ada-valprint.c, ada-lang.c: Ditto.
	* Makefile.in (HFILES_NO_SRCDIR, COMMON_OBS): Add exceptions.h and
	exceptions.o.  Update all dependencies.

2005-01-11  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/nm-fbsd.h: Update copyright year.
	Don't include "config/nm-bsd.h".
	(KERNEL_U_SIZE): Remove macro.
	(kernel_u_size): Remove prototype.

	* config/vax/nbsdaout.mh (NAT_FILE): Remove.
	* config/vax/nm-nbsdaout.h: Remove file.

2005-01-10  Elena Zannoni  <ezannoni@redhat.com>

	* MAINTAINERS: Remove self from sh/sh64 maintainership.

2005-01-10  Andrew Cagney  <cagney@gnu.org>

	* MAINTAINERS: List Andrew Cagney and Kevin Buettner as can commit
	changes to PowerPC, and Andrew Cagney as lead PowerPC GNU/Linux
	maintainer.

	* MAINTAINERS: Hans-Peter Nilsson and Orjan Friberg can commit
	changes to CRIS.

	* MAINTAINERS: Remove "Maintenance Only".  Spell out that CAN
	COMMIT means can approve).

2005-01-10  Mark Kettenis  <kettenis@gnu.org>

	* vax-nat.c: Update copyright year.  Include "inf-ptrace.h".
	(vax_register_u_offset): Make statuc.
	(_initialize_vax_nat): Construct and add target vector.
	* config/vax/vax.mh (NATDEPFILES): Remove infptrace.o and
	inftarg.o.  Add inf-ptrace.o.
	* Makefile.in (vax-nat.o): Update dependencies.

	* inf-ptrace.h: Update copyright year.  Sync comment with
	inf-ptrace.c.
	(inf_ptrace_trad_target): New prototype.
	* inf-ptrace.c: Update copyright year.  Include "regcache.h" and
	"gdb_assert.h"
	(inf_ptrace_target): Add comment.
	(inf_ptrace+register_u_offset): New variable.
	(inf_ptrace_fetch_register, inf_ptrace_fetch_registers)
	(inf_ptrace_store_register, inf_ptrace_store_registers)
	(inf_ptrace_trad_target): New functions.
	* Makefile.in (inf-ptrace.o): Update dependencies.

2005-01-09  Mark Kettenis  <kettenis@gnu.org>

	* configure.ac: Provide prerequisite headers when checking
	<link.h>, <sys/proc.h> and <sys/user.h>.
	* configure: Regenerate.

2005-01-08  Mark Kettenis  <kettenis@gnu.org>

	* config/powerpc/obsd.mt (DEPRECATED_TM_FILE): Set to
	tm-ppc-eabi.h instead of the removed tm-nbsd.h.

2005-01-07  Mark Kettenis  <kettenis@gnu.org>

	* config/ia64/tm-linux.h: Tweak comment.  Update copyright year.
	Don't include "tm-ia64.h".
	* config/ia64/ia64.mt (DEPRECATED_TM_FILE): Remove.
	* config/ia64/tm-ia64.h: Remove.  Move contents ...
	* ia64-tdep.h: ... here.  Update copyright year.

2005-01-07  Andrew Cagney  <cagney@gnu.org>

	* configure.ac: Rename configure.in, require autoconf 2.59.
	* configure: Re-generate.

	* configure.tgt: Disable arm*-*-*, thumb*-*-*, strongarm*-*-*,
	xscale-*-* and i[34567]86-*-netware* code adding rdi-share or nlm
	to configdirs.

	* configure.in: Replace configdirs with multiple references to
	AC_CONFIG_SUBDIRS.
	* configure: Re-generate.

2005-01-05  Andreas Schwab  <schwab@suse.de>

	* ia64-tdep.c: Include "osabi.h".
	(native_find_global_pointer): Delete.
	(ia64_find_global_pointer): Renamed from
	generic_elf_find_global_pointer.
	(FIND_GLOBAL_POINTER): Delete.  Change all users to call
	ia64_find_global_pointer instead.
	(ia64_gdbarch_init): Call gdbarch_init_osabi.  Remove references
	to ia64_linux_sigcontext_register_address and
	ia64_linux_write_pc.  Don't set tdep->find_global_pointer.
	(_initialize_ia64_tdep): Call gdbarch_register instead of
	deprecated register_gdbarch_init.
	(struct gdbarch_tdep): Remove find_global_pointer field and move
	to ...
	* ia64-tdep.h (struct gdbarch_tdep): ... here.
	(ia64_linux_sigcontext_register_address): Remove declaration.
	(ia64_linux_getunwind_table): Likewise.
	(ia64_linux_write_pc): Likewise.
	* ia64-linux-tdep.c: Include "osabi.h".
	(ia64_linux_sigcontext_register_address): Make static.
	(ia64_linux_write_pc): Likewise.
	(ia64_linux_init_abi): New.
	(_initialize_ia64_linux_tdep): New.
	* Makefile.in (ia64-tdep.o, ia64-linux-tdep.o): Depend on
	$(osabi_h).

2005-01-05  Kevin Buettner  <kevinb@redhat.com>

	* ia64-tdep.c (ia64_gdbarch_init): Eliminate dependency on
	functions in ia64-aix-tdep.c.
	* ia64-tdep.h (ia64_aix_sigcontext_register_address): Remove
	function defined in ia64-aix-tdep.c.
	* ia64-aix-tdep.c: Remove file.
	* config/ia64/linux.mt (TDEPFILES): Remove ia64-aix-tdep.o from
	this list.
	* Makefile.in (ia64-aix-tdep.o): Delete.

2005-01-05  Baurjan Ismagulov  <ibr@ata.cs.hun.edu.tr>

	Committed by Andrew Cagney.
	* ada-valprint.c, aix-thread.c, alpha-nat.c: I18n markup.
	* alphabsd-nat.c, alphanbsd-tdep.c, amd64-linux-nat.c: I18n markup.
	* amd64-tdep.c,	amd64bsd-nat.c, amd64fbsd-nat.c: I18n markup.
	* arch-utils.c, arm-linux-nat.c, arm-tdep.c: I18n markup.
	* armnbsd-nat.c, armnbsd-tdep.c, auxv.c, avr-tdep.c: I18n markup.
	* aix-thread.c (_initialize_aix_thread): Get rid of the
	deprecated_add_show_from_set call.
	* alpha-tdep.c (_initialize_alpha_tdep): Ditto.
	* arm-tdep.c (_initialize_arm_tdep): Ditto.
	* command.h (add_setshow_enum_cmd): Add arguments for returning
	new list elements.
	* cli/cli-decode.c (add_setshow_enum_cmd): Ditto.
	* mips-tdep.c (_initialize_mips_tdep): Modify calls to
	add_setshow_enum_cmd.

2005-01-04  Mark Kettenis  <kettenis@gnu.org>

	* configure.host (ia64-*-aix*): Remove.
	* configure.tgt (ia64-*-aix*): Remove.
	* config/ia64/aix.mh: Remove file.
	* config/ia64/aix.mt: Remove file.
	* config/ia64/tm-aix.h: Remove file.
	* ia64-aix-nat.c: Remove file.
	* Makefile.in (ia64-aix-nat.o): Remove dependency.

	* config/m88k/obsd.mh (NATDEPFILES): Really remove inf-child.o.
	Add back inf-ptrace.o.

2005-01-04  Andrew Cagney  <cagney@gnu.org>

	* version.in: Change format from 6.3.50_2005-01-04-cvs to
	6.3.50.20050104-cvs.

2005-01-04  Andreas Schwab  <schwab@suse.de>

	* breakpoint.c (break_command_1): Always free err_msg before
	returning when an exception was caught.

2005-01-01  Joel Brobecker  <brobecker@gnat.com>

        * hppa-tdep.c (prologue_inst_adjust_sp): Fix small confusion
        in register number for addil instruction.

For older changes see ChangeLog-2004.

Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:
