2006-12-18  Joel Brobecker  <brobecker@adacore.com>

	* version.in: Set version number to 6.6.

2006-12-17  Joel Brobecker  <brobecker@adacore.com>

	* configure.ac: Disable -Werror by default.
	* configure: Regenerate.

2006-12-08  Vladimir Prus  <vladimir@codesourcery.com>

	* varobj.c (cplus_value_of_child): When accessing
 	base suboject, don't specially process references.
 	
2006-12-06  Andrew Stubbs  <andrew.stubbs@st.com>

	* event-top.c (command_handler): On EOF, print 'quit' and run quit
	command via execute_command such that hooks and trace work.
	* utils.c (defaulted_query): On EOF, print default answer and newline.

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

	* cp-valprint.c, p-valprint.c: Revert last change.

2006-12-05  H.J. Lu  <hongjiu.lu@intel.com>

	* cp-valprint.c (cp_print_value_fields): Initialize tmp_obstack.
	(cp_print_value): Likewise.
	* p-valprint.c (pascal_object_print_value_fields): Likewise.
	(pascal_object_print_value): Likewise.

2006-12-02  Joel Brobecker  <brobecker@adacore.com>

	* version.in: Bump version number to 6.5.91 after first pre-release.

2006-12-02  Joel Brobecker  <brobecker@adacore.com>

	From Daniel Jacobowitz  <dan@codesourcery.com>
	* utils.c (string_to_core_addr): Use error instead of
	internal_error.
	* mi/mi-main.c (mi_execute_command): Check for a NULL message.

2006-11-24  Ulrich Weigand  <uweigand@de.ibm.com>

	* NEWS: New port to Cell Broadband Engine SPU.
	* MAINTAINERS: Add myself as spu maintainer.

2006-11-24  Ulrich Weigand  <uweigand@de.ibm.com>

	* configure.tgt: Enable gdbserver for SPU target.
	* configure.ac: Build gdbserver when gdb_native is yes.
	* configure: Regenerate.
	* regformats/reg-spu.dat: New file.

2006-11-24  Ulrich Weigand  <uweigand@de.ibm.com>

	* findvar.c (address_from_register): New function.
	* value.h (address_from_register): Add prototype.
	* dwarf2loc.c (dwarf_expr_read_reg): Use address_from_register.

2006-11-24  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/powerpc/spu-linux.mh: New file.
	* config/spu/spu.mt: New file.
	* configure.ac: Provide gdb_native configuration variable.
	* configure: Regenerate.
	* configure.host: Support powerpc64 to spu 'pseudo-native' mode.
	* configure.tgt: Add "spu" target_cpu and "spu*-*-*" target.
	* Makefile.in (spu_tdep_h): New variable.
	(ALLDEPFILES): Add spu-linux-nat.c and spu-tdep.c
	(spu-linux-nat.o, spu-tdep.o): Add dependencies.
	* spu-linux-nat.c: New file.
	* spu-tdep.c: New file.
	* spu-tdep.h: New file.

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

	* osabi.c (gdbarch_lookup_osabi): Do not return
	GDB_OSABI_UNINITIALIZED.

2006-11-21  Pedro Alves  <pedro_alves@portugalmail.pt>

	Checked in by Joel Brobecker  <brobecker@adacore.com>
	* parse.c (write_exp_msymbol): Check SYMBOL_BFD_SECTION before
	dereferencing it.

2006-11-20  Joel Brobecker  <brobecker@adacore.com>

	* README: Remove obsolete information.

2006-11-20  Andrew Cagney  <cagney@redhat.com>

	* linux-nat.h: Refer to GNU/Linux or Linux kernel.
	* linux-nat.c (lin_lwp_attach_lwp, linux_nat_thread_alive): Ditto.
	* infcmd.c (attach_command): Ditto.
	* hppa-linux-tdep.c (hppa_linux_regset): Ditto.
	* mn10300-linux-tdep.c: Ditto.  Update copyright year.
	* frv-linux-tdep.c: Ditto.  Update copyright year.

2006-11-19  Joel Brobecker  <brobecker@adacore.com>

	* README: Update GDB version number to 6.6.

2006-11-19  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Change "Changes since gdb-6.5" into "Changes in gdb-6.6".

2006-11-19  Joel Brobecker  <brobecker@adacore.com>

	GDB 6.6 branch created (branch timestamp: 2006-11-15 12:00)
	* version.in: Bump version to 6.5.90.20061115-cvs

2006-11-14  Maxim Grigoriev  <maxim@tensilica.com>

	* NEWS: New port to Xtensa.
	* Makefile.in: Add dependencies for Xtensa files.
	* configure.tgt (xtensa*, xtensa*-*-elf*): New.
	* configure.host (xtensa*-*-elf*): New.
	* config/xtensa/xtensa.mt: New file.
	* xtensa-config.c: New file.
	* xtensa-tdep.h: New file.
	* xtensa-tdep.c: New file.

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

	* remote.c (set_remote_cmd): Call help_list.
	(show_remote_cmd): Skip legacy aliases.  Handle non-show_cmd
	entries.  Add missed cleanup.
	* cli/cli-setshow.c (cmd_show_list): Handle non-show_cmd entries.

2006-11-13  Paul Gilliam  <pgilliam@us.ibm.com>

	* ppc-linux-tdep.c (ppc_linux_sigtramp_cache): Don't futz with
	the floating point registers if there aren't any.

2006-11-12  Ben Harris  <bjh21@NetBSD.org>

	* arm-tdep.c (arm_unwind_pc): Use arm_addr_bits_remove.

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

	* frame.c (frame_register_unwind_location): New function.
	(get_prev_frame_1): Check for UNWIND_NO_SAVED_PC.
	(frame_stop_reason_string): Handle UNWIND_NO_SAVED_PC.
	* frame.h (enum unwind_stop_reason): Add UNWIND_NO_SAVED_PC.

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

	* arch-utils.c (target_byte_order_user): Renamed from
	target_byte_order.
	(target_byte_order_auto, selected_byte_order): Removed.
	(show_endian): Check target_byte_order_user.
	(set_endian): Always update the architecture.  Set
	target_byte_order_user after success.
	(target_architecture_auto): Removed.
	(target_architecture_user): New.
	(selected_architecture_name, show_architecture): Check it.
	(set_architecture): Set target_architecture_user after success.
	(gdbarch_from_bfd): Check the argument.
	(default_byte_order): New.
	(initialize_current_architecture): Set the global default
	architecture and endianness.
	(gdbarch_info_fill): Remove GDBARCH argument.  Do not check the
	previous architecture.  Use exec_bfd, global selected architecture
	and endianness, and global defaults.
	* arch-utils.h (selected_byte_order): Remove prototype.
	(gdbarch_info_fill): Update.
	* exec.c (exec_file_attach): Update the architecture after removing
	the current file.
	* gdbarch.sh: Update comments.
	(find_arch_by_info): Remove OLD_GDBARCH argument.  Update call to
	gdbarch_info_fill.
	(gdbarch_find_by_info): Update call to find_arch_by_info.
	* gdbarch.h, gdbarch.c: Regenerated.
	* remote-sim.c (gdbsim_open): Use TARGET_BYTE_ORDER.

2006-11-09  Joel Brobecker  <brobecker@adacore.com>

	* sparc-tdep.c (sparc_fetch_instruction): Read instruction
	using read_memory_nobpt.

2006-11-06  Jim Blandy  <jimb@codesourcery.com>

	* dwarf2loc.c (dwarf_expr_read_reg): Use frame_register_read
	instead of frame_register.  Doc fix.

2006-11-04  Vladimir Prus  <vladimir@codesourcery.com>

	* serial.c (serial_open): Strip leading spaces from program 
	name when opening pipe.

2006-11-03  Jim Blandy  <jimb@codesourcery.com>

         * dwarf2loc.c (dwarf_expr_read_reg): Use frame_unwind_register
         instead of frame_register.  Doc fix.

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

	* dwarf2read.c (struct dwarf2_per_cu_data): Update comment.
	(load_full_comp_unit): Take OBJFILE argument and use it.
	(dwarf2_build_psymtabs_hard): Skip partial units.
	(process_queue): Pass OBJFILE to load_full_comp_unit.  Check
	type_hash for read in CUs.  Test psymtab for NULL.

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

	* arm-tdep.c (arm_gdbarch_init): Handle EF_ARM_EABI_VER5.

2006-10-31  Vladimir Prus  <vladimir@codesourcery.com>
	
	* commands.h (enum command_class): Use different
	values for class_deprecated and class_run.
	* cli/cli-decode.c: (print_help_for_command): New.
	(apropos_cmd): Use the above.
	(help_list): Mention 'help all'
	and 'apropos' when printing top-level help.
	(help_all): Print the class name before printing
	commands in that class.  Don't print prefix commands
	here, instead pass recurse flag to help_cmd_list.
	Print list of unclassified commands at the end.
	(help_cmd_list): When recursing, use all_commands class.
	Recurse only if the class of the command matches.

2006-10-27  Andreas Schwab  <schwab@suse.de>

	* gdbcmd.h (detachlist): Declare.
	* infcmd.c (_initialize_infcmd): Define "detach" as prefix
	command.
	* linux-fork.c (_initialize_linux_fork): Rename
	"detach-checkpoint" to "detach checkpoint" and "detach-fork" to
	"detach fork".
	* cli/cli-cmds.c (detachlist): Define.
	(init_cmd_lists): Initialize it.
	* cli/cli-cmds.h (detachlist): Declare.

2006-10-25  Jim Blandy  <jimb@codesourcery.com>

	* p-valprint.c (pascal_object_print_value): Add 'static' keyword
	to function definition, to match declaration earlier in file.

2006-10-21  Paul Brook  <paul@codesourcery.com>

	* remote.c (remote_fetch_registers): Fix error message.

2006-10-20  Daniel Jacobowitz  <dan@codesourcery.com>

	* gcore.c (MAX_COPY_BYTES): Define.
	(gcore_copy_callback): Use it to limit allocation.

2006-10-19  Ulrich Weigand  <uweigand@de.ibm.com>

	* linux-thread-db.c (check_for_thread_db): Don't attempt to use
	thread_db for remote targets.
	* remote.c (remote_new_objfile): Always call predecessor on
	new_objfile event chain.

2006-10-19  Joel Brobecker  <brobecker@adacore.com>

	* solib.c (libpthread_solib_p): New function.
	(solib_add): Always read the symbols from the libpthread library.

2006-10-19  Andrew Stubbs  <andrew.stubbs@st.com>

	* breakpoint.c (describe_other_breakpoints): Add thread parameter.
	Annotate display with thread number where appropriate.
	(create_breakpoints): Add thread parameter to call to
	describe_other_breakpoints.

2006-10-18  Jim Blandy  <jimb@codesourcery.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* utils.c (query): Use defaulted_query.
	(defaulted_query): Handle having no default answer.  Print out
	messages even if we have no terminal.  Prevent memory corruption.

2006-10-18  Daniel Jacobowitz  <dan@codesourcery.com>

	* frame.c (struct frame_info): Add stop_reason.
	(get_prev_frame_1): Set stop_reason.  Don't call error for
	stop reasons.
	(get_frame_unwind_stop_reason, frame_stop_reason_string): New.
	* frame.h (enum unwind_stop_reason): New.
	(get_frame_unwind_stop_reason, frame_stop_reason_string): New
	prototypes.
	* stack.c (frame_info): Print the stop reason.
	(backtrace_command_1): Print the stop reason for errors.

2006-10-18  Daniel Jacobowitz  <dan@codesourcery.com>

	* inferior.h (start_remote): Update prototype.
	* infrun.c (start_remote): Take FROM_TTY.  Call
	post_create_inferior.
	* monitor.c (monitor_open): Update call to start_remote.
	* remote-sds.c (sds_start_remote, sds_open): Likewise.
	* remote.c (remote_start_remote): Likewise.
	(remote_start_remote_dummy): Removed.
	(remote_open): Update call to remote_start_remote.  Do not call
	post_create_inferior here.

2006-10-18  Daniel Jacobowitz  <dan@codesourcery.com>

	* solib-svr4.c (debug_loader_offset_p, debug_loader_offset)
	(debug_loader_name, svr4_default_sos): New.
	(svr4_current_sos): Call svr4_default_sos.
	(enable_break): Add a comment about AT_BASE.  Set the new
	variables and retry solib_add.
	(svr4_clear_solib): Clear the new variables.

2006-10-18  Daniel Jacobowitz  <dan@codesourcery.com>

	* NEWS: Mention support for TLS without debugging information.

2006-10-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote-sim.c (gdbsim_kill): Call target_mourn_inferior.
	(gdbsim_load): Don't bother to adjust inferior_ptid here.
	(gdbsim_create_inferior): Mark the simulator as running.
	(gdbsim_open): Don't bother fetching registers.  Mark
	the target as not running.
	(gdbsim_xfer): When the program is not running, pass memory
	requests down.
	(gdbsim_mourn_inferior): Mark the target as not running.
	* target.c (target_mark_running, target_mark_exited): New.
	* target.h (target_has_execution): Update the comment.
	(target_mark_running, target_mark_exited): New prototypes.

2006-10-17  Joel Brobecker  <brobecker@adacore.com>

	* breakpoint.c (free_valchain): Minor reformatting.

2006-10-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* solib-svr4.c (LM_ADDR_CHECK): Suggest shared library mismatch.

2006-10-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (symtab.o): Update.
	* symtab.h (matching_bfd_sections): New prototype.
	* symtab.c (matching_bfd_sections): New.
	(find_pc_sect_psymbol, find_pc_sect_symtab): Use it.
	* minsyms.c (lookup_minimal_symbol_by_pc_section): Likewise.
	* printcmd.c (sym_info): Ignore separate debug objfiles.

2006-10-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (remote_pid_to_str): Capitalize "Thread".

2006-10-15  Daniel Jacobowitz  <dan@codesourcery.com>

	PR remote/2158
	* remote.c (remote_write_bytes): Throttle packet alignment
	for small packets.

2006-10-16  Jeff Johnston  <jjohnstn@redhat.com>
 
	* linux-thread-db.c (thread_db_wait): Don't bother continuing if
	the wait result indicates the program terminated with a
	signal (from gdb-6.3-ia64-sigill-20051115.patch, a patch for
	Fedora Core 5).
	
2006-10-11  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (dwarf_decode_lines): Call record_line upon
	encountering a different subfile.

2006-10-11  Denis Pilat  <denis.pilat@st.com>

	* tui/tui-source.c (tui_set_source_content): handle source 
	files that contain non unix end-of-line.
	
2006-10-10  Daniel Jacobowitz  <dan@codesourcery.com>

	* ser-mingw.c (free_pipe_state, pipe_wait_handle): Update
	for changes to pipe_select_thread.
	(pipe_done_wait_handle): New.
	(_initialize_ser_windows): Reference it.

2006-10-09  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (expprint.o, parse.o, target.o): Update.
	* dwarf2loc.c (dwarf_expr_tls_address): Move body to
	target_translate_tls_address.  Call it.
	* eval.c (evaluate_subexp_standard): Handle UNOP_MEMVAL_TLS.
	* expprint.c (print_subexp_standard): Likewise.
	(op_name_standard, dump_subexp_body_standard): Likewise.
	* expression.h (enum exp_opcode): Add UNOP_MEMVAL_TLS.
	(union exp_element): Add objfile.
	* parse.c (write_exp_elt_objfile): New function.
	(msym_tls_symbol_type): New.
	(write_exp_msymbol): Handle TLS.
	(operator_length_standard): Handle UNOP_MEMVAL_TLS.
	(build_parse): Initialize msym_tls_symbol_type.
	* parser-defs.h (write_exp_elt_objfile): New prototype.
	* target.c (target_translate_tls_address): New.
	* target.h (target_translate_tls_address): Add prototype.

2006-10-09  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* solib.c (solib_open): Handle an empty solib_absolute_prefix like a
	missing one.

2006-10-09  Daniel Jacobowitz  <dan@codesourcery.com>

	* solib.c (solib_read_symbols): Stop if the file was not found.

2006-10-09  Paul Pluzhnikov  <ppluzhnikov@charter.net>

	PR c++/2116
	* valops.c (find_overload_match): Check for a NULL name.

2006-10-06 Joel Brobecker  <brobecker@adacore.com>

	Fix PR symtab/2018
	* dwarf2read.c (read_array_type): Set the type name if the name
	attribute is present.

2006-10-05  Joel Brobecker  <brobecker@adacore.com>

        * blockframe.c (block_innermost_frame): Rewrite frame search logic.

2006-10-05  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (gdb_expat_h): New.
	(xml_support_h): Add gdb_expat.h dependency.
	(memory-map.o, xml-support.o): Likewise.
	* gdb_expat.h: New file.
	* xml-support.h: Include it.
	* memory-map.c, xml-support.c: Likewise.  Remove XML_STATUS_OK
	definitions.

2006-10-05  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (get_remote_state_raw): Renamed from get_remote_state.
	(get_remote_state): New function.
	(init_remote_state, _initialize_remote): Use get_remote_state_raw.

2006-10-04  Fred Fish  <fnf@specifix.com>

	* vec.c: Include defs.h first.  This pulls in config.h which can
	affect other includes.

2006-10-04  Joel Brobecker  <brobecker@adacore.com>

	* somread.c (som_symtab_read): Avoid using alloca for potentially
	large buffers.

2006-10-04  Daniel Jacobowitz  <dan@codesourcery.com>

	* arch-utils.h (gdbarch_info_fill): Remove duplicate prototype.

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

	* memory-map.c (XML_STATUS_OK, XML_STATUS_ERROR): Provide default
	definitions.
	* xml-support.c (XML_STATUS_OK, XML_STATUS_ERROR): Likewise.

2006-09-22  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (remote_write_bytes_aux): Doc fix.

2006-09-21  Vladimir Prus  <vladimir@codesourcery.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (SFILES): Add target-memory.c.
	(COMMON_OBS): Add target-memory.o.
	* memattr.c (lookup_mem_region): Adjust handling for
	the top of memory.  Improve comments.
	* remote.c (packet_check_result): New function, split out
	from packet_ok.  Recognize "E." as an error prefix.
	(packet_ok): Use it.
	(remote_write_bytes_aux): New function, renamed from
	remote_write_bytes.  Take packet header, packet format,
	and length flag as arguments.
	(remote_write_bytes): Rewrite to use remote_write_bytes_aux.
	(remote_send_printf, restore_remote_timeout)
	(remote_flash_timeout, remote_flash_erase, remote_flash_write)
	(remote_flash_done): New.
	(remote_xfer_partial): Handle flash writes.
	(init_remote_ops, init_remote_async_ops): Set to_flash_erase
	and to_flash_done.
	* symfile.c (struct load_section_data): Include a pointer to
	the cumulative stats and a request queue.  Move most members
	to other types.
	(struct load_progress_data, struct load_progress_section_data): New
	types.
	(load_progress): Handle a NULL baton and zero bytes.  Update for
	type changes.
	(load_section_callback): Create memory write requests instead of
	writing to memory.  Don't print the progress message here.
	(clear_memory_write_data): New function.
	(generic_load): Use target_write_memory_blocks.
	* target-memory.c: New file.
	* target.c (update_current_target): Mention new uninherited methods.
	(memory_xfer_partial): Issue an error for flash writes.
	(target_flash_erase, target_flash_done): New functions.
	(target_write_with_progress): Call the progress callback at the
	start also.
	* target.h (enum target_object): Add TARGET_OBJECT_FLASH.
	(target_write_with_progress): Update comment.
	(struct target_ops): Add to_flash_erase and to_flash_done.
	(target_flash_erase, target_flash_done, struct memory_write_request)
	(memory_write_request_s, enum flash_preserve_mode)
	(target_write_memory_blocks): New, including a vector type
	for memory_write_request_s.

2006-09-21  Vladimir Prus  <vladimir@codesourcery.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>
	    Nathan Sidwell  <nathan@codesourcery.com>

	* Makefile.in (SFILES): Add memory-map.c and xml-support.c.
	(memory_map_h, xml_support_h): New.
	(target_h): Add vec_h dependency.
	(COMMON_OBS): Add memory-map.o and xml-support.o.
	(memory-map.o, xml-support.o): New rules.
	(remote.o): Update.
	* exceptions.h (enum errors): Add XML_PARSE_ERROR.
	* infcmd.c (run_command_1, attach_command): Call target_pre_inferior.
	* memattr.c (default_mem_attrib): Initialize blocksize.
	(target_mem_region_list, mem_use_target)
	(target_mem_regions_valid, mem_region_cmp, mem_region_init)
	(require_user_regions, require_target_regions)
	(invalidate_target_mem_regions): New.
	(create_mem_region): Use mem_region_init.
	(mem_clear): Move higher.	
	(lookup_mem_region): Use require_target_regions.
	(mem_command): Implement "mem auto".
	(mem_info_command): Handle target-supplied regions and flash
	attributes.
	(mem_enable_command, mem_disable_command, mem_delete_command): Use
	require_user_regions.
	(_initialize_mem): Mention "mem auto" in help.
	* memattr.h (enum mem_access_mode): Add MEM_FLASH.
	(struct mem_attrib): Add blocksize.
	(invalidate_target_mem_regions, mem_region_init, mem_region_cmp): New
	prototypes.
	* remote.c: Include "memory-map.h".
	(PACKET_qXfer_memory_map): New enum value.
	(remote_protocol_features): Add qXfer:memory-map:read.
	(remote_xfer_partial): Handle memory maps.
	(remote_memory_map): New.
	(init_remote_ops, init_remote_async_ops): Set to_memory_map.
	(_initialize_remote): Register qXfer:memory-map:read.
	* target.c (update_current_target): Mention to_memory_map.
	(target_memory_map, target_pre_inferior): New.
	(target_preopen): Call target_pre_inferior.
	* target.h: Include "vec.h".
	(enum target_object): Add TARGET_OBJECT_MEMORY_MAP.
	(struct target_ops): Add to_memory_map.
	(target_memory_map, target_pre_inferior): New prototypes.
	* memory-map.c, memory-map.h, xml-support.c, xml-support.h: New files.

2006-09-21  Daniel Jacobowitz  <dan@codesourcery.com>

	* ada-lex.l (HIGH_BYTE_POSN, is_digit_in_base, digit_to_int)
	(strtoulst): Moved to ...
	* utils.c (HIGH_BYTE_POSN, is_digit_in_base, digit_to_int)
	(strtoulst): ... here.  Enhanced to behave more similarly
	to strtoul.
	* defs.h (strtoulst): New prototype.

2006-09-21  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (memattr_h, memattr.o): Update.
	* memattr.h: Include "vec.h".
	(struct mem_region): Remove linked list pointer.
	(mem_region_s): New typedef and corresponding vector.
	* memattr.c: Include "vec.h".
	(mem_region_chain): Delete.
	(mem_region_list): New vector pointer.
	(mem_region_lessthan): New function.
	(create_mem_region): Remove unused return value.  Use vector
	operations.  Remove linear search.
	(delete_mem_region): Delete.
	(lookup_mem_region): Use vector operations.  Add a FIXME.
	(mem_info_command): Update to work with vectors.
	(mem_enable, mem_enable_command, mem_disable, mem_disable_command)
	(mem_free, mem_delete): Likewise.

2006-09-21  Nathan Sidwell  <nathan@codesourcery.com>

	* vec.h: New file.
	* vec.c: New file.
	* Makefile.in (SFILES): Add vec.c.
	(vec_h): New.
	(COMMON_OBJS): Add vec.o.
	(vec.o): New target.

2006-09-20  Daniel Jacobowitz  <dan@codesourcery.com>

	PR remote/2154
	* remote.c (remote_thread_alive): Remove local buf.
	(remote_get_threadinfo): Remove local threadinfo_pkt.
	(remote_get_threadlist): Remove unused threadlist_packet.
	(remote_current_thread): Remove local buf.
	(remote_threads_info): Set bufp after getpkt.
	(remote_threads_extra_info): Remove local bufp.
	(get_offsets): Set buf after getpkt.
	(remote_check_symbols): Set reply after getpkt.
	(remote_vcont_probe): Set buf after getpkt.
	(remote_resume): Set buf after set_thread.
	(remote_wait, remote_async_wait): Set buf after getpkt.
	(fetch_register_using_p): Set buf after remote_send.
	(remote_fetch_registers): Likewise.
	(store_register_using_P): Don't use buf after remote_send.
	(check_binary_download, remote_write_bytes)
	(remote_read_bytes, remote_rcmd): Remove local buf.

2006-09-17  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-cmd-stack.c (mi_cmd_stack_list_args): Don't emit error
	if high requested frame number is larger than number of available 
	frames.
	
2006-09-16  Nick Roberts  <nickrob@snap.net.nz>

	* linux-nat.c (linux_test_for_tracefork): Don't leave zombie
	process.

2006-09-16  Andrzej Zaborowski  <balrog@zabor.org>

	* interps.c (interpreter_exec_cmd): Restore interpreter properties.

2006-09-10  Daniel Jacobowitz  <dan@codesourcery.com>

	PR threads/2149
	* infrun.c (handle_inferior_event): Context switch after fork
	and exec events.

2006-09-10  Daniel Jacobowitz  <dan@codesourcery.com>

	* infcall.c (call_function_by_hand): Check for function pointer
	types.

2006-09-10  Andreas Schwab  <schwab@suse.de>

	* m68k-tdep.c (m68k_analyze_register_saves): Fix decoding of
	`move.l %R,-(%sp)'.

2006-09-07  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-cmd-stack.c (mi_cmd_stack_list_frames): Don't emit 
	error if high requested frame number is larger then number 
	of available frames.
	
2006-09-07  Joel Brobecker  <brobecker@adacore.com>

	From Stephan Springl  <springl-gdb@bfw-online.de>
	* fork-child.c (fork_inferior): Fix typo.

2006-08-28  DJ Delorie  <dj@redhat.com>

	* m32c-tdep.c (m32c_decode_srcdest4): Initialize fields in sd
	that may not be initialized elsewhere.
	(m32c_decode_sd23): Likewise.

2006-08-25  Daniel Jacobowitz  <dan@codesourcery.com>

	* buildsym.c (finish_block): Don't adjust the boundaries of
	nested functions.

2006-08-24  Andreas Schwab  <schwab@suse.de>

	* symfile.c (add_symbol_file_command): Fix off-by-one when
	extending sect_opts.

2006-08-24  Nick Roberts  <nickrob@snap.net.nz>

	* mi/gdb-mi.el: Refer to next release of Emacs as 22.1.

2006-08-23  Nick Roberts  <nickrob@snap.net.nz>

	* mi/gdb-mi.el (gdbmi): Remove gdb-force-update, initialize
	other variables.
	(gdbmi-send): Ensure any text properties can be removed.
	(gdbmi-prompt1): Update to gdb-ui.el
	(gud-gdbmi-marker-filter): Defer setting of gud-running.
	Keep gdb-done-regexp for partial-output-buffer.
	(gdb-stack-list-frames-handler): Add face to function names.

2006-08-22  Mark Kettenis  <kettenis@gnu.org>

	* valprint.c (val_print_type_code_flags): Fix GNU coding standards
	violation.

	* alpha-tdep.c (alpha_register_to_value, alpha_value_to_register)
	(alpha_push_dummy_call, alpha_extract_return_value)
	(alpha_breakpoint_from_pc, alpha_read_insn)
	(alpha_get_longjmp_target, alpha_supply_int_regs)
	(alpha_fill_int_regs, alpha_supply_fp_regs, alpha_fill_fp_regs)
	(alpha_next_pc): Use gdb_byte instead of (unsigned) char where
	appropriate.

	* sparc64-tdep.c (sparc64_pstate_type, sparc64_fsr_type)
	(sparc64_fprs_type): New variables.
	(sparc64_init_types): New function.:
	(sparc64_register_info): Use appropriate flag types for %fsr and
	%fprs.
	(sparc64_pseudo_register_info): Use appropriate type for %pstate.
	(_initialize_sparc64_tdep): New function.

	* valprint.c (val_print_type_code_flags): Fix for bitfields larger
	than 32 bits.

	* gdbtypes.c (init_flags_type): Set all fields to zero instead of
	just the first one.

2006-08-22  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (INTERNAL_CPPFLAGS): New.
	(INTERNAL_CFLAGS_BASE): Use it.

2006-08-22  Michael Snyder  <Michael.Snyder@PalmSource.com>

	* MAINTAINERS: Update my email address.

2006-08-19  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (amd64_linux_tdep_h): New.
	(amd64-linux-nat.o, amd64-linux-tdep.o): Update.
	* amd64-linux-nat.c (amd64_linux_gregset64_reg_offset): Add
	ORIG_RAX.
	(_initialize_amd64_linux_nat): Set amd64_native_gregset64_num_regs.
	* amd64-linux-tdep.c (amd64_linux_register_name)
	(amd64_linux_register_type, amd64_linux_register_reggroup_p)
	(amd64_linux_write_pc): New.
	(amd64_linux_init_abi): Use them, and update num_regs.
	* amd64-linux-tdep.h: New file.
	* amd64-tdep.c (amd64_register_name, amd64_register_type): Make
	public.
	* amd64-tdep.h (amd64_register_name, amd64_register_type): New
	prototypes.

	* regformats/reg-x86-64-linux.dat: New file.

2006-08-18  Daniel Jacobowitz  <dan@codesourcery.com>

	* infrun.c (handle_inferior_event): Check the current frame ID
	before unwinding to the previous frame.

2006-08-18  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (quirk_gcc_member_function_pointer): Add GCC PR
	number in a comment.

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

	* sparc-nat.c (sparc_xfer_wcookie): Signal EOF.  Tweak comment.

2006-08-18  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (quirk_gcc_member_function_pointer): New.
	(read_structure_type): Call it.

2006-08-16  Daniel Jacobowitz  <dan@codesourcery.com>

	* NEWS: Mention "set trust-readonly-sections" fix.

2006-08-16  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c, target.c: Strip trailing whitespace.

2006-08-15  Daniel Jacobowitz  <dan@codesourcery.com>

	PR remote/1966
	* dcache.c (dcache_write_line): Use target_write.
	(dcache_read_line): Use target_read.
	* mi/mi-main.c (mi_cmd_data_read_memory): Use target_read.
	* symfile.c (struct load_section_data): Add new per-section
	members.
	(load_progress): New function.
	(load_section_callback): Pass load_progress to the new
	target_write_with_progress.
	* target.c (current_xfer_partial, memory_xfer_partial): New.
	(target_xfer_partial): New prototype.
	(target_xfer_memory, target_xfer_partial_p, xfer_using_stratum)
	(do_xfer_memory, target_xfer_memory_partial)
	(target_read_memory_partial, target_write_memory_partial): Delete.
	(trust_readonly): Move higher in the file.
	(update_current_target): Use current_xer_partial.
	(target_xfer_partial): Use memory_xfer_partial.  Handle
	TARGET_OBJECT_RAW_MEMORY specially.
	(target_read_memory): Use target_read.
	(target_write_memory): Use target_write.
	(default_xfer_partial): Call to_xfer_partial directly.
	(target_write_with_progress): New function, based on target_write.
	(target_write): Call it.
	* target.h (enum target_object): Add TARGET_OBJECT_RAW_MEMORY.
	(target_write_with_progress): New prototype.
	(do_xfer_memory, target_read_memory_partial)
	(target_write_memory_partial): Delete prototypes.

2006-08-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (remote_write_bytes): Take a const buffer argument.
	Do the checks from remote_xfer_memory.
	(remote_read_bytes): Do the checks from remote_xfer_memory.
	(remote_xfer_memory): Remove checks pushed into lower level
	functions.
	(remote_xfer_partial): Call remote_write_bytes and remote_read_bytes
	directly.
	* remote.h (remote_write_bytes): Update prototype.

2006-08-11  Andrew Stubbs  <andrew.stubbs@st.com>

	* NEWS: Add 'set trace-commands' command.

2006-08-10  Andrew Stubbs  <andrew.stubbs@st.com>

	* cli/cli-script.c (execute_user_command): Update command_next_depth
	on user-command call.

2006-08-09  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Add entry for new substitute-path commands.

2006-08-08  Joel Brobecker  <brobecker@adacore.com>

	* source.c: #include gdb_assert.h.
	(substitute_path_rule): New struct.
	(substitute_path_rules): New static global variable.
	(substitute_path_rule_matches): New function.
	(get_substitute_path_rule): New function.
	(rewrite_source_path): New function.
	(find_and_open_source): Add source path rewriting support.
	(strip_trailing_directory_separator): New function.
	(find_substitute_path_rule): New function.
	(add_substitute_path_rule): New function.
	(delete_substitute_path_rule): New function.
	(show_substitute_path_command): New function.
	(unset_substitute_path_command): New function.
	(set_substitute_path_command): New function.
	(_initialize_source): Add new substitute-path commands.
	* Makefile.in (source.o): Add dependency on gdb_assert.h.

2006-08-08  Joel Brobecker  <brobecker@adacore.com>

	* i386-tdep.c (i386_follow_jump): Use read_memory_nobpt to read
	instructions.
	(i386_analyze_struct_return): Likewise.
	(i386_skip_probe): Likewise.
	(i386_match_insn): Likewise.
	(i386_analyze_frame_setup): Likewise.
	(i386_analyze_register_saves): Likewise.
	(i386_skip_prologue): Likewise.

2006-08-08  Joel Brobecker  <brobecker@adacore.com>

	* gdbcore.h (read_memory_nobpt): New function name instead of
	deprecated_read_memory_nobpt.
	* breakpoint.c (read_memory_nobpt): New function name instead
	of deprecated_read_memory_nobpt.
	Adjust calls to old deprecated_read_memory_nobpt accordingly.
	* alpha-tdep.c: Adjust calls to deprecated_read_memory_nobpt
	accordingly.
	* alphanbsd-tdep.c: Likewise.
	* frame.c: Likewise.
	* frv-tdep.c: Likewise.
	* hppa-linux-tdep.c: Likewise.
	* hppa-tdep.c: Likewise.
	* i386-linux-nat.c: Likewise.
	* m68klinux-tdep.c: Likewise.
	* mips-tdep.c: Likewise.
	* s390-tdep.c: Likewise.

2006-08-08  Daniel Jacobowitz  <dan@codesourcery.com>

	* configure.ac: Check for expat.
	* acinclude.m4: Include AC_LIB_HAVE_LINKFLAGS dependencies.
	* Makefile.in (LIBEXPAT): New.
	(CLIBS): Include $(LIBEXPAT).
	* README: Mention expat.
	* configure, config.in: Regenerated.

2006-08-08  Joel Sherrill <joel.sherrill@oarcorp.com>

	* config/sparc/embed.mt: New file.
	* configure.tgt (sparc-*-rtems*): Use embed.mt.

2006-08-08  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (objfiles.o, symfile.o): Update.
	* objfiles.c: Include "expression.h" and "parser-defs.h".
	(free_objfile): Clear global blocks.
	* symfile.c: Include "parser-defs.h".
	(clear_symtab_users): Clear global blocks.

2006-08-08  Thiemo Seufer  <ths@mips.com>

	* breakpoint.c (update_breakpoints_after_exec): Fix type mismatch.

2006-08-08  Vladimir Prus  <vladimir@codesourcery.com>

	* symfile.c (download_write_size): Remove.
	(show_download_write_size): Remove.
	(load_section_callback): Don't use download_write_size.
	(_initialize_symfile): Don't register download_write_size.
	* NEWS: Mention 'download-write-size' removal.

2006-08-06  Daniel Jacobowitz  <dan@codesourcery.com>

	* expprint.c (print_subexp_standard, dump_subexp_body_standard): Add
	support for member pointers.

2006-08-02  Mark Kettenis  <kettenis@gnu.org>

	* arm-tdep.h: Add multiple inclusion protection.
	(struct gdbarch): Add forward declaration.
	(armobsd_regset_from_core_section): New prototype.
	* armbsd-tdep.c: New file.
	* armobsd-tdep.c: Include "gdb_string.h".
	(armobsd_init_abi): Set regset_from_core_section.
	(armobsd_core_osabi_sniffer): New function.
	(_initialize_armobsd_tdep): Register armobsd_core_osabi_sniffer.
	* Makefile.in (ALLDEPFILES): Add armbsd-tdep.c.
	(armbsd-tdep.o): New dependency.
	(armnbsd-tdep.o): Update dependencies.
	* config/arm/obsd.mt (TDEPFILES): Add armbsd-tdep.o and corelow.o.

2006-08-02  Thiemo Seufer  <ths@mips.com>

	* linux-thread-db.c (thread_db_get_thread_local_address): Fix type
	mismatch.
	* tui/tui-stack.c (tui_show_frame_info): Likewise.

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

	* c-exp.y (type): Remove incorrect pointer to member case.
	* objc-exp.y (type): Likewise.
	* p-exp.y (type): Likewise.

2006-08-01  Mark Kettenis  <kettenis@gnu.org>

	* arm-tdep.h (enum struct_return): New.
	(struct gdbarch_tdep): Add struct_return member.
	* arm-tdep.c (arm_return_value): Return
	RETURN_VALUE_STRUCT_CONVENTION for aggregates when the ABI uses
	pcc_struct_return.
	(arm_gdbarch_init): Default to reg_struct_return.
	* armobsd-tdep.c (armobsd_init_abi): Set pcc_struct_return.

2006-07-31  Mark Kettenis  <kettenis@gnu.org>

	* alpha-tdep.h (ALPHA_S0_REGNUM): New define.
	* alphabsd-nat.c: Include <sys/types.h>, <sys/signal.h>,
	<machine/pcb.h> and "bsd-kvm.h".
	(alphabsd_supply_pcb): New function.
	(_initialize_alphabsd_nat): Enable libkvm interface.
	* Makefile.in (alphabsd-nat.o): Update dependencies.
	* config/alpha/fbsd.mh (NATDEPFILES): Add bsd-kvm.o.
	(LOADLIBES): New variable.
	* config/alpha/nbsd.mh (NATDEPFILES): Add bsd-kvm.o.
	(LOADLIBES): New variable.

2006-07-31  Fred Fish  <fnf@specifix.com>

	* arm-tdep.c (arm_make_prologue_cache): Use FRAME_OBSTACK_ZALLOC
	instead of calling frame_obstack_zalloc directly.
	(arm_make_stub_cache): Ditto.
	* frame-unwind.h: Ditto.
	* frame.c (create_new_frame): Ditto.

2006-07-27  Bob Wilson  <bob.wilson@acm.org>

	* MAINTAINERS (Write After Approval): Add myself.

2006-07-27  Bob Wilson  <bob.wilson@acm.org>

	* main.c (captured_main): Print a newline after calling
	print_gdb_version instead of waiting until after the symbol file
	has been read.  Adjust error_pre_print, quit_pre_print, and
	warning_pre_print values.

2006-07-27  Roger Sayle  <roger@eyesopen.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* irix5-nat.c (fetch_core_registers): Simplify and correct logic.

2006-07-27  Daniel Jacobowitz  <dan@codesourcery.com>

	* target.h (target_read_stralloc): New prototype.
	* target.c (target_read_alloc_1): Renamed from target_read_alloc.
	Take new PADDING argument.
	(target_read_alloc): Use it.
	(target_read_stralloc): New function.

2006-07-26  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (remote_protocol_features): Correct qPart to qXfer.

2006-07-25  Daniel Jacobowitz  <dan@codesourcery.com>

	* eval.c (evaluate_subexp_for_address): Don't incorrectly discard
	calls to C++ operator*.

2006-07-24  Roger Sayle  <roger@eyesopen.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* solib-irix.c (gdb_int32_bytes): Use gdb_byte instead of char.
	(gdb_int64_bytes): Likewise.
	(fetch_lm_info): Use .b fields of gdb_int32_bytes and gdb_int64_bytes
	as first argument to extract_unsigned_integer to silence compiler
	warnings.

2006-07-24  Frederic Riss  <frederic.riss@st.com>

	* dwarf2read.c (struct dwarf2_per_objfile): Add has_section_at_zero 
	field.
	(dwarf2_locate_sections): Initialize 
	dwarf2_per_objfile->has_section_at_zero.
	(dwarf2_get_pc_bounds): Use dwarf2_per_objfile->has_section_at_zero 
	instead of HAS_RELOC test.
	(read_partial_die): Ditto.

2006-07-24  Daniel Jacobowitz  <dan@codesourcery.com>

	* corefile.c (reopen_exec_file): Only check for an open exec file.
	Use exec_file_attach.
	* exec.c (exec_open): Make static.
	(exec_file_command): Don't use target_preopen.  Query directly about
	changing the file.
	* gdbcore.h (exec_open): Remove prototype.

2006-07-24  Frederic Riss  <frederic.riss@st.com>

	* regcache.c (struct regcache): Make register_valid_p a signed char 
	array.

2006-07-24  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* linux-thread-db.c (thread_db_wait): Remove libthread_db
	after exec events.

2006-07-24  Daniel Jacobowitz  <dan@codesourcery.com>

	* NEWS: Mention Windows cross debugging support.

2006-07-23  Daniel Jacobowitz  <dan@codesourcery.com>

	* linux-nat.c (linux_nat_add_target): Remove extern.
	* linux-nat.h (thread_db_init): New prototype.

2006-07-22  Daniel Jacobowitz  <dan@codesourcery.com>

	* configure.tgt: Build gdbserver for Cygwin and mingw32.

2006-07-22  Daniel Jacobowitz  <dan@codesourcery.com>

	* config/i386/cygwin.mt (DEPRECATED_TM_FILE): Delete.
	* config/i386/nm-cygwin.h: Add contents of tm-cygwin.h.
	* config/i386/tm-cygwin.h: Delete file.

2006-07-22  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* infrun.c (handle_inferior_event): Typo.

2006-07-21  Andrew Stubbs  <andrew.stubbs@st.com>

	* cli/cli-cmds.c (source_verbose, trace_commands): New variables.
	(source_script): New function.
	(source_verbose_cleanup): New function.
	(source_command): Move old contents to source_script.
	Make function static. Parse -v option and call source_script.
	(init_cli_cmds): Update source command help.
	Add 'set trace-commands' command.
	* cli/cli-script.c (command_next_depth): New static variable.
	(suppress_next_print_command_trace): New static variable.
	(reset_command_nest_depth): New function.
	(print_command_trace): New function.
	(execute_control_command): Split the continue_control and break_control
	cases, add calls to print_command_trace and count the nest depth.
	(while_command): Set suppress_next_print_command_trace.
	(if_command): Likewise.
	* top.c (execute_command): Call print_command_trace.
	* cli/cli-cmds.h (source_verbose, trace_commands): New extern variables.
	(source_command): Change to source_script.
	* main.c (captued_main): Use source_script instead of source_command.
	* top.h (source_command): Change to source_script.
	* event-top.c (display_gdb_prompt): Call reset_command_nest_depth.
	* cli/cli-script.h (print_command_trace): Export.
	(reset_command_nest_depth): Likewise.

2006-07-20  Daniel Jacobowitz  <dan@codesourcery.com>

	* eval.c (evaluate_struct_tuple): Skip static fields.

2006-07-19  Mark Kettenis  <kettenis@gnu.org>

	* alphaobsd-tdep.c: Include "obsd-tdep.h".
	(alphaobsd_init_abi): Set skip_solib_resolver.
	* Makefile.in (alphaobsd-tdep.o): Update dependencies.
	* config/alpha/obsd.mt (TDEPFILES): Add obsd-tdep.o.

	* arm-tdep.c (arm_gdbarch_init): Get default floating-point model
	from ELF flags for binaries produced by the GNU toolchain.

2006-07-18  Nathan Sidwell  <nathan@codesourcery.com>

	* remote-fileio.c (remote_fileio_func_rename): Reorder to process
	input buffer before reading memory.
	(remote_fileio_func_stat): Likewise.

2006-07-18  Daniel Jacobowitz  <dan@codesourcery.com>

	* blockframe.c (find_pc_partial_function): Use the minimal symbol
	size to control the cache entry, if available.
	* minsyms.c (lookup_minimal_symbol_by_pc_section): Handle minimal
	symbols with zero and non-zero sizes differently.

2006-07-18  Daniel Jacobowitz  <dan@codesourcery.com>

	* linux-thread-db.c (td_thr_getfpregs_p, td_thr_getgregs_p)
	(td_thr_setfpregs_p, td_thr_setgregs_p, thread_db_get_info)
	(thread_db_fetch_registers, thread_db_store_registers)
	(thread_db_thread_alive, thread_db_state_str): Delete.
	(thread_db_load): Don't look up regset functions.
	(thread_db_pid_to_str): Simplify.
	(thread_db_extra_thread_info): New.
	(init_thread_db_ops): Do not set to_fetch_registers,
	to_store_registers, or to_thread_alive.  Set to_extra_thread_info.
	* Makefile.in: Remove linux-thread-db.o rule.

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

	* armobsd-tdep.c: Include "trad-frame.h" and "tramp-frame.h".
	(armobsd_sigframe_init): New function.
	(armobsd_sigframe): New variable.
	(armobsd_init_abi): Prepend armobsd_sigframe unwinder.
	* Makefile.in (armobsd-tdep.o): Update dependencies.

2006-07-18  Denis PILAT  <denis.pilat@st.com>

	* monitor.c: Remove unused prototypes.

2006-07-18  Vladimir Prus  <vladimir@codesourcery.com>

	* target.c (tcomplain): Mark with ATTR_NORETURN.

	* defs.h (print_transfer_performance): Improve comments.

2006-07-17  Mark Kettenis  <kettenis@gnu.org>

	* printcmd.c: Coding style fixes: add missing spaces in comments
	and wrapping long lines.
	(delete_display, enable_display_command, disable_display_command)
	(printf_command, display_info, undisplay_command, free_display)
	(display_command, x_command, address_info, set_command)
	(inspect_command, call_command, print_command, print_command_1)
	(validate_format, print_formatted, decode_format, sym_format):
	Remove prototypes.
	(x_command): Make static.
	(printf_command): Convert error into internal consistency check.
	(address_info): Avoid assignment within function call.
	(printf_command): Avoid redundant cast.
	* tracepoint.c (x_command): Remove extern prototype.

	* armobsd-tdep.c (armobsd_init_abi): Set skip_solib_resolver.
	* Makefile.in (armobsd-tdep.o): Update dependencies.
	* config/arm/obsd.mt (TDEPFILES): Add obsd-tdep.o.

2006-07-16  Mark Kettenis  <kettenis@gnu.org>

	* armobsd-tdep.c: New file.
	* Makefile.in (ALLDEPFILES): Add armobsd-tdep.c.
	(armobsd-tdep.o): New dependency.
	* config/arm/obsd.mt: New file.
	* configure.tgt: (arm*-*-openbsd*): Set gdb_target to obsd.

	* gdbarch.sh (deprecated_saved_pc_after_call): Delete.
	* gdbarch.h, gdbarch.c: Re-generate.

	* arm-tdep.c (arm_saved_pc_after_call): Delete.
	(arm_gdbarch_init): Do not set deprecated_saved_pc_after_call.

2006-07-16  Alfred M. Szmidt  <ams@gnu.org>
	
	* gnu-nat.c: Undefine _process_user_ before including
	<hurd/process_request.h>.
	(gnu_resume): Supply missing argument to error().
	(gnu_read_inferior): Add extra parenthesis around arithmetic
	expression to silence warnings from GCC.
	(gnu_write_inferior): Likewise.
	(gnu_xfer_memory): Changed type of MYADDR to `gdb_byte *'.

2006-07-16  Mark Kettenis  <kettenis@gnu.org>

	* armnbsd-tdep.c (arm_netbsd_elf_init_abi): Use
	svr4_ilp_fetch_link_map_offsets.

2006-07-15  Mark Kettenis  <kettenis@gnu.org>

	* armnbsd-tdep.c: Don't include "nbsd-tdep.h".
	* config/arm/nbsd.mt (TDEPFILES): Remove nbsd-tdep.o.
	(DEPRECATED_TM_FILE): Remove.
	* Makefile.in (armnbsd-tdep.o): Update dependencies.
	
2006-07-14  Joel Brobecker  <brobecker@adacore.com>

	* PROBLEMS: Document threads/2137.

2006-07-13  Mark Kettenis  <kettenis@gnu.org>

	* config/alpha/tm-nbsd.h: Remove file.
	* config/alpha/nbsd.mt (DEPRECATED_TM_FILE): Remove.

2006-07-13  Corinna Vinschen  <vinschen@redhat.com>

	* mips-tdep.c (mips_integer_to_address): Simplify be calling
	extract_signed_integer directly.  Fix comment.

2006-07-13  Corinna Vinschen  <vinschen@redhat.com>

	* m32c-tdep.c (m32c_banked_register): New function.
	(m32c_banked_read): Use m32c_banked_register function to evaluate
	real register number.
	(m32c_banked_write): Ditto.
	(m32c_virtual_frame_pointer): New function.
	(m32c_gdbarch_init): Add set_gdbarch_virtual_frame_pointer call.

2006-07-13  Nathan Sidwell  <nathan@codesourcery.com>

	* m68k-tdep.c (m68k_frame_align): New.
	(m68k_gdbarch_init): Set frame_align here.

2006-07-13  Denis PILAT  <denis.pilat@st.com>

	* interps.c (interpreter_completer): Allocate one more item to the
	'matches' list and set them all to 0 with a xcalloc.

2006-07-13  Nick Roberts  <nickrob@snap.net.nz>

	* annotate.c (annotate_frame_begin): Re-instate frame-begin
	annotation for level 3 annotations.

2006-07-13  Paul N. Hilfinger  <Hilfinger@adacore.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* infcall.c (value_arg_coerce): Use value_cast_pointers for
	references.  Avoid value_cast to a reference type.  Don't silently
	convert pointers to references.
	* valops.c (value_cast_pointers): New, based on value_cast.
	(value_cast): Use it.  Reject reference types.
	(value_ref): New.
	(typecmp): Use it.
	* value.h (value_cast_pointers, value_ref): New prototypes.

2006-07-12  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (unpack_varlen_hex): Correct type of retval.
	Reported by Zhigang Gong <zhigang.gong@gmail.com>.

2006-07-12  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (dwarf2_symbol_mark_computed): Handle corrupted
	or missing location list information.  Suggested by Jan
	Kratochvil <lace@jankratochvil.net>.

2006-07-12  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (arm_linux_tdep_h): New variable.
	(arm-linux-nat.o, arm-linux-tdep.o): Update.
	* arm-linux-nat.c: Include "arm-linux-tdep.h".
	(typeNone, typeSingle, typeDouble, typeExtended)
	(FPWORDS, ARM_CPSR_REGNUM, FPREG, FPA11)
	(fetch_nwfpe_single, fetch_nwfpe_double, fetch_nwfpe_none)
	(fetch_nwfpe_extended, fetch_nwfpe_register, store_nwfpe_single)
	(store_nwfpe_double, store_nwfpe_extended, store_nwfpe_register):
	Delete.
	(fetch_fpregister, fetch_fpregs, store_fpregister, store_fpregs):
	Use gdb_byte buffers, NWFPE_FPSR_OFFSET, supply_nwfpe_register,
	and collect_nwfpe_register.
	(fill_gregset, supply_gregset, fill_fpregset, supply_fpregset): Use
	new regset functions.
	* arm-linux-tdep.c: Include "regset.h" and "arm-linux-tdep.h".
	(arm_apcs_32): New declaration.
	(ARM_LINUX_SIZEOF_GREGSET, arm_linux_supply_gregset)
	(arm_linux_collect_gregset, typeNone, typeSingle, typeDouble)
	(typeExtended, supply_nwfpe_register, collect_nwfpe_register)
	(arm_linux_supply_nwfpe, arm_linux_collect_nwfpe)
	(arm_linux_regset_from_core_section): New.
	(arm_linux_init_abi): Register arm_linux_regset_from_core_section.
	* arm-linux-tdep.h: New file.
	* arm-tdep.h (struct regset): Declare.
	(struct gdbarch_tdep): Add gregset, fpregset members.
	* config/arm/linux.mh (NATDEPFILES): Remove corelow.o and
	core-regset.o.
	* config/arm/linux.mt (TDEPFILES): Add corelow.o.

2006-07-12  Jan Kratochvil  <lace@jankratochvil.net>

	* infrun.c (handle_inferior_event): Fixed typos in printf.

2006-07-12  Daniel Jacobowitz  <dan@codesourcery.com>
	    Nathan Sidwell  <nathan@codesourcery.com>

	* remote.c (REMOTE_ALIGN_WRITES): New.
	(remote_write_bytes): Align large write packets.  Remove unused
	payload_start variable.

2006-07-12  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (PACKET_qXfer_auxv): New, renamed from PACKET_qPart_auxv.
	(remote_supported_packet): Remove #if 0.
	(remote_protocol_features): Add qPart:auxv:read.
	(remote_unescape_input): New function.
	(readchar): Don't mask off the high bit.
	(read_frame): Use fputstrn_filtered for packet data.
	(getpkt_sane): Return the number of bytes read or -1.  Use
	fputstrn_unfiltered.
	(remote_read_qxfer): New.
	(remote_xfer_partial): Use it for TARGET_OBJECT_AUXV.
	(_initialize_remote): Update packet registration.
	* defs.h (fputstrn_filtered): New prototype.
	* utils.c (fputstrn_filtered): New.
	* NEWS: Mention qXfer.

2006-07-12  Daniel Jacobowitz  <dan@codesourcery.com>

	* target.c (target_read): Stop if target_read_partial returns 0
	when some bytes have already been read.
	(target_write): Likewise for target_write_partial.
	(target_read_partial, target_write_partial): Make static.
	(target_read_alloc): New.
	* target.h: Doc fixes.
	(target_read_partial, target_write_partial): Delete prototypes.
	(target_read_alloc): New prototype.

	* auxv.c (target_auxv_read): Delete.
	(target_auxv_search, fprint_target_auxv): Use target_read_alloc.
	* auxv.h (target_auxv_read): Delete prototype.
	* avr-tdep.c (avr_io_reg_read_command): Use target_read_alloc.
	* ia64-tdep.c (getunwind_table, get_kernel_table): Likewise.
	* linux-nat.c (linux_nat_make_corefile_notes): Likewise.
	* procfs.c (procfs_make_note_section): Likewise.
	* remote.c (remote_xfer_partial): Don't loop here.
	* sparc-tdep.c (sparc_fetch_wcookie): Use target_read.

2006-07-12  Daniel Jacobowitz  <dan@codesourcery.com>

	* arm-linux-tdep.c: Doc fixes.
	(ARM_SIGCONTEXT_R0, ARM_UCONTEXT_SIGCONTEXT)
	(ARM_OLD_RT_SIGFRAME_SIGINFO, ARM_OLD_RT_SIGFRAME_UCONTEXT)
	(ARM_NEW_RT_SIGFRAME_UCONTEXT, ARM_NEW_SIGFRAME_MAGIC): New
	constants.
	(arm_linux_sigreturn_init, arm_linux_rt_sigreturn_init): Support
	the new signal frame layouts.

2006-07-12  Mike Frysinger  <vapier@gentoo.org>:
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (init.c) [LANG, LC_ALL]: Set to `c'.
	* gdb_indent.sh, gdb_mbuild.sh, observer.sh: Likewise.
	* gdbarch.sh: Correct comment.

2006-07-12  Daniel Jacobowitz  <dan@codesourcery.com>

	* MAINTAINERS: Add Alfred Szmidt for the Hurd.

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

	* alpha-tdep.h (ALPHA_INSN_SIZE): New define.

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

	* alphaobsd-tdep.c: New file.
	* alphanbsd-tdep.c (_initialize_alphanbsd_tdep): Do not register a
	handler for GDB_OSABI_OPENBSD_ELF.
	* Makefile.in (ALLDEPFILES): Add alphaobsd-tdep.c.
	(alphaobsd-tdep.o): New target.
	* config/alpha/obsd.mt: New file.
	* configure.tgt (alpha*-*-openbsd*): Set gdb_target to obsd.

2006-07-10  Richard Henderson  <rth@redhat.com>

	* alpha-tdep.h (struct gdbarch_tdep): Add return_in_memory.
	* alpha-tdep.c (alpha_register_byte): Remove.
	(alpha_extract_struct_value_address): Remove.
	(alpha_return_value): New.
	(alpha_return_in_memory_always): New.
	(alpha_gdbarch_init): Set tdep->return_in_memory.  Don't call
	set_gdbarch_deprecated_register_byte.  Do call set_gdbarch_return_value
	instead of set_gdbarch_deprecated_use_struct_convention,
	set_gdbarch_extract_return_value, set_gdbarch_store_return_value,
	or set_gdbarch_deprecated_extract_struct_value_address.
	* alphafbsd-tdep.c (alphafbsd_return_in_memory): Rename from
	alphafbsd_use_struct_convention, remove gcc_p argument.
	(alphafbsd_init_abi): Set tdep->return_in_memory instead of
	set_gdbarch_deprecated_use_struct_convention.

2006-07-09  Mark Kettenis  <kettenis@gnu.org>

	* alphabsd-tdep.h (alphanbsd_regset_from_core_section): New
	prototype.
	* alphanbsd-tdep.c (alphanbsd_regset_from_core_section): Handle
	a.out-style core file format here.  Make global.
	(alphanbsd_regset_from_core_section): Remove.
	(alphanbsd_sigtramp_offset): Make static.
	(alphanbsd_aout_init_abi): Remove.
	(alphanbsd_core_osabi_sniffer): Return GDB_OSABI_NETBSD_ELF for
	a.out style core files.
	(_initialize_alphanbsd_tdep): Do not register a handler for
	GDB_OSABI_NETBSD_AOUT.

	* alphabsd-tdep.h: Tweak comments.
	(SIZEOF_STRUCT_REG, SIZEOF_STRUCT_FPREG): Remove.
	* alphanbsd-tdep.c: Reorder includes.  Include "regset.h".
	(ALPHANBSD_SIZEOF_GREGS, ALPHANBSD_SIZEOF_FPREGS): New defines.
	(alphanbsd_supply_fpregset, alphanbsd_supply_gregset)
	(alphanbsd_aout_supply_gregset): New functions.
	(alphanbsd_gregset, alphanbsd_fpregset, alphanbsd_aout_gregset):
	New variables.
	(alphanbsd_regset_from_core_section)
	(alphanbsd_aout_regset_from_core_section): New functions.
	(fetch_core_registers, fetch_elfcore_registers): Remove functions.
	(alphanbsd_core_fns, alphanbsd_elf_fns): Remove variables.
	(alphanbsd_init_abi): Set regset_from_core_section.
	(alphanbsd_aout_init_abi, alphanbsd_core_osabi_sniffer): New
	functions.
	(_initialize_alphanbsd_tdep): Register NetBSD core file sniffer.
	Use alphanbsd_aout_init_abi whre appropriate.  Don't call
	deprecated_add_core_fns.
	* Makefile.in (alphanbsd-tdep.o): Update dependencies.

	* alphabsd-tdep.c (alphabsd_supply_reg, alphabsd_fill_reg)
	(alphabsd_supply_fpreg, alphabsd_fill_fpreg): Add missing spaces.

	* alphanbsd-tdep.c (alphanbsd_init_abi): Use
	svr4_lp64_fetch_link_map_offsets instead of
	nbsd_lp64_solib_svr4_fetch_link_map_offsets.

2006-07-06  Andrew Stubbs  <andrew.stubbs@st.com>

	* parse.c (write_exp_elt_opcode, write_exp_elt_sym, write_exp_elt_block
	write_exp_elt_longcst, write_exp_elt_dblcst, write_exp_elt_type,
	write_exp_elt_intern): Zero initialize tmp.

2006-07-05  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (remote_xfer_partial): Remove KOD support.
	* target.h (enum target_object): Remove TARGET_OBJECT_KOD.
	* MAINTAINERS: Move Kernel Object Display entry to past maintainers.
	* Makefile.in (SFILES, kod_h, COMMON_OBS, kod.o, kod-cisco.o):
	Remove KOD support.
	* mi/mi-cmds.c (mi_cmds): Remove dummy KOD commands.
	* NEWS: Mention KOD.
	* kod.h, kod.c, kod-cisco.c: Delete files.

2006-07-04  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (init_remote_state): Use xrealloc instead of xmalloc.

2006-07-03  Nathan J. Williams  <nathanw@wasabisystems.com>

	* bsd-kvm.c (bsd_kvm_open): Open the KVM interface read-write if
	write_files is set.

2006-06-24  Eli Zaretskii  <eliz@gnu.org>

	* defs.h (DIRNAME_SEPARATOR) [!__CYGWIN__ && _WIN32]: Define to `;'.

2006-06-23  Daniel Jacobowitz  <dan@codesourcery.com>

	* arm-tdep.c (arm_register_type): Use unsigned types for registers.
	Add special types for sp and pc.
	* Makefile.in (arm-tdep.o): Update.

2006-06-22  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (remote_escape_output): New function.
	(remote_write_bytes): Use remote_escape_output.

2006-06-21  Daniel Jacobowitz  <dan@codesourcery.com>

	* NEWS: Mention qSupported.
	* remote.c (struct remote_state): Add explicit_packet_size.
	(get_remote_packet_size): Check explicit_packet_size.
	(get_memory_packet_size): Likewise.
	(PACKET_qSupported): New enum value.
	(struct protocol_feature, remote_supported_packet)
	(remote_packet_size, remote_protocol_features)
	(remote_query_supported): New.
	(remote_open_1): Reset explicit_packet_size.  Call
	remote_query_supported.
	(_initialize_remote): Register qSupported.

2006-06-21  Andrew Stubbs  <andrew.stubbs@st.com>

        * cli/cli-script.c (realloc_body_list): Zero new parts of body_list.

2006-06-20  Joel Brobecker  <brobecker@adacore.com>

	* GDB 6.5 released from GDB 6.5 branch.

2006-06-19  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c (mips_eabi_push_dummy_call): For 32 bit ABI, to
	decide how many registers it takes to pass a floating point
	argument, what matters is the size of a floating point register
	(not the size of a general purpose register).
	(mips_o32_push_dummy_call): Ditto.

2006-06-19  Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>

	* configure.tgt: Add gdbserver support for m32r-linux.

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

	* m68klinux-tdep.c (m68k_linux_init_abi): Fix typo in comment.

2006-06-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* infrun.c (insert_step_resume_breakpoint_at_caller): New function,
	based on insert_step_resume_breakpoint_at_frame.
	(handle_inferior_event): Update comments.  Use
	insert_step_resume_breakpoint_at_caller.
	(insert_step_resume_breakpoint_at_frame): Revise comments.

2006-06-14  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (read_unspecified_type): New function.
	(read_type_die): Handle DW_TAG_unspecified_type.
	(Committed by Julian Brown.)

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

	* symfile.c (load_command): Check for a changed executable before
	"load".

2006-06-13  Fred Fish  <fnf@specifix.com>

	* mips-tdep.c (mips_find_long_section): New function.
	(mips_gdbarch_init): Use it to set long and pointer sizes.

2006-06-13  Nathan Sidwell  <nathan@codesourcery.com>

	* remote-file.io.c (remote_fileio_func_system): Treat zero length
	string as NULL.  Adjust for NULL pointer argument.
	* doc/gdb.texinfo (system): Document behaviour with zero length
	string.

2006-06-12  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (set_remote_protocol_packet_cmd)
	(show_remote_protocol_packet_cmd): New prototypes.
	(remote_set_cmdlist, remote_show_cmdlist): Move higher.
	(struct packet_config): Make name and title const.
	(add_packet_config_cmd): Remove unnecessary arguments.
	(_initialize_remote): Update calls.

2006-06-10  Daniel Jacobowitz  <dan@codesourcery.com>

	* mingw-hdep.c (gdb_select): Always check for NULL fd sets
	before calling FD_ISSET.  Correct check for exceptfds which
	previously tested writefds.

2006-06-09  Daniel Jacobowitz  <dan@codesourcery.com>
	    Julian Brown  <julian@codesourcery.com>

	* dwarf2read.c (partial_read_comp_unit_head): Accept version 3.

2006-06-09  Julian Brown  <julian@codesourcery.com>

	* MAINTAINERS (Write After Approval): Add myself.

2006-06-08  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c (fp_register_arg_p): Recognize floating point typedefs.

2006-06-08  Nathan Sidwell  <nathan@codesourcery.com>

	* m68k-tdep.c (m68k_dwarf_reg_to_regnum): New.
	(m68k_gdbarch_init): Set it for dwarf & dwarf2 reg number
	conversion. Use M68K_NUM_REGS for number of regs.

	* remote-fileio.c (remote_fileio_reset): New.
	* remote-fileio.h (remote_fileio_reset): Prototype.
	* remote.c (extended_remote_restart, remote_open_1): Call it.

	* remote.c (remote_open_1): Do preopen tasks before
	irreversably destroying state.

2006-06-08  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (struct remote_state): New type, only containing
	buf and buf_size.
	(remote_state): New variable.
	(get_remote_state): New function.
	(struct remote_arch_state): Renamed from struct remote_state.
	Removed buf and buf_size.
	(get_remote_arch_state): Renamed from get_remote_state.  All
	necessary callers updated to call this function.
	(init_remote_state): Initialize the architecture-specific state.
	Update the target-specific state if necessary.
	(get_remote_packet_size): New function.  All previous references
	changed to use this accessor function.
	(packet_reg_from_regnum, packet_reg_from_pnum): Take a
	remote_arch_state instead of a remote_state.  All callers changed.
	(_initialize_remote): Initialize the packet buffer here.

2006-06-06  Nathan Sidwell  <nathan@codesourcery.com>

	* remote.c (remote_insert_watchpoint): Return -1, rather than
	fatal error if packet is disabled.
	(remote_remove_watchpoint, remote_insert_hw_breakpoint,
	remote_remove_hw_breakpoint): Likewise.

2006-06-02  Nick Roberts  <nickrob@snap.net.nz>

	* breakpoint.c (print_it_typical): Use EXEC_ASYNC_LOCATION_REACHED.

2006-05-31  Michael Snyder  <msnyder@redhat.com>

	* mips-tdep.c: Comment tweaks.

2006-05-31  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (top_builddir): Update comments.
	(INTL_DIR, INTL_SRC): Delete.
	(INTL, INTL_DEPS, INTL_CFLAGS): Update.
	* acinclude.m4: Include new gettext macros.
	* configure.ac: Use ZW_GNU_GETTEXT_SISTER_DIR.  Remove copied
	CATALOGS code.
	* aclocal.m4, configure: Regenerated.

2006-05-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (arm-linux-nat.o): Update dependencies.
	* arm-linux-nat.c: Include "gdb_proc_service.h".
	(PTRACE_GET_THREAD_AREA): Define.
	(ps_get_thread_area): New function.

2006-05-28  Alexandre Oliva  <aoliva@redhat.com>

	* dwarf2-frame.h (enum dwarf2_frame_reg_rule): Add
	DWARF2_FRAME_REG_SAVED_VAL_OFFSET and
	DWARF2_FRAME_REG_SAVED_VAL_EXP.
	* dwarf2-frame.c (execute_cfa_program): Handle val_offset,
	val_offset_sf and val_expression.
	(dwarf2_frame_prev_register): Handle the new reg rules.
	(dwarf2_frame_this_id): Use pc instead of function entry point.

2006-05-28  Alexandre Oliva  <aoliva@redhat.com>

	* dwarf2-frame.c (struct dwarf2_cie): Add signal_frame field.
	(dwarf2_frame_sniffer): Use it.
	(decode_frame_entry_1): Set it according to augmentation "S".

2006-05-27  Joel Brobecker  <brobecker@adacore.com>

	From Peter Schauer <peterschauer@gmx.net>
	* m2-typeprint.c (m2_record_fields): Move variable declarations
	to the begining of the block.
        
2006-05-23  Mark Mitchell  <mark@codesourcery.com>

	* mt-tdep.c (mt_register_name): Correct out-of-range logic to
	include additional registers. 

	* mt-tdep.c (mt_gdb_regnums): Add ZI2, ZQ2, Ichannel2,
	Iscramb2, Qscramb2, Qchannel2.
	(mt_register_name): Likewise.
	(mt_copro_register_type): Describe ZI2 and ZQ2.

	* mt-tdep.c (mt_gdb_regnums): Define
	MT_COPRO_PSEUDOREG_MAC_REGNUM.
	(mt_register_name): Use it.
	(mt_copro_register_type): Likewise.
	(mt_register_type): Likewise.
	(mt_pseudo_register_read): Likewise.  Read the MAC register, not
	the coprocessor register.
	(mt_pseudo_register_write): Likewise.

2006-05-21  Christopher Faylor  <cgf@timesys.com>

	* win32-nat.c (cygwin_exceptions): New variable.
	(handle_exception): Treat a cygwin exception like a normal exception if
	cygwin_exceptions is true.
	(_initialize_win32_nat): Add "set cygwin-exceptions" handler.

2006-05-20  Gaius Mulley  <gaius@glam.ac.uk>

	* NEWS: (Improved Modula-2 language support): New section.

2006-05-19  Joel Brobecker  <brobecker@adacore.com>

	* configure: Regenerate using proper version of autoconf.

2006-05-19  Fred Fish  <fnf@specifix.com>

	* Makefile.in: Fix spelling of 'explicitly' and 'explicit'.
	* dwarfread.c: Fix spelling of 'unexpected'.
	* mips-tdep.c: Fix spelling of 'possible' and 'Determine'.
	* stack.c: Fix spelling of 'RETURN_VALUE'.
	
2006-05-18  Paul Gilliam  <pgilliam@us.ibm.com

	* solib-svr4.c (enable_break): Breakup a long line into 3 shorter ones.

2006-05-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2-frame.c: Include "value.h".
	(read_reg): Use unpack_long and register_type.
	* Makefile.in (dwarf2-frame.o): Update.

2006-05-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote-rdp.c: Deleted.
	* NEWS: Mention removal of remote-rdp.c.

	* Makefile.in (ALLDEPFILES): Remove remote-rdp.c.
	(remote-rdp.o): Delete.
	* README: Remove description of remote-rdp.c.
	* arm-tdep.c (arm_breakpoint_from_pc): Remove obsolete comment.
	* config/arm/embed.mt (TDEPFILES): Remove remote-rdp.o.

2006-05-16  Daniel Jacobowitz  <dan@codesourcery.com>

	* ser-e7kpc.c: Include <time.h> if it is available.

2006-05-16  Joel Brobecker  <brobecker@adacore.com>

	* version.in (version.in): Bump version number to 6.5.50 now
	that the gdb-6.5 branch has been created.
	* NEWS: Create a new section for changes that are included
	since gdb-6.5. Name the "since gdb-6.4" section as the "in gdb-6.5"
	section.

2006-05-16  Jim Blandy  <jimb@codesourcery.com>

	* MAINTAINERS (Authorized Committers): Gaius Mulley has accepted
	the Global Maintainers' invitation to be an authorized committer
	for the Modula-2 support.

2006-05-15  Mark Kettenis  <kettenis@gnu.org>

	* ppcobsd-nat.c: Include "gdb_assert.h".
	[PT_GETFPREGS] (getfpregs_supplies): New function.
	(ppcobsd_fetch_registers, ppcobsd_fetch_registers): Hanlde OS
	versions that have PT_GETFPREGS.
	(_initialize_ppcobsd_nat) [PT_GETFPREGS]: Initialize
	ppcobsd_fpreg_offsets.
	* ppcobsd-tdep.h (ppcobsd_fpreg_offsets, ppcobsd_fpregset):
	Declare.
	* ppcobsd-tdep.c (ppcobsd_fpreg_offsets, ppcobsd_fpregset): New
	variables.
	(_initialize_ppcobsd_tdep): Initialize ppcobsd_fpreg_offsets.
	* Makefile.in (ppcobsd-nat.o): Update dependencies.

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

	* configure.ac: Use GCC_HEADER_STDINT.
	* acinclude.m4: Include stdint.m4.
	* Makefile.in (gdb_stdint_h): Define.
	(distclean): Remove gdb_stdint.h.
	(Makefile, stamp-h): Update rules to generate only the correct
	files.
	(gdb_stdint.h, stamp-int): New rules.
	* config.in, configure: Regenerated.

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

	* valprint.c: Include "exceptions.h".
	(val_print): If something goes wrong while printing, supply an
	error message.

2006-05-15  Peter O'Gorman  <gdb-patches@mlists.thewrittenword.com>

	* source.c (get_current_source_symtab_and_line)
	(set_current_source_symtab_and_line): Use { 0 }.
	* cli/cli-cmds.c (list_command): Likewise.

2006-05-14  Nick Roberts  <nickrob@snap.net.nz>

	* mi/gdb-mi.el (gdbmi-send): Correct regexp for repeat commands.
	(gdbmi): Use new variable name gdb-pc-address.
	(gdbmi-frame-handler):  Use new variable name gdb-pc-address.
	Check that a match has been found.

2006-05-13  Gaius Mulley  <gaius@glam.ac.uk>

	* m2-lang.h: Added function extern prototypes for
	m2_is_long_set and get_long_set_bounds.
	* m2-typeprint.c: Complete replacement.
	(m2_print_type): Walk the Modula-2 type tree.
	(m2_type_name): New function.
	(m2_range): New function.
	(m2_typedef): New function.
	(m2_array): New function.
	(m2_pointer): New function.
	(m2_ref): New function.
	(m2_unknown): New function.
	(m2_union): New function.
	(m2_procedure): New function.
	(m2_print_bounds): New function.
	(m2_short_set): New function.
	(m2_is_long_set): New function.
	(m2_get_discrete_bounds): New function.
	(m2_is_long_set_of_type): New function.
	(m2_long_set): New function.
	(m2_record_fields): New function.
	(m2_enum): New function.
	* dwarf2read.c: Modified.
	(read_set_type): New function.
	(process_die): Call read_set_type.
	(read_base_type): Modifed.
	(set_cu_language): Added Modula-2 case clause.
	* m2-valprint.c: Complete replacement.
	(print_function_pointer_address): New function.
	(get_long_set_bounds): New function.
	(m2_print_long_set): New function.
	(print_unpacked_pointer): New function.
	(print_variable_at_address): New function.
	(m2_val_print): Replaced.
	* gdb/MAINTAINERS (Write After Approval): Added
	Gaius Mulley  <gaius@glam.ac.uk>

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

	* ppcnbsd-tdep.h: Update copyright year.  Include <stddef.h>
	(ppcnbsd_supply_reg, ppcnbsd_fill_reg, ppcnbsd_supply_fpreg)
	(ppcnbsd_fill_fpreg): Remove prototypes.
	(struct regset): Add forward declaration.
	(ppcnbsd_gregset, ppcnbsd_fpregset): Extern declarations.
	* ppcnbsd-tdep.c: Update copyright year.  Include "gdbtypes.h",
	"regset.h" and "gdb_string.h".  Don't include "breakpoint.h",
	"value.h", target.h and nbsd-tdep.h".  Reorder includes.
	(REG_FIXREG_OFFSET, REG_LR_OFFSET, REG_CR_OFFSET, REG_XER_OFFSET)
	(REG_CTR_OFFSET, REG_PC_OFFSET, SIZEOF_STRUCT_REG)
	(FPREG_FPR_OFFSET, FPREG_FPSCR_OFFSET, SIZEOF_STRUCT_FPREG):
	Remove macros.
	(ppcnbsd_supply_reg, ppcnbsd_fill_reg, ppcnbsd_supply_fpreg)
	(ppcnbsd_fill_fpreg): Remove functions.
	(fetch_core_registers, fetch_elfcore_registers): Remove functions.
	(ppcnbsd_core_fns, ppcnbsd_elfcore_fns): Remove variables.
	(ppcnbsd_reg_offsets): New variable.
	(ppcnbsd_gregset, ppcnbsd_fpregset): New variables.
	(ppcnbsd_sigtramp_cache_init): Deal with new signal trampoline
	introduced in NetBSD 2.0.
	(ppcnbsd_sigtramp): Provide complete signal trampoline.
	(ppcnbsd2_sigtramp): New variable.
	(ppcnbsd_init_abi): Set svr4_fetch_link_map_offsets to
	svr4_ilp32_fetch_link_map_offsets.  Set regset_from_core_section.
	Add ppcnbs2_sigtramp unwinder.
	(_initialize_ppcnbsd_tdep): Don't use deprecated_add_core_fns.
	Initialize ppcnbsd_reg_offsets.
	* ppcnbsd-nat.c: Update copyright year.  Reorder includes.
	(getregs_supplies): Use regnum instead of regno.
	(getfpregs_supplies): Likewise.
	(ppcnbsd_fetch_inferior_registers): Likewise.  Call
	ppc_supply_gregset and ppc_suppply_fpregset instead of
	ppcnbsd_supply_reg and ppcnbsd_supply_fpreg
	(ppcnbsd_store_inferior_registers): Likewise.  Call
	ppc_collect_gregset and ppc_collect_fpregset instead of
	ppcnbsd_fill_reg and ppcnbsd_fill_fpreg.
	(ppcnbsd_supply_pcb): Use `gdb_byte *' instead of `char *'.
	(_initialize_ppcnbsd_nat): Add some whitespace.
	* Makefile.in (ppcnbsd-nat.o, ppcnbsd-tdep.o): Update dependencies.
	* config/powerpc/nbsd.mh (NATDEPFILES): Remove infptrace.o.
	(NAT_FILE): Remove.
	* config/powerpc/nbsd.mt (TDEPFILES): Remove nbsd-tdep.o.

2006-05-11  Alfred M. Szmidt  <ams@gnu.org>

	* gnu-nat.c (inf_validate_procs): Don't use lvalue in assignments.

2006-05-11  Fred Fish  <fnf@specifix.com>

	* symtab.c (skip_prologue_using_sal): Handle single line functions
	like "foo(){}", which may optimize down to a single return inst.

2006-05-10  Steve Ellcey  <sje@cup.hp.com>

	* hppa-hpux-tdep.c (initialize_hp_cxx_exception_support): Remove
	message.

2006-05-09  Andreas Schwab  <schwab@suse.de>

	* dwarf2-frame.c (struct dwarf2_fde): Add eh_frame_p.
	(execute_cfa_program): Add parameter eh_frame_p.  Call
	dwarf2_frame_eh_frame_regnum when true.
	(dwarf2_frame_cache): Pass eh_frame_p from fde to
	execute_cfa_program.
	(decode_frame_entry_1): Call dwarf2_frame_eh_frame_regnum when
	processing .eh_frame.  Copy eh_frame_p to the new fde.
	(struct dwarf2_frame_ops): Add eh_frame_regnum.
	(dwarf2_frame_set_eh_frame_regnum): Define.
	(dwarf2_frame_eh_frame_regnum): Define.

	* dwarf2-frame.h (dwarf2_frame_set_eh_frame_regnum): Declare.
	(dwarf2_frame_eh_frame_regnum): Declare.

2006-05-06  David S. Miller  <davem@sunset.davemloft.net>

	* linux-nat.c (linux_nat_do_thread_registers): Check for
	NULL collect_regset method.

2006-05-06  Ulrich Weigand  <uweigand@de.ibm.com>

	* s390-tdep.c (s390_collect_regset): New function.
	(s390_gregset, s390x_gregset, s390_fpregset): Add it.

2006-05-06  Nick Roberts  <nickrob@snap.net.nz>

	* dwarf2read.c: Make LOC_OPTIMIZED_OUT the default value for a
	symbol.

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

	* linux-nat.c (exit_lwp): Fix NULL pointer access.
	(linux_nat_handle_extended): New parameter STOPPING.
	(wait_lwp): Call it with STOPPING equals 1.
	(linux_nat_wait): Call it with STOPPING equals 0.

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

	* linux-nat.c (linux_nat_wait): Do not short-cut reporting
	of 'uninteresting' signals when single-stepping.

2006-05-05  Daniel Jacobowitz  <dan@codesourcery.com>

	* MAINTAINERS: Move NEWS to the documentation entry.

2006-05-05  David S. Miller  <davem@sunset.davemloft.net>

	* linux-nat.c (linux_nat_do_thread_registers): Use the
	regset_from_core_section infrastructure if the target
	supports it.
	* Makefile.in: Update dependencies.
	* linux-thread-db.c (thread_db_store_registers): Use
	regcache_raw_collect.

2006-05-05:  Paul Gilliam  <pgilliam@us.ibm.com>

	* ppc-linux-nat.c: Clean up types for ptrace.
	Replace (CORE_ADDR) with  (uintptr_t) to avoid the size difference
	between a CORE_ADDR and a void* on ppc64 systems compiled for 32-bits.

2006-05-05  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (remote_disconnect): Add TARGET argument.
	* target.c (debug_to_disconnect): Delete.
	(update_current_target): Do not inherit to_disconnect.
	(target_disconnect): Search for a target to implement to_disconnect.
	(setup_target_debug): Do not reference to_disconnect.
	* target.h (struct target_ops): Add target argument to
	to_disconnect.

2006-05-06  Fred Fish  <fnf@specifix.com>

	* mips-tdep.c (mips_o64_push_dummy_call): Left shift big endian
	structs or unions independent of ABI register size.

2006-05-06  Fred Fish  <fnf@specifix.com>

	* mips-tdep.c (mips_o64_return_value): Replace stub that always
	returned RETURN_VALUE_STRUCT_CONVENTION with a real function.

2006-05-05  Daniel Jacobowitz  <dan@codesourcery.com>

	* mi/mi-main.c (captured_mi_execute_command): Check the return
	value of -interpreter-exec.

2006-05-03  Vladimir Prus  <ghost@cs.msu.su>

	* varobj.c (c_value_of_variable): Ignore top-level references.
	(Committed by Jim Blandy.)

2006-04-30  Mark Kettenis  <kettenis@gnu.org>

	* breakpoint.c (insert_single_step_breakpoint): Make a failure to
	insert a single-step breakpoint an error instead of a warning.

2006-05-01  Nathan J. Williams  <nathanw@wasabisystems.com>

	* ppcnbsd-tdep.c (ppcnbsd_return_value): Change type of last two
	arguments from void * to gdb_byte *.

2006-04-26  Michael Snyder  <msnyder@redhat.com>

	* linux-fork.c (_initialize_linux_fork): Rename "delete-fork"
	command to "delete fork" (no hyphen), compatible with other
	"delete" commands.
	(info_forks_command): Accept a fork ID argument, for info
	on a single fork.  Report if no matching forks.

2006-04-25  Mark Kettenis  <kettenis@gnu.org>

	* breakpoint.c (remove_single_step_breakpoints): Bail out early if
	no breakpoints are inserted.

	From Masaki MURANAKA <monaka@monami-software.com>:
	* mips-mdebug-tdep.c (mips_mdebug_frame_prev_register): Change
	type of last argument to `gdb_byte *'

2006-04-25  Jim Blandy  <jimb@codesourcery.com>

	Add support for 'target remote |' on MinGW.
	* ser-mingw.c (struct pipe_state): New structure.
	(make_pipe_state, free_pipe_state, cleanup_pipe_state)
	(pipe_windows_open, pipe_windows_close, pipe_windows_read)
	(pipe_windows_write, pipe_wait_handle): New functions.
	(_initialize_ser_windows): Register a "pipe" interface based on
	them.

2006-04-24  Daniel Jacobowitz  <dan@codesourcery.com>

	* ser-mingw.c: Include <conio.h>.
	(struct ser_console_state, struct net_windows_state): Add exit_select,
	have_stopped, thread.
	(pipe_select_thread, console_select_thread)
	(net_windows_select_thread): Don't create a local state copy or
	close stop_select.  Exit on exit_select instead of stop_select.  Set
	have_stopped.
	(console_select_thread): Don't report control keypresses as pending
	input.
	(pipe_select_thread): Allow stop_select to interrupt sleeping.
	(set_console_wait_handle): Create exit_select and have_stopped.
	Save the thread handle.  Check _kbhit before starting a thread.
	(ser_console_done_wait_handle): New.
	(ser_console_close): Close new handles.  Wait for the thread to
	exit.
	(new_windows_select_thread): Assert that an event occurred.
	(net_windows_wait_handle): Check for pending input before starting
	a thread.
	(net_windows_done_wait_handle): New.
	(net_windows_open): Create exit_select and have_stopped.
	Save the thread handle.
	(net_windows_close): Close new handles.  Wait for the thread to
	exit.
	(_intiialize_ser_windows): Register done_wait_handle methods.

	* serial.c [USE_WIN32API] (serial_done_wait_handle): New.
	* serial.h [USE_WIN32API] (struct serial_ops): Add done_wait_handle.
	[USE_WIN32API] (serial_done_wait_handle): New prototype.
	* mingw-hdep.c (gdb_select): Use serial_done_wait_handle.

2006-04-23  Andreas Schwab  <schwab@suse.de>

	* rs6000-tdep.c: Include "reggroups.h" only once.
	* Makefile.in (rs6000-tdep.o): Update dependencies.

2006-04-21  Frederic Riss  <frederic.riss@st.com>

	* dwarf2read.c (dwarf2_start_subfile): Change prototype to accept
	compilation directory as last argument. 
	Always pass comp_dir as second argument to start_subfile and prepend
	dirname to the filename when necessary. 
	Remove now superfluous search for pre-existing subfile.
	(dwarf_decode_lines): Pass the compilation directory to
	dwarf2_start_subfile.

2006-04-20  Michael Snyder  <msnyder@redhat.com>

	* 2006-03-22  Jim Blandy  <jimb@redhat.com>
	Add support for the Renesas M32C and M16C.

	* configure.tgt (m32c-*-*): New entry.
	* config/m32c/m32c.mt: New file.
	* m32c-tdep.c: New file.
	* Makefile.in (elf_m32c_h): New variable.
	(m32c-tdep.o): New rule.
	* NEWS: Mention new target.
	* MAINTAINERS: Designate Jim Blandy as responsible maintainer.

2006-04-20  Michael Snyder  <msnyder@redhat.com>

	* remote.c: Fix spelling error in comment.

2006-04-20  Daniel Jacobowitz  <dan@codesourcery.com>

	* m68klinux-tdep.c (m68k_linux_sigtramp_frame_prev_register):
	Correct type of VALUEP.  Reported by Jean-Rene Peulve
	<jr.peulve@wanadoo.fr>.

2006-04-19  Masaki Muranaka  <monaka@monami-software.com>

	* m32r-rom.c: On MinGW, include winsock.h instead of sys/types.h,
	netdb.h, netinet/in.h.
	(m32r_upload_command); Add calls WSAStartup().
	* remote-m32r-sdi.c: On MinGW, include winsock.h instead of
	netinet/in.h.

2006-04-18  Daniel Jacobowitz  <dan@codesourcery.com>

	* breakpoint.c (deprecated_read_memory_nobpt): Update to use
	shadow_len.
	(insert_bp_location, reattach_breakpoints, remove_breakpoint)
	(delete_breakpoint): Update calls to changed methods.
	(deprecated_insert_raw_breakpoint, deprecated_remove_raw_breakpoint)
	(single_step_breakpoints, insert_single_step_breakpoint)
	(remove_single_step_breakpoints): New.
	* breakpoint.h (struct bp_target_info): New.
	(struct bp_location): Replace shadow_contents with
	target_info and overlay_target_info.
	(deprecated_insert_raw_breakpoint, deprecated_remove_raw_breakpoint)
	(insert_single_step_breakpoint, remove_single_step_breakpoints): New
	prototypes.
	* gdbarch.sh: Forward declare struct bp_target_info in gdbarch.h.
	(memory_insert_breakpoint, memory_remove_breakpoint): Update second
	argument.
	* mem-break.c (default_memory_insert_breakpoint): Update.  Set
	placed_address, placed_size, and shadow_len.
	(default_memory_remove_breakpoint): Update.  Don't use
	BREAKPOINT_FROM_PC.
	(memory_insert_breakpoint, memory_remove_breakpoint): Update.
	* target.c (update_current_target): Update prototypes for changed
	functions.
	(debug_to_insert_breakpoint, debug_to_remove_breakpoint)
	(debug_to_insert_hw_breakpoint, debug_to_remove_hw_breakpoint):
	Update.
	* target.h: Forward declare struct bp_target_info.
	(struct target_ops): Use a bp_target_info argument for
	to_insert_breakpoint, to_remove_breakpoint,
	to_insert_hw_breakpoint, and to_remove_hw_breakpoint.
	(target_insert_breakpoint, target_remove_breakpoint)
	(target_insert_hw_breakpoint, target_remove_hw_breakpoint)
	(memory_insert_breakpoint, memory_remove_breakpoint)
	(default_memory_insert_breakpoint, default_memory_remove_breakpoint):
	Update.
	* config/i386/nm-i386.h: Forward declare struct bp_target_info.
	(i386_insert_hw_breakpoint, i386_remove_hw_breakpoint): Update.
	(target_insert_hw_breakpoint, target_remove_hw_breakpoint): Likewise.

	* gdbarch.c, gdbarch.h: Regenerated.

	* alpha-tdep.c (alpha_software_single_step): Use
	insert_single_step_breakpoint and remove_single_step_breakpoints.
	Remove unused statics.
	* arm-tdep.c (arm_software_single_step): Likewise.  Add a note.
	* cris-tdep.c (cris_software_single_step): Likewise.
	* mips-tdep.c (mips_software_single_step): Likewise.
	* rs6000-tdep.c (rs6000_software_single_step): Likewise.
	* sparc-tdep.c (sparc_software_single_step): Likewise.
	* wince.c (struct thread_info_struct): Remove step_prev.
	(undoSStep): Use remove_single_step_breakpoints.
	(wince_software_single_step): Use insert_single_step_breakpoint.

	* corelow.c (ignore): Remove unneeded prototype.  Update arguments.
	* exec.c (ignore): Likewise.
	* sol-thread.c (ignore): Likewise.

	* procfs.c (dbx_link_shadow_contents): Delete.
	(dbx_link_bpt): New.
	(procfs_mourn_inferior): Remove it if necessary.
	(remove_dbx_link_breakpoint): Use it.
	(insert_dbx_link_bpt_in_file): Set it.
	(procfs_init_inferior): Don't update dbx_link_bpt_addr.
	* rs6000-nat.c (exec_one_dummy_insn): Use
	deprecated_insert_raw_breakpoint and
	deprecated_remove_raw_breakpoint.
	* solib-irix.c (shadow_contents, breakpoint_addr): Delete.
	(base_breakpoint): New.
	(disable_break): Use it.
	(enable_break): Set it.

	* i386-nat.c (i386_insert_hw_breakpoint, i386_remove_hw_breakpoint):
	Update.
	* ia64-tdep.c (ia64_memory_insert_breakpoint)
	(ia64_memory_remove_breakpoint): Likewise.
	* m32r-tdep.c (m32r_memory_insert_breakpoint)
	(m32r_memory_remove_breakpoint): Likewise.
	* monitor.c (monitor_insert_breakpoint, monitor_remove_breakpoint):
	Likewise.  Remove unnecessary prototypes.  Use placed_address
	and placed_size.  Removed useless read from memory.
	* nto-procfs.c (procfs_insert_breakpoint)
	(procfs_remove_breakpoint, procfs_insert_hw_breakpoint)
	(procfs_remove_hw_breakpoint): Update.
	* ocd.c (ocd_insert_breakpoint, ocd_remove_breakpoint): Likewise.
	* ocd.h (ocd_insert_breakpoint, ocd_remove_breakpoint): Likewise.
	* ppc-linux-tdep.c (ppc_linux_memory_remove_breakpoint): Likewise.
	* ppc-tdep.h (ppc_linux_memory_remove_breakpoint): Likewise.
	* remote-e7000.c (e7000_insert_breakpoint)
	(e7000_remove_breakpoint): Likewise.
	* remote-m32r-sdi.c (m32r_insert_breakpoint)
	(m32r_remove_breakpoint): Likewise.
	* remote-mips.c (mips_insert_breakpoint)
	(mips_remove_breakpoint): Likewise.
	* remote-rdp.c (remote_rdp_insert_breakpoint)
	(remote_rdp_remove_breakpoint): Likewise.
	(rdp_step): Use deprecated_insert_raw_breakpoint and
	deprecated_remove_raw_breakpoint.
	* remote-sds.c (sds_insert_breakpoint, sds_remove_breakpoint):
	Update.
	* remote-sim.c (gdbsim_insert_breakpoint, gdbsim_remove_breakpoint):
	Delete.
	(init_gdbsim_ops): Use memory_insert_breakpoint and
	memory_remove_breakpoint.
	* remote-st.c (st2000_insert_breakpoint)
	(st2000_remove_breakpoint): Update.  Remove unused
	BREAKPOINT_FROM_PC.
	* remote.c (remote_insert_breakpoint, remote_remove_breakpoint):
	Update.  Use placed_address and placed_size.
	(remote_insert_hw_breakpoint, remote_remove_hw_breakpoint): Likewise.

2006-04-12  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (extended_remote_restart): Pass the correct length
	to getpkt.

2006-04-11  Jim Blandy  <jimb@codesourcery.com>

	* serial.c (serial_open): Check for special cases at the front of
	the "device" name before scanning for the ':' that would indicate
	an IP-based connection.

2006-04-10  Christopher Faylor  <cgf@timesys.com>

	* win32-nat.c (open_symbol_file_object): New function.
	(in_dynsym_resolve_code): Ditto.
	(init_win32_ops): Fill in fields which ought not to be NULL.

2006-04-10  Christopher Faylor  <cgf@timesys.com>

	* win32-nat.c (do_win32_fetch_inferior_registers): Don't do anything
	with saved context if __COPY_CONTEXT_SIZE is not defined.
	(handle_output_debug_string): Ditto.

2006-04-10  Daniel Jacobowitz  <dan@codesourcery.com>

	* arm-linux-tdep.c (arm_linux_extract_return_value): Use gdb_byte.

2006-04-09  David S. Miller  <davem@sunset.davemloft.net>

	* sparc64-linux-tdep.c (sparc64_linux_init_abi): Append dwarf2
	frame sniffer.
	* sparc-tdep.c (sparc32_gdbarch_init): Make sure to call
	dwarf2_frame_set_init_reg() before gdbarch_init_osabi() so
	that the latter can override.
	* Makefile.in (sparc64-linux-tdep.o): Update dependencies.

2006-04-09  Ulrich Weigand  <uweigand@de.ibm.com>

	* s390-tdep.c (struct s390_prologue_data): New field 'stack'.
	(s390_store): Call pv_area_store to track stack slots.
	(s390_load): Call pv_area_fetch to track stack slots.
	(s390_check_for_saved): New function.
	(s390_analyze_prologue): Call pv_area_scan.  Allocate and free stack.

2006-04-09  Ulrich Weigand  <uweigand@de.ibm.com>

	* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
	* s390-tdep.c: Include "prologue-value.h".
	(struct prologue_value): Remove.
	(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
	pv_constant_last, pv_add, pv_add_constant, pv_subtract,
	pv_logical_and, pv_is_identical, pv_is_register): Remove.
	(compute_x_addr): Remove, replace by ...
	(s390_addr): ... this new function.
	(struct s390_prologue_data): Use pv_t instead of prologue_value.
	(s390_store, s390_load): Likewise.
	(s390_prologue_frame_unwind_cache): Likewise.
	(s390_analyze_prologue): Likewise.  Also, simplify and combine
	several conditional statements.

2006-04-08  Jim Blandy  <jimb@codesourcery.com>

	* Makefile.in (COMMON_OBS): List prologue-value.o.  (Omitted from
	last patch.)

2006-04-08  David S. Miller  <davem@sunset.davemloft.net>

	* sparc-linux-tdep.c (sparc32_linux_step_trap): New.
	(sparc32_linux_init_abi): Hook it into tdep->step_trap.
	(sparc32_linux_core_gregset,
	sparc32_linux_supply_core_gregset,
	sparc32_linux_collect_core_gregset,
	sparc32_linux_supply_core_fpregset,
	sparc32_linux_collect_core_fpregset): New.
	(sparc32_linux_init_abi): Register them with generic sparc
	core regset infrastructure.
	* sparc64-linux-tdep.c (sparc64_linux_step_trap): New.
	(sparc64_linux_init_abi): Hook it into tdep->step_trap.
	(sparc64_linux_core_gregset,
	sparc64_linux_supply_core_gregset,
	sparc64_linux_collect_core_gregset,
	sparc64_linux_supply_core_fpregset,
	sparc64_linux_collect_core_fpregset): New.
	(sparc64_linux_init_abi): Register them with generic sparc
	core regset infrastructure.	
	* Makefile.in: Update dependencies.

2006-04-07  David S. Miller  <davem@sunset.davemloft.net>

	* linux-nat.c (linux_nat_thread_alive): Handle targets that
	do not implement PTRACE_PEEKUSER.

2006-04-07  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (remote_wait): Convert warning to error before
	parsing corrupt packets.

2006-04-07  Andrew Stubbs  <andrew.stubbs@st.com>

	* cli/cli-script.c (struct user_args): Add command field.
	(arg_cleanup): Free command string.
	(setup_user_args): Copy the command line before relying on it.

2006-04-06  Joel Brobecker  <brobecker@adacore.com>

	* breakpoint.c (_initialize_breakpoint): Add "del" as an alias
	of the "delete" command.

2006-04-06  Randolph Chung  <tausq@debian.org>

	* MAINTAINERS (Patch champions): Add myself.

2006-04-05  Andreas Schwab  <schwab@suse.de>

	* Makefile.in: Update dependencies.

2006-04-05  David S. Miller  <davem@sunset.davemloft.net>

	* sparc-tdep.c (sparc32_dwarf2_frame_init_reg): New.
	(sparc32_gdbarch_init): Pass it to dwarf2_frame_set_init_reg.
	* Makefile.in (sparc-tdep.o): Update dependencies.
	* sparc-linux-tdep.c (sparc32_linux_sigframe_init): Pull register
	window out of the correct stack frame.
	* sparc64-linux-tdep.c (sparc64_linux_sigframe_init): Likewise.
	* dwarf2-frame.c (dwarf2_frame_ops init_reg): Add "next_frame"
	argument.
	(dwarf2_frame_default_init_reg): Likewise.
	(dwarf2_frame_set_init_reg): Update init_reg arg.
	(dwarf2_frame_init_reg): Take "next_frame" and pass it to
	ops->init_reg().
	(dwarf2_frame_cache): Pass next_frame to dwarf2_frame_init_reg.
	* dwarf2-frame.h (dwarf2-frame_set_init_reg): Update declaration.
	* cris-tdep.c (cris_dwarf2_frame_init_reg): Add next_frame arg.
	* s390-tdep.c (s390_dwarf2_frame_init_reg): Likewise.
	* sh-tdep.c (sh_dwarf2_frame_init_reg): Likewise.
	* sparc64-tdep.c (sparc64_dwarf2_frame_init_reg): Likewise.
	* sparc-tdep.c (sparc32_struct_return_from_sym): New function.
	(sparc32_frame_cache): Call it.
	(sparc32_dwarf2_struct_return_p): New function.
	(sparc_dwarf2_frame_init_reg): Use it to determine if the function
	returns a structure and thus we have to indicate the return PC and
	NPC are 4 bytes later than usual.
	* sparc-linux-tdep.c (sparc32_linux_init_abi): Append
	dwarf2 frame sniffer.
	* Makefile.in (sparc-linux-tdep.o): Update dependencies.
	
2006-04-04  David S. Miller  <davem@davemloft.net>

	* config/linux.mh (NATDEPFILES): Remove sparc-sol2-nat.o
	* config/linux64.h (NATDEPFILES): Likewise
	* sparc-linux-nat.c (supply_gregset, supply_fpregset, fill_gregset,
	fill_fpregset): New.
	* sparc64-linux-nat.c (supply_gregset, supply_fpregset, fill_gregset,
	fill_fpregset): New.
	* Makefile.in (sparc-linux-nat.o, sparc64-linux-nat.o): Update for
	new includes.
	
2006-04-04  Andreas Schwab  <schwab@suse.de>

	* Makefile.in (elf_common_h): Define.

2006-04-03  Andrew Stubbs  <andrew.stubbs@st.com>

	* sh-tdep.c (sh_dwarf2_frame_init_reg): New function.
	(sh_gdbarch_init): Call dwarf2_frame_set_init_reg().

2006-03-31  Andrew Stubbs  <andrew.stubbs@st.com>

	* value.h (struct internalvar): Add field 'endian'.
	* value.c (lookup_internalvar): Initialise endian.
	(value_of_internalvar): Flip the endian of built-in types if required.
	(set_internalvar): Set the endian.
	(show_convenience): Access the value through value_of_internalvar().

2006-03-30  Vladimir Prus  <ghost@cs.msu.su>

	* remote.c (watchpoint_to_Z_packet): Use values of Z_packet_type enum
	instead of hardcoded integer literals.

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

	* cli/cli-script.c (insert_args): Handle NULL user_args.

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

	* arm-tdep.c (thumb_scan_prologue): Don't try to analyze
	the function at zero if we have no symbols.

2006-03-30  Adrien Kunysz  <a_kunysz@yahoo.com>

	* i386-stub.c (getpacket): Fix array overflow.
	* m32r-stub.c (getpacket): Likewise.
	* m68k-stub.c (getpacket): Likewise.
	* sh-stub.c (getpacket): Likewise.
	* sparc-stub.c (getpacket): Likewise.

2006-03-30  Daniel Jacobowitz  <dan@codesourcery.com>
 
	* frame.h (set_current_sal_from_frame): New prototype.
	* stack.c (set_current_sal_from_frame): Make global.
	* infrun.c (normal_stop): Call set_current_sal_from_frame.

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

	* linux-thread-db.c: Include "linux-nat.h".
	(check_for_thread_db): New function, split out from
	thread_db_new_objfile.  Remove dead check for active
	thread_db on inapplicable targets.
	(thread_db_new_objfile): Call check_for_thread_db.
	* Makefile.in (linux-thread-db.o): Update.
	* linux-nat.c (child_post_attach): Call check_for_thread_db.
	(linux_child_post_startup_inferior): Likewise.
	(lin_lwp_attach_lwp): Call target_post_attach instead of
	child_post_attach.
	* linux-nat.h (check_for_thread_db): New prototype.

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

	* remote.c (struct remote_state): Add BUF and BUF_SIZE.
	(init_remote_state): Initialize the new fields.
	(get_memory_packet_size): Update BUF and BUF_SIZE if necessary.
	(set_thread, remote_thread_alive, remote_unpack_thread_info_response)
	(remote_get_threadinfo, parse_threadlist_response)
	(remote_get_threadlist, remote_current_thread, remote_threads_info)
	(remote_threads_extra_info, extended_remote_restart, get_offsets)
	(remote_check_symbols, remote_open_1, remote_detach)
	(remove_vcont_probe, remote_vcont_resume, remote_resume)
	(remote_wait, remote_async_wait, fetch_register_using_p)
	(remote_fetch_registers, store_register_using_P)
	(remote_store_registers, check_binary_download, remote_write_bytes)
	(remote_read_bytes, remote_insert_breakpoint)
	(remote_remove_breakpoint, remote_insert_watchpoint)
	(remote_remove_watchpoint, remote_insert_hw_breakpoint)
	(remote_remove_hw_breakpoint, compare_sections_command)
	(remote_xfer_partial, remote_rcmd, packet_command)
	(remote_get_thread_local_address): Use the global incoming buffer
	instead of alloca or xmalloc.  Limit outgoing packets to
	rs->remote_packet_size and incoming packets to rs->buf_size.
	Update calls to getpkt and remote_send.
	(remote_send): Take arguments by reference.
	(putpkt_binary): Eliminate junkbuf.  Use skip_frame.
	(skip_frame): New function.
	(read_frame): Take arguments by reference.  Expand the packet
	buffer instead of issuing an error.
	(getpkt, getpkt_sane): Take arguments by reference.
	* remote.h (getpkt): Update prototype and doc.
	* tracepoint.c (remote_get_noisy_reply): Take arguments by
	reference.
	(target_buf): Change from array to pointer.
	(target_buf_size): New variable.
	(remote_set_transparent_ranges): Update call to getpkt.
	(trace_start_command, trace_stop_command, trace_status_command):
	Update calls to remote_get_noisy_reply.
	(finish_tfind_command): Take arguments by reference.
	(trace_find_command, trace_find_pc_command)
	(trace_find_tracepoint_command, trace_find_line_command):
	(trace_find_range_command, trace_find_outside_command): Update
	calls to finish_tfind_command.
	(_initialize_tracepoint): Initialize target_buf_size and target_buf.

2005-03-30  Randolph Chung  <tausq@debian.org>

	* hppa-linux-tdep.c: Include regset.h.
	(GR_REGNUM, TR_REGNUM, greg_map): New.
	(hppa_linux_supply_regset, hppa_linux_supply_fpregset): New.
	(hppa_linux_regset, hppa_linux_fpregset): New.
	(hppa_linux_regset_from_core_section): New.
	(hppa_linux_init_abi): Set regset_from_core_section.
	(_initialize_hppa_linux_tdep): Register osabi handler for
	64-bit Linux.
	* Makefile.in (hppa-linux-tdep.o): Update dependencies.
	* config/pa/linux.mh: Stop using core-regset.o

2006-03-30  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c (hppa_find_unwind_entry_in_block): New.
	(hppa_frame_cache): Use new function to find unwind entry.
	(hppa_frame_this_id): Likewise.
	(hppa_frame_unwind_sniffer): Likewise.

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

	* NEWS: Mention the removal of NLM.

2006-03-29  Steve Ellcey  <sje@cup.hp.com>

	* Makefile.in (nlm): Remove target.
	* configure.tgt (i[34567]86-*-netware*): Do not set build_nlm.
	* configure.ac: Remove AC_CONFIG_SUBDIRS of nlm.
	* configure: Regenerate.
	* doc/gdb.texinfo: Remove gdbserve.nlm documentation.
	* nlm: Remove directory.

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

	* Makefile.in (utils.o): Update.
	* top.c (in_user_command): New.
	(command_line_input): Use input_from_terminal_p.
	(input_from_terminal_p): Don't check caution.  Handle
	stdin == NULL for Insight.
	* top.h (in_user_command, caution): New declarations.
	* utils.c: Include "top.h".
	(query, defaulted_query): Check caution here.  Move the call
	to input_from_terminal_p higher.
	* cli/cli-script.c (do_restore_user_call_depth): Only decrement
	the depth.  Update in_user_command if necessary.
	(execute_user_command): Don't clobber old_chain.  Set
	in_user_command.  Let do_restore_user_call_depth handle
	user_call_depth.
	(read_command_lines): Check whether to prompt before calling
	Insight hooks.
	* tui/tui-hooks.c (tui_query_hook): Remove newly unnecessary
	input_from_terminal_p check.

2006-03-29  Ulrich Weigand  <uweigand@de.ibm.com>

	* s390-nat.c (s390_insert_watchpoint): Add missing argument.
	(s390_remove_watchpoint): Likewise.

2006-03-28  Jim Blandy  <jimb@codesourcery.com>

	* prologue-value.c, prologue-value.h: New files.
	* Makefile.in (prologue_value_h): New variable.
	(HFILES_NO_SRCDIR): List prologue-value.h.
	(SFILES): List prologue-value.c.
	(COMMON_OBS): List prologue-value.o.
	(prologue-value.o): New rule.

2006-03-27  Michael Snyder  <msnyder@redhat.com>

	* xstormy16-tdep.c (xstormy16_return_value, xstormy16_push_dummy_call,
	xstormy16_pointer_to_address, xstormy16_address_to_pointer, 
	xstormy16_frame_prev_register): Change void* to gdb_byte*.
	(xstormy16_push_dummy_call): Add block-local char* val, 
	to avoid type conflict with outer scope variable.

2006-03-27  Andrew Stubbs  <andrew.stubbs@st.com>

	* sh-tdep.c (sh_gdbarch_init): Add missing architectures.

2006-03-27  Nick Roberts  <nickrob@snap.net.nz>

	PR mi/1429
	* varobj.c (c_name_of_child, c_value_of_child): Allow non-zero
	offsets for languages like Fortran.

2006-03-26  Randolph Chung  <tausq@debian.org>

	* config/pa/hppa64.mt: Use HPUX version of the tm file.

2006-03-25  Nick Roberts  <nickrob@snap.net.nz>

	* mi/gdb-mi.el (gdbmi-send): Improve regexp to repeat commands.
	Try to deal with continuation line.
	(gdbmi, gdbmi-prompt1, gud-gdbmi-marker-filter): Update to new
	variable names.
	(gdb-break-list-regexp, gdb-stack-list-frames-regexp): 
	Future proof against new fields being added to MI output.
	(gdbmi-prompt2, gdb-break-list-handler,gdb-get-source-file)
	(gdbmi-frame-handler): Update to new variable name
	gdb-get-buffer-create.
	(gdbmi-frame-handler): Use hollow-right-triangle for all selected
	frames which except the innermost (where execution has stopped).

2006-03-24  Randolph Chung  <tausq@debian.org>

	* solib-som.c (link_map_start): Don't error out if there is
	not yet a link map.

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

	* linux-nat.c (linux_ops_saved): New.
	(super_mourn_inferior, kill_inferior, threaded, linux_nat_ops)
	(child_mourn_inferior, child_wait, linux_nat_create_inferior)
	(linux_nat_fetch_registers, linux_nat_store_registers)
	(linux_nat_child_post_startup_inferior, init_linux_nat_ops): Delete.
	(init_lwp_list): Don't set threaded.
	(add_lwp): Don't modify threaded.
	(delete_lwp): Don't mention non-threaded mode.
	(linux_nat_switch_fork): New.
	(linux_nat_attach): Update inferior_ptid.
	(linux_nat_wait): Handle num_lwps == 0 at entry.  Don't check
	threaded flag.
	(linux_nat_kill): Handle pending forks and saved forks.
	(linux_nat_mourn_inferior): Handle saved forks.
	(linux_nat_pid_to_str): Don't use the LWP form when there is
	only one thread.
	(linux_target): Don't set to_wait, to_kill, or to_mourn_inferior.
	(linux_nat_add_target): New.
	(_initialize_linux_nat): Don't initialize the linux native target
	here.
	* linux-nat.h (linux_nat_add_target, linux_nat_switch_fork): New
	prototypes.
	* linux-fork.c: Include "linux-nat.h".
	(add_fork): Update initial PID.
	(fork_load_infrun_state): Call linux_nat_switch_fork.
	* Makefile.in (linux-fork.o): Update.

	* alpha-linux-nat.c (_initialize_alpha_linux_nat): Use
	linux_nat_add_target instead of add_target.
	* amd64-linux-nat.c (_initialize_amd64_linux_nat): Likewise.
	* arm-linux-nat.c (_initialize_arm_linux_nat): Likewise.
	* hppa-linux-nat.c (_initialize_hppa_linux_nat): Likewise.
	* ia64-linux-nat.c (_initialize_ia64_linux_nat): Likewise.
	* i386-linux-nat.c (_initialize_i386_linux_nat): Likewise.
	* m32r-linux-nat.c (_initialize_m32r_linux_nat): Likewise.
	* m68klinux-nat.c (_initialize_m68k_linux_nat): Likewise.
	* mips-linux-nat.c (_initialize_mips_linux_nat): Likewise.
	* ppc-linux-nat.c (_initialize_ppc_linux_nat): Likewise.
	* s390-nat.c (_initialize_s390_nat): Likewise.
	* sparc-linux-nat.c (_initialize_sparc_linux_nat): Likewise.
	* sparc64-linux-nat.c (_initialize_sparc64_linux_nat): Likewise.

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

	* linux-fork.c: Include "gdb_assert.h".
	(fork_load_infrun_state): Set inferior_ptid and stop_pc here.
	Update the register cache and selected frame also.
	(linux_fork_mourn_inferior): Use fork_load_infrun_state.  Return
	to single fork mode if necessary.
	(linux_fork_context): Remove bits handled by fork_load_infrun_state.
	* Makefile.in (linux_fork_h): New.
	(linux-fork.o, linux-nat.o): Update.

2006-03-23  Andreas Schwab  <schwab@suse.de>

	* config/s390/s390.mh (NATDEPFILES): Add linux-fork.o.

2006-03-18  Jim Blandy  <jimb@codesourcery.com>

	* symtab.h (enum address_class): Doc fix.

2006-03-16  Michael Snyder  <msnyder@redhat.com>

	* tracepoint.c (tracepoint_save_command): Fix typo in error msg.
	* target.c (push_target): Fix typo in comment.
	* remote.c (remote_watch_data_address): Fix typo in comment.
	* i386-tdep.c (i386_push_dummy_call): Fix typo in comment.

2006-03-15  Kevin Buettner  <kevinb@redhat.com>

	* frv-linux-tdep.c (gdbcore.h, regcache.h, regset.h, gdb_string.h):
	Include.
	(FRV_ELF_NGREG, FRV_PT_PSR, FRV_PT_ISR, FRV_PT_CCR, FRV_PT_CCCR)
	(FRV_PT_LR, FRV_PT_LCR, FRV_PT_PC, FRV_PT_GNER0, FRV_PT_GNER1)
	(FRV_PT_IACC0H, FRV_PT_IACC0L, FRV_PT_GR, FRV_PT_TBR)
	(FRV_PT_EXEC_FDPIC_LOADMAP, FRV_PT_INTERP_FDPIC_LOADMAP): Define.
	(frv_elf_greg_t, frv_elf_gregset_t, frv_elf_fpreg_t)
	(frv_elf_fpregset_t): Define types.
	(frv_linux_supply_gregset, frv_linux_supply_fpregset)
	(frv_linux_regset_from_core_section: New functions.
	(frv_linux_gregset, frv_linux_fpregset): New static globals.
	(frv_linux_init_abi): Register the `regset_from_core_section' method.
	* Makefile.in (frv-linux-tdep.o): Update dependencies.
	* solib-frv.c (frv_current_sos): Relocate main executable after
	loading core file.
	(frv_clear_solib): Clean up space associated with
	`main_executable_lm_info'.
	* config/frv/frv.mt (TDEPFILES): Add corelow.o to this list.

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

	* Makefile.in (mips_linux_tdep_h): New.
	(mpis-linux-nat.o, mips-linux-tdep.o): Update.
	* mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and
	<sys/ptrace.h>.
	(have_ptrace_regsets, super_fetch_registers, super_store_registers)
	(mips64_linux_regsets_fetch_registers)
	(mips64_linux_regsets_store_registers, mips64_linux_fetch_registers)
	(mips64_linux_store_registers): New.
	(_initialize_mips_linux_nat): Override to_fetch_registers and
	to_store_registers.
	* mips-linux-tdep.h: New file.
	* mips-linux-tdep.c: Include "mips-linux-tdep.c".
	(ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t)
	(elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO)
	(FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC)
	(EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE)
	(MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t)
	(mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t)
	(MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR)
	(MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR)
	(MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI)
	(MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS)
	(MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete.
	(supply_32bit_reg): Use gdb_byte.
	(supply_64bit_reg): New.
	(mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset)
	(mips_fill_fpregset, fetch_core_registers, supply_gregset)
	(fill_gregset, supply_fpregset): Update for renamed types.
	(mips64_supply_gregset): Use gdb_byte and supply_64bit_reg.
	(mips64_fill_gregset): Make global.  Handle 32-bit register
	sizes.
	(mips64_fill_fpregset): Make global.  Use gdb_byte.  Handle
	FP regsets properly.

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

	* mips-linux-tdep.c (mips_supply_gregset): Renamed from supply_gregset.
	(mips_fill_gregset): Renamed from fill_gregset.
	(mips_supply_fpregset): Renamed from supply_fpregset.
	(mips_fill_fpregset): Renamed from fill_fpregset.
	(fetch_core_registers): Update calls.
	(supply_gregset, fill_gregset, supply_fpregset, fill_fpregset): New
	functions.

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

	* mips-tdep.c (mips_gdbarch_init): Default 64-bit ELF files to N64.

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

	* mips-tdep.c (is_mips16_addr, mips32_next_pc, add_offset_16):
	Correct arithmetic for 64-bit CORE_ADDR.

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

	* mips-linux-tdep.c: Include "floatformat.h".
	(mips_linux_init_abi): Use 128-bit long double for N32 and N64.
	* mips-tdep.c (mips_n32n64_return_value): Support 128-bit long
	double.
	(print_gp_register_row): Don't print spaces before ignored
	or floating point registers.
	* Makefile.in (mips-linux-tdep.o): Update.

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

	* mips-mdebug-tdep.c (compare_pdr_entries): Use bfd_get_signed_32
	for code addresses.
	(non_heuristic_proc_desc): Likewise.

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

	* mips-linux-nat.c: Include "gdb_proc_service.h".
	(PTRACE_GET_THREAD_AREA): Define.
	(ps_get_thread_area): New.
	* Makefile.in (mips-linux-nat.o): Update.

2006-03-13  Jim Blandy  <jimb@codesourcery.com>

	* MAINTAINERS: Use my work address.

2006-03-09  Michael Snyder  <msnyder@redhat.com>

	* linux-nat.c (kill_inferior): Just call target_mourn_inferior
	instead of getting tricky for the multi-fork case.
	* linux-fork.c (linux_fork_killall): Call PT_KILL and waitpid
	for each fork, and then use init_fork_list to delete them.

2006-03-08  Alexandre Oliva  <aoliva@redhat.com>

	* solib-svr4.c (svr4_current_sos): Move up initialization of
	l_addr, such that it clearly covers all cases.

2006-03-08  Andreas Schwab  <schwab@suse.de>

	* ia64-tdep.c (ia64_libunwind_frame_this_id): Adapt use of
	libunwind_frame_prev_register to use a gdb_byte buffer and
	extract_unsigned_integer.
	(ia64_libunwind_sigtramp_frame_prev_register): Likewise.

	* libunwind-frame.c (libunwind_frame_prev_register): Change type
	of last argument to `gdb_byte *'
	* libunwind-frame.h: Adjust declaration.

2006-03-08  Paul Brook  <paul@codesourcery.com>

	* arm-tdep.c (arm_push_dummy_call): Remove stack alignment.
	(arm_frame_align): New function.
	(arm_gdbarch_init): Use it.

2006-03-03  Khem Raj <khem@mvista.com>

	* remote-rdp.c (remote_rdp_xfer_inferior_memory): Use gdb_byte.
	Committed by Andrew Cagney.
	
2006-03-02  Corinna Vinschen  <vinschen@redhat.com>

	* mn10300-tdep.c (mn10300_push_dummy_call): Write breakpoint
	address to MDR register.

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

	* gdbtypes.c (lookup_struct_elt_type): Correct noerr for recursive
	calls.

2006-03-01  Randolph Chung  <tausq@debian.org>

	* somread.c (som_symfile_read): Update comment and remove unneeded 
	use of a deprecated variable.

2006-03-01  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.h (unwind_table_entry): Update field names to match HP
	runtime specification.
	* hppa-tdep.c (internalize_unwinds, hppa_frame_cache): Likewise.
	(unwind_command): Likewise.

2006-03-01  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c (hppa_frame_cache): Handle Region_Description and
	Pseudo_SP_Set in unwind record.

2006-03-01  Randolph Chung  <tausq@debian.org>

	* hppa-hpux-tdep.c (initialize_hp_cxx_exception_support): Use
	TDEP->is_elf to determine if we are working with a SOM binary.
	(null_symtab_and_line): Remove unused variable.
	* config/pa/hppa64.mt: Use tm-hppa.h.
	* config/pa/tm-hppa64.h: Remove file.

2006-03-01  Wu Zhou  <woodzltc@cn.ibm.com>

	 * f-typeprint.c (f_type_print_base): Delete the redundant space.

2006-02-28  Kevin Buettner  <kevinb@redhat.com>

	* Makefile.in (mn10300-linux-tdep.o): Update dependencies.
	* mn10300-linux-tdep.c (frame.h, trad-frame.h, tramp-frame.h):
	Include.
	(am33_linux_sigframe_cache_init): New function.
	(am33_linux_sigframe, am33_linux_rt_sigframe): New signal frame
	descriptions.
	(AM33_SIGCONTEXT_D0, AM33_SIGCONTEXT_D1, AM33_SIGCONTEXT_D2)
	(AM33_SIGCONTEXT_D3, AM33_SIGCONTEXT_A0, AM33_SIGCONTEXT_A1)
	(AM33_SIGCONTEXT_A2, AM33_SIGCONTEXT_A3, AM33_SIGCONTEXT_E0)
	(AM33_SIGCONTEXT_E1, AM33_SIGCONTEXT_E2, AM33_SIGCONTEXT_E3)
	(AM33_SIGCONTEXT_E4, AM33_SIGCONTEXT_E5, AM33_SIGCONTEXT_E6)
	(AM33_SIGCONTEXT_E7, AM33_SIGCONTEXT_LAR, AM33_SIGCONTEXT_LIR)
	(AM33_SIGCONTEXT_MDR, AM33_SIGCONTEXT_MCVF, AM33_SIGCONTEXT_MCRL)
	(AM33_SIGCONTEXT_MCRH, AM33_SIGCONTEXT_MDRQ, AM33_SIGCONTEXT_SP)
	(AM33_SIGCONTEXT_EPSW, AM33_SIGCONTEXT_PC, AM33_SIGCONTEXT_FPUCONTEXT):
	New constants.
	(am33_linux_init_osabi): Register signal frame unwinders.

2006-02-28  Kevin Buettner  <kevinb@redhat.com>

	* mn10300-tdep.c (mn10300_analyze_prologue):  Implement backtrack
	out of pattern match by saving relevant state.  Fix stack size
	adjustment bug.

2006-02-28  Alexandre Oliva  <aoliva@redhat.com>

	* solib-svr4.h (struct link_map_offsets): Add l_ld_offset and
	l_ld_size fields.
	* solib-svr4.c (struct lm_info): Add l_addr field.
	(LM_ADDR_FROM_LINK_MAP): Renamed from LM_ADDR.
	(HAS_LM_DYNAMIC_FROM_LINK_MAP): New.
	(LM_DYNAMIC_FROM_LINK_MAP): New.
	(LM_ADDR_CHECK): New.  Use it instead of LM_ADDR.
	(svr4_current_sos): Initialize l_addr.  Adjust.
	(svr4_relocate_section_addresses): Adjust.
	(svr4_ilp32_fetch_link_map_offsets): Define new members.
	(svr4_lp64_fetch_link_map_offsets): Likewise.
	* solib-legacy.c (legacy_svr4_fetch_link_map_offsets): Likewise.
	* mipsnbsd-tdep.c (mipsnbsd_ilp32_fetch_link_map_offsets): Likewise.
	(mipsnbsd_lp64_fetch_link_map_offsets): Likewise.
	* Makefile.in (solib-svr4.o): Depend on $(elf_bfd_h).

2006-02-26  David S. Miller  <davem@sunset.davemloft.net>

	* config/sparc/linux.mt (TDEPFILES): Add sol2-tdep.o.
	* config/sparc/linux64.mt (TDEPFILES): Likewise.

2006-02-27  Alan Modra  <amodra@bigpond.net.au>

	* ppc-linux-nat.c (ppc_linux_insert_watchpoint): Correct return type.
	(ppc_linux_remove_watchpoint): Likewise, and args.

2006-02-26  Mark Kettenis  <kettenis@gnu.org>

	* i386obsd-tdep.c (i386obsd_trapframe_sniffer): Also recognize
	"soft" interrupts.

2006-02-24  Charles Wilson  <cygwin@cwilson.fastmail.fm>

	* gdb/defs.h: unconditionally include <fcntl.h>, and
	ensure that O_BINARY is defined.
	* gdb/solib.c(solib_open): ensure solib files are opened in
	binary mode.
	* gdb/corelow.c: Remove O_BINARY macro definition.
	* gdb/exec.c: Remove O_BINARY macro definition
	* gdb/remote-rdp.c: Remove O_BINARY macro definition
	* gdb/source.c: Remove O_BINARY macro definition
	* gdb/symfile.c: Remove O_BINARY macro definition

2006-02-24  Randolph Chung  <tausq@debian.org>

        * hppa-hpux-tdep.c (hppa_hpux_push_dummy_code): Initialize 
	argreg.
        * solib-som.c (som_solib_remove_inferior_hook): Remove unused 
	function.

2006-02-24  Wu Zhou  <woodzltc@cn.ibm.com>

	* f-exp.y: Symbol '%' is not used as the modulus operator in
	Fortran.  Delete this from Fortran expression.
	It is now used by Fortran 90 and later to access the member
	of derived type.  Add this into Fortran expression.
	* f-valprint.c (f_val_print): Add code to handle TYPE_CODE_STRUCT.
	Print each elements in the derived type.
	* f-typeprint.c (print_equivalent_f77_float_type): Add a parameter
	level into the function definition to do indented printing.  And
	call fprintfi_filtered instead to do indented printing.
	(f_type_print_base): Replace fprintf_filtered with the indented
	version (fprintfi_filtered).
	(f_type_print_base): Call indented print_equivalent_f77_float_type.
	(f_type_print_base): Add code to handle TYPE_CODE_STRUCT.  Print
	the definition of the derived type.

2006-02-23  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb_curses.h: Provide a fallback prototype for tgetnum.

2006-02-23  Daniel Jacobowitz  <dan@codesourcery.com>

	* doublest.h: Conditionalize DOUBLEST on PRINTF_HAS_LONG_DOUBLE
	also.
	(DOUBLEST_FORMAT): Rename to DOUBLEST_PRINT_FORMAT.
	(DOUBLEST_SCAN_FORMAT): New.
	* ada-lex.l (PRINTF_HAS_LONG_DOUBLE): Remove redefinitions.
	(processReal): Use DOUBLEST_SCAN_FORMAT.
	* c-exp.y (parse_number): Likewise.
	* jv-exp.y (parse_number): Likewise.
	* objc-exp.y (parse_number): Likewise.
	* p-exp.y (parse_number): Likewise.

2006-02-23  Daniel Jacobowitz  <dan@codesourcery.com>

	* event-top.c (async_do_nothing, async_disconnect)
	(async_stop_sig, async_float_handler): Remove duplicated
	prototypes.
	(handle_sighup): Guard prototype with SIGHUP.
	(async_do_nothing): Guard function and prototype with
	SIGQUIT || SIGHUP.
	(async_disconnect): Guard prototype with SIGHUP.
	(async_stop_sig): Guard prototype with STOP_SIGNAL.

2006-02-23  Daniel Jacobowitz  <dan@codesourcery.com>

	* maint.c (maintenance_dump_me): Remove unnecessary prototype.

2006-02-23  Daniel Jacobowitz  <dan@codesourcery.com>

	* win32-termcap.c (tputs): Return 0.

2006-02-21  Mark Kettenis  <kettenis@gnu.org>

	* configure.ac: Introduce ---enable-werror, which adds -Werror to
	the compiler command line.  Enabled by default.  Disable with
	--disable-werror.
	* configure regenerate.

2006-02-21  Daniel Jacobowitz  <dan@codesourcery.com>

        * elfread.c (elf_symtab_read): Skip symbols which BFD considers
	special.

2006-02-21  Andrew Stubbs  <andrew.stubbs@st.com>

	* defs.h (directory_switch): Add prototype.
	* main.c (captured_main): Use directory_switch() instead of
	directory_command() to add directories from the -d switch.
	* source.c (directory_switch): New function.
	(add_path): Use buildargv() to parse spaces in filenames properly.
	Strip multiple trailing '/' rather than just one.

2006-02-21  Andrew Stubbs  <andrew.stubbs@st.com>

	* symfile.c (add_symbol_file_command): Use buildargv(), instead of
	hand decoding the command line, to allow use of quotes and spaces.
	(_initialize_symfile): Reorganize the help message for add-symbol-file
	such that 'help files' shows a better message.

2006-02-21  Andrew Stubbs  <andrew.stubbs@st.com>

	* sh-tdep.c (sh_generic_show_regs): Reformat both code and output.
	(sh3_show_regs, sh2e_show_regs, sh2a_show_regs): Likewise.
	(sh2a_nofpu_show_regs, sh3e_show_regs, sh3_dsp_show_regs): Likewise.
	(sh4_show_regs, sh4_nofpu_show_regs, sh_dsp_show_regs): Likewise.

2006-02-20  Daniel Jacobowitz  <dan@codesourcery.com>

	* linux-nat.c (lin_thread_get_thread_signals): Default to __SIGRTMIN
	and __SIGRTMIN + 1.

2006-02-20  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c: Add an enumeration for configurable remote
	packets.
	(remote_protocol_packets, set_remote_protocol_packet_cmd)
	(show_remote_protocol_packet_cmd): New.
	(remote_protocol_vcont)
	(set_remote_protocol_vcont_packet_cmd)
	(show_remote_protocol_vcont_packet_cmd)
	(remote_protocol_qSymbol)
	(set_remote_protocol_qSymbol_packet_cmd)
	(show_remote_protocol_qSymbol_packet_cmd)
	(remote_protocol_P, set_remote_protocol_P_packet_cmd)
	(show_remote_protocol_P_packet_cmd)
	(remote_protocol_Z)
	(set_remote_protocol_Z_software_bp_packet_cmd)
	(show_remote_protocol_Z_software_bp_packet_cmd)
	(set_remote_protocol_Z_hardware_bp_packet_cmd)
	(show_remote_protocol_Z_hardware_bp_packet_cmd)
	(set_remote_protocol_Z_write_wp_packet_cmd)
	(show_remote_protocol_Z_write_wp_packet_cmd)
	(set_remote_protocol_Z_read_wp_packet_cmd)
	(show_remote_protocol_Z_read_wp_packet_cmd)
	(set_remote_protocol_Z_access_wp_packet_cmd)
	(show_remote_protocol_Z_access_wp_packet_cmd)
	(remote_protocol_binary_download)
	(set_remote_protocol_binary_download_cmd)
	(show_remote_protocol_binary_download_cmd)
	(remote_protocol_qPart_auxv)
	(set_remote_protocol_qPart_auxv_packet_cmd)
	(show_remote_protocol_qPart_auxv_packet_cmd)
	(remote_protocol_qGetTLSAddr)
	(set_remote_protocol_qGetTLSAddr_packet_cmd)
	(show_remote_protocol_qGetTLSAddr_packet_cmd)
	(remote_protocol_p)
	(set_remote_protocol_p_packet_cmd)
	(show_remote_protocol_p_packet_cmd): Delete.

	(init_all_packet_configs): Simplify.
	(set_remote_protocol_Z_packet_cmd)
	(show_remote_protocol_Z_packet_cmd)
	(remote_check_symbols, remote_vcont_probe, remote_vcont_resume)
	(remote_fetch_registers, remote_prepare_to_store)
	(remote_store_registers, check_binary_download)
	(remote_write_bytes, remote_insert_breakpoint)
	(remote_remove_breakpoint, remote_insert_watchpoint)
	(remote_remove_watchpoint, remote_insert_hw_breakpoint)
	(remote_remove_hw_breakpoint, remote_xfer_partial)
	(remote_get_thread_local_address): Update for packet array.
	(_initialize_remote): Likewise; also update for common
	set/show commands.

2006-02-20  Daniel Jacobowitz  <dan@codesourcery.com>

	* symfile.c (place_section): Correct retry logic.

2006-02-19  Christopher Faylor  <cgf@timesys.com>

	* win32_nat.c (cygwin_load_start): New variable.
	(cygwin_load_end): Ditto.
	(have_saved_context): Ditto.
	(saved_context): Ditto.
	(max_dll_name_len): Delete obsolete variable.
	(do_win32_fetch_inferior_registers): Use context saved from cygwin1.dll
	if we are in a cygwin signal rather than a windows signal.
	(solib_symbols_add): Detect and store beginning and end of cygwin DLL
	if dll being loaded is the cygwin DLL.
	(register_loaded_dll): Remove calculation of max_dll_name_len.
	(win32_clear_solib): Ditto.
	(handle_load_dll): Delete obsolete variable.  Remove unneeded call to
	solib_add.
	(handle_output_debug_string): Detect and store signal information sent
	by Cygwin here.
	(handle_exception): Silently pass on errors in the cygwin DLL.  Return
	-1 on first pass exception.
	(win32_continue): Remove spurious clearing of continue_status.
	(get_win32_debug_event): Deal differently first chance exception.

2006-02-19  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c (hppa_in_solib_call_trampoline): Only use if no
	unwind entry.

2006-02-16  Fred Fish  <fnf@specifix.com>

	* eval.c (evaluate_subexp_standard):  For OP_TYPE, return
	a non lval value zero, of the appropriate type, when avoiding
	side effects.
	* typeprint.c (ptype_eval): Remove function and declaration.
	(ptype_command): Simplify to just a call to whatis_exp.

2006-02-15  Paul Brook  <paul@codesourcery.com>

	* arm-tdep.c (arm_skip_prologue, thumb_get_next_pc, arm_get_next_pc):
	Load insn opcodes as unsigned values.

2006-02-14  Alexandre Oliva  <aoliva@redhat.com>

	* doublest.h (DOUBLEST): Use long double only if we can scan
	it in.  Undefine HAVE_LONG_DOUBLE otherwise.
	(DOUBLEST_FORMAT): New.
	* c-exp.y (parse_number): Use it.
	* jv-exp.y (parse_number): Likewise.
	* objc-exp.y (parse_number): Likewise.
	* p-exp.y (parse_number): Likewise.
	* varobj.c (free_variable): Silence type-punning warnings.
	* tui/tui-data.h (struct tui_list): Change type of list member.
	* tui/tui-data.c: Remove no-longer-needed type casts.
	(source_windows): Silence type-punning warnings.
	* tui/tui-stack.c, tui/tui-win.c, tui/tui-winsource.c: Likewise.

2006-02-13  Mark Kettenis  <kettenis@gnu.org>

	Fix PR breakpoints/2080.
	* i386-tdep.c (struct i386_frame_cache): Add stack_align member.
	(i386_analyze_stack_align): New function.
	(i386_analyze_prologue): Use i386_analyze_stack_align.
	(i386_frame_cache): Deal with stack realignment.

2006-02-14  Nick Roberts  <nickrob@snap.net.nz>

	* mi/gdb-mi.el: Use more functions from gdb-ui.el.
	(gdb-break-list-regexp): Match "what" field if present.
	(gdb-stack-list-frames-regexp): Match "from" field if present.
	(gdb-stack-list-frames-handler): Present output like "info
	breakpoints" so regexps can be shared with gdb-ui

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

	* NEWS: Mention native Windows support.
	* Makefile.in (gdb_select_h, ser_tcp_h): New.
	(ALLDEPFILES): Add ser-mingw.c.
	(event-loop.o, inflow.o, mingw-hdep.o, posix-hdep.o, ser-base.o)
	(ser-tcp.o, ser-unix.o): Update.
	(ser-mingw.o): New rule.
	* configure: Regenerated.
	* configure.ac: Add ser-mingw.o for mingw32.
	* ser-mingw.c: New file.
	* event-loop.c: Include "gdb_select.h".
	(gdb_select): Remove, moved to mingw-hdep.c and posix-hdep.c.
	* ser-base.c: Include "gdb_select.h".
	(ser_base_wait_for): Use gdb_select.
	* serial.c (serial_for_fd): New function.
	(serial_fdopen): Try "terminal" before "hardwire".  Initialize
	the allocated struct serial.
	(serial_wait_handle): New function.
	* serial.h (serial_for_fd, serial_wait_handle): New prototypes.
	(struct serial_ops) [USE_WIN32API]: Add wait_handle.
	* gdb_select.h: New file.
	* ser-tcp.c: Include "ser-tcp.h".  Remove unused "ser-unix.h" include.
	(net_close, net_read_prim, net_write_prim): Make global.
	(net_open): Likewise.  Pass an exception set to select.  Whitespace fix.
	Document why we can not use gdb_select.
	(_initialize_ser_tcp) [USE_WIN32API]: Do not register TCP support here.
	* ser-tcp.h: New file.
	* inflow.c (gdb_has_a_terminal): Don't initialize stdin_serial here.
	(handle_sigio): Use gdb_select.
	(initialize_stdin_serial): New function.
	* terminal.h (initialize_stdin_serial): New prototype.
	* top.c (gdb_init): Call initialize_stdin_serial.
	* mingw-hdep.c (gdb_select): New function, moved from gdb_select in
	event-loop.c.  Add exception condition support.  Use serial_for_fd
	and serial_wait_handle.  Fix timeout handling.
	* posix-hdep.c: Include "gdb_select.h".
	(gdb_select): New function.
	* remote-st.c (connect_command): Use gdb_select.
	* ser-unix.c: Include "gdb_select.h".
	(hardwire_send_break, wait_for): Use gdb_select.

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

	* Makefile.in (mingw-hdep.o, posix-hdep.o): New dependencies.
	(ALLDEPFILES): Add mingw-hdep.c and posix-hdep.c.
	* configure.ac: Add gdb_host_obs to CONFIG_OBS.  Set gdb_host_obs
	to posix-hdep.o by default.
	* configure: Regenerated.
	* configure.host: Document gdb_host_obs.  Add an entry for
	i[34567]86-*-mingw32*.
	* mingw-hdep.c, posix-hdep.c: New files.
	* utils.c (safe_strerror): Remove, moved to posix-hdep.o.

2006-02-10  Joel Brobecker  <brobecker@adacore.com>

	* defs.h (gdb_osabi): New enum value GDB_OSABI_AIX.
	* osabi.c (gdb_osabi_name): Add name of new value GDB_OSABI_AIX.
	* rs6000-tdep.h: New file.
	* rs6000-tdep.c: Include "rs6000-tdep.h".
	(rs6000_gdbarch_init): Remove enabling of software single step.
	Will be done in the AIX-specific initialization routine.
	* rs6000-aix-tdep.c: New file.
	* config/powerpc/aix.mt (TDEPFILES): Add rs6000-aix-tdep.o.
	* Makefile.in (rs6000_tdep_h): New variable.
	(rs6000-tdep.o): Update dependencies.
	(rs6000-aix-tdep.o): New rule.

2006-02-10  Joel Brobecker  <brobecker@adacore.com>

        * aix-thread.c (_initialize_aix_thread): Use add_setshow_boolean_cmd
        instead of add_setshow_zinteger_cmd to defined the aix-thread
        boolean setting.

2006-02-10  Nick Roberts  <nickrob@snap.net.nz>

	* mi/gdb-mi.el: Update to reflect changes in Emacs 22.0.50.

2006-02-09  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (struct dwarf2_per_cu_data): Reduce length to
	30 bits.  Add load_all_dies flag.
	(load_partial_dies): Load all DIEs if per_cu->load_all_dies is set.
	Load DW_TAG_member by default.  Remove internal_error call.
	(find_partial_die): Reload the compilation unit if we can not find
	a DIE in the cache.  Call internal_error here if we still can not
	find the DIE.

2006-02-10  Nick Roberts  <nickrob@snap.net.nz>

	* breakpoint.c (print_one_breakpoint): Add break to case
	bp_catch_vfork in switch statement.

2006-02-08  Wu Zhou  <woodzltc@cn.ibm.com>

	* config/i386/nm-i386sol2.h: Update copyright year.
	* config/mips/nm-irix5.h: Ditto.
	* config/sparc/nm-sol2.h: Ditto.
	* s390-nat.c: Ditto.
	* ppc-linux-nat.c: Ditto.

2006-02-08  Wu Zhou  <woodzltc@cn.ibm.com>

	* breakpoint.c (TARGET_REGION_OK_FOR_HW_WATCHPOINT): Delete.
	* config/i386/nm-i386sol2.h (TARGET_REGION_OK_FOR_HW_WATCHPOINT): New.
	(TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT): Delete.
	* config/mips/nm-irix5.h (TARGET_REGION_OK_FOR_HW_WATCHPOINT): New.
	(TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT): Delete.
	* config/sparc/nm-sol2.h (TARGET_REGION_OK_FOR_HW_WATCHPOINT): New.
	(TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT): Delete.
	* inf-ttrace.c (inf_ttrace_region_ok_for_hw_watchpoint): New.
	(inf_ttrace_region_size_ok_for_hw_watchpoint): Delete.
	(inf_ttrace_target): Delete to_region_size_ok_for_hw_watchpoint and
	add to_region_ok_for_hw_watchpoint.
	* s390-nat.c (s390_region_size_ok_for_hw_watchpoint): Delete.
	(s390_region_ok_for_hw_watchpoint): New.
	(_initialize_s390_nat): Delete to_region_size_ok_for_hw_watchpoint
	and add to_region_ok_for_hw_watchpoint.
	* target.c (default_region_size_ok_for_hw_watchpoint, 
	debug_to_region_size_ok_for_hw_watchpoint): Delete prototype.
	(update_current_target): Delete to_region_size_ok_for_hw_watchpoint
	inheritance and default_region_size_ok_for_hw_watchpoint.
	(default_region_ok_for_hw_watchpoint): If len is less than or equal
	the length of void pointer, return ok.
	(default_region_size_ok_for_hw_watchpoint): Delete.
	(debug_to_region_size_ok_for_hw_watchpoint): Delete.
	(setup_target_debug): Delete to_region_size_ok_for_hw_watchpoint.
	* target.h (struct target_ops): Delete 
	to_region_size_ok_for_hw_watchpoint.
	(TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT): Delete.
	
2006-02-08  Ben Elliston  <bje@au1.ibm.com>
	    Wu Zhou  <woodzltc@cn.ibm.com>

	* ppc-linux-nat.c (PTRACE_GET_DEBUGREG, PTRACE_SET_DEBUGREG,
	PTRACE_GETSIGINFO): Define.
	(last_stopped_data_address): New.
	(ppc_linux_check_watch_resources): New function.
	(ppc_linux_region_ok_for_hw_watchpoint): New function.
	(ppc_linux_insert_watchpoint): New function.
	(ppc_linux_remove_watchpoint): New function.
	(ppc_linux_stopped_data_address): New function.
	(ppc_linux_stopped_by_watchpoint): New function.
	(_initialize_ppc_linux_nat): Set the above hardware watchpoint
	related target vectors.
	* rs6000-tdep.c (rs6000_gdbarch_init): Set PPC architectures
	to have nonsteppable watchpoint.
	* target.c (default_region_ok_for_hw_watchpoint,
	debug_to_region_ok_for_hw_watchpoint): New prototypes.
	(update_current_target): Inherit to_region_ok_for_hw_watchpoint
	and set default to_region_ok_for_hw_watchpoint.
	(default_region_ok_for_hw_watchpoint): New function.
	(debug_to_region_ok_for_hw_watchpoint): New function.
	(setup_target_debug): Set to_region_ok_for_hw_watchpoint of 
	debug_target.
	* target.h (struct target_ops): Add a new target vector 
	to_region_ok_for_hw_watchpoint.
	(TARGET_REGION_OK_FOR_HW_WATCHPOINT): Define this if it is not
	defined anyplace else.

2005-02-07  Joel Brobecker  <brobecker@adacore.com>
	* symfile.c (add_symbol_file_command): Abort if the user forgot
	to provide the address when the file has been loaded.

2006-02-07  Daniel Jacobowitz  <dan@codesourcery.com>

	* MAINTAINERS: Update file based on maintainers survey.  Add
	a note to Past Maintainers.  Move unresponsive or inactive
	maintainers to Authorized Committers or Past Maintainers as
	appropriate.  Correct Jim Kingdon's email address.  Remove
	vacant areas of responsibility.

2006-02-06  Vladimir Prus  <ghost@cs.msu.su>

	* breakpoint.c (print_one_breakpoint): For MI-like UI, output
	fullname field.

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

	* exceptions.h (enum errors): Rename NO_ERROR to GDB_NO_ERROR.
	* exceptions.c (exception_none, exceptions_state_mc_init)
	(throw_vfatal): Use GDB_NO_ERROR.

2006-02-02  Mark Kettenis  <kettenis@gnu.org>

	* solib-svr4.h (struct link_map_offsets): Remove r_debug_size and
	r_map_size members.  Add r_version_offset, r_version_size and
	r_ldsomap_offset members.
	* solib-svr4.c (solib_svr4_r_map): Renamed from
	fetch_link_map_member.  Simplify using read_memory_typed_address.
	(solib_svr4_r_ldsomap): New function.
	(open_symbol_file_object): Use solib_svr_r_map.
	(svr4_current_sos): Use solib_svr4_r_map and look for the dynamic
	linker by using solib_svr4_r_ldsomap.
	(svr4_ilp32_fetch_link_map_offsets)
	(svr4_lp64_fetch_link_map_offsets): Adjust for changes to `struct
	link_map_offsets'.
	* solib-legacy.c (legacy_svr4_fetch_link_map_offsets): Adjust for
	changes to `struct link_map_offsets'.
	* mipsnbsd-tdep.c (mipsnbsd_ilp32_fetch_link_map_offsets)
	(mipsnbsd_lp64_fetch_link_map_offsets): Adjust for changes to
	`struct link_map_offsets'.

2006-02-01  Daniel Jacobowitz  <dan@codesourcery.com>

	* linux-nat.c (struct saved_ptids, threads_to_delete)
	(record_dead_thread, prune_lwps, find_thread_from_lwp)
	(exit_lwp): New.
	(linux_nat_resume): Call prune_lwps.
	(wait_lwp, linux_nat_wait): Call exit_lwp.

2006-02-01  Daniel Jacobowitz  <dan@codesourcery.com>

	* printcmd.c (printf_command): Make format string checking
	stricter.  Add separate cases for long_arg, ptr_arg, and
	long_double_arg.
	* utils.c (xstrvprintf): Improve the error message issued
	for a bad format string.
	* Makefile.in (GDB_WARN_CFLAGS_NO_FORMAT, INTERNAL_CFLAGS_BASE):
	New variables.
	(gnu-v3-abi.o, monitor.o, procfs.o, linux-thread-db.o): Remove
	$(NO_WERROR_CFLAGS).
	(printcmd.o): Likewise.  Use $(GDB_WARN_CFLAGS_NO_FORMAT) and
	enable -Werror.

2006-02-01  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (remote.o): Update.
	* remote.c (show_packet_config_cmd): Shorten messages.
	(remote_set_cmdlist, remote_show_cmdlist): Make file-static.
	(show_remote_cmd): Iterate.
	(_initialize_remote): Remove remote_set_cmdlist,
	remote_show_cmdlist.

2006-02-01  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (gdbtypes_h, gdbtypes.o, utils.o): Update.
	* defs.h (hashtab_obstack_allocate, dummy_obstack_deallocate): Add
	prototypes.
	* dwarf2read.c (read_subroutine_type): Use TYPE_ZALLOC.
	(hashtab_obstack_allocate, dummy_obstack_deallocate): Moved to...
	* utils.c (hashtab_obstack_allocate, dummy_obstack_deallocate):
	...here.
	* gdbtypes.c: Include "hashtab.h".
	(build_gdbtypes): Remove extra prototype.
	(struct type_pair, type_pair_hash, type_pair_eq)
	(create_copied_types_hash, copy_type_recursive): New.
	* gdbtypes.h: Include "hashtab.h".
	(TYPE_ZALLOC): New.
	(create_copied_types_hash, copy_type_recursive): New prototypes.
	* objfiles.c (free_objfile): Call preserve_values.
	* symfile.c (reread_symbols): Likewise.
	(clear_symtab_users): Remove calls to clear_value_history and
	clear_internalvars.
	* value.c (clear_value_history, clear_internalvars): Removed.
	(preserve_one_value, preserve_values): New functions.
	* value.h (clear_value_history, clear_internalvars): Removed.
	(preserve_values): New prototype.

	* tracepoint.c (_initialize_tracepoint): Do not initialize convenience
	variables here.

2006-01-29  Mark Kettenis  <kettenis@gnu.org>

	* amd64-tdep.c (amd64_classify): Handle TYPE_CODE_BOOL.
	Fixes PR tdep/2075.

2006-01-27  Joel Brobecker  <brobecker@adacore.com>

	* MAINTAINERS: Use a consistent email address for brobecker.

2006-01-27  Joel Brobecker  <brobecker@adacore.com>

	* infcmd.c (post_create_inferior): Fix copy/paste error introduced
	in the previous change.

2006-01-24  Daniel Jacobowitz  <dan@codesourcery.com>

	PR gdb/1914
	* fork-child.c (fork_inferior): Don't call
	solib_create_inferior_hook.
	* infcmd.c (post_create_inferior): Call solib_add,
	solib_create_inferior_hook, and re_enable_breakpoints_in_shlibs.
	(attach_command): Don't call solib_add or
	re_enable_breakpoints_in_shlibs.  Call post_create_inferior
	instead.
	* remote.c (remote_open_1): Don't call solib_create_inferior_hook
	or observer_notify_inferior_created.  Call post_create_inferior
	instead.
	* corelow.c: Don't include "observer.h".
	(solib_add_stub): Deleted.
	(core_open): Don't call observer_notify_inferior_created or
	solib_add_stub.  Call post_create_inferior instead.
	* inf-ptrace.c: Don't include "observer.h".
	(inf_ptrace_attach): Don't call observer_notify_inferior_created.
	* inf-ttrace.c: Don't include "observer.h".
	(inf_ttrace_attach): Don't call observer_notify_inferior_created.
	* inferior.h (solib_create_inferior_hook): Remove redundant
	prototype.
	* inftarg.c: Don't include "observer.h".
	(child_attach): Don't call observer_notify_inferior_created.
	* Makefile.in: Update dependencies.

2006-01-24  Daniel Jacobowitz  <dan@codesourcery.com>

	* infcmd.c: Include "observer.h".
	(post_create_inferior): New function.
	(run_command_1): Call it.  Also call proceed.
	* inferior.h (post_create_inferior): New prototype.
	* Makefile.in (infcmd.o): Update.

	* gnu-nat.c (gnu_create_inferior): Don't call proceed.
	* go32-nat.c (go32_create_inferior): Likewise.
	* nto-procfs.c (procfs_create_inferior): Likewise.
	* procfs.c (procfs_create_inferior): Likewise.
	* remote-sim.c (gdbsim_create_inferior): Likewise.
	* remote.c (extended_remote_create_inferior)
	(extended_remote_async_create_inferior): Likewise.
	* win32-nat.c (win32_create_inferior): Likewise.
	* wince.c (child_create_inferior): Likewise.

	* monitor.c (monitor_create_inferior): Don't call proceed.
	Set the PC manually.
	* ocd.c (ocd_create_inferior): Likewise.
	* remote-e7000.c (e7000_create_inferior): Likewise.
	* remote-m32r-sdi.c (m32r_create_inferior): Likewise.
	* remote-mips.c (mips_create_inferior): Likewise.
	* remote-rdp.c (remote_rdp_create_inferior): Likewise.
	* remote-sds.c (sds_create_inferior): Likewise.
	* remote-st.c (st2000_create_inferior): Likewise.

	* inf-ptrace.c (inf_ptrace_create_inferior): Don't call
	proceed or observer_notify_inferior_created.
	* inf-ttrace.c (inf_ttrace_create_inferior): Likewise.
	* inftarg.c (child_create_inferior): Likewise.

2006-01-24  Daniel Jacobowitz  <dan@codesourcery.com>

	* linux-thread-db.c (thread_db_mourn_inferior): Remove breakpoints
	after mourning the inferior.

2006-01-24  Jim Blandy  <jimb@redhat.com>

	* valarith.c (binop_user_defined_p): Handle refs to typedefs.

2006-01-24  Fred Fish  <fnf@specifix.com>

	* parse.c (source.h): Include.
	(parse_exp_in_context):  Use static source context if no
	other context found.

2006-01-23  Andrew Stubbs  <andrew.stubbs@st.com>

	* sh-tdep.c: Include reggroups.h.
	(sh_register_reggroup_p): New function.
	(sh_gdbarch_init): Add call to set_gdbarch_register_reggroup_p.
	* Makefile.in (sh-tdep.o): Add dependency on reggroups.h.

2006-01-23  Andrew Stubbs  <andrew.stubbs@st.com>

	* cli/cli-cmds.c: Include fcntl.h.
	(source_command): Use the GDB search path to find script files.

2006-01-22  Daniel Jacobowitz  <dan@codesourcery.com>

	PR tdep/2029
	Suggested by Till Straumann <strauman@slac.stanford.edu>:
	* rs6000-tdep.c (skip_prologue): Update check for later mtlr
	instructions.  Handle PIC bcl.

2006-01-22  Daniel Jacobowitz  <dan@codesourcery.com>

	* config/djgpp/README: Typo fix.
	* config/djgpp/fnchange.lst: Update.

2006-01-22  Mark Kettenis  <kettenis@gnu.org>

	* sparc-tdep.h (struct gdbarch_tdep): Add step_trap member.
	(sparc_address_from_register): New prototype.
	(sparcnbsd_step_trap): New prototype.
	* sparc-tdep.c (sparc_address_from_register): Make globally
	visible.
	(sparc_analyze_control_transfer): Change prototype to accept
	`struct gdbarch *' as first argument.  Allow for optional hnadling
	for trap instructions.
	(sparc_step_trap): New function.
	(sparc_software_single_step): Adjust call to
	sparc_analyze_control_trabsfer.
	(sparc32_gdbarch_init): Initialize TDEP->step_trap.
	* sparcnbsd-tdep.c (sparcnbsd_step_trap): New function.
	(sparc32nbsd_init_abi): Set TDEP->step_trap.
	* sparc64obsd-tdep.c (sparc64obsd_init_abi): Set TDEP->step_trap.
	* sparc64nbsd-tdep.c (sparc64nbsd_init_abi): Set TDEP->step_trap.

	* sparc-tdep.c (sparc32_return_value): Convert to use
	RETURN_VALUE_ABI_PRESERVES_ADDRESS instead of
	RETURN_VALUE_STRUCT_CONVENTION.
	(sparc32_extract_struct_value_address): Remove.

2006-01-21  Daniel Jacobowitz  <dan@codesourcery.com>

	* avr-tdep.c (avr_address_to_pointer, avr_pointer_to_address)
	(avr_extract_return_value, avr_frame_prev_register): Use gdb_byte.

2006-01-21  Daniel Jacobowitz  <dan@codesourcery.com>

	* solib.c (info_sharedlibrary_command): Avoid internal_error.

2006-01-21  Mark Kettenis  <kettenis@gnu.org>

	* i386-tdep.c (i386_mxcsr_type): New variable.
	(i386_init_types): Initialize i386_mxcsr_type.
	(i386_register_type): Return i386_mxcsr_type for %mxcsr.
	* i386-tdep.c (i386_mxcsr_type): New extern.
	* amd64-tdep.c (amd64_register_info): Return i386_mxcsr_type for
	%mxcsr.

2006-01-20  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (remote-rdi.o): Remove.
	(rdi-share/libangsd.a): Likewise.
	* README: Don't mention remote-rdi.c.
	* NEWS: Mention removal of rdi-share.
	* configure.ac: Don't configure rdi-share subdirectory.
	* remote-rdi.c: Remove.
	* config/arm/embed.mt (TDEPFILES): Remove remote-rdi.o.
	(TDEPLIBS): Remove rdi-share/libangsd.a.
	* rdi-share/Makefile.am: Remove.
	* rdi-share/Makefile.in: Likewise.
	* rdi-share/README.CYGNUS: Likewise.
	* rdi-share/aclocal.m4: Likewise.
	* rdi-share/adp.h: Likewise.
	* rdi-share/adperr.h: Likewise.
	* rdi-share/angel.h: Likewise.
	* rdi-share/angel_bytesex.c: Likewise.
	* rdi-share/angel_bytesex.h: Likewise.
	* rdi-share/angel_endian.h: Likewise.
	* rdi-share/ardi.c: Likewise.
	* rdi-share/ardi.h: Likewise.
	* rdi-share/armdbg.h: Likewise.
	* rdi-share/buffers.h: Likewise.
	* rdi-share/chandefs.h: Likewise.
	* rdi-share/channels.h: Likewise.
	* rdi-share/chanpriv.h: Likewise.
	* rdi-share/configure: Likewise.
	* rdi-share/configure.in: Likewise.
	* rdi-share/crc.c: Likewise.
	* rdi-share/crc.h: Likewise.
	* rdi-share/dbg_conf.h: Likewise.
	* rdi-share/dbg_cp.h: Likewise.
	* rdi-share/dbg_hif.h: Likewise.
	* rdi-share/dbg_rdi.h: Likewise.
	* rdi-share/devclnt.h: Likewise.
	* rdi-share/devices.h: Likewise.
	* rdi-share/devsw.c: Likewise.
	* rdi-share/devsw.h: Likewise.
	* rdi-share/drivers.c: Likewise.
	* rdi-share/drivers.h: Likewise.
	* rdi-share/etherdrv.c: Likewise.
	* rdi-share/ethernet.h: Likewise.
	* rdi-share/host.h: Likewise.
	* rdi-share/hostchan.c: Likewise.
	* rdi-share/hostchan.h: Likewise.
	* rdi-share/hsys.c: Likewise.
	* rdi-share/hsys.h: Likewise.
	* rdi-share/logging.c: Likewise.
	* rdi-share/logging.h: Likewise.
	* rdi-share/msgbuild.c: Likewise.
	* rdi-share/msgbuild.h: Likewise.
	* rdi-share/params.c: Likewise.
	* rdi-share/params.h: Likewise.
	* rdi-share/rx.c: Likewise.
	* rdi-share/rxtx.h: Likewise.
	* rdi-share/serdrv.c: Likewise.
	* rdi-share/serpardr.c: Likewise.
	* rdi-share/sys.h: Likewise.
	* rdi-share/tx.c: Likewise.
	* rdi-share/unixcomm.c: Likewise.
	* rdi-share/unixcomm.h: Likewise.

2006-01-21  Mark Kettenis  <kettenis@gnu.org>

	* hppa-linux-tdep.c (hppa_linux_sigtramp_frame_prev_register):
	Change type of last argument to `gdb_byte *'.

2006-01-20  Mark Kettenis  <kettenis@gnu.org>

	* hppa-tdep.h (hppa_in_solib_call_trampoline)
	(hppa_skip_trampoline_code): New prototypes.
	* hppa-tdep.c (struct insn_pattern): New.
	(hppa_long_branch_stub, hppa_long_branch_pic_stub)
	(hppa_import_stub, hppa_import_pic_stub, hppa_plt_stub): Moved
	here from hppa-linux-tdep.c
	(HPPA_MAX_INSN_PATTERN_LEN): New define.
	(hppa_match_insns, hppa_match_insns_relaxed, hppa_in_dyncall)
	(hppa_in_solib_call_trampoline, hppa_skip_trampoline_code): New
	functions based on functions removed from hppa-linux-tdep.c.
	* hppa-linux-tdep.c (hppa_long_branch_stub)
	(hppa_long_branch_pic_stub, hppa_import_stub)
	(hppa_import_pic_stub, hppa_plt_stub): Moved to hppa-tdep.c.
	(insns_match_pattern_relaxed, hppa_linux_in_dyncall)
	(hppa_linux_in_solib_call_trampoline)
	(hppa_linux_skip_trampoline_code): Removed.
	(hppa_linux_init_abi): Set TDEP->in_solib_call_tranpoline to
	hppa_in_solib_call_trampoline and skip_trampoline_code to
	hppa_skip_trampoline_code.
	* hppabsd-tdep.c (hppabsd_init_abi): Set
	TDEP->in_solib_call_trampoline and skip_trampoline_code.

2006-01-20  Jim Blandy  <jimb@redhat.com>

	* MAINTAINERS: Change my E-mail address.

	* configure.ac: Add -Wno-pointer-sign to list of build warnings.
	* configure: Regenerated.

2006-01-20  Daniel Jacobowitz  <dan@codesourcery.com>

	* MAINTAINERS: Overhaul.

2006-01-18  Mark Kettenis  <kettenis@gnu.org>

	Based on a previous patch form Michal Ludvig:
	* amd64-tdep.c (amd64_sse_type): Remove.
	(amd64_register_info): Use i386_eflags_type and i386_sse_type
	where appropriate.
	(AMD64_NUM_REGS): Use ARRAY_SIZE.
	(amd64_register_type): Remove code to build amd_sse_type.
	* i386-tdep.c (i386_eflag_type): New variable.
	(i386_mmx_type, i386_sse_type): Make global.
	(i386_init_types): New function.
	(i386_build_mmx_type, i386_build_sse_type): Remove functions.
	(i386_register_type): Return i386_eflag_type, i386_sse_type and
	i386_mmx_type when appropriate.
	(_initialize_i386_tdep): Call i386_init_types.
	* i386-tdep.h (i386_eflags_type, i386_mmx_type, i386_sse_type):
	Declare extern.

	Based on a previous patch form Michal Ludvig:
	* gdbtypes.c (append_flags_type_flag, init_flags_type): New
	functions.
	(is_integral_type, rank_one_type, recursive_dump_type): Add
	support for TYPE_CODE_FLAGS.
	* gdbtypes.h (enum type_code): Add TYPE_CODE_FLAGS.
	(append_flags_type_field, init_flags_type): New prototypes.
	* ada-valprint.c (ada_val_print_1): Add support for
	TYPE_CODE_FLAGS.
	* c-valprint.c (c_val_print): Likewise.
	* f-valprint.c (f_val_print): Likewise.
	* p-valprint.c (pascal_val_print): Likewise.
	* valprint.c (val_print_type_code_flags): New function.
	* valprint.h (val_print_type_code_flags): New prototype.
	* value.c (unpack_long, value_from_longest): Add support for
	TYPE_CODE_FLAGS.

2006-01-17  Christopher Faylor  <cgf@timesys.com>

	* MAINTAINERS: Very belatedly remove myself from from the list of
	people caught up in the paper trail.

2006-01-17  Jim Blandy  <jimb@redhat.com>

	* symtab.h (struct general_symbol_info): Use gdb_byte for
	value.bytes.
	* stabsread.c (define_symbol): Use gdb_byte for the buffer holding
	a floating-point constant's value.
	* dwarf2read.c (dwarf2_const_value): Remove casts of value buffer
	to char *.
	* findvar.c (read_var_value): Eliminate needless temporary.

	* dwarf2-frame.c (dwarf2_read_section): Update forward declaration
	to match prior change to dwarf2_read_section's type.

2006-01-16  Paul Gilliam  <pgilliam@us.ibm.com>

	* ppc-tdep.h (PPC_MAX_EPILOGUE_INSTRUCTIONS): New define.
	* rs6000-tdep.c (insn_changes_sp_or_jumps)
	(rs6000_in_function_epilogue_p): New functions.
	(rs6000_gdbarch_init): Set in_function_epilogue_p.

2006-01-17  Jim Blandy  <jimb@redhat.com>

	* dwarf2read.c (struct dwarf2_per_objfile, struct comp_unit_head)
	(struct line_header, struct partial_die_info, struct dwarf_block):
	Use gdb_byte for members that refer to Dwarf section contents.
	(dwarf2_read_abbrevs, dwarf2_read_section, dwarf_decode_lines,
	dwarf_decode_macros, load_comp_unit, load_partial_dies,
	locate_pdi_sibling, partial_read_comp_unit_head, peek_die_abbrev,
	read_1_byte, read_1_signed_byte, read_2_bytes, read_4_bytes,
	read_8_bytes, read_address, read_attribute, read_attribute_value,
	read_comp_unit, read_comp_unit_head, read_die_and_children,
	read_die_and_siblings, read_full_die, read_indirect_string,
	read_initial_length, read_n_bytes, read_offset, read_partial_die,
	read_signed_leb128, read_string, read_unsigned_leb128,
	skip_children, skip_leb128, skip_one_die): Same.

2006-01-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* complaints.c (stop_whining): Make signed.
	* linux-thread-db.c (thread_db_store_registers): Use gdb_byte.

2006-01-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c, remote-fileio.c, remote.h: Update copyright
	notices.

2006-01-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (peek_die_abbrev, read_address, read_initial_length)
	(read_offset): Change BYTES_READ argument to unsigned int.
	(dwarf2_build_psymtabs_easy, read_comp_unit_head)
	(create_all_comp_units, dwarf2_get_pc_bounds)
	(dwarf_decode_line_header, var_decode_location)
	(dwarf_decode_macros): Change local BYTES_READ variables to
	unsigned int.
	(read_indirect_string): Remove obsolete cast.

2006-01-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote-fileio.c (remote_fileio_return_success): Take a gdb_byte
	argument.
	(remote_fileio_func_open, remote_fileio_func_rename)
	(remote_fileio_func_unlink, remote_fileio_func_stat)
	(remote_fileio_func_fstat, remote_fileio_func_gettimeofday)
	(remote_fileio_func_system): Cast the arguments to
	remote_read_bytes and remote_write_bytes.
	(remote_fileio_func_read, remote_fileio_func_write): Use a
	gdb_byte buffer.
	* remote.h (remote_read_bytes, remote_write_bytes): Update
	prototypes.
	* remote.c (hex2bin, bin2hex): Use gdb_byte for the BIN argument.
	(threadref_to_int): Replace bogus char * cast.
	(remote_unpack_thread_info_response): Use int for tag.
	(remote_threads_extra_info, remote_check_symbols): Cast string
	arguments to hex2bin.
	(remote_wait): Use a char buffer for packets and a gdb_byte
	buffer for registers.
	(remote_async_wait): Likewise.
	(remote_prepare_to_store, store_register_using_P)
	(remote_store_registers): Use gdb_byte buffers.
	(remote_write_bytes, remote_read_bytes): Use a gdb_byte pointer
	for MYADDR and char buffers for strings.
	(remote_xfer_partial): Add casts for string operations on READBUF.
	(remote_rcmd): Cast strings passed to bin2hex.

2006-01-16  Mark Mitchell  <mark@codesourcery.com>

	* aclocal.m4: Regenerate.

2006-01-16  Nathan Sidwell  <nathan@codesourcery.com>

	* mt-tdep.c (enum mt_gdb_regnums): Add MT_COPRO_PSEUDOREG_ARRAY,
	MT_COPRO_PSEUDOREG_DIM_1, MT_COPRO_PSEUDOREG_DIM_2,
	MT_COPRO_PSEUDOREG_REGS members.  Adjust MT_NUM_PSEUDO_REGS.
	(mt_register_name): Lazily synthesize name for coprocessor pseudo
	array registers.
	(mt_copro_register_type): New. Broken out of ...
	(mt_register_type): ... here.  Use it.  Deal with coprocessor
	pseudo array.
	(mt_select_coprocessor): New.
	(mt_pseudo_register_read, mt_pseudo_register_write): Deal with
	coprocessor pseudo array.

2006-01-16  Andrew Stubbs  <andrew.stubbs@st.com>

	* breakpoint.c (insert_breakpoints): Check that a thread exists
	before inserting thread specific breakpoints.

2006-01-15  Mark Kettenis  <kettenis@gnu.org>

	* osabi.c (generic_elf_osabi_sniffer): Fix typo in previous
	commit.

	* alpha-tdep.c (alpha_gdbarch_init): Set cannot_step_breakpoint.
	* config/alpha/nm-osf.h (CANNOT_STEP_BREAKPOINT): Remove.
	* config/alpha/nm-linux.h (CANNOT_STEP_BREAKPOINT): Remove.
	* config/alpha/nm-nbsd.h: Remove file.
	* config/alpha/nm-fbsd.h: Remove file
	* config/alpha/nbsd.mh (NAT_FILE): Remove.
	* config/alpha/fbsd.mh (NAT_FILE): Remove.

2006-01-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* macroexp.c (expand): Initialize argc.
	* stabsread.c (read_type): Handle errors from read_args.
	(read_args): Return NULL for errors.

2006-01-15  Mark Kettenis  <kettenis@gnu.org>

	* osabi.c (generic_elf_osabi_sniffer): Use memcmp instead of
	strcmp to compare string to a byte buffer.

2006-01-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* printcmd.c (output_command): Always initialize fmt.size.
	(printf_command): Use gdb_byte.
	* symfile.c (separate_debug_file_exists): Use gdb_byte.
	(load_section_callback, read_target_long_array): Likewise.
	(simple_read_overlay_table, simple_read_overlay_region_table)
	(simple_overlay_update_1): Correct calls to read_target_long_array.
	* valprint.c (partial_memory_read): Change MYADDR to a gdb_byte *.
	Also change local pointers.
	(val_print_string): Use gdb_byte.

2006-01-15  Mark Kettenis  <kettenis@gnu.org>

	* alphafbsd-tdep.c: Include "solib-svr4.h".
	(alphafbsd_init_abi): Set solib_svr4_fetch_link_map_offsets to
	svr4_lp64_fetch_link_map_offsets.
	* Makefile.in (alphafbsd-tdep.o): Update dependencies.
	* config/alpha/fbsd.mt (TDEPFILES): Add corelow.o, solib.o and
	solib-svr4.o.
	* config/alpha/fbsd.mh (NATDEPFILES): Remove solib.o, solib-svr4.o
	and solib-legacy.o.
	* config/alpha/nm-fbsd.h: Don't include "solib.h".

2006-01-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* source.c (_initialize_source): Use add_setshow_integer_cmd.

2006-01-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* linux-fork.c (delete_fork_command, detach_fork_command): Use
	PIDGET.

2006-01-15  Mark Kettenis  <kettenis@gnu.org>

	* arm-linux-tdep.c (arm_linux_svr4_fetch_link_map_offsets):
	Remove.
	(arm_linux_init_abi): Set solib_svr4_fetch_link_map_offsets to
	svr4_ilp32_fetch_link_map_offsets.
	* cris-tdep.c (cris_linux_svr4_fetch_link_map_offsets): Remove
	function.
	(cris_gdbarch_init): Set solib_svr4_fetch_link_map_offsets to
	svr4_ilp32_fetch_link_map_offsets.
	* mips-linux-tdep.c (mips_linux_svr4_fetch_link_map_offsets)
	(mips64_linux_svr4_fetch_link_map_offsets): Remove functions.
	(mips_linux_init_abi): Set solib_svr4_fetch_link_map_offsets to
	svr4_ilp32_fetch_link_map_offsets or svr4_lp64_fetch_link_map_offsets
	where appropriate.
	* nbsd-tdep.c (nbsd_ilp32_solib_svr4_fetch_link_map_offsets):
	Simply call svr4_ilp32_fetch_link_map_offsets.
	(nbsd_lp64_solib_svr4_fetch_link_map_offsets): Simply call
	svr4_lp64_fetch_link_map_offsets.
	* ppc-linux-tdep.c (ppc_linux_svr4_fetch_link_map_offsets): Remove
	function.
	(ppc_linux_init_abi): Set solib_svr4_fetch_link_map_offsets to
	svr4_ilp32_fetch_link_map_offsets.
	* s390-tdep.c (s390_svr4_fetch_link_map_offsets)
	(s390x_svr4_fetch_link_map_offsets): Remove functions.
	(s390_gdbarch_init): Set solib_svr4_fetch_link_map_offsets to
	svr4_ilp32_fetch_link_map_offsets or svr4_lp64_fetch_link_map_offsets
	where appropriate.

2006-01-15  Mark Kettenis  <kettenis@gnu.org>

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

	* s390-tdep.c: Do not include "tm.h" and "../bfd/bfd.h".
	* Makefile.in (s390-tdep.o): Update dependencies.

2006-01-14  Mark Kettenis  <kettenis@gnu.org>

	* sol2-tdep.h. sol2-tdep.c: New files.
	* amd64-sol2-tdep.c: Include "sol2-tdep.h".
	(amd64_sol2_init_abi): Set skip_solib_resolver.
	* i386-sol2-tdep.c: Include "sol2-tdep.h".
	(i386_sol2_init_abi): Set skip_solib_resolver.
	* sparc-sol2-tdep.c: Include "sol2-tdep.h".
	(sparc32_sol2_init_abi): Set skip_solib_resolver.
	* sparc64-sol2-tdep.c: Include "sol2-tdep.h".
	(sparc64_sol2_init_abi): Set skip_solib_resolver.
	* Makefile.in (sol2_tdep_h): New variable.
	(ALLDEPFILES): Add sol2-tdep.c.
	(sol2-tdep.o): New target.
	(amd64-sol2-tdep.o, i386-sol2-tdep.o, sparc-sol2-tdep.o)
	(sparc64-sol2-tdep.o): Update dependencies
	* config/i386/i386sol2.mt (TDEPFILES): Add sol2-tdep.o.
	* config/i386/sol2-64.mt (TDEPFILES): Add sol2-tdep.o.
	* config/sparc/sol2.mt (TDEPFILES): Add sol2-tdep.o.
	* config/sparc/sol2-64.mt (TDEPFILES): Add sol2-tdep.o.

	* hppa-linux-tdep.c: Fix copyright indentation.

	* hppa-tdep.h (enum hppa_regnum): Add HPPA_FP31R_REGNUM.
	* hppabsd-nat.c (hppabsd_fpregset_supplies_p)
	(hppabsd_supply_fpregset, hppabsd_collect_fpregset): New
	functions.
	(hppabsd_fetch_registers, hppabsd_store_registers): Handle
	floating-point registers.

2006-01-13  Mark Mitchell  <mark@codesourcery.com>

	* event-loop.c (gdb_select): Detect file descriptors that have
	been closed.

2006-01-13  Mark Kettenis  <kettenis@gnu.org>

	* hppabsd-tdep.c (hppabsd_init_abi): Set long_double_bit to 64,
	and long_double_format accordingly.

2006-01-12  Paul N. Hilfinger <hilfinger@adacore.com>

	* ada-exp.y (yyerror): Change message to ignore the argument, avoiding
	translation problems.
	* ada-lang.c (ada_value_struct_elt): Change interface and handling
	of errors to avoid translation problem (and less than optimal error
	messages).
	(ada_value_tag, ada_tag_name_1, ada_tag_name_2,	ada_evaluate_subexp):
	Use new interface to ada_value_struct_elt.
	* ada_lang.h (ada_value_struct_elt): Update declaration to new 
	interface.
	
	* ChangeLog: remove reference to ada-tasks.c from entry of
	2006-01-07.
	
2006-01-11  Mark Kettenis  <kettenis@gnu.org>

	* remote.c (get_memory_packet_size, set_thread) 
	(remote_unpack_thread_info_response, remote_get_threadinfo) 
	(parse_threadlist_response, remote_get_threadlist) 
	(remote_current_thread, remote_threads_info) 
	(remote_threads_extra_info, extended_remote_restart, get_offsets) 
	(remote_check_symbols, remote_open_1, remote_detach) 
	(remote_async_wait, remote_fetch_registers) 
	(remote_store_registers, check_binary_download, putpkt_binary) 
	(remote_insert_breakpoint, remote_insert_watchpoint) 
	(remote_remove_watchpoint, remote_insert_hw_breakpoint) 
	(remote_remove_hw_breakpoint, remote_xfer_partial, remote_rcmd) 
	(packet_command): Remove redundant parenthesis.

2006-01-10  Mark Kettenis  <kettenis@gnu.org>

	* corefile.c (read_memory_integer, read_memory_unsigned_integer)
	(read_memory_typed_address, write_memory)
	(write_memory_unsigned_integer, write_memory_signed_integer): Use
	gdb_byte where appropriate.

	* mi/mi-main.c (mi_cmd_data_read_memory): Change type of mbus into
	'gdb_byte *'.

	* target.h (target_read_memory_partial,	target_write_memory_partial):
	Change second argument to 'gdb_byte *'.
	* target.c (target_xfer_memory_partial): Change third argument to
	'gdb_byte *'.
	(target_read_memory_partial, target_write_memory_partial): Change
	second argument to 'gdb_byte *'.

	* linespec.c (decode_objc): Make i1 and i2 unsigned.
	(find_method): Set values.sals to NULL.

2006-01-09  Mark Kettenis  <kettenis@gnu.org>

	* amd64obsd-nat.c (amd64obsd_supply_pcb): Use 'gdb_byte *' instead
	of 'char *' in cast.

2006-01-07  Paul N. Hilfinger <hilfinger@adacore.com>

	* ada-exp.y, ada-lex.l, ada-typeprint.c: I18n markup.
	* ada-lang.c: I18n markup.  
	Editorial: change "can not" => "cannot" throughout.

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

	* Makefile.in: Sort dependencies.

2006-01-07  Eli Zaretskii  <eliz@gnu.org>

	* top.c (control_level): Remove unused variable.

2006-01-06  Fred Fish  <fnf@specifix.com>

	* objfiles.c (source.h): Include.
	(free_objfile): Update comment about clear_symtab_users().
	(free_objfile): Check all symtabs of objfile being freed and if
	one of them is the current source symtab, call
 	clear_current_source_symtab_and_line().

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

	Checkpoint/Restart for Linux.
	* linux-nat.c: Add support for debugging multiple forks.
	Add #include for linux-fork.h (interface spec).
	(super_mourn_inferior): New function pointer.
	(child_mourn_inferior): New function / target method.
	(linux_target): Claim to_mourn_inferior method pointer.
	(child_follow_fork): Call interface to linux-fork, conditionally
	add new fork processes to list of debugged processes.
	(kill_inferior): Use interface to linux-fork to kill
	multiple processes.

	* linux-fork.h: New file.
	* linux-fork.c: New file.  Support for debugging multiple forks
	of the same program.  Support for checkpoint and restart commands.

	* infrun.c (nullify_last_target_wait_ptid): New function.

	* Makefile.in: Add linux-fork.
	* config/*/linux.mh: Add linux-fork.
	* NEWS: Mention new functionality.

2006-01-02  Paul Hilfinger  <hilfingr@nile.gnat.com>

	* ada-exp.y (syntax definitions,write_var_or_type,write_name_assoc): 
	Change uses of "illegal" to "invalid".
	
2006-01-02  Paul N. Hilfinger  <hilfinger@adacore.com>

	* ada-exp.y: Considerable reorganization to move functionality
	from ada-lex.l to here, where it is logically more appropriate.
	The original reason, however, was to prevent premature name
	lookups for selector names in record aggregates.
	(BLOCKNAME, TYPENAME, OBJECT_RENAMING): Remove; lexer now returns
	NAME for all of these.
	(VAR): New artificial token to clarify precedence rules.
	(OTHERS): New lexeme.
	(empty_stoken): New symbol.
	(%union): Remove ssym, voidval.
	(%type): Remove <voidval> type declarations.
	(syntax definitions): Add aggregates.
	Remove distinction between NAME, TYPENAME, BLOCKNAME, OBJECT_RENAMING.
	Rename some non-terminals to be closer to reference manual usage.
	Tighten up expression syntax to disallow certain non-Ada 
	constructions such as X and then Y or else Z.
	(ada_parse): Remove initialization of left_block_context.
	(write_var_from_name): Remove.
	(write_var_or_type): New function, containing previous code from
	defunct write_var_from_name and name_lookup.
	(block_lookup): New function, moved from ada-lex.l
	(select_possible_type_sym): New function, factored out of
	name_lookup, which used to be in ada-lex.l.
	(find_primitive_type): Ditto.
	(chop_selector): Ditto.
	(write_ambiguous_var): New function, factored out of defunct
	write_var_from_name.
	(write_selectors): New function.
	(write_name_assoc): New function.
	(write_exp_op_with_string): New function.

	* ada-lex.l (processId): Change interface to return stoken.
	(tempbuf, resize_tempbuf, tempbuf_size, tempbuf_len): Remove.
	(block_lookup, name_lookup): Remove.  Functionality moved to
	ada-exp.y.
	(state IN_STRING): Remove.
	(rules): Handle string escapes in processString.
	Add 'others' token.
	Return all NAMEs, BLOCKNAMEs, OBJECT_RENAMINGs, TYPENAMEs in
	yylval.sval (as simple strings).
	All name look-ups now handled in ada-exp.y.
	Introduce "::" (COLONCOLON) token and return as separate token.
	(processId): Change return convention.  Comment.
	Leave leading "'" in place.
	(processString): New function.
	(find_dot_all): Add note to comment.
	Fix problem that allowed match only at the end.

	* ada-lang.c: Introduce aggregates.
	(find_struct_field): Add new parameter to count fields skipped, and
	allow other output parameters to be NULL.
	(value_tag_from_contents_and_address, ada_value_struct_elt): Use 
	new find_struct_field.
	(ada_index_struct_field, assign_aggregate, ada_is_array_type)
	(num_visible_fields, ada_index_struct_field_1, ada_index_struct_field)
	(num_component_specs, assign_component, assign_aggregate):
	(aggregate_assign_from_choices,aggregate_assign_positional)
	(aggregate_assign_others,add_component_interval):
	New functions.
	(ada_evaluate_subexp): Declare.
	Add aggregate-related operators.
	(ada_forward_operator_length): Declare.
	(resolve_subexp): Add cases for new aggregate operators and OP_NAME.
	Consolidate Ada operators, using ada_forward_operator_length.
	(ada_search_struct_field): Search in forward order.
	(ADA_OPERATORS): Add new aggregate operators.
	(ada_operator_length, ada_op_name, ada_forward_operator_length)
	(ada_dump_subexp_body, ada_print_subexp): Handle new aggregate 
	operators and OP_NAME.
	(ada_type_of_array): Use longest_to_int.
	(value_assign_to_component): New function.
	(ada_forward_operator_length, ada_op_name, ada_dump_subexp_body):
	Add OP_NAME case.
	(ada_forward_operator_length, ada_dump_subexp_body):
	Add OP_STRING case.

	* ada-lang.h (enum ada_operator): Add OP_AGGREGATE, OP_OTHERS,
	OP_CHOICES, OP_DISCRETE_RANGE, OP_POSITIONAL.

2006-01-02  Paul N. Hilfinger  <hilfinger@adacore.com>

	* ada-lang.c (process_raise_exception_name): Remove extraneous 
        definition from unsubmitted code.

	(is_lower_alphanum): New function.
	(ada_decode):  Add support for decoding protected object subprograms
	and entries, and of entities declared inside protected object
	subprograms. 
	Also add missing handling for__{DIGITS}+ suffixes.
	Allow '$<digits>' as valid overloading suffix.
	(is_name_suffix): Add handling for protected type entriy suffixes.
	Also add support for protected type subprogram suffixes, but keep
	it commented out for now, as there is an ambiguity between these
	entities and other internally generated entities.
	Allow '$<digits>' as valid overloading suffix.
	(is_valid_name_for_wild_match): New function.
	(wild_match): Add an exra level of verification of the entity name
	before declaring it a match for the given pattern.

	(ada_type_of_array, ada_evaluate_subexp): Use more proper 
	longest_to_int rather than cast.

	(ada_evaluate_subexp): Use "invalid" rather than "illegal" in comment.

	(ada_coerce_to_simple_array): Call check_size to make sure
	that the object size is reasonable.

	(ada_value_primitive_packed_val):  Use correct location in target 
	buffer for extracting packed record fields that are themselves records.

	(add_defn_to_vec): Do not try to replace a stub type by its full
	type. Avoids a potential infinite loop.
	
	(ada_lookup_symbol): Move return incorrectly placed return statement, 
	causing a loop that should be scanning all object files to only 
	scan the first one.

	(ada_tag_name_2): New function.
	(ada_tag_name_1): If no 'tsd' field found in the dispatching table,
	use alternative representation.

	(ada_find_renaming_symbol): Strip the function name suffix when 
	computing the XR type name.

	(ada_to_fixed_type): Try determining the tag only if we have the
	object's address.
	(to_fixed_array_type): Add comments.

	(ada_check_typedef): Replace expression checking whether the given
	type is a stub or not by a "call" to TYPE_STUB. Clearer and more
	consistent.
	
	* ada-lang.h (ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS): Allow
	'$' in addition to '.' for runtime auxiliary function name suffixes.
	See changes to ada_decode above.

	(struct task_control_block): Add field called_task.  (This change is
	to keep synchronized with our local sources; it does not affect the
	public version yet.)

	* ada-typeprint.c (ada_print_type): Use int_string for printing
	modulus of modular type.
	
	(print_range): Trivial editorial comment fix.

	* ada-valprint.c (ada_emit_char): Use normal Ada syntax for 
	double quote in string.

2006-01-01  Joel Brobecker  <brobecker@adacore.com>

	* top.c: Add 2006 to list of copyright years in file header.

2006-01-01  Joel Brobecker  <brobecker@adacore.com>

	* top.c (print_gdb_version): Update copyright year to 2006.

2006-01-01  Roger Sayle  <roger@eyesopen.com>
            Elena Zannoni <ezannoni@redhat.com>

	PR symtab/1651
	* xcoffread.c (xcoff_next_symbol_text): Check this_symtab_psymtab
	for NULL before assigning this_symtab_psymtab->objfile to objfile.
	(scan_xcoff_symtab): Initialize next_symbol_text_func.
        (Committed by Jim Blandy)

For older changes see ChangeLog-2005.

Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:
