2009-06-17  Pierre Muller  <muller@ics.u-strasbg.fr>
	Pedro Alves  <pedro@codesourcery.com>
	
	* infcmd.c (post_create_inferior): Call breakpoint_re_set after target
	is pushed for watchpoint promotion to hardware watchpoint.

2009-06-16  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* dwarf2read.c (dwarf_info_section, dwarf_abbrev_section)
	(dwarf_line_section, dwarf_pubnames_section, dwarf_aranges_section)
	(dwarf_loc_section, dwarf_macinfo_section, dwarf_str_section)
	(dwarf_ranges_section, dwarf_frame_section)
	(dwarf_eh_frame_section): Removed.
	(dwarf2_resize_section): Likewise.
	(dwarf2_read_section): Now static, use bfd_mmap() if possible.
	(dwarf2_get_section_info): New function.
	(munmap_section_buffer): Likewise.
	(dwarf2_per_objfile_cleanup): Likewise.
	(section_is_p): Signature change.
	* dwarf2-frame.c (dwarf2_build_frame_info): Use
	dwarf2_get_section_info instead of dwarf2_read_section.
	
2009-06-16  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* solib.c (symbol_add_stub): New FLAGS parameter.
	(solib_read_symbols): FROM_TTY -> FLAGS, call symbol_add_stub
	directly.
	(solib_add): Defer breakpoint_re_set until after all solibs.
	* bsd-uthread.c (bsd_uthread_solib_loaded): Adjust.
	* rs6000-nat.c (objfile_symbol_add): Adjust.
	* symfile.c (syms_from_objfile): Merge parameters into ADD_FLAGS.
	(new_symfile_objfile): Likewise.
	(symbol_file_add_with_addrs_or_offsets): Likewise.
	(symbol_file_add_from_bfd): Likewise.
	(symbol_file_add): Likewise.
	* symfile.h (enum symfile_add_flags): New. Adjust prototypes.
	* symfile-mem.c (symbol_file_add_from_memory): Adjust.
	* windows-nat.c (safe_symbol_file_add_stub): Adjust.
	* machoread.c (macho_oso_symfile, macho_symfile_read): Adjust.
	
2009-06-16  Keith Seitz  <keiths@redhat.com>

	* linespec.c (collect_methods): Delete.
	(add_matching_methods): Reove destructor special case.
	(find_method): Call find_methods directly instead of
	collect_methods.
	* valops.c (value_struct_elt): Remove destructor
	special cases.
	(check_field): Likewise.
	(value_struct_elt_for_reference): Likewise.
	(destructor_name_p): Remove misleading comment about dtors
	being "special cases". 
	* gdbtypes.h (get_destructor_fn_field): Remove. No longer needed.
	* gdbtypes.c (get_destructor_fn_field): Likewise. 

2009-06-16  Pedro Alves  <pedro@codesourcery.com>

	* mi/mi-main.c (mi_cmd_data_read_memory): Dispatch
	TARGET_OJECT_MEMORY reads to the topmost target, not to the
	flattened current_target.

2009-06-16  Tristan Gingold  <gingold@adacore.com>

	* avr-tdep.c (struct gdbarch_tdep): Replace the unused field with
	call_length field.
	(avr_register_name): Add const to register_names.
	(avr_scan_arg_moves): Move inside avr_scan_prologue.
	(avr_scan_prologue): Add pc_end argument.
	Only read prologue bytes that can be read.
	Limit the scan to the known prologue length.
	Makes pattern variables static and const.
	Fix indentation.
	(avr_skip_prologue): Pass func_end argument to avr_scan_prologue.
	Fix indentation.
	(avr_breakpoint_from_pc): Constify avr_break_insn.
	(avr_extract_return_value): Fix function comment.
	(avr_frame_unwind_cache): Fix GNU style violations.
	Pass current_pc argument to avr_scan_prologue to stop prologue
	analysis to the current pc.  This fixes the bug with the 'next'
	command.
	Correctly set the SP register of the previous frame (use call_length).
	(avr_frame_prev_register): Fix indentation.
	Correctly read PC from the stack on avr6 architectures.
	(avr_push_dummy_call): Fix indentation.
	(avr_gdbarch_init): Set call_length according to the architecture.

2009-06-15  Phil Muldoon  <pmuldoon@redhat.com>

	* infcall.c (show_unwind_on_terminating_exception_p): New
	function.
	(call_function_by_hand): Create breakpoint and clean-up call for
	std::terminate.breakpoint. Add unwind_on_terminating_exception_p
	gate. Pop frame on breakpoint hit.
	(_initialize_infcall): Add add_setshow_boolean_cmd for
	unwind-on-terminating-exception.

2009-06-12  Kevin Buettner  <kevinb@redhat.com>

	* dwarf2read.c (dwarf2_psymtab_to_symtab): Propagate
	`has_section_at_zero' flag from stripped objfile to separate,
	debug info only, objfile.

2009-06-12  Pedro Alves  <pedro@codesourcery.com>

	* exec.h (section_table_xfer_memory_partial): Improve description,
	mention SECTION_NAME.
	* exec.c (section_table_xfer_memory_partial): Remove stale
	description.

2009-06-11  Aleksandar Ristovski  <aristovski@qnx.com>

	* nto-tdep.h (nto_generic_supply_gpregset)
	(nto_generic_supply_fpregset, nto_generic_supply_altregset): Remove.
	* nto-tdep.c (nto_generic_supply_gpregset)
	(nto_generic_supply_fpregset, nto_generic_supply_altregset): Remove.

2009-06-11  Aleksandar Ristovski  <aristovski@qnx.com>

	* i386-nto-tdep.c (I386_NTO_SIGCONTEXT_OFFSET): Remove define.
	(i386nto_sigcontext_addr): Change the way context address is calculated.
	(i386nto_init_abi): Remove usage of deprecated sc_reg_offset and
	sc_sp_offset and set sc_reg_offset and sc_num_regs.

2009-06-11  Aleksandar Ristovski  <aristovski@qnx.com>

	* i386-nto-tdep.c (i386_nto_target): Remove definition.
	(init_i386nto_ops): Use macros to set fields to global
	current_nto_target directly.
	(i386nto_init_abi): Remove unused nto_set_target call.
	* nto-tdep.h (nto_set_target): Remove unused declaration.
	* nto-tdep.c (nto_set_target): Remove unused function.

2009-06-11  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (break_command_really): Rename local variable
	breakpoint_chain to bkpt_chain.

2009-06-11  Aleksandar Ristovski  <aristovski@qnx.com>

	Add support for XMM registers.
	* i386-nto-tdep.c (i386nto_regset_id): Add case for SSE register set.
	(i386nto_register_area): Correctly calculate offsets and sizes for
	all supported registers.

2009-06-11  Tom Tromey  <tromey@redhat.com>

	* eval.c (evaluate_subexp_standard) <OP_OBJC_MSGCALL>: Remove
	'static' from local variable definitions.

2009-06-11  Pedro Alves  <pedro@codesourcery.com>

	* symtab.c (append_expanded_sal): Remove unused local variables.

2009-06-11  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (sched_multi): New global.
	(resume): If sched_multi is set, resume only threads of the
	current inferior.
	(prepare_to_proceed): Don't switch over to wait_ptid if we're
	resuming a different inferior, and sched_multi is off.
	(show_schedule_multiple): New.
	(_initialize_infrun): Register new "set schedule-multiple" command.
	* inferior.h (sched_multi): Declare.
	* NEWS: Mention new "schedule-multiple" setting.

2009-06-11  Pedro Alves  <pedro@codesourcery.com>

	* varobj.c (varobj_create): Properly restore the selected frame.

2009-06-05  Tom Tromey  <tromey@redhat.com>

	* inferior.c (print_inferior): Make a table, not a list.  Emit
	table headers.

2009-06-10  Jonas Maebe  <jonas.maebe@elis.ugent.be>

	* darwin-nat.c (darwin_stop_inferior): Pass 0 as options to
	darwin_wait (blocking wait).
	(darwin_kill_inferior): Likewise.

2009-06-10  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (handle_inferior_event): Update comment around trying
	to revert back to a stepping thread that has exited.

2009-06-10  Cary Coutant  <ccoutant@google.com>

	* dwarf2read.c (dwarf_decode_lines): Recognize and ignore
	DW_LNE_set_discriminator.

2009-06-10  Pierre Muller  <muller@ics.u-strasbg.fr>

	* breakpoint.c: ARI fixes.
	(create_overlay_event_breakpoint): Avoid assignment inside if statement.
	(print_one_breakpoint_location): Likewise.
	(create_longjmp_breakpoint): Likewise.
	(tracepoint_save_command): Likewise
	(bpstat_find_step_resume_breakpoint): No operator at end of line.
	(bpstat_stop_status): Likewise.
	(describe_other_breakpoints): Likewise.
	(hw_watchpoint_used_count): Likewise.
	(expand_line_sal_maybe): Likewise.
	(break_command_really): Likewise.
	(delete_command): Likewise.
	(do_enable_breakpoint): Likewise.
	(delete_trace_command): Likewise.
	(catch_exception_command_1): Likewise and remove extra parentheses.

2009-06-08  Pierre Muller  <muller@ics.u-strasbg.fr>

	* breakpoint.c (_initialize_breakpoint): Remove "bu" command alias of
	"ubreak" command that does not exist.

2009-06-08  Pierre Muller  <muller@ics.u-strasbg.fr>

	* cli/cli-decode.c (add_alias_cmd): Correct assertion.

2009-06-07  Pedro Alves  <pedro@codesourcery.com>

	* hppa-tdep.c (_initialize_hppa_tdep): Add declaration.

2009-06-07  Pedro Alves  <pedro@codesourcery.com>

	* procfs.h: New.
	* proc-utils.h (procfs_first_available): Don't declare here.
	* sol-thread.c: Include procfs.h instead of sys/procfs.h and
	proc-utils.h.
	* procfs.c: Include procfs.h.
	(procfs_target): Make it public.  Don't register
	procfs_can_use_hw_breakpoint here.
	(proc_set_watchpoint): Check for PCWATCH or PIOCSWATCH being
	defined instead of TARGET_HAS_HARDWARE_WATCHPOINTS.
	(procfs_can_use_hw_breakpoint): Remove check of
	TARGET_HAS_HARDWARE_WATCHPOINTS.
	(procfs_use_watchpoints): Register procfs_can_use_hw_breakpoint
	here.
	(_initialize_procfs): Don't add the procfs target here.

	* i386-sol2-nat.c: Include target.h and procfs.h.
	(_initialize_amd64_sol2_nat): Install the procfs target here,
	customized with watchpoints support.
	* irix5-nat.c: Include target.h.
	(_initialize_core_irix5): Rename to ...
	(_initialize_irix5_nat): ... this.  Install the procfs target
	here, customized with watchpoints support.
	* alpha-nat.c: Include procfs.h.
	(_initialize_core_alpha): Rename to...
	(_initialize_alpha_nat): ... this.  Install the procfs target
	here, customized with watchpoints support.
	* sparc-sol2-nat.c: Include target.h and procfs.h.
	(_initialize_sparc_sol2_nat): New.

	* config/i386/nm-i386sol2.h (TARGET_HAS_HARDWARE_WATCHPOINTS): Delete.
	* config/sparc/nm-sol2.h (TARGET_HAS_HARDWARE_WATCHPOINTS): Delete.
	* config/mips/irix5.mh (NAT_FILE): Delete.
	* config/mips/irix6.mh (NAT_FILE): Delete.
	* config/mips/nm-irix5.h: Delete.

20009-06-07  Pedro  Alves  <pedro@codesourcery.com>

	* auxv.c (procfs_xfer_auxv): Change type of the `object' argument
	to enum target_object.  Cleanup comments.
	* auxv.h: Include "target.h".  Cleanup comments to not mention
	NATIVE_XFER_AUXV anymore.

2009-06-07  Pedro Alves  <pedro@codesourcery.com>

	* inferior.h (procfs_first_available): Move declaration to...
	* proc-utils.h: ... here.
	* sol-thread.c: Include procfs.h and proc-utils.h.

2009-06-07  Pedro Alves  <pedro@codesourcery.com>

	* inferior.h (proc_iterate_over_mappings): Delete declaration.
	* nto-tdep.h (proc_iterate_over_mappings): Delete declaration.
	* procfs.c (proc_iterate_over_mappings): Delete.

2009-06-07  Pedro Alves  <pedro@codesourcery.com>

	* target.h (struct target_ops): Make to_has_all_memory,
	to_has_memory, to_has_stack, to_has_registers and to_has_execution
	methods instead of variables.
	(target_has_all_memory_1, target_has_memory_1, target_has_stack_1)
	(target_has_registers_1, target_has_execution_1): Declare
	functions.
	(target_has_all_memory): Rewrite to call target_has_all_memory_1.
	(target_has_memory): Rewrite to call target_has_memory_1.
	(target_has_stack): Rewrite to call target_has_all_stack_1.
	(target_has_registers): Rewrite to call target_has_registers_1.
	(target_has_execution): Rewrite to call target_has_execution_1.
	(default_child_has_all_memory, default_child_has_memory)
	(default_child_has_stack, default_child_has_registers)
	(default_child_has_execution): Declare.
	(target_mark_running, target_mark_exited): Delete declarations.
	* target.c (default_child_has_all_memory,
	default_child_has_memory, default_child_has_stack,
	default_child_has_registers, default_child_has_execution): New.
	(target_has_all_memory_1, target_has_memory_1, target_has_stack_1,
	target_has_registers_1, target_has_execution_1): New.
	(add_target): Default the to_has_all_memory, to_has_all_memory,
	to_has_memory, to_has_stack, to_has_registers and to_has_execution
	callbacks to return 0.
	(update_current_target): Do not inherit to_has_all_memory,
	to_has_memory, to_has_stack, to_has_registers or to_has_execution.
	(target_mark_running, target_mark_exited): Delete.
	(memory_xfer_partial): Adjust.
	(target_read_memory, target_write_memory, target_search_memory):
	Dispatch to the the top-most target, not the flattened
	current_target.
	(target_info): Adjust.
	(init_dummy_target): Install return_zero as callback for
	to_has_all_memory, to_has_memory, to_has_stack, to_has_registers,
	to_has_execution.
	(set_maintenance_target_async_permitted): Use have_live_inferiors
	instead of target_has_execution.
	* target-memory.c (target_write_memory_blocks): Dispatch memory
	writes to the the top-most target, not the flattened
	current_target.

	* breakpoint.c (insert_breakpoints): Don't check for
	target_has_execution here.
	(update_global_location_list): Check if there are live inferiors
	to debug instead of target_has_execution.
	* infcmd.c (kill_command, detach_command): Check if there are
	inferiors instead of target_has_execution.
	* inferior.h (have_live_inferiors): Declare.
	* inferior.c (have_live_inferiors): New.
	* infrun.c (normal_stop): Don't check for target_has_execution to
	finish the thread states.
	* thread.c (is_thread_state, is_stopped, is_exited, is_running)
	(any_running, is_executing): Remove checks for
	target_has_execution.
	* top.c (kill_or_detach): Don't try to kill core inferiors.
	(quit_target): Don't check for target_has_execution.

	* corelow.c (core_has_memory, core_has_stack, core_has_registers):
	New.
	(init_core_ops): Install core_has_memory, core_has_stack and
	core_has_registers.
	* exec.c (exec_has_memory): New.
	(init_exec_ops): Install exec_has_memory.
	* remote.c (remote_add_inferior): Don't call target_mark_running.
	(remote_start_remote): Don't call target_mark_exited or call
	target_mark_running.
	(remote_open_1): Use have_inferiors instead of
	target_has_execution.  Don't use target_mark_exited.
	(init_remote_ops): Install deafult_child_has_all_memory,
	default_child_has_memory, default_child_has_stack,
	default_child_has_registers, default_child_has_execution.
	* bsd-kvm.c (bsd_kvm_return_one): New.
	(bsd_kvm_add_target): Register bsd_kvm_return_one as
	to_has_memory, to_has_stack and to_has_registers callbacks.
	* remote-m32r-sdi.c (m32r_return_one): New.
	(init_m32r_ops): Register it.
	* inf-child.c (inf_child_target): Adjust to register
	default_child_has_all_memory, default_child_has_memory,
	default_child_has_stack, default_child_has_registers,
	default_child_has_execution callbacks.
	* gnu-nat.c (init_gnu_ops): Likewise.
	* go32-nat.c (init_go32_ops): Likewise.
	* hpux-thread.c (init_hpux_thread_ops): Likewise.
	* monitor.c (init_base_monitor_ops): Likewise.
	* nto-procfs.c (init_procfs_ops): Likewise.
	* remote-mips.c (_initialize_remote_mips): Likewise.
	* windows-nat.c (init_windows_ops): Likewise.
	* remote-sim.c (gdbsim_create_inferior): Don't use
	target_mark_running or target_mark_exited.
	(gdbsim_mourn_inferior): Don't call target_mark_exited.
	(init_gdbsim_ops): Adjust to register
	default_child_has_all_memory, default_child_has_memory,
	default_child_has_stack, default_child_has_registers,
	default_child_has_execution callbacks.

	* linux-nat.c (linux_nat_xfer_partial): If reading memory, and
	there's no inferior selected, defer to a lower stratum.

2009-06-05  Tom Tromey  <tromey@redhat.com>

	* varobj.c (update_dynamic_varobj_children): Wrap error text in
	_().
	(install_visualizer): Likewise.
	(varobj_set_visualizer): Likewise.

2009-06-05  Marc Khouzam  <marc.khouzam@ericsson.com>

	* mi/mi-main.c (mi_cmd_exec_continue)
	(mi_cmd_exec_interrupt): Adjust parsing of thread group
	ids to current reality, where they don't have any 'p' prefix.

2009-06-05  Aleksandar Ristovski  <aristovski@qnx.com>

	* corelow.c (core_open): Check for core_gdbarch before calling
	gdbarch_target_signal_from_host.

2009-06-05  Tom Tromey  <tromey@redhat.com>

	* c-exp.y (parse_number): Don't use K&R definition.
	(yylex): Likewise.
	(yyerror): Likewise.

2009-06-04  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* varobj.c (varobj_update): Fix out of scope varobjs to not to change.

2009-06-04  Ulrich Weigand  <uweigand@de.ibm.com>

	* symtab.h: Rename SYMBOL_OPS to SYMBOL_COMPUTED_OPS.
	* ax-gdb.c (gen_var_ref): Likewise.
	* findvar.c (read_var_value, symbol_read_needs_frame): Likewise.
	* printcmd.c (address_info): Likewise.
	* dwarf2loc.c (dwarf_expr_frame_base): Likewise.
	* dwarf2read.c (dwarf2_symbol_mark_computed): Likewise.
	* symtab.h: Rename struct symbol_ops to struct symbol_computed_ops.
	* dwarf2loc.h: Likewise.
	* dwarf2loc.c (dwarf2_locexpr_funcs, dwarf2_loclist_funcs): Likewise.

	* symtab.h: (struct symbol_register_ops): New struct definition.
	(struct symbol): Make "ops" member a union of symbol_computed_ops and
	symbol_register_ops callback pointers.
	(SYMBOL_REGISTER_OPS): New macro.
	* tracepoint.c: Include "objfiles.h".
	(scope_info, collect_symbol): Use SYMBOL_REGISTER_OPS register_number
	callback to retrieve register numbers.
	* ax-gdb.c (gen_var_ref): Likewise.
	* findvar.c (read_var_value): Likewise.
	* printcmd.c (address_info): Likewise.

	* coffread.c (coff_reg_to_regnum): New function.
	(coff_register_funcs): New static variable.
	(process_coff_symbol): Do not call gdbarch_sdb_reg_to_regnum.
	Install SYMBOL_REGISTER_OPS callbacks.
	* mdebugread.c (mdebug_reg_to_regnum): New function.
	(mdebug_register_funcs): New static variable.
	(parse_symbol): Do not call gdbarch_ecoff_reg_to_regnum.
	Install SYMBOL_REGISTER_OPS callbacks.
	* stabsread.c (stab_reg_to_regnum): New function.
	(stab_register_funcs): New static variable.
	(define_symbol): Do not call gdbarch_stab_reg_to_regnum.
	Install SYMBOL_REGISTER_OPS callbacks.

2009-06-03  Doug Evans  <dje@google.com>

	* symfile.c (reread_symbols): Reset psymtabs_addrmap to NULL
	after discarding its contents.

2009-06-03  Pedro Alves  <pedro@codesourcery.com>

	* target.c: Include "exec.h".
	(update_current_target): Don't inherit to_sections or
	to_sections_end.
	(target_get_section_table): New.
	(target_section_by_addr): Fetch the section table from the passed
	in target.
	(memory_xfer_partial): Handle unmapped overlay sections before
	anything else.  Get the overlay mapped address here.  Adjust to
	use section_table_xfer_memory_partial.
	(get_target_memory): Request a TARGET_OBJECT_RAW_MEMORY object
	instead of TARGET_OBJECT_MEMORY.
	(target_resize_to_sections): Delete.
	(remove_target_sections): Adjust to remove target sections from
	`current_target_sections', and use resize_section_table.
	* target.h (struct target_ops) <to_sections, to_sections_end>:
	Remove fields.
	<to_get_section_table>: New method.
	(xfer_memory, print_section_info): Delete declarations.
	(struct target_section_table): New type.
	(target_get_section_table): Declare.
	(target_resize_to_sections): Delete declaration.
	(remove_target_sections): Delete declaration.
	* bfd-target.c (target_bfd_xfer_partial): Get the section table
	from to_data.
	(target_bfd_get_section_table): New.
	(target_bfd_xclose): Adjust.
	(target_bfd_reopen): Store the section table in the to_data field.
	* corelow.c (core_data): New.
	(core_close): Adjust to release core_data and its sections.
	(core_open): Allocate core_data, and build its target sections
	table.
	(deprecated_core_resize_section_table): New.
	(core_files_info): Pass core_data to print_section_info.
	(core_xfer_partial): Adjust to use
	section_table_xfer_memory_partial for TARGET_OBJECT_MEMORY xfers.
	(init_core_ops): Do not install a deprecated_xfer_memory callback
	anymore.
	* solib.c (update_solib_list): Add the shared library sections
	to the current target sections table.
	* exec.c (current_target_sections_1): New global.
	(current_target_sections): New global.
	(exec_close_1): New function, refactored from exec_close.  Remove
	the exec_bfd's sections from the current target sections table.
	Adjust to not use to_sections.
	(exec_close): Remove all target sections.  Call exec_close_1.
	(exec_file_clear): Use exec_close_1 instead of unpushing the
	target.
	(exec_file_attach): Likewise.  Adjust to not use to_sections.  Add
	exec_bfd's sections to the current target sections table.  Don't
	push the exec_ops target here.
	(resize_section_table): New.
	(add_target_sections): New.
	(remove_target_sections): Moved here.
	(section_table_xfer_memory): Adjust to implement the xfer_partial
	interface, and rename to...
	(section_table_xfer_memory_partial): ... this, replacing the
	current function of that same name.
	(exec_get_section_table): New.
	(exec_xfer_partial): New.
	(xfer_memory): Delete.
	(print_section_info): Replace the target_ops parameter by a
	target_section_table parameter.
	(exec_files_info, set_section_command, exec_set_section_address):
	Adjust to use the current sections table.
	(init_exec_ops): Do not register a deprecated_xfer_memory
	callback.  Register to_xfer_partial and to_get_section_table
	callbacks.
	* infrun.c (handle_inferior_event): Update comments around
	solib_add.
	* rs6000-nat.c (xcoff_relocate_core): Adjust to use
	deprecated_core_resize_section_table.
	* exec.h (resize_section_table): Declare.
	(section_table_xfer_memory_partial): Add const char * argument.
	(remove_target_sections): Declare here.
	(add_target_sections): Declare.
	(print_section_info): Declare here.
	* gdbcore.h (deprecated_core_resize_section_table): Declare.

2009-06-03  Ulrich Weigand  <uweigand@de.ibm.com>

	* value.h (struct internalvar): Remove.
	(get_internalvar_integer): Add prototype.
	(set_internalvar_integer): Add prototype.
	(clear_internalvar): Add prototype.

	* value.c (struct internalvar): Move here.  Add type member.  Remove
	endian member.  Add union_internalvar member instead of value member.
	(init_if_undefined_command): Use intvar->type.
	(create_internalvar): Do not initialize value/endian, but type.
	(create_internalvar_type_lazy): Call create_internalvar.
	(value_of_internalvar): Handle host-side internalvar contents.
	(set_internalvar_component): Likewise.
	(set_internalvar): Likewise.
	(get_internalvar_integer): New function.
	(clear_internalvar): Likewise.
	(set_internalvar_integer): Likewise.
	(preserve_values): Handle host-side internalvar contents.

	* breakpoint.c (set_breakpoint_count, set_tracepoint_count): Call
	set_internalvar_integer instead of set_internalvar.
	* findcmd.c (find_command): Likewise.
	* infrun.c (handle_inferior_event): Likewise.
	* source.c (forward_search_command, reverse_search_command): Likewise.
	* tracepoint.c (set_traceframe_num, set_tracepoint_num,
	set_traceframe_context): Likewise.

	* printcmd.c (x_command): Call clear_internalvar instead of
	set_internalvar.
	* tracepoint.c (set_traceframe_context): Likewise.
	
	* breakpoint.c (get_number_trailer): Call get_internalvar_integer
	instead of value_of_internalvar.
	* linespec.c (decode_dollar): Likewise.

	* expprint.c (dump_subexp_body_standard): Use internalvar_name
	instead of accessing internalvar private elements.
	* valops.c (value_assign): Copy from original source instead of
	accessing internalvar private elements.

2009-06-03  Ulrich Weigand  <uweigand@de.ibm.com>

	* scm-lang.c (builtin_type_scm): Remove.
	(scm_lookup_name): Add GDBARCH parameter.  Use it instead of
	objfile architecture.  Use per-architecture builtin_scm_type instead
	of builtin_type_scm.
	(evaluate_exp): Pass expression architecture to scm_lookup_name.

	(scm_get_field): Add SIZE parameter.  Use it instead of 
	TYPE_LENGTH (builtin_type_scm).

	(build_scm_types): New function.
	(scm_type_data): New variable.
	(builtin_scm_type): New function.
	(_initialize_scheme_language): Do not initialize builtin_type_scm.
	Register build_scm_types as post-init function for scm_type_data.

	* scm-exp.c (scm_lreadr): Use per-architecture builtin_scm_type
	instead of builtin_type_scm.

	* scm-lang.h (SCM_CAR, SCM_CDR): Pass SCM_SIZE to scm_get_field.
	(scm_get_field): Add SIZE paramter.
	(scm_scmval_print): Remove prototype.
	(builtin_type_scm): Remove.
	(struct builtin_scm_type): Add structure definition.
	(builtin_scm_type): Add prototype.

	* scm-valprint.c (scm_inferior_print): Add TYPE parameter.  Use it
	instead of builtin_core_addr type; do not use objfile architecture.
	(scm_scmlist_print): Add TYPE parameter.  Use it to define SCM_SIZE.
	Pass type to scm_scmval_print.
	(scm_ipruk): Add TYPE parameter.  Use it to define SCM_SIZE.
	(scm_scmval_print): Make static.  Add TYPE parameter.  Use it to
	define SCM_SIZE.  Pass type to scm_ipruk and scm_scmlist_print.
	(scm_val_print): Pass type to scm_inferior_print and scm_scmval_print.

2009-06-03  Ulrich Weigand  <uweigand@de.ibm.com>

	* mdebugread.c (mdebug_type_void, mdebug_type_char, mdebug_type_short,
	mdebug_type_int, mdebug_type_int_32, mdebug_type_int_64,
	mdebug_type_long_32, mdebug_type_long_64, mdebug_type_long_long_64,
	mdebug_type_unsigned_char, mdebug_type_unsigned_short,
	mdebug_type_unsigned_int_32, mdebug_type_unsigned_int_64,
	mdebug_type_unsigned_long_32, mdebug_type_unsigned_long_64,
	mdebug_type_unsigned_long_long_64, mdebug_type_adr_32,
	mdebug_type_adr_64, mdebug_type_float, mdebug_type_double,
	mdebug_type_complex, mdebug_type_double_complex,
	mdebug_type_fixed_dec, mdebug_type_float_dec, mdebug_type_string):
	Remove.

	(basic_type_data): New global variable.
	(basic_type): New function.
	(parse_type): Remove static basic type map map_bt.  Call basic_type
	to get basic types instead of using mdebug_type_ variables.

	(parse_symbol): Use builtin types instead of mdebug_type_ variables.
	(upgrade_type): Likewise.
	(parse_procedure): Likewise.
	(psymtab_to_symtab_1): Likewise.

	(_initialize_mdebugread): Do not initialize mdebug_type_ variables.
	Initialize basic_type_data.

2009-06-03  Ulrich Weigand  <uweigand@de.ibm.com>

	* dfp.h (decimal_binop): Convert LEN_RESULT to input parameter.
	* dfp.c (promote_decimal): Remove.
	(decimal_binop): Convert LEN_RESULT to input parameter.
	Remove call to decimal_binop.
	(decimal_compare): Remove call to decimal_binop.

	* valarith.c (value_binop): Pass desired result type length
	to decimal_binop.

2009-06-01  Tristan Gingold  <gingold@adacore.com>

	* configure.tgt (avr): Set gdb_sim to use the simulator.

2009-05-29  Doug Evans  <dje@google.com>

	* infrun.c (prepare_to_proceed): Document.  Assert !non_stop.
	If scheduler-locking is enabled, we're not going to be singlestepping
	any other previously stopped thread.

2009-05-29  Pedro Alves  <pedro@codesourcery.com>

	* mi/mi-interp.c (mi_on_resume): Initialize `count' to 0.

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

	* i386-tdep.c (i386_go32_init_abi): Use SVR4 register numbering
	for stabs and COFF debug info.

2009-05-28  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (handle_inferior_event): When thread hoping, switch
	inferior_ptid to the event thread before removing breakpoints from
	the target.  If not stopping, also try to revert back to a thread
	that was doing a "next".  Check if that thread still exists before
	resuming.
	(currently_stepping_thread): Delete and merge with ...
	(currently_stepping): ... this.
	(currently_stepping_callback): Rename to ...
	(currently_stepping_or_nexting_callback): ... this, and also
	return true if the thread was stepping over a call (has a
	step-resume breakpoint).

2009-05-28  Tom Tromey  <tromey@redhat.com>

	* python/python.c (gdbpy_parameter): Rename.  Fix error message.
	(GdbMethods): Change "get_parameter" to "parameter".

2009-05-28  Pierre Muller  <muller@ics.u-strasbg.fr>
	    Paul Pluzhnikov  <ppluzhnikov@google.com>

	* configure.ac (!have_libpython): Add python-prettyprint source
	and object files.
	* configure: Regenerate.
	* python/python-prettyprint.c: Move "#ifdef HAVE_PYTHON" before
	python headers.
	
2009-05-27  Vladimir Prus  <vladimir@codesourcery.com>
	    Tom Tromey  <tromey@redhat.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* mi/mi-main.c (mi_cmd_list_features): List "python" feature.
	* varobj.h (varobj_set_visualizer): Declare.
	(varobj_get_display_hint): Likewise.
	(varobj_update_result_t) <children_changed, value_installed>: New
	fields.
	* mi/mi-cmds.c (mi_cmds): Add var-set-visualizer.
	* mi/mi-cmds.h (mi_cmd_var_set_visualizer,
	mi_cmd_var_set_child_range): Declare.
	* mi/mi-cmd-var.c (mi_cmd_var_set_visualizer): New function.
	(mi_cmd_var_list_children): Emit display hint.
	(varobj_update_one): Emit display hint.  Handle dynamic children.
	* python/python.c (GdbMethods): Add "default_visualizer".
	* python/python-internal.h (apply_varobj_pretty_printer,
	gdbpy_get_varobj_pretty_printer, gdbpy_get_display_hint):
	Declare.
	(gdbpy_default_visualizer): Likewise.
	* varobj.c: Include python.h, python-internal.h.
	(PyObject): New typedef.
	(struct varobj) <children_requested, pretty_printer>: New fields.
	(varobj_create): Call install_default_visualizer.
	(instantiate_pretty_printer): New function.
	(varobj_set_display_format): Update.
	(varobj_get_display_hint): New function.
	(update_dynamic_varobj_children): New function.
	(varobj_get_num_children): Handle dynamic children.
	(varobj_list_children): Likewise.
	(install_new_value): Likewise.
	(varobj_add_child): New function.
	(install_visualizer): Likewise.
	(install_default_visualizer): Likewise.
	(varobj_set_visualizer): Likewise.
	(varobj_update): Handle dynamic children.
	(create_child): Use create_child_with_value.
	(create_child_with_value): New function.
	(value_get_print_value): Call pretty printer.  Add value_formatter
	argument.
	(c_value_of_variable): Update.
	(varobj_invalidate): Always free all_rootvarobj.
	* python/python-prettyprint.c (apply_varobj_pretty_printer): New
	function.
	(gdbpy_get_varobj_pretty_printer): Likewise.
	(gdbpy_default_visualizer): Likewise.

2009-05-27  Tom Tromey  <tromey@redhat.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>
	    Phil Muldoon  <pmuldoon@redhat.com>
	    Paul Pluzhnikov  <ppluzhnikov@google.com>
	    Vladimir Prus  <vladimir@codesourcery.com>

	* python/python-value.c (value_object_to_value): New function.
	* python/python-internal.h: Include frameobject.h.
	(gdbpy_children_cst, gdbpy_to_string_cst, gdbpy_display_hint_cst):
	Declare.
	(value_object_to_value): Declare.
	* printcmd.c (struct format_data) <raw>: New field.
	(last_format): Default to 0.
	(decode_format): Initialize val.raw.  Handle /r flag.
	(print_command_1): Initialize fmt.raw and opts.raw.
	(output_command): Likewise.
	(x_command): Fix initialization of fmt.format.  Initialize
	fmt.raw.
	(display_command): Initialize fmt.raw.
	(do_one_display): Set opts.raw.
	* python/python.c (gdbpy_to_string_cst, gdbpy_children_cst,
	gdbpy_display_hint_cst): New globals.
	(_initialize_python): Initialize them.  Set gdb.pretty_printers.
	* cp-valprint.c: Include python.h.
	(cp_print_value): Call apply_val_pretty_printer.
	* python/python.h (apply_val_pretty_printer): Declare.
	* stack.c (print_this_frame_argument_p): Remove.
	(print_frame_args): Compute summary flag.  Don't use
	print_this_frame_argument_p.
	* valprint.c: Include python.h.
	(user_print_options): Initialize new fields.
	(scalar_type_p): New function.
	(val_print): Handle 'raw' and 'summary' modes.  Call
	apply_val_pretty_printer.
	(value_print): Handle 'raw' mode.
	* valprint.h (struct value_print_options) <raw, summary>: New
	fields.
	* Makefile.in (SUBDIR_PYTHON_OBS): Add python-prettyprint.o
	(SUBDIR_PYTHON_SRCS): Add python-prettyprint.c.
	(python-prettyprint.o): New target.
	* python/python-prettyprint.c: New file.

2009-05-27  Tom Tromey  <tromey@redhat.com>
	    Paul Pluzhnikov  <ppluzhnikov@google.com>

	* mi/mi-main.c (mi_cmd_data_evaluate_expression): Use
	value_address.
	* cli/cli-dump.c (dump_value_to_file): Use value_address.
	* valprint.c (common_val_print): Likewise.
	* v850-tdep.c (v850_push_dummy_call): Use value_address.
	* tracepoint.c (encode_actions): Use value_address.
	* printcmd.c (print_formatted): Use value_address.
	(x_command): Likewise.
	* p-valprint.c (pascal_object_print_static_field): Use
	value_address.
	* mn10300-tdep.c (mn10300_push_dummy_call): Use value_address.
	* mips-tdep.c (mips_eabi_push_dummy_call): Use value_address.
	* m32r-tdep.c (m32r_push_dummy_call): Use value_address.
	* jv-valprint.c (java_value_print): Use value_address.
	* infcall.c (find_function_addr): Use value_address.
	* gnu-v3-abi.c (gnuv3_rtti_type): Use value_address.
	* gnu-v2-abi.c (gnuv2_value_rtti_type): Use value_address.
	* frv-tdep.c (frv_push_dummy_call): Use value_address.
	* frame.c (frame_register_unwind): Use value_address.
	(frame_unwind_register_value): Likewise.
	* darwin-nat-info.c (info_mach_region_command): Use
	value_address.
	* cp-valprint.c (cp_print_static_field): Use value_address.
	* c-valprint.c (c_value_print): Use value_address.
	* breakpoint.c (update_watchpoint): Use value_address.
	(can_use_hardware_watchpoint): Likewise.
	* ada-valprint.c (ada_val_print_1): Use value_address.
	(ada_value_print): Likewise.
	* ada-tasks.c (read_fat_string_value): Use value_address.
	* jv-lang.c (java_link_class_type): Use set_value_address.
	(java_link_class_type): Likewise.
	(get_java_utf8_name): Use value_address.
	(type_from_class): Likewise.
	(java_link_class_type): Likewise.
	* findvar.c (value_of_register): Use set_value_address.
	(read_var_value): Likewise.
	(read_var_value): Likewise.
	* eval.c (evaluate_subexp_standard): Use set_value_address.
	(evaluate_subexp_standard): Use value_address.
	* dwarf2loc.c (dwarf2_evaluate_loc_desc): Use set_value_address.
	* ada-lang.c (coerce_unspec_val_to_type): Use set_value_address.
	(ada_value_primitive_packed_val): Likewise.
	(ensure_lval): Likewise.
	(thin_data_pntr): Use value_address.
	(desc_bounds): Likewise.
	(ada_value_primitive_packed_val): Likewise.
	(value_assign_to_component): Likewise.
	(ensure_lval): Likewise.
	(make_array_descriptor): Likewise.
	(ada_to_fixed_value): Likewise.
	(unwrap_value): Likewise.
	* value.c (deprecated_value_address_hack): Remove.
	(value_address): New function.
	(value_raw_address): Likewise.
	(set_value_address): Likewise.
	(value_fn_field): Use set_value_address.
	(value_from_contents_and_address): Likewise.
	(value_fn_field): Likewise.
	(allocate_value_lazy): Don't use VALUE_ADDRESS.
	(value_as_address): Use value_address.
	(value_static_field): Likewise.
	* valops.c (search_struct_field): Use set_value_address.
	(value_at): Likewise.
	(value_at_lazy): Likewise.
	(value_repeat): Likewise.
	(value_cast_structs): Use value_address.
	(value_cast): Likewise.
	(value_fetch_lazy): Likewise.
	(value_assign): Likewise.
	(value_repeat): Likewise.
	(address_of_variable): Likewise.
	(value_coerce_array): Likewise.
	(value_coerce_function): Likewise.
	(value_addr): Likewise.
	(search_struct_field): Likewise.
	(search_struct_method): Likewise.
	(find_method_list): Likewise.
	(value_struct_elt_for_reference): Likewise.
	(value_full_object): Likewise.
	* jv-valprint.c (java_value_print): Use set_value_address.
	* value.h (deprecated_value_address_hack): Remove.
	(VALUE_ADDRESS): Remove.
	(value_address): Declare.
	(value_raw_address): Declare.
	(set_value_address): Declare.

2009-05-27  Tom Tromey  <tromey@redhat.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>
	    Phil Muldoon  <pmuldoon@redhat.com>
	    Paul Pluzhnikov  <ppluzhnikov@google.com>

	* python/python.c (_initialize_python): Call
	gdbpy_initialize_types.
	(GdbMethods): Add "lookup_type".
	* python/python-value.c (value_object) <type>: New field.
	(valpy_dealloc): Decref type.
	(valpy_new): Initialize type.
	(valpy_get_type): New function.
	(value_to_value_object): Initialize type.
	(valpy_cast): New function.
	(value_object_getset): Add "type".
	(value_object_methods): Add "cast".
	* python/python-internal.h (type_to_type_object): Declare.
	(type_object_to_type): Likewise.
	(gdbpy_initialize_types): Likewise.
	(gdbpy_lookup_type): Declare.
	* Makefile.in (SUBDIR_PYTHON_OBS): Add python-type.o.
	(SUBDIR_PYTHON_SRCS): Add python-type.c.
	(python-type.o): New target.
	* python/python-type.c: New file.

2009-05-27  Tom Tromey  <tromey@redhat.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>
	    Phil Muldoon  <pmuldoon@redhat.com>

	* python/python.c: Include objfiles.h, observer.h.
	(gdbpy_auto_load): New global.
	(gdbpy_current_objfile): Likewise.
	(GDBPY_AUTO_FILENAME): New define.
	(gdbpy_new_objfile): New function.
	(gdbpy_get_current_objfile): Likewise.
	(gdbpy_objfiles): Likewise.
	(_initialize_python): Add "maint set auto-load".  Call
	gdbpy_initialize_objfile.  Attach objfile observer.
	(GdbMethods): New methods current_objfile, objfiles.
	* python/python-objfile.c: New file.
	* python/python-internal.h (objfile_to_objfile_object): Declare.
	(objfpy_get_printers): Likewise.
	(gdbpy_initialize_objfile): Likewise.
	* Makefile.in (SUBDIR_PYTHON_OBS): Add python-objfile.o.
	(SUBDIR_PYTHON_SRCS): Add python-objfile.c.
	(python-objfile.o): New target.

2009-05-27  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (follow_exec): Clear the stop_requested flag.
	* linux-nat.c (linux_handle_extended_wait) <PTRACE_EVENT_EXEC>:
	Add debug output.

2009-05-27  Aleksandar Ristovski  <aristovski@qnx.com>

	* nto-procfs.c (get_regset): Pass correct pointer.

2009-05-26  Doug Evans  <dje@google.com>

	* dwarf2read.c (follow_die_ref): Add comment.
	(dwarf2_mark_helper): Tweak comment.
	(dwarf2_mark): Move description to its proper place.

2009-05-25  Pierre Muller  <muller@ics.u-strasbg.fr>

	* procfs.c (procfs_wait): Add options parameter.

2009-05-24  Doug Evans  <dje@google.com>

	Global renaming of find_thread_pid to find_thread_ptid.
	* gdbthread.h (find_thread_ptid): Renamed from find_thread_pid.
	* thread.c (find_thread_ptid): Renamed from find_thread_pid.
	All callers updated.

	* infrun.c (follow_fork): Initialize new step_* locals
	to avoid "may be used uninitialized" warnings.

2009-05-24  Pedro Alves  <pedro@codesourcery.com>

	* inflow.c (copy_terminal_info): Deep copy `run_terminal'.

2009-05-24  Pedro Alves  <pedro@codesourcery.com>

	* gdbthread.h (struct thread_info): New `pending_follow' field.
	* thread.c (new_thread): New function.
	(add_thread_silent): Use it.
	* breakpoint.c (internal_breakpoint_number): New global, moved
	from inside...
	(create_internal_breakpoint): ... this.
	(clone_momentary_breakpoint): New.
	* breakpoint.h (clone_momentary_breakpoint): Declare.
	* infrun.c (nullify_last_target_wait_ptid): Move declaration
	higher.
	(pending_follow): Delete.
	(follow_fork): Handle pending follow fork event here.  Moved the
	preserving of thread stepping state here.
	(resume): Don't handle pending follow fork events here.  Only
	install the inferior's terminal modes if we're about to resume it.
	(proceed): Handle possible pending follow fork events here.
	(init_wait_for_inferior): No need to clear pending_follow anymore,
	it's gone.
	(handle_inferior_event): Adjust to per-thread `pending_follow'.
	Call `follow_fork' to handle following the fork.  If the
	follow-fork is cancelled, stop stepping.
	* linux-nat.c (linux_child_follow_fork): Adjust to per-thread
	`pending_follow' events.  Remove code that handled preserving the
	thread stepping state.
	* inf-ptrace.c (inf_ptrace_follow_fork): Ditto.
	* inf-ttrace.c (inf_ttrace_follow_fork): Ditto.

2009-05-24  Pierre Muller  <muller@ics.u-strasbg.fr>

	* symfile.c (add_shared_symbol_files_command): Remove
	prototype and function.
	(_initialize _symfile): Move "add-shared-symbol-files"
	command and "assf" alias.
	* windows-nat.c (_initialize_windows_nat): to here.
	Change "add-shared-symbol-files" to alias.
	
	* config/i386/cygwin.mh: Remove NAT_FILE.
	* config/i386/mingw.mh: Remove NAT_FILE.
	* config/i386/mingw64.mh: Remove NAT_FILE.
	* config/i386/nm-cygwin.h: Remove file.
	* config/i386/nm-cygwin64.h: Remove file.

2009-05-24  Hui Zhu  <teawater@gmail.com>

	* i386-linux-tdep.c (I386_LINUX_RECORD_SIZE_*,
	I386_LINUX_RECORD_IOCTL_*,
	I386_LINUX_RECORD_FCNTL_*) Removed.
	(i386_linux_init_abi): Change size of record from macros to
	numbers.

2009-05-24  Hui Zhu  <teawater@gmail.com>

	* i386-linux-tdep.c (i386_linux_init_abi): Remove size_char.
	* linux-record.c (record_linux_system_call): Ditto.
	* linux-record.h (linux_record_tdep): Ditto.

2009-05-23  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Replace the savestring calls by xstrdup calls where possible.
	* breakpoint.c (condition_command, set_raw_breakpoint)
	(create_catchpoint, update_breakpoint_locations): Replace the
	savestring calls by xstrdup calls where possible.
	* buildsym.c (start_subfile, patch_subfile_names, record_debugformat)
	(record_producer): Likewise.
	* coffread.c (coff_start_symtab, complete_symtab): Likewise.
	* corefile.c (set_gnutarget): Likewise.
	* dbxread.c (add_new_header_file): Likewise.
	* demangle.c (set_demangling_command, set_demangling_style): Likewise.
	* event-top.c (push_prompt, pop_prompt, command_line_handler)
	(set_async_prompt): Likewise.
	* infcmd.c (set_inferior_io_terminal, attach_command_post_wait):
	Likewise.
	* language.c (set_language_command, _initialize_language): Likewise.
	* linespec.c (decode_line_2): Likewise.
	* rs6000-nat.c (add_vmap): Likewise.
	* top.c (set_prompt, init_history, init_main): Likewise.
	* tracepoint.c (stringify_collection_list): Likewise.
	* varobj.c (varobj_create): Remove variable expr_len.  Replace the 
	savestring calls by xstrdup calls where possible.
	(value_of_root, c_name_of_variable, c_describe_child): Replace the
	savestring calls by xstrdup calls where possible.
	* xcoffread.c (complete_symtab): Likewise.
	* cli/cli-script.c (build_command_line, define_command): Likewise.
	* cli/cli-setshow.c (do_setshow_command): Likewise.

2009-05-23  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Remove already unreachable code.
	* varobj.c (varobj_get_handle): Fix comment when error is called.
	All callers updated.

2009-05-23  Eli Zaretskii  <eliz@gnu.org>

	* README (`configure' options): Document GDB-specific options to
	`configure'.

	* symtab.c (skip_prologue_using_lineinfo): New function.
	(find_function_start_sal): Use it to get to the first line of
	function's body that has an entry in the lineinfo table.

	* symmisc.c (dump_symtab): Switch the current language to
	the language of the symtab we are dumping only if the symtab's
	language is neither language_auto nor language_unknown.

	* coffread.c (coff_symtab_read): Set language_minimal as the
	language for the "_globals_" pseudo-file.
	(process_coff_symbol): Set the symbol's language to the language
	of current_subfile.

2009-05-22  Pedro Alves  <pedro@codesourcery.com>

	* target.h (struct section_table): Rename to ...
	(struct target_section): ... this.
	* exec.c: Adjust all references.
	* exec.h: Adjust all references.
	* nto-tdep.c: Adjust all references.
	* nto-tdep.h: Adjust all references.
	* ppc-linux-tdep.c: Adjust all references.
	* rs6000-nat.c: Adjust all references.
	* s390-tdep.c: Adjust all references.
	* solib-darwin.c: Adjust all references.
	* solib-frv.c: Adjust all references.
	* solib-irix.c: Adjust all references.
	* solib-null.c: Adjust all references.
	* solib-osf.c: Adjust all references.
	* solib-pa64.c: Adjust all references.
	* solib-som.c: Adjust all references.
	* solib-sunos.c: Adjust all references.
	* solib-svr4.c: Adjust all references.
	* solib-target.c: Adjust all references.
	* solib.c: Adjust all references.
	* solist.h: Adjust all references.
	* symfile.c: Adjust all references.
	* symfile.h: Adjust all references.
	* target.c: Adjust all references.

2009-05-22  Hui Zhu  <teawater@gmail.com>

	Add sys_fcntl argument interfaces to linux_record_tdep.

	* linux-record.h (linux_record_tdep): Add fcntl_F_GETLK,
	fcntl_F_GETLK64, fcntl_F_SETLK64 and fcntl_F_SETLKW64 to be
	interfaces.
	* i386-linux-tdep.c (I386_LINUX_RECORD_FCNTL_F_GETLK,
	I386_LINUX_RECORD_FCNTL_F_GETLK64,
	I386_LINUX_RECORD_FCNTL_F_SETLK64,
	I386_LINUX_RECORD_FCNTL_F_SETLKW64): New macros. The values
	of I386 Linux sys_fcntl arguments.
	(i386_linux_init_abi): Set macros values to linux_record_tdep.
	* linux-record.c (record_linux_system_call): Change to use
	the interface in linux_record_tdep in sys_fcntl and
	sys_fcntl64.

	* linux-record.c (record_linux_system_call): Fix the process
	record build error about type in CYGWIN.

2009-05-22  Pedro Alves  <pedro@codesourcery.com>

	* inflow.c (kill_command): Delete left over static declaration.

2009-05-22  Pedro Alves  <pedro@codesourcery.com>

	* bfd-target.c: Don't include gdb_assert.h or gdb_string.h.
	Include exec.h.
	(struct section_closure): Delete.
	(add_to_section_table): Delete.
	(build_target_sections_from_bfd): Delete.
	(target_bfd_xfer_partial): Use section_table_xfer_memory_partial.
	(target_bfd_reopen): Use build_section_table.
	* exec.c (xfer_memory): Move most code except for overlay
	debugging support from here...
	(section_table_xfer_memory): ... to this new function.
	(section_table_xfer_memory_partial): New.
	* exec.h (section_table_xfer_memory_partial): Declare.
	* bfd-target.h (build_target_sections_from_bfd): Delete
	declaration.

2009-05-22  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (compare_sections_command): Don't declare exec_bfd.
	* tracepoint.c: Include "gdbcore.h".
	(remote_set_transparent_ranges): Don't declare exec_bfd.

2009-05-21  Pedro Alves  <pedro@codesourcery.com>

	* aix-thread.c (init_aix_thread_ops): Whitespace.

2009-05-21  Pedro Alves  <pedro@codesourcery.com>

	* dec-thread.c (dec_thread_wait): Add options parameter.  Use it
	to call the to_wait method in the target beneath.
	* remote-m32r-sdi.c (m32r_wait): Add options parameter.

2009-05-21  Joel Brobecker  <brobecker@adacore.com>

	* aix-thread.c (aix_thread_wait): Add options parameter.  Use it
	to call the to_wait method in the target_beneath.

2009-05-21  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (linux_nat_terminal_inferior)
	(linux_nat_terminal_ours): Don't check sync_execution.
	* remote.c (remote_terminal_inferior, remote_terminal_ours):
	Don't check sync_execution.  Update comments.
	* target.c (target_terminal_inferior): New.
	* target.h (target_terminal_inferior): Delete macro, and declare
	as function.
	* event-top.c (async_disable_stdin): Make idempotent.  Don't give
	the target the terminal here.
	* inflow.c (terminal_ours_1): Don't return early without setting
	`terminal_is_ours'.

2009-05-21  Pedro Alves  <pedro@codesourcery.com>

	* target.h (TARGET_WNOHANG): New.
	* target.c (target_wait): Add `options' argument.  Adjust.
	(struct target_ops) <to_wait>: Add `options' argument.
	(target_wait): Add `options' argument.
	* infrun.c (wait_for_inferior): Pass 0 as options to
	target_wait (blocking wait).
	(fetch_inferior_event): Pass TARGET_WNOHANG as options to
	target_wait.
	* fork-child.c (startup_inferior): Pass 0 as options to
	target_wait (blocking wait).
	* linux-nat.c (linux_nat_create_inferior): Remove async masking.
	(linux_nat_wait_1): Add `target_options' argument.  Use it instead
	of checking on target_can_async_p.
	(linux_nat_wait): Add `target_options' argument.  Adjust.
	* remote.c (remote_wait_ns): Add `options' argument.  Adjust to
	check on TARGET_WNOWAIT instead of checking on remote_is_async_p.
	(remote_wait_as): Add `options' argument.  Adjust to check on
	TARGET_WNOWAIT instead of checking on remote_is_async_p.  If doing
	a blocking wait, keep waiting until an interesting event comes
	out.
	(remote_wait): Add `options' argument.  Don't loop here if the
	target is in async mode, and a blocking wait has been requested.

	* top.c (deprecated_target_wait_hook): Add `options' argument.
	* linux-thread-db.c (thread_db_wait): Add `options' argument, and
	pass it down to the layer beneath.
	* inf-ptrace.c (inf_ptrace_wait): Add `options' argument.
	* record.c (record_beneath_to_wait): Add `options' argument.
	(record_wait): Add `options' argument, and pass it down to the
	layer beneath.
	* bsd-uthread.c (bsd_uthread_wait): Add `options' argument.
	* darwin-nat.c (darwin_wait): Likewise.
	* defs.h (deprecated_target_wait_hook): Likewise.
	* gnu-nat.c (gnu_wait): Add `options' argument.
	* go32-nat.c (go32_wait): Likewise.
	* hpux-thread.c (hpux_thread_wait): Add `options' argument, and
	pass it down to the layer beneath.
	* inf-ttrace.c (inf_ttrace_wait): Add `options' argument.
	* monitor.c (monitor_wait): Likewise.
	* nto-procfs.c (procfs_wait): Likewise.
	* remote-mips.c (mips_wait): Add `options' argument.
	* remote-sim.c (gdbsim_wait): Likewise.
	* rs6000-nat.c (rs6000_wait): Add `options' argument.
	* sol-thread.c (sol_thread_wait): Add `options' argument, and pass
	it down to the layer beneath.
	* spu-linux-nat.c (spu_child_wait): Add `options' argument.
	* windows-nat.c (windows_wait): Likewise.
	* tui/tui-hooks.c (tui_target_wait_hook): Likewise.  Adjust.

2009-05-21  Pedro Alves  <pedro@codesourcery.com>

	* mi/mi-interp.c (mi_on_resume): Account for whole process
	resumes.

2009-05-21  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* m2-exp.y (MAX_FUNC): Fix trailing UNOP_MAX.

2009-05-21  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2read.c (set_cu_language): Recognize also DW_LANG_C99.

2009-05-21  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix parsing DW_AT_const_value using DW_FORM_string.
	* dwarf2read.c (dwarf2_const_value <DW_FORM_string>): New.

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

	* aix-thread.c (giter_count): Do not count the main thread.
	(giter_accum): Do not include the main thread.

2009-05-19  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Remove the PROT parameter from openp.
	* source.c (openp): Remove the parameter PROT.  Assertion check MODE.
	defs.h (openp): Update the prototype.
	Update all the openp callers.

2009-05-19  Pedro Alves  <pedro@codesourcery.com>

	* inflow.c (kill_command): Moved to infcmd.c.
	(_initialize_inflow): Don't add the "kill" command or clear
	inferior_ptid here.
	* infcmd.c (kill_command): Moved here from inflow.c.
	(_initialize_infcmd): Add the "kill" command here.

2009-05-19  Pedro Alves  <pedro@codesourcery.com>

	* fork-child.c: Don't include frame.h.  Include terminal.h.
	(fork_inferior): Call new_tty_postfork after forking adn adding
	the child to the inferior list.
	* inferior.h (new_tty_prefork, gdb_has_a_terminal): Don't declare
	here.
	* inflow.c (struct terminal_info): Remove const qualifier from
	`run_terminal' field.
	(inferior_thisrun_terminal): Tweak comment.
	(inflow_inferior_exit): Release the `run_terminal' field.
	(copy_terminal_info): New function.
	(new_tty_postfork): New function.
	* terminal.h (new_tty_prefork, new_tty, new_tty_postfork,
	(copy_terminal_info, gdb_has_a_terminal, gdb_setpgid): Declare.
	* inf-ptrace.c: Include terminal.h.
	(inf_ptrace_follow_fork): Copy the parent's terminal info to the
	child.
	* linux-nat.c: Include terminal.h.
	(linux_child_follow_fork): Copy the parent's terminal info to the
	child.
	* inf-ttrace.c: Include terminal.h.
	(inf_ttrace_follow_fork): Copy the parent's terminal info to the
	child.

2009-05-19  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (insert_breakpoints, breakpoint_init_inferior)
	(update_global_location_list): Use gdbarch_has_global_breakpoints
	instead of gdbarch_has_global_solist and
	target_supports_multi_process.
	* dicos-tdep.c (dicos_init_abi): Set
	gdbarch_has_global_breakpoints.
	* gdbarch.sh (has_global_solist): Update comment.
	(has_global_breakpoints): New.
	* remote.c (remote_start_remote): Use
	gdbarch_has_global_breakpoints instead of
	gdbarch_has_global_solist.
	* target.c (target_detach): Use gdbarch_has_global_breakpoints
	instead of gdbarch_has_global_solist.
	* infcmd.c (attach_command): Use gdbarch_has_global_solist instead
	of target_supports_multi_process.

2009-05-18  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* objc-lang.c (find_methods): Plug a small memory leak.

2009-05-18  Pedro Alves  <pedro@codesourcery.com>

	* solib-svr4.c: Include observer.h.
	(debug_base, debug_loader_offset_p, debug_loader_offset)
	(debug_loader_name, main_lm_addr): Move these globals...
	(struct svr4_info): ... into this new structure.
	(svr4_info_p): New typedef.
	(svr4_info): New global.
	(get_svr4_info, remove_svr4_info, solib_svr4_inferior_exit): New
	functions.
	(locate_base, solib_svr4_r_map, solib_svr4_r_brk)
	(solib_svr4_r_ldsomap): Add svr4_info argument.  Adjust to
	per-inferior svr4.
	(open_symbol_file_object): Adjust to per-inferior svr4.
	(svr4_default_sos, svr4_current_sos, svr4_fetch_objfile_link_map):
	Ditto.
	(enable_break): Add svr4_info argument.  Adjust to per-inferior
	svr4.
	(enable_break, svr4_solib_create_inferior_hook, svr4_clear_solib):
	Adjust to per-inferior svr4.
	(_initialize_svr4_solib): Install the solib_svr4_inferior_exit
	observer.

2009-05-18  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.h (linux_proc_get_tgid): Declare.
	* linux-nat.c (linux_proc_get_tgid): New.
	* linux-thread-db.c (struct thread_db_info): New field
	`need_stale_parent_threads_check'.
	(add_thread_db_info): Set it.
	(find_new_threads_callback): Ignore stale fork parent threads.
	(thread_db_resume): New.
	(init_thread_db_ops): Install thread_db_resume.

2009-05-18  Pedro Alves  <pedro@codesourcery.com>

	* fork-child.c (fork_inferior): Only reset the thread list if this
	is the first inferior.
	(startup_inferior): If the target support multi-process, tell it
	to resume only the new process.
	* linux-nat.c (num_lwps): Delete global.
	(purge_lwp_list): New function.
	(num_lwps): New function.
	(add_lwp, delete_lwp): Adjust.
	(ptid_match): New.
	(iterate_over_lwps): Add filter argument.  Handle it.
	(linux_nat_attach): Remove FIXME note.
	(linux_nat_detach): Adjust to iterate over threads of the inferior
	we're detaching from.  Adjust to num_lwps being a function.  Don't
	assume the head of the lwp list is the main thread of the process
	we're detaching from.  Don't destroy the LWP list.
	(resume_callback): Add debug output.
	(linux_nat_resume): Handle resuming a single inferior.  Allow a
	wildcard resume in non-stop mode.
	(linux_handle_extended_wait): Don't assume inferior_ptid is the
	correct inferior of the parent LWP.
	(status_callback): Also check lp->waitstatus.
	(select_event_lwp): Add new filter parameter.  Handle it.
	(linux_nat_filter_event): Adjust to num_lwps being a function.
	(linux_nat_wait_1): When adding the first lwp of the inferior, use
	an is_lwp check instead of checking for the number of lwps.
	(linux_nat_wait_1): Handle waiting for a specific tgid.  Handle
	pending process exit statuses.
	(linux_nat_mourn_inferior): Don't destroy all the LWP info.
	Instead delete LWPs of the inferior that we're mourning.  Don't
	unregister from the event loop here.
	(linux_nat_pid_to_str): Use `num_lwps'.
	(linux_nat_make_corefile_notes): Adjust to walk over lwps of a
	single inferior.
	(linux_nat_is_async_p): Check if async was masked out.
	(linux_multi_process): New global.
	(linux_nat_supports_multi_process): New.
	(linux_nat_stop_lwp): Remove LWP filtering.  It is done by the
	caller.
	(linux_nat_stop): Adjust to make iterate_over_lwps itself do the
	LWP filtering.
	(linux_nat_close): New.
	(linux_nat_add_target): Register linux_nat_close and
	linux_nat_supports_multi_process.
	* linux-nat.h (iterate_over_lwps): Add filter argument.
	* linux-thread-db.c (thread_db_handle): Delete.
	(proc_handle, thread_agent, td_init_p, td_ta_new_p)
	(td_ta_map_id2thr_p, td_ta_map_lwp2thr_p, td_ta_thr_iter_p)
	(td_ta_event_addr_p, td_ta_set_event_p, td_ta_event_getmsg_p)
	(td_thr_validate_p, td_thr_get_info_p, td_thr_event_enable_p)
	(td_thr_tls_get_addr_p, td_create_bp_addr, td_death_bp_addr): No
	longer globals, moved to...
	(struct thread_db_info): ... this new structure.
	(thread_db_list): New.
	(add_thread_db_info, get_thread_db_info, delete_thread_db_info):
	New.
	(have_threads_callback): Filter out threads of all inferiors but
	the one specified by the ARGS argument.
	(have_threads): Add ptid argument specifying the inferior we're
	interested in.  Handle it.
	(struct thread_get_info_inout): New.
	(thread_get_info_callback, thread_from_lwp): Adjust to use it.
	(thread_db_attach_lwp): Check that inferior of the passed in
	thread is using thread-db.  Adjust.
	(enable_thread_event): Remove thread_agent parameter.  Instead,
	get it from the per-inferior thread-db info.
	(dladdr_to_soname): Move higher up.
	(enable_thread_event_reporting): Adjust to use per-inferior
	thread-db info.
	(try_thread_db_load_1): Replace `handle' parameter by a
	thread_db_info parameter.  Adjust to use per-inferior thread-db
	info.
	(try_thread_db_load): Adjust to use per-inferior thread-db info.
	(thread_db_load, disable_thread_event_reporting): Ditto.
	(check_for_thread_db): Remove conditional reporting of which
	libthread_db is in use.
	(thread_db_new_objfile): Add comment about inferior_ptid.
	(attach_thread): Adjust to use per-inferior thread-db info.
	(thread_db_detach): Adjust to use per-inferior thread-db info.
	Remove thread event breakpoints of the current inferior.  Only
	unpush the thread-db target if there are no more processes using
	it.
	(check_event): Adjust to use per-inferior thread-db info.
	(thread_db_wait): Adjust to use per-inferior thread-db info.  Only
	unpush the thread-db target if there are no more processes using
	it.
	(thread_db_mourn_inferior): Adjust to use per-inferior thread-db
	info.  Mark breakpoints of the current inferior out before
	deleting them.  Only unpush the thread-db target if there are no
	more processes using it.
	(find_new_threads_callback): Adjust to use per-inferior thread_db
	info.
	(thread_db_find_new_threads_1): Add new ptid argument.  Adjust to
	use per-inferior thread-db info.
	(thread_db_find_new_threads): Adjust to use per-inferior thread-db
	info.
	(thread_db_get_thread_local_address): Adjust.
	(thread_db_get_ada_task_ptid): Adjust.
	* inf-ptrace.c (inf_ptrace_mourn_inferior): Only unpush the target
	if there no more processes left to debug.
	* thread.c (set_running, set_executing): Handle resuming all
	threads of a single inferior.
	* mi/mi-interp.c (mi_output_running_pid): New.
	(mi_inferior_count): New.
	(mi_on_resume): For backwards compatibility, if resuming all
	threads of an inferior, and there is only one inferior, output
	"all".

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

	* ada-lang.c (ada_find_any_type): Move check for primitive types ...
	(to_fixed_range_type): ... to here.

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

	* ada-lang.c (desc_data_type): Remove, replace by ...
	(desc_data_target_type): ... this.
	(thin_data_pntr): Use desc_data_target_type instead of desc_data_type.
	(ada_is_array_descriptor_type): Likewise.
	(ada_type_of_array): Likewise.
	(ada_coerce_to_simple_array_type): Likewise.
	(ada_array_element_type): Likewise.

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

	* ada-valprint.c (ada_val_print_1): Use val_print_string to print
	result of ada_vax_float_print_function inferior call.

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

	* ada-lang.c (ada_coerce_to_simple_array_type): Reimplement to
	avoid creating a dummy value.

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

	* p-valprint.c (pascal_val_print): Use extract_typed_address
	to extract reference value.

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

	* doublest.c (NAN): Remove unused define.
	(extract_floating_by_length, deprecated_extract_floating): Remove.
	(store_floating_by_length, deprecated_store_floating): Remove.
	(extract_typed_floating): Do not call extract_floating_by_length.
	(store_typed_floating): Do not call store_floating_by_length.
	(convert_typed_floating): Remove redundant assertions.
	* doublest.h (deprecated_extract_floating): Remove.
	(deprecated_store_floating): Remove.
	* sh64-tdep.c (sh64_register_convert_to_raw): Call
	extract_typed_floating instead of deprecated_extract_floating.

2009-05-18  Jon Beniston <jon@beniston.com>
        
        * MAINTAINERS: Add lm32 target.        
        * Makefile.in: Add lm32 dependencies.        
        * NEWS: Indicate lm32 is a new target.
        * configure.tgt: Add lm32 targets.
        * lm32-tdep.c: New file.

2009-05-18  Pedro Alves  <pedro@codesourcery.com>

	* corelow.c (core_open): Flush the register cache before doing
	anything with registers.

2009-05-18  Pedro Alves  <pedro@codesourcery.com>

	* inflow.h (our_process_group): Remove declaration.
	(inferior_process_group): Delete global variable declaration.
	(inferior_process_group): New function declaration.
	* inflow.c: Include observer.h.
	(inferior_ttystate, our_ttystate, tflags_inferior, tflags_ours):
	Delete.
	(struct terminal_info): New struct.
	(our_terminal_info): New global.
	(inferior_process_group): New function.
	(inferior_thisrun_terminal): Extend description comment.
	(gdb_has_a_terminal): Adjust to write to our_terminal_info fields
	instead of globals.
	(terminal_init_inferior_with_pgrp): Adjust to per-inferior
	terminal settings.
	(terminal_inferior): Ditto.
	(terminal_ours_1): Ditto.
	(inflow_new_inferior, inflow_inferior_exit): New functions.
	(child_terminal_info): Adjust to per-inferior terminal settings.
	(osig_set): New global.
	(set_sigint_trap): Adjust to per-inferior terminal settings.  Set
	or clear `osig_set' accordingly.
	(clear_sigint_trap): Check `osig_set' to decide wheater to restore
	SIGINT handler, instead of checking the current inferior (which
	may be none).
	(_initialize_inflow): Attach inflow_new_inferior and
	inflow_inferior_exit to the "new_inferior" and "inferior_exit"
	notifications, respectively.
	* inferior.h (struct terminal_info): Forward declare.
	(struct inferior): Add `terminal_info' field.
	* inferior.c (delete_inferior_1): Notify the inferior_exit
	observers before removing the inferior from the lists and deleting
	it.
	* inf-ptrace.c (inf_ptrace_stop): `inferior_process_group' is now
	a function instead of a variable.  Adjust.
	* procfs.c (procfs_stop): Ditto.

2009-05-17  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (handle_inferior_event): When handling a
	TARGET_WAITKIND_FORKED, detach breakpoints from the fork child
	immediatelly.
	* linux-nat.c (linux_child_follow_fork): Only detach breakpoints
	from the child if vforking.
	* inf-ptrace.c (inf_ptrace_follow_fork): No need to detach
	breakpoints from the child here.

2009-05-17  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (pending_follow): Remove execd_pathname member.
	(resume): No longer handle TARGET_WAITKIND_EXECD pending follow.
	(handle_inferior_event): When handling a TARGET_WAITKIND_EXECD
	event, don't copy `execd_pathname' to pending_follow, use the
	event copy instead.  Release `execd_pathname' once done with
	handling the event.

	* infrun.c (pending_follow): Remove mention of exec events.

2009-05-17  Hui Zhu  <teawater@gmail.com>

	* i386-tdep.c (i386_process_record): Make it extern.
	(i386_gdbarch_init): Don't call set_gdbarch_process_record
	here.
	* i386-tdep.h (i386_process_record): Declare.
	* i386-linux-tdep.c (i386_linux_init_abi): Call
	set_gdbarch_process_record.

2009-05-17  Vladimir Prus  <vladimir@codesourcery.com>

	Always report varobj as changed when in_scope attribute changes.

	* varobj.c (install_new_value): If non-NULL-ness of value
	changed, return 1.

2009-05-15  Paul Pluzhnikov  <ppluzhnikov@google.com>
	
	* NEWS: Mention set/show libthread-db-search-path.
	* gdb_thread_db.h (LIBTHREAD_DB_SEARCH_PATH): New define.
	(LIBTHREAD_DB_SO): Moved from linux-thread-db.c
	* linux-thread-db.c (libthread_db_search_path): New setting.
	(thread_db_handle): New variable (replaces using_thread_db).
	(try_thread_db_load_1): New function.
	(try_thread_db_load, thread_db_load_search): Likewise.
	(dladdr_to_soname): Likewise.
	(thread_db_load): Iterate over possibly multiple libthread_db's.
	(check_for_thread_db): Attempt to load new libthread_db.
	(thread_db_detach, thread_db_wait): Unload libthread_db.
	(thread_db_mourn_inferior): Likewise.
	(_initialize_thread_db): Add new libthread-db-search-path option.
	Defer loading of libthread_db to check_for_thread_db.
	* solib.c (libpthread_name_p): New function.
	(libpthread_solib_p): Call it.
	* solib.h (libpthread_name_p): New prototype.
	
2009-05-15  Pierre Muller  <muller@ics.u-strasbg.fr>

	* MAINTAINERS: Update my email address.
	
2009-05-14  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* breakpoint.h: Add breakpoint_re_set_objfile prototype.
	* breakpoint.c (create_overlay_event_breakpoint): Renamed
	from create_overlay_event_breakpoint_1, old
	create_overlay_event_breakpoint deleted.
	(breakpoint_re_set_objfile): Don't rescan all objfiles
	unnecessarily.
	(breakpoint_re_set): New function.
	* symfile.c (new_symfile_objfile): Call breakpoint_re_set_objfile
	instead of breakpoint_re_set.
	* objfiles.c (objfile_relocate): Likewise.
	
2009-05-14  Joel Brobecker  <brobecker@adacore.com>

	* gdbarch.sh: Add comment documenting the target_gdbarch global.
	gdbarch.h does NOT need to be regenerated as the corresponding
	change has already been made in a previous commit.

2009-05-14  Pierre Muller  <muller@ics.u-strasbg.fr>

	Remove all i386 debug register low level macros in config nm files.
	(I386_DR_LOW_SET_ADDR, I386_DR_LOW_RESET_ADDR): Remove.
	(I386_DR_LOW_GET_STATUS, I386_DR_LOW_SET_CONTROL): Remove.
	(I386_USE_GENERIC_WATCHPOIINTS): Remove.

	* i386-nat.h: New file (adapted from config/i386/nm-i386.h).
	(struct i386_dr_low_type): New type.
	(i386_dr_low): New global variable.
	* i386-nat.c (TARGET_HAS_DR_LEN_8): Update macro.
	(i386_insert_aligned_watchpoint): Replace i386 dr low macros by
	i386_dr_low struct variable fields.
	(i386_remove_aligned_watchpoint): Likewise.
	(i386_stopped_data_address): Likewise.
	(i386_stopped_by_hwbp): Likewise.
	(show_debug_regs_command_added): New static variable.
	(add_show_debug_regs_command): New static function.
	(i386_use_watchpoints): Call add_show_debug_regs_command if not done.
	(i386_set_debug_register_length): New function.
	(_initialize_i386_nat): Delete.
	
	* amd64-linux-nat.c: Include "i386-nat.h".
	(amd64_linux_dr_set_control):  Change to static.
	(amd64_linux_dr_get_status): Change to static.
	(amd64_linux_dr_set_addr,amd64_linux_dr_reset_addr): Likewise.
	(_initialize_amd64_linux_nat): Set i386_dr_low variable fields.
	
	* go32-nat.c: Include "i386-nat.h".
	(go32_set_addr): Change to static.
	(go32_set_dr7): Change to static. Change arg type to unisgned long.
	(go32_get_dr6): Change to static. Change return type to unisnged long.
	(init_go32_ops):  Set i386_dr_low variable fields.
	* i386-linux-nat.c: Include "i386-nat.h".
	(i386_linux_dr_set_control, i386_linux_dr_get_status): Change to static.
	(i386_linux_dr_set_addr, i386_linux_dr_reset_addr): Idem.
	(_initialize_i386_linux_nat):  Set i386_dr_low variable fields.
	* i386bsd-nat.h: Declare functions used for
	i386_dr_low fields in i386fbsd-nat.c.
	* i386fbsd-nat.c: Include "i386-nat.h".
	(_initialize_i386fbsd_nat): Set i386_dr_low variable fields.
	* windows-nat.c: Include "i386-nat.h".
	(cygwin_set_dr, cygwin_get_dr6, cygwin_set_dr7): Add prototypes.
	Change to static.
	(cygwin_get_dr6): Change return type to unisnged long.
	(cygwin_set_dr7): Change arg type to unisgned long.
	(init_windows_ops): Set i386_dr_low function fields.

	* amd64-windows-nat.c (_initialize_amd64_windows_nat): Call 
	i386_set_debug_register_length.
	* i386-windows-nat.c (_initialize_i386_windows_nat): Likewise.

	* config/i386/nm-cygwin.h: Remove all I386_* macros.
	* config/i386/nm-cygwin64.h: Likewise.
	* config/i386/nm-fbsd.h: Likewise.
	* config/i386/nm-linux.h: Likewise.
	* config/i386/nm-i386.h: Remove completely.
	* config/i386/nm-go32.h: Remove completely.
	* config/i386/nm-linux64.h: Remove completely.
	* config/i386/go32.mh (NAT_FILE): Remove entry.
	* config/i386/linux64.h (NAT_FILE): Change to config/nm-linux.h.

2009-05-14  Jon Beniston  <jon@beniston.com>

	* MAINTAINERS: Add Jon Beniston to write after approval list.

2009-05-13  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* objc-lang.c (objc_objfile_data): New variable.
	(find_methods): Skip objfiles without Obj-C methods.
	(_initialize_objc_lang): New function.

2009-05-13  Joel Brobecker  <brobecker@adacore.com>

	* c-lang.c (print_wchar): Remove unnecessary cast.

2009-05-12  Jim Blandy  <jimb@red-bean.com>

	* MAINTAINERS: Remove self as m32c target maintainer.

2009-05-12  Pedro Alves  <pedro@codesourcery.com>

	* cli/cli-decode.c (deprecated_add_set_cmd): Delete.
	* command.h (deprecated_add_set_cmd): Delete declaration.
	* gnu-nat.c (_initialize_gnu_nat): Replace 'maint gnu-debug' with
	'set debug gnu-nat' and 'show debug gnu-nat'.
	* i386-nat.c (_initialize_i386_nat): Replace 'maint
	show-debug-registers' with 'maint set show-debug-registers' and
	'maint show show-debug-registers'.
	* mips-linux-nat.c (_initialize_mips_linux_nat): Replace 'maint
	show-debug-registers' with 'maint set show-debug-registers' and
	'maint show show-debug-registers'.

2009-05-12  Joel Brobecker <brobecker@adacore.com>

	* c-lang.c (print_wchar): Convert w into a gdb_wchar_t before
	pushing it on the output obstack.

2009-05-11  Joel Brobecker <brobecker@adacore.com>

	Fix internal error on breaking at a multi-locations caller source line.
	* breakpoint.c (parse_breakpoint_sals): Set EXPLICIT_PC for the `break'
	command with no parameters.

2009-05-11  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (enum sigchld_state): Delete.
	(linux_nat_async_events_state): Delete.
	(struct waitpid_result): Delete.
	(waitpid_queue): Delete.
	(queued_waitpid_1): Delete.
	(async_file_flush): New.
	(queued_waitpid, push_waitpid): Delete.
	(async_file_mark): New.
	(drain_queued_events): Delete.
	(my_waitpid): Remove locally queued events handling.
	(linux_test_for_tracefork): Upjust.
	(linux_child_follow_fork): Ditto.
	(sync_sigchld_action): Delete.
	(blocked_mask): Reinstate.
	(async_sigchld_action): Rename to...
	(sigchld_action): ... this.
	(block_child_signals): New.
	(restore_child_signals_mask): New.
	(lin_lwp_attach_lwp): Adjust.
	(linux_nat_create_inferior): Ditto.
	(linux_nat_attach): Also use lp->status in async mode.
	(get_pending_status): Don't use queued_waitpid.
	(linux_nat_detach): Don't drain locally queued events.
	(linux_nat_resume): Allow pending wait statuses stored lp->status
	in async mode.  If returning early due to a pending event,
	re-register the event source.
	(stop_wait_callback): Allow pending wait statuses stored
	lp->status in async mode.
	(pipe_to_local_event_queue, local_event_queue_to_pipe): Delete.
	(linux_nat_wait): Rename to ...
	(linux_nat_wait_1): ... this.  Allow pending wait statuses stored
	lp->status in async mode.  Always add WNOHANG to the waitpid
	options in async mode.
	(linux_nat_wait): New.
	(kill_callback): Don't drain locally queued events.
	(sigchld_handler): Rewrite.
	(linux_nat_is_async_p, linux_nat_can_async_p): Fix comments to
	refer to "set target-async".
	(linux_nat_async_mask): If in non-stop, and re-enabling async
	mode, re-register the target event source in the event loop.
	(linux_nat_event_pipe_pop, linux_nat_event_pipe_push)
	(get_pending_events, async_sigchld_handler)
	(linux_nat_async_events): Delete.
	(handle_target_event): New.
	(linux_nat_async_file_handler): Delete.
	(linux_async_pipe): New.
	(linux_nat_async): Only re-register in the event loop if not
	registered yet.  Always notify the event-loop once if enabling the
	event source.
	(linux_nat_stop_lwp): Rewrite to handle pending events stored in
	lp->status, not in the locally queued event list.
	(linux_nat_stop): Don't mask out async event handling.
	(linux_nat_setup_async): Delete.
	(_initialize_linux_nat): Adjust.
	(lin_thread_get_thread_signals): blocked_mask is global again.
	Adjust.

2009-05-11  Pierre Muller  <muller@ics.u-strasbg.fr>

	Unify target macros.

	* target.h (STOPPED_BY_WATCHPOINT): Delete, replaced by ...
	(target_stoppped_by_watchpoint): New macro.
	(HAVE_STEPPABLE_WATCHPOINT): Delete, replaced by ...
	(target_have_steppable_watchpoint): New macro.
	(HAVE_CONTINUABLE_WATCHPOINT): Delete, replace by ...
	(target_have_continuable_watchpoint): New macro.
	(TARGET_CAN_USE_HARDWARE_WATCHPOINT):Delete, replaced by ...
	(target_can_use_hardware_watchpoint): New macro.
	(TARGET_REGION_OK_FOR_HW_WATCHPOINT):Delete, replaced by ...
	(target_region_ok_for_hw_watchpoint): New macro.

	* breakpoint.c (update_watchpoint): Use new macros.
	(bpstat_alloc): Likewise.
	(create_breakpoint): Likewise.
	(watch_command_1): Likewise.
	(can_use_hardware_watchpoint): Likewise.
	(do_enable_breakpoint): Likewise.
	* infrun.c (handle_inferior_event): Adapt to new macros.
	* mips-tdep.c (mips_gdbarch_init): Update comments.
	* procfs.c (procfs_set_watchpoint): Update comment.
	(procfs_insert_watchpoint): Adapt to new macros.
	* remote-m32r-sdi.c (m32r_stop):
	* remote-mips.c (mips_remove_breakpoint):
	* target.c (debug_to_region_ok_for_hw_watchpoint): Update to new macros.
	(debug_to_stopped_by_watchpoint): Likewise.


2009-05-10  Pierre Muller  <muller@ics.u-strasbg.fr>

	* src/gdb/target.h: Remove all tests for already defined
	macros. All macros defined here should not be set in config
	headers anymore.

2009-05-08  Sergio Durigan Junior <sergiodj@linux.vnet.ibm.com>

	* ppc-linux-nat.c (have_ptrace_getsetregs): New variable.
	(have_ptrace_getsetfpregs): Likewise.
	fetch_all_gp_regs): New function.
	(fetch_gp_regs): New function.
	(fetch_all_fp_regs): Likewise.
	(fetch_fp_regs): New function.
	(fetch_ppc_registers): Using the new methods to fetch general-
	purpose and floating-pointer registers.
	(store_all_gp_regs): New function.
	(store_gp_regs): Likewise.
	(store_all_fp_regs): New function.
	(store_fp_regs): Likewise.
	(store_ppc_registers): Using the new methods to store general-
	purpose and floating-pointer registers.

2009-05-08  Doug Evans  <dje@google.com>

	* linux-nat.c (linux_xfer_siginfo): Delete unused locals lp, n.

2009-05-07  Sergio Durigan Junior  <sergiodj@linux.vnet.ibm.com>

	* MAINTAINERS (Write After Approval): Add self.

2009-05-07  Joel Brobecker  <brobecker@adacore.com>

	* gdbarch.h (target_gdbarch): Add comment documenting this global.

2009-05-06  Joel Brobecker  <brobecker@adacore.com>

	* acinclude.m4 (AM_ICONV): Prefer in-tree libiconv if present over
	system iconv.
	* configure: Regenerate.

2009-05-06  Joel Brobecker  <brobecker@adacore.com>

	* utils.c: Add include of gdb_usleep.h.
	(defaulted_query): Detect false EOF conditions that happen
	on terminals opened with the O_NONBLOCK flag when there is
	nothing to read.

2009-05-06  Pedro Alves  <pedro@codesourcery.com>

	* inferior.c (add_inferior): Move observer_notify_new_inferior
	call to ...
	(add_inferior_silent): ... here.

2009-05-06  Pierre Muller  <muller@ics.u-strasbg.fr>
	    Pedro Alves  <pedro@codesourcery.com>

	* procfs.c (procfs_insert_watchpoint, procfs_remove_watchpoint)
	(procfs_region_ok_for_hw_watchpoint, procfs_use_watchpoints): New
	functions.
	(procfs_stopped_by_watchpoint): Made static, ptid argument
	removed.
	(_initialize_procfs): Register new watchpoint related target
	functions.
	* config/i386/nm-i386sol2.h (TARGET_CAN_USE_HARDWARE_WATCHPOINT)
	(TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT, STOPPED_BY_WATCHPOINT)
	(HAVE_CONTINUABLE_WATCHPOINT): Delete.
	(target_insert_watchpoint, target_remove_watchpoint): Delete.
	(procfs_stopped_by_watchpoint, procfs_set_watchpoint): Delete
	declarations.
	* config/mips/nm-irix5.h (STOPPED_BY_WATCHPOINT)
	(TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT): Delete.
	(target_insert_watchpoint, target_remove_watchpoint): Delete.
	(procfs_stopped_by_watchpoint, procfs_set_watchpoint): Delete
	declarations.
	* config/sparc/nm-sol2.h (TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT)
	(HAVE_CONTINUABLE_WATCHPOINT, STOPPED_BY_WATCHPOINT): Delete.
	(target_insert_watchpoint, target_remove_watchpoint): Delete.
	(procfs_stopped_by_watchpoint, procfs_set_watchpoint): Delete
	declarations.

2009-05-06  Hui Zhu  <teawater@gmail.com>

	* i386-tdep.c (i386_process_record): Change bzero to memset.

2009-05-06  Hui Zhu  <teawater@gmail.com>

	* NEWS: Add item for process record and replay.

2009-05-05  Maxim Grigoriev  <maxim2405@gmail.com>

	* xtensa-tdep.c (xtensa_frame_cache): Use pc instead of cache->pc.

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

	* inferior.h (read_pc, write_pc): Remove.
	* regcache.c (read_pc, write_pc): Remove.

	* infrun.c (displaced_step_fixup): Use regcache_read_pc instead
	of read_pc.
	(handle_inferior_event): Use regcache_read_pc instead of read_pc
	when determining value of stop_pc.  Replace subsequent uses of
	read_pc by inspecting already-retrieved stop_pc value.
	(keep_going): Use regcache_read_pc instead of read_pc.

	* breakpoint.c (watchpoint_check): Use current frame architecture
	and PC instead of current_gdbarch and read_pc ().
	* tracepoint.c (set_traceframe_context): Replace PC argument
	with FRAME argument.
	(trace_start_command, finish_tfind_command): Update calls.
	(finish_tfind_command): Compare frame IDs to identify transitions
	between frames.
	(trace_find_pc_command): Use regcache_read_pc instead of read_pc.
	* rs6000-nat.c (exec_one_dummy_insn): Pass in regcache instead
	of gdbarch.  Use regcache_read_pc and regcache_write_pc instead
	of read_pc and write_pc.
	(store_register): Make regcache argument non-const.  Update call
	to exec_one_dummy_insn.

	* thread.c (switch_to_thread): Use regcache_read_pc instead of read_pc.
	* infcmd.c (post_create_inferior): Likewise.
	* solib-darwin.c (darwin_solib_create_inferior_hook): Likewise.
	* solib-pa64.c (pa64_solib_create_inferior_hook): Likewise.
	* solib-sunos.c (sunos_solib_create_inferior_hook): Likewise.
	* solib-svr4.c (enable_break, svr4_relocate_main_executable): Likewise.
	* linux-fork.c (fork_load_infrun_state): Likewise.
	* hppa-hpux-tdep.c (hppa_hpux_push_dummy_code): Likewise.
	* record.c (record_wait): Likewise.
	* procfs.c (procfs_wait): Likewise.
	* remote-mips.c (common_open, mips_wait): Likewise.
	* remote-m32r-sdi.c (m32r_resume): Likewise.

	* symfile.c (generic_load): Use regcache_write_pc instead of write_pc.
	* monitor.c (monitor_create_inferior, monitor_load): Likewise.
	* m32r-rom.c (m32r_load, m32r_upload_command): Likewise.
	* remote-m32r-sdi.c (m32r_create_inferior, m32r_load): Likewise.
	* remote-mips.c (mips_create_inferior, mips_load): Likewise.

	* solib-darwin.c: Include "regcache.h".
	* solib-pa64.c: Include "regcache.h".
	* solib-svr4.c: Include "regcache.h.".

	* symfile.c: Do not mention read_pc or write_pc in comments.
	* dink32-rom.c: Likewise.
	* m32r-rom.c: Likewise.
	* mips-tdep.c: Likewise.

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

	* fork-child.c (startup_inferior): Move setting stop_pc ...
	* infcmd.c (post_create_inferior): ... to here.

2009-05-04  Michael Snyder  <msnyder@vmware.com>

	* NEWS: Add item for reverse debugging commands.

2009-05-04  Pedro Alves  <pedro@codesourcery.com>

	* go32-nat.c (go32_stop): Delete.
	(go32_kill_inferior): Rewrite to only call go32_mourn_inferior.
	(go32_create_inferior): Don't call go32_stop or
	go32_kill_inferior.
	(go32_mourn_inferior): Inline go32_stop and go32_kill_inferior
	here.
	(init_go32_ops): Don't register go32_stop.

2009-05-02  Eli Zaretskii  <eliz@gnu.org>

	* dbxread.c (read_dbx_symtab): Avoid compiler warnings for
	sym_name.

	* infcall.c (find_function_addr): Avoid compiler warnings for
	funaddr.

2009-05-01  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dictionary.c (dict_hashed_vector, dict_hashed_expandable_vector)
	(dict_linear_vector, dict_linear_expandable_vector): Fix a comment typo.

2009-05-01  Doug Evans  <dje@google.com>

	* linux-thread-db.c (thread_db_pid_to_str): Delete unused assignment
	to thread_info.

2009-05-01  Eli Zaretskii  <eliz@gnu.org>

	* record.c (_initialize_record): Reformat and clarify doc strings
	for stop-at-limit and insn-number-max.

	* go32-nat.c: Add comments about dirty secrets of DJGPP debugging.

2009-05-01  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Make specifiable the make_function_type type memory ownership.
	* gdbtypes.c (make_function_type): New parameter `objfile', use it
	explicitely instead of TYPE-initialized removed local variable
	`objfile'.  Describe `objfile' it in the function comment.
	(lookup_function_type): Update make_function_type callers.
	* gdbtypes.h (make_function_type): Update the prototype.
	* jv-lang.c (java_link_class_type): Update make_function_type callers.
	* dwarf2read.c (read_subroutine_type): Likewise.
	* stabsread.c (read_type): Likewise.

2009-05-01  Eli Zaretskii  <eliz@gnu.org>

	* go32-nat.c (go32_pid_to_str): Call normal_pid_to_str instead of
	printing a bogus "Thread <main>".
	(go32_thread_alive): Don't return 1 for null_ptid.

	* i386-tdep.c (i386_go32_init_abi): Override the number of
	registers due to non-support of SSE.

2009-04-30  Anthony Green  <green@moxielogic.com>

	* configure.tgt: Link the moxie simulator in with gdb.

2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* elfread.c (elf_symtab_read): Don't assume .data and .rodata
	are present.

2009-04-30  Hui Zhu  <teawater@gmail.com>
            Michael Snyder  <msnyder@vmware.com>

	I386 Linux process record and replay support.

	* i386-linux-tdep.c (i386_linux_record_tdep): New variable.
	This struct has the argument for the function
	"record_linux_system_call".
	(i386_linux_intx80_sysenter_record): New function. Parse the
	system call instruction and call function
	"record_linux_system_call" to record execute log.
	(i386_linux_init_abi): Initialize "i386_linux_record_tdep".
	Set "i386_linux_intx80_sysenter_record" to
	"i386_intx80_record" and "i386_sysenter_record".

2009-04-30  Hui Zhu  <teawater@gmail.com>
            Michael Snyder  <msnyder@vmware.com>

	I386 architecture process record and replay support.

	* i386-tdep.c (PREFIX_REPZ, PREFIX_REPNZ, PREFIX_LOCK,
	PREFIX_DATA, PREFIX_ADDR): New macros. Help decode the i386
	instruction set.
	(aflag, dflag, override, modrm, mod, reg, rm, ot,
	i386_record_pc): New variables. Ditto.
	(i386_record_modrm, i386_record_lea_modrm_addr,
	i386_record_lea_modrm): New functions. Ditto.
	(i386_process_record): New function. Parse the instruction in
	address "addr" and record the values of registers and memory
	that will be changed by this instruction.
	(i386_gdbarch_init): Set "i386_process_record" to GDBARCH
	"process_record" interface.
	* i386-tdep.h (gdbarch_tdep): New function pointers
	"i386_intx80_record" and "i386_sysenter_record" that point to
	the function that can record "intx80" and "sysenter" execute
	log.

2009-04-30  Hui Zhu  <teawater@gmail.com>
            Michael Snyder  <msnyder@vmware.com>

	* infrun.c (use_displaced_stepping): Return false if process
	record and replay target is used.
	(proceed): Call function "record_not_record_set" if pocess
	record and replay target is used.

2009-04-30  Hui Zhu  <teawater@gmail.com>
            Michael Snyder  <msnyder@vmware.com>

	Linux process record and replay support.

	* Makefile.in (ALLDEPFILES): Add linux-record.c.
	(ALL_TARGET_OBS): Add linux-record.o.
	* configure.tgt (x86_64-*-linux*): Add linux-record.o.
	(i[34567]86-*-linux*): Add linux-record.o.
	* linux-record.c, linux-record.h: New file.

2009-04-30  Hui Zhu  <teawater@gmail.com>
            Michael Snyder  <msnyder@vmware.com>

	Process record and replay target.

	* Makefile.in (SFILES): Add record.c.
	(COMMON_OBS): Add record.o.
	* record.c, record.h: New file.

2009-04-30  Hui Zhu  <teawater@gmail.com>
            Michael Snyder  <msnyder@vmware.com>

	* target.h (strata): New stratum "record_stratum".

2009-04-30  Hui Zhu  <teawater@gmail.com>
            Michael Snyder  <msnyder@vmware.com>

	GDBARCH interface for process record and replay.

	* gdbarch.sh (process_record): This interface point to the
	function that records the inferior execute log.

2009-04-29  Doug Evans  <dje@google.com>

	* i386-nat.c (child_post_startup_inferior): Delete, unused.

2009-04-29  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (print_exception_catchpoint): Access `b' directly
	instead of `b->loc->owner'.
	(print_mention_exception_catchpoint): Ditto.

2009-04-29  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* macrocmd.c (info_macro_command): Print -Dname=value if LINE is zero.

2009-04-27  Tom Tromey  <tromey@redhat.com>

	* c-exp.y (yylex): Handle '[' and ']' like '(' and ')'.

2009-04-27  Jerome Guitton  <guitton@adacore.com>

	* symtab.c (append_exact_match_to_sals): New function, extracted
	from expand_line_sal.
	(expand_line_sal): Use append_exact_match_to_sals to append exact
	matches. If none found, append all best items.

2009-04-27  Jerome Guitton  <guitton@adacore.com>

	* main.c (captured_main): Move gdbinit lookups after gdb_init.

2009-04-27  Jan Kratochvil  <jan.kratochvil@redhat.com>

	PR gdb/9675:
	* dwarf2read.c (unsigned_int_compar, inherit_abstract_dies): New.
	(read_func_scope): Call inherit_abstract_dies.

2009-04-25  Eli Zaretskii  <eliz@gnu.org>

	* Makefile.in (ALLDEPFILES): Remove duplicate entries for
	sparc-sol2-nat.c and sparc-sol2-tdep.c.

	* stack.c (_initialize_stack) <disassemble-next-line>: Doc fix.

2009-04-24  Pierre Muller  <muller@ics.u-strasbg.fr>

	ARI change: Use "/* ARI: rule */" pattern.
	* utils.c: Update ARI patterns.
	* gdb_dirent.h: Likewise.

2009-04-23  Anthony Green  <green@moxielogic.com>

	* MAINTAINERS: Add moxie target.
	* configure.tgt: Add moxie-*-elf target.
	* moxie-tdep.c: New file.
	* moxie-tdep.h: New file.

2009-04-23  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c: Remove an extra empty line. No code change.

2009-04-23  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix double free on error inserting the breakpoint instruction.
	* breakpoint.c (create_breakpoints): Move the
	update_global_location_list call to ...
	(break_command_really): ... here together with the second local call
	both unified after all the cleanups.

2009-04-23  Sergio Durigan Junior <sergiodj@linux.vnet.ibm.com>
	    Tom Tromey  <tromey@redhat.com>

	* configure, config.in: Regenerate.
	* configure.ac: Support for relocatable GDB datadir.  Use
	GDB_AC_WITH_DIR.  Always define TARGET_SYSTEM_ROOT_RELOCATABLE.
	* acinclude.m4 (GDB_AC_WITH_DIR): New defun.
	* top.c (init_main): Add "set data-directory".
	* defs.h (gdb_datadir): Declare.
	* main.c (gdb_datadir): New global.
	(captured_main): Initialize gdb_datadir.  Use relocate_directory.
	(relocate_path): New function.
	(relocate_directory): Likewise.
	(get_init_files): Use relocate_path.
	(README): Mention --with-gdb-datadir.

2009-04-23  Joel Brobecker  <brobecker@adacore.com>

	* ada-tasks (task_command_1): Call target_find_new_threads.

2009-04-23  Joel Brobecker  <brobecker@adacore.com>

	* stack.c (do_gdb_disassembly): Print the exception message if an
	error was thrown while trying to perform the disassembly.

2009-04-22  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* varobj.c (free_variable): Replace free_current_contents by xfree.

2009-04-22  Kazu Hirata  <kazu@codesourcery.com>

	* arm-linux-nat.c (fetch_register, store_register): Use
	ARM_CPSR_GREGNUM instead of ARM_CPSR_REGNUM.
	* arm-linux-tdep.c (arm_linux_supply_gregset,
	arm_linux_collect_gregset): Likewise.
	* arm-linux-tdep.h (ARM_CPSR_GREGNUM): New.
	* arm-tdep.h (ARM_CPSR_REGNUM): Remove.

2009-04-22  Hui Zhu  <teawater@gmail.com>

	* stack.c (_initialize_stack): Set the default of
	disassemble-next-line to off.

2009-04-21  Tom Tromey  <tromey@redhat.com>

	* acinclude.m4: Use AS_HELP_STRING, not AC_HELP_STRING.
	* configure.ac: Use AS_HELP_STRING, not AC_HELP_STRING.

2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>

	* configure.ac: Add quotes to not lose brackets in help text.
	* configure: Rebuild.

2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>

	* configure.ac: Don't postprocess Makefile in config.status.
	Substitute GDB_NM_FILE.  Don't substitute nm_h.
	* Makefile.in (GDB_NM_FILE): Substitute.
	(TAGS): Use $(GDB_NM_FILE) instead of $(NAT_FILE).
	* configure: Regenerate.
	* gnulib/Makefile.in: Regenerate.

2009-04-21  Joseph Myers  <joseph@codesourcery.com>

	* configure.ac (--with-datarootdir, --with-docdir, --with-pdfdir,
	--with-htmldir): New.
	* configure: Regenerate.

2009-04-21  Tom Tromey  <tromey@redhat.com>

	* configure: Rebuild.
	* configure.ac: Use lower case for start of help strings.  Clean
	up --with-sysroot help.

2009-04-21  Tom Tromey  <tromey@redhat.com>

	* configure: Rebuild.
	* acinclude.m4 (AM_ICONV): Use AC_HELP_STRING.
	* configure.ac: Use AC_HELP_STRING.  Use upper case for variables
	in help.

2009-04-21  Pierre Muller  <muller@ics.u-strasbg.fr>

	ARI fix: remove "%p".
	* ia64-tdep.c (ia64_frame_this_id): Use host_address_to_string function.
	(ia64_sigtramp_frame_this_id): Ditto.
	(ia64_libunwind_frame_this_id): Ditto.
	(ia64_libunwind_sigtramp_frame_this_id): Ditto.
	* symmisc.c (maintenance_info_psymtabs): Ditto.

2009-04-21  Joseph Myers  <joseph@codesourcery.com>

	* configure.ac (--with-relocated-sources): New.
	* configure, config.in: Regenerate.
	* source.c (add_substitute_path_rule): Remove static.
	* source.h (add_substitute_path_rule): Declare.
	* main.c: Include "source.h".
	(captured_main): Add substitution rule if RELOC_SRCDIR.

2009-04-21  Pierre Muller  <muller@ics.u-strasbg.fr>

	* gnu-nat.h (proc_debug): Add missing continuation line in macro.

2009-04-20  David Daney  <ddaney@caviumnetworks.com>

	* NEWS: Mention MIPS/Linux hardware watchpoint support.

2009-04-20  David Daney  <ddaney@caviumnetworks.com>

	* mips-linux-nat.c (command.h, gdbcmd.h, gdb_assert.h): New #includes.
	(maint_show_dr, super_close): New variables.
	(super_fetch_registers, super_store_registers): Make static.
	(PTRACE_GET_WATCH_REGS, PTRACE_SET_WATCH_REGS, W_BIT, R_BIT, I_BIT)
	(W_MASK, R_MASK, I_MASK, IRW_MASK, MAX_DEBUG_REGISTER): Define.
	(pt_watch_style): Define new enum.
	(mips32_watch_regs, mips64_watch_regs, pt_watch_regs, mips_watchpoint):
	Define new structs.
	(watch_readback_valid, watch_readback, current_watches,	watch_mirror):
	New variables.
	(get_irw_mask, get_reg_mask, get_num_valid, get_watchlo)
	(set_watchlo, get_watchhi, set_watchhi, mips_show_dr)
	(mips_linux_read_watch_registers, mips_linux_can_use_hw_breakpoint)
	(mips_linux_stopped_by_watchpoint, mips_linux_stopped_data_address)
	(type_to_irw, fill_mask, try_one_watch)
	(mips_linux_region_ok_for_hw_watchpoint, write_watchpoint_regs)
	(mips_linux_new_thread, populate_regs_from_watches)
	(mips_linux_insert_watchpoint, mips_linux_remove_watchpoint)
	(mips_linux_close): New functions.
	(_initialize_mips_linux_nat): Register watchpoint functions with
	the target_ops.  Add show-debug-regs maintenance command.

2009-04-20  David Daney  <ddaney@caviumnetworks.com>

	* infrun.c (handle_inferior_event): Move gegisters_changed call down.

2009-04-19  Pedro Alves  <pedro@codesourcery.com>

	* NEWS: Mention gdbserver support for x86 Windows CE.

2009-04-19  Eli Zaretskii  <eliz@gnu.org>

	* config/djgpp/fnchange.lst: Fix typos.

	Set default host and target charsets in the DJGPP port.

	* config/djgpp/config.sed (am_cv_langinfo_codeset)
	(bash_cv_langinfo_codeset, ac_cv_header_nl_types_h): Set to "yes"
	in all configure scripts that define ac_cv_env_CPP_value.

	* go32-nat.c (dos_codepage, nl_langinfo): New functions.
	Include langinfo.h.

	* config/djgpp/nl_types.h: New file.

	* config/djgpp/langinfo.h: New file.

	* config/i386/go32.mh (MH_CFLAGS): Add $(srcdir)/config/djgpp.

2009-04-18  Carlos O'Donell  <carlos@codesourcery.com>

	* Makefile.in (MAKEHTML): Set to makeinfo --html.
	(MAKEHTMLFLAGS): Set to empty.

2009-04-18  Eli Zaretskii  <eliz@gnu.org>

	* NEWS: Mention all new set/show commands added since GDB 6.8 was
	released.

	* go32-nat.c (go32_sysinfo): Check if the call to
	__dpmi_get_capabilities fills the buffer with information, and
	don't use the buffer if not.

2009-04-17  Tom Tromey  <tromey@redhat.com>

	* charset.c (_initialize_charset): Add special case for "646".

2009-04-17  Carlos O'Donell  <carlos@codesourcery.com>

	* configure.ac: AC_SUBST datarootdir, docdir, htmldir, pdfdir.
	* configure: Regenerate.
	* Makefile.in: Set datarootdir, docdir, htmldir, and pdfdir from
	configure substitutions.
	(FLAGS_TO_PASS): Add datarootdir, docdir, and htmldir.

2009-04-17  Pierre Muller  <muller@ics.u-strasbg.fr>

	ARI fix: Do not use %p, replace by call to host_address_to_string
	for host pointers.
	* darwin-nat.c (darwin_xfer_partial): Apply change.
	* gnu-nat.c (inf_continue, gnu_xfer_memory): Ditto.
	* gnu-nat.h (proc_debug): Ditto.
	* symmisc.c (maintenance_info_symtabs): Ditto.
	(maintenance_info_psymtabs): Ditto.
	* windows-nat.c (handle_load_dll): Ditto.
	(handle_unload_dll, info_w32_command, handle_exception): Ditto.
	* xtensa-tdep.c (xtensa_unwind_pc): Ditto.

2009-04-17  Joseph Myers  <joseph@codesourcery.com>

	* configure.tgt (i[34567]86-*-linux*): Use 64-bit configuration if
	--enable-64-bit-bfd.
	(sparc-*-linux*): Likewise.

2009-04-17  Eli Zaretskii  <eliz@gnu.org>

	* go32-nat.c (go32_sysinfo): Update list of Windows versions of
	the NT family.

2009-04-16  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (remote_query_attached): Fix pasto in packet_ok result
	checking.

2009-04-16  Joel Brobecker  <brobecker@adacore.com>

	* procfs.c (solib_mappings_callback, find_memory_regions_callback):
	Revert the previous change.  Might not be correct, actually.

2009-04-16  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.h (ada_adjust_exception_stop, ada_print_exception_stop)
	(ada_get_current_task, ada_print_exception_breakpoint_nontask)
	(ada_print_exception_breakpoint_task, ada_reset_thread_registers):
	Remove declaration. These are non-existent functions.

2009-04-16  Joel Brobecker  <brobecker@adacore.com>

	* procfs.c (solib_mappings_callback, find_memory_regions_callback):
	Fix a compilation warning on mips-irix due to casting from
	a pointer of different size.

2009-04-16  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (symtab_for_sym): Delete.
	(user_select_syms): Use sym->symtab instead of calling symtab_for_sym.

2009-04-16  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (extract_string): Delete.
	(ada_main_name): Reimplement using target_read_string instead of
	extract_string.

2009-04-16  Andreas Schwab  <schwab@linux-m68k.org>

	* m68klinux-nat.c: Remove obsolete comment.
	(fetch_register, store_register): Don't call
	gdbarch_cannot_fetch_register or gdbarch_cannot_store_register,
	which are always nops here.

2009-04-14  Tom Tromey  <tromey@redhat.com>

	* c-lang.c (c_emit_char): Use INTERMEDIATE_ENCODING.
	(c_printstr): Likewise.
	* charset.c: Include gdb_wait.h.
	(make_wchar_iterator): Use INTERMEDIATE_ENCODING.
	(find_charset_names): Use pexecute.  Handle libiconv's output.
	Detect errors.
	(_initialize_charset): Use xstrdup.
	* gdb_wchar.h: Check HAVE_BTOWC.  Split PHONY_ICONV and wchar
	cases.
	(INTERMEDIATE_ENCODING): New define.
	* configure, config.in: Rebuild.
	* configure.ac: Check for btowc.

2009-04-15  Tom Tromey  <tromey@redhat.com>

	* c-lang.c (evaluate_subexp_c): Correctly handle EVAL_SKIP.

2009-04-15  Eli Zaretskii  <eliz@gnu.org>

	* utils.c (parse_escape): Initialize target_char to pacify GCC.

2009-04-14  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* c-lang.c (c_get_string): Fix xfree crash on a failed string read.

2009-04-14  Pierre Muller  <muller@ics.u-strasbg.fr>

	ARI fix: sprintf rule.
	* ada-exp.y (convert_char_literal): Replace sprintf by xsnprintf.
	* ada-lang.c (add_angle_brackets): Use xstrprintf.
	(ada_decode): Replace sprintf by xsnprintf.
	(find_old_style_renaming_symbol): Ditto.
	(ada_to_fixed_type_1, ada_enum_name): Ditto.


2009-04-14  Joel Brobecker  <brobecker@adacore.com>

	* target.c (target_mourn_inferior): Call bfd_cache_close_all
	after having executed the target mourn_inferior routine.

2009-04-14  Eli Zaretskii  <eliz@gnu.org>

	* config/djgpp/djconfig.sh (DEPDIR): Define to "_deps", if
	undefined.

2009-04-13  David Daney  <ddaney@caviumnetworks.com>

	* infrun.c (maybe_software_singlestep): New function.
	(resume): Call maybe_software_singlestep.
	(handle_inferior_event): Same.

2009-04-13  Tom Tromey  <tromey@redhat.com>

	* python/python-frame.c (frapy_richcompare): Return
	Py_NotImplemented, not an error.  Handle Py_NE as well.

2009-04-13  Eli Zaretskii  <eliz@gnu.org>

	* charset.c (EILSEQ): Define if not defined by system headers.

2009-04-11  Eli Zaretskii  <eliz@gnu.org>

	* config/djgpp/config.sed: Tweak ac_config_files in intl/configure
	to be consistent with renaming config.intl.in into config_intl.in.

	* go32-nat.c (go32_attach, go32_detach): Fix prototypes to be
	consistent with the change from 2008-11-09.

2009-04-10  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* gdbtypes.c: Remove excessive parentheses at the return keywords.
	* varobj.c (varobj_invalidate): Fix indentation.
	* varobj.c (varobj_invalidate): Fix formatting text width.

2009-04-08  Vladimir Prus  <vladimir@codesourcery.com>

	Implement -exec-jump.

	* mi/mi-cmds.h (mi_cmd_exec_jump): Declare.
	* mi/mi-main.c (mi_cmd_exec_jump): New.
	* mi/mi-cmds.c (mi_cmds): Register exec-jump.

2009-04-07  Doug Evans  <dje@google.com>

	* symfile.c (symbol_file_clear): Fix indentation.

2009-04-06  Mark Kettenis  <kettenis@gnu.org>

	* sparc64nbsd-nat.c (sparc64nbsd_supply_pcb): Fix comment.

2009-04-03  Ulrich Weigand  <uweigand@de.ibm.com>

	* ppc-linux-nat.c (ppc_linux_target_wordsize): New function.
	(ppc_linux_auxv_parse): New function.
	(ppc_linux_read_description): Use ppc_linux_target_wordsize.
	(_initialize_ppc_linux_nat): Install ppc_linux_auxv_parse.

2009-04-03  Ulrich Weigand  <uweigand@de.ibm.com>

	* spu-linux-nat.c (spu_bfd_open): Set filename of in-memory
	BFD to contents of SPU name note.
	(spu_symbol_file_add_from_memory): Call symbol_file_add_from_bfd
	with "from_tty" argument 1 instead of 0.

2009-04-02  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2read.c
	(new_symbol <DW_TAG_variable> <!DW_AT_location> <DW_AT_external>):
	Create the symbol in local scope.
	* symtab.h (cu->list_in_scope <LOC_UNRESOLVED>): New comment part.

2009-04-02  Keith Seitz  <keiths@redhat.com>

	* stabsread.c (read_member_functions): GCC may emit an extra space
	at the end of the names "__base_ctor" and "__base_dtor"; so ignore
	whitespace when looking for these functions.

2009-04-01  Joel Brobecker  <brobecker@adacore.com>

	Change the default value for "set print frame-arguments" to scalars.

	* stack.c (print_frame_arguments): Set initial value to "scalars".

2009-04-01  Aleksandar Ristovski  <aristovski@qnx.com>

	* mips-tdep.c (mips_numeric_register_alieses): New definition.
	(mips_gdbarch_init): Add user registers from
	mips_numeric_register_aliases.

2009-04-01  Joel Brobecker  <brobecker@adacore.com>

	* linux-nat.c (linux_nat_filter_event): Minor comment reformatting.

2009-04-01  Joel Brobecker  <brobecker@adacore.com>

	* linux-nat.c (linux_nat_filter_events): Do not delete the lwp if
	this is the last one.

2009-04-01  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (append_resumption): New.
	(remote_vcont_resume): Use it.

2009-04-01  Joel Brobecker  <brobecker@adacore.com>

	* windows-nat.c (+windows_get_ada_task_ptid): New function.
	(init_windows_ops): Set windows_ops.to_get_ada_task_ptid.

2009-03-31  Daniel Jacobowitz  <dan@codesourcery.com>
	    Keith Seitz  <keiths@redhat.com>
	    Jan Kratochvil  <jan.kratochvil@redhat.com>

	PR gdb/6817
	* Makefile.in (dbxread.o): Update.
	* dbxread.c (read_dbx_symtab): Use cp_canonicalize_string.
	* dwarf2read.c (GDB_FORM_cached_string): New.
	(read_partial_die): Use dwarf2_canonicalize_name.
	(dwarf2_linkage_name): Use dwarf2_name.
	(dwarf2_canonicalize_name): New.
	(dwarf2_name): Use dwarf2_canonicalize_name.
	(dwarf_form_name, dump_die): Handle GDB_FORM_cached_string.
	* stabsread.c (define_symbol, read_type): Use cp_canonicalize_string.
	* symtab.c (lookup_symbol_in_language): Canonicalize input before
	searching.
	* cp-name-parser.y: operator() requires two parameters,
	according to libiberty.
	* minsyms.c (lookup_minimal_symbol): Canonicalize input
	before searching.
	* NEWS: Update.

2009-03-31  Joel Brobecker  <brobecker@adacore.com>

	Provide support for (Ada) task-specific breakpoints.

	* ada-lang.h (ada_get_task_number): Add declaration.
	(breakpoint_ada_task_match): Delete declaration.
	* ada-tasks.c (ada_get_task_number): Make non-static.
	* breakpoint.h (struct breakpoint): Add field "task".
	* breakpoint.c (print_one_breakpoint_location): Add handling of
	task-specific breakpoints.
	(create_breakpoint, create_breakpoints, find_condition_and_thread):
	New parameter "task".
	(break_command_really): Update calls to find_condition_and_thread
	and create_breakpoints.
	(breakpoint_re_set_one): Update call to find_condition_and_thread.
	Set b->task.

2009-03-31  Joel Brobecker  <brobecker@adacore.com>

	* ada-tasks.c (short_task_info): Eliminate the "Running" task state.

2009-03-31  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (remote_notice_new_inferior): Use ptid_is_pid.  Check
	if the thread's ptid without a thread id field is in the list
	before calling thread_change_ptid.
	(extended_remote_attach_1): In non-stop mode, do not rely on
	querying the current thread, instead, query the thread list, and
	select the first thread of the process.
	* gdbthread.h (first_thread_of_process): Declare.
	* thread.c (first_thread_of_process): Define.

2009-03-30  Stan Shebs  <stan@codesourcery.com>

	Make tracepoints into a type of breakpoint.
	* breakpoint.h (enum bptype): Add bp_tracepoint.
	(struct breakpoint): Add fields step_count, pass_count, actions.
	(get_tracepoint, get_tracepoint_by_number): Declare.
	(all_tracepoints): Declare.
	* breakpoint.c: Include tracepoint.h, readline.h.
	(ALL_TRACEPOINTS): Move here from tracepoint.c.
	(tracepoint_count): Ditto.
	(should_be_inserted): GDB does not insert tracepoints itself.
	(print_it_typical): Add tracepoint case.
	(bpstat_what): Ditto.
	(print_one_breakpoint_location): Ditto, and add printing for
	pass count, step count, and action list.
	(user_settable_breakpoint): Add tracepoint case.
	(allocate_bp_location): Ditto.
	(set_breakpoint_location_function): Ditto.
	(disable_breakpoints_in_shlibs): Ditto.
	(mention): Ditto.
	(break_command_really): Add argument traceflag, use to choose
	basic breakpoint type.
	(break_command_1): Pass extra argument.
	(set_breakpoint, handle_gnu_v3_exceptions): Ditto.
	(breakpoint_re_set_one): Add tracepoint case.
	(disable_command, enable_command): Ditto.
	(set_tracepoint_count): Move here from tracepoint.c.
	(trace_command): Move here from tracepoint.c and use
	break_command_really.
	(tracepoints_info): Move here from tracepoint.c and call
	breakpoints_info.
	(enable_trace_command): Move here from tracepoint.c and call
	enable_command.
	(disable_trace_command): Move here from tracepoint.c and call
	disable_command.
	(delete_trace_command): Move here from tracepoint.c and call
	delete_breakpoint.
	(trace_pass_command): Move here from tracepoint.c.
	(get_tracepoint_by_number): Ditto.
	(tracepoint_save_command): Ditto.
	(get_tracepoint): New function.
	(all_tracepoints): New function.
	(_initialize_breakpoint): Move tracepoint init from tracepoint.c,
	deprecate "enable trace" and "disable trace" commands.
	* tracepoint.h (struct tracepoint): Remove.
	(tracepoint_chain): Remove decl.
	(deprecated_create_tracepoint_hook): Remove decl.
	(deprecated_delete_tracepoint_hook): Remove decl.
	(deprecated_modify_tracepoint_hook): Remove decl.
	(ALL_TRACEPOINTS, ALL_TRACEPOINTS_SAFE): Remove.
	(free_actions): Update signature.
	(validate_actionline): Update signature.
	(end_actions_pseudocommand): Declare.
	(while_stepping_pseudocommand): Declare.
	* tracepoint.c: Include breakpoint.h.
	(tracepoint_chain, tracepoint_count): Remove.
	(free_actions, make_cleanup_free_actions): Update signature.
	(trace_command, set_raw_tracepoint): Remove.
	(trace_mention): Remove.
	(tracepoints_info): Remove.
	(tracepoint_operation, map_args_over_tracepoints): Remove.
	(get_tracepoint_by_number): Remove.
	(enable_trace_command, disable_trace_command): Remove.
	(delete_trace_command, trace_pass_command): Remove.
	(trace_actions_command, read_actions): Update signature.
	(validate_actionline): Update signature, use bp loc.
	(encode_actions): Ditto.
	(download_tracepoint): New function, body of trace_start_command.
	(trace_start_command): Call it, use all_tracepoints.
	(tracepoint_save_command): Remove.
	(tracepoint_dump_command): Use get_tracepoint.
	(end_actions_pseudocommand): Make globally visible.
	(while_stepping_pseudocommand): Ditto.
	(_initialize_tracepoint): Move command definitions to breakpoint.c.

2009-03-30  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	Expose frames to Python.
	* Makefile.in (SUBDIR_PYTHON_OBS): Add python-frame.o.
	(SUBDIR_PYTHON_SRCS): Add python-frame.c.
	(python-frame.o): New target.
	* python/python-frame.c: New file.
	* python/python-internal.h (gdbpy_frames, gdbpy_newest_frame,
	gdbpy_frame_stop_reason_string, gdbpy_selected_frame,
	gdbpy_initialize_frames): New prototypes.
	* python/python.c (_initialize_python): Call gdbpy_initialize_frames.
	(GdbMethods): Add `selected_frame' and `frame_stop_reason_string'
	entries.
	* stack.c (find_frame_funname): New function, factored out of
	print_frame.
	(print_frame): Call find_frame_funname.
	* stack.h (find_frame_funname): Add prototype.

2009-03-29  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	Remove unused value_object attribute `owned_by_gdb'.
	* python/python-value.c (value_object): Remove owned_by_gdb
	attribute.
	(valpy_dealloc): Remove reference to self->owned_by_gdb.
	(valpy_new): Likewise.
	(value_to_value_object): Likewise.

2009-03-29  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	Change gdb.Value.address from a method to an attribute.
	* python/python-value.c (value_object): Add `address' element.
	(valpy_dealloc): Decrement reference to self->address if set.
	(valpy_new): Initialize val_obj->address.
	(valpy_address): Rename to ...
	(valpy_get_address): ... this.  Change signature from method to
	attribute.  Update self->address if not set.
	(value_to_value_object): Initialize val_obj->address.
	(value_object_getset): Add `address' element.
	(value_object_methods): Remove `address' element.

2009-03-29  Andreas Schwab  <schwab@linux-m68k.org>

	* observer.sh: Set LANG/LC_ALL to C, not c.

2009-03-28  Kevin Buettner  <kevinb@redhat.com>

	* mn10300-tdep.c (mn10300_gdbarch_init): For mn10300, by default,
	`char' is unsigned.

2009-03-28  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (remote_stop_ns): If multi-process extensions are off,
	and GDB is requesting the whole process to stop, sent "vCont;t",
	not "vCont;t:-1"

2009-03-28  Pedro Alves  <pedro@codesourcery.com>

	* inf-loop.c (inferior_event_handler): Avoid calling is_running on
	null inferior_ptid.

2009-03-27  Eli Zaretskii  <eliz@gnu.org>

	* config/djgpp/fnchange.lst: Update to fix ARI-reported problems.

2009-03-26  Doug Evans  <dje@google.com>

	* thread.c (do_restore_current_thread_cleanup): Redo test for
	whether to restore old->inferior_ptid.

2009-03-26  Tom Tromey  <tromey@redhat.com>

	* breakpoint.c (resolve_sal_pc): Preserve original line number
	when skipping prologue.

2009-03-26  Doug Evans  <dje@google.com>

	* thread.c (inferior_thread) Remove "extern" in definition.

2009-03-26  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	Add gdb.Value.is_optimized_out attribute.
	* python/python-value.c (valpy_get_is_optimized_out): New
	function.
	(value_object_getset): New variable.
	(value_object_type): Initialize tp_getset element.

2009-03-26  Joel Brobecker  <brobecker@adacore.com>

	Recognize missing DW_AT_location as <value optimized out>.
	* dwarf2read.c
	(new_symbol <DW_TAG_variable> <!DW_AT_location> <!DW_AT_external>):
	Call add_symbol_to_list.

2009-03-25  Tom Tromey  <tromey@redhat.com>

	* gdbtypes.h (CHECK_TYPEDEF): Don't yield a value.
	* stack.c (print_this_frame_argument_p): Use check_typedef.

2009-03-25  Tom Tromey  <tromey@redhat.com>

	* configure: Rebuild.
	* acinclude.m4 (AM_ICONV): Set am_cv_use_build_libiconv.
	Rearrange flags setting.  Add comments.

2009-03-25  Pierre Muller  <muller@ics.u-strasbg.fr>

	* config/i386/nm-i386.h: Remove code within
	I386_WATCHPOINTS_IN_TARGET_VECTOR conditional.
	* config/i386/nm-cygwin.h: Remove I386_WATCHPOINTS_IN_TARGET_VECTOR
	macro.
	* config/i386/nm-cygwin64.h: Ditto.
	* config/i386/nm-fbsd.h: Ditto.
	* config/i386/nm-go32.h: Ditto.
	* config/i386/nm-linux.h: Ditto.
	* config/i386/nm-linux64.h: Ditto.

2009-03-25  Pierre Muller  <muller@ics.u-strasbg.fr>

	ARI fix: "xasprintf" rule.
	* printcmd.c (sym_info): Replace xasprintf by xstrprintf.

2009-03-25  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (remote_start_remote): In non-stop mode, call
	init_wait_for_inferior before adding threads and inferiors.

2009-03-25  Joel Brobecker  <brobecker@adacore.com>

	* breakpoint.c (breakpoint_thread_match): Split a large condition
	into several smaller conditions.  No behavior change.

2009-03-25  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (infrun_thread_thread_exit): New.
	(_initialize_infrun): Attach it to the thread_exit observer.
	* thread.c (delete_thread_1): Always call the observer, passing it
	the silent flag.
	* mi/mi-interp.c (mi_thread_exit): Add "silent" parameter.  If
	SILENT, return immediately.

2009-03-25  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (normal_stop): Use has_stack_frames instead of
	target_has_stack.
	* mi/mi-main.c (mi_execute_command): Avoid calling inferior_thread
	when there is no thread selected.
	(mi_cmd_execute): Don't special case commands that can run without
	a valid selected thread.
	* top.c (execute_command): Don't special case commands that can
	run without a valid selected thread.  Use has_stack_frames.
	* infcmd.c (ensure_valid_thread): New.
	(continue_1, step_1, jump_command, signal_command): Use it.
	(detach_command): Error out if there's no selected thread/inferior.
	* thread.c (print_thread_info): Allow having no thread selected.
	(switch_to_thread): Don't read the PC if there is no current thread.
	(do_restore_current_thread_cleanup): Don't record the current
	frame if there is no current thread.
	(make_cleanup_restore_current_thread): Don't read frame info if
	there is no selected thread.
	(_initialize_thread): Don't mark commands as
	"no_selected_thread_ok".
	* frame.c (get_current_frame): Error out if there is no valid
	selected thread.
	(has_stack_frames): Return false if there is no valid
	selected thread.
	* cli/cli-cmds.c (init_cli_cmds): Don't mark commands as
	"no_selected_thread_ok".
	* cli/cli-decode.c (set_cmd_no_selected_thread_ok)
	(get_cmd_no_selected_thread_ok): Delete.
	* cli/cli-decode.h (CMD_NO_SELECTED_THREAD_OK): Delete.
	(set_cmd_no_selected_thread_ok, get_cmd_no_selected_thread_ok):
	Delete declaration.
	* stack.c (get_selected_block): Use has_stack_frames.

2009-03-25  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	Fix size of FPSCR in Power 7 processors.
	* ppc-linux-nat.c (PPC_FEATURE_ARCH_2_05): Remove #define.
	(PPC_FEATURE_HAS_DFP): New #define.
	(ppc_linux_read_description): Check for DFP feature instead of
	ISA 2.05 to decide on size of the FPSCR.

2009-03-25  Kevin Buettner  <kevinb@redhat.com>

	* mn10300-tdep.c (trad-frame.h): Don't include.
	(prologue-value.h): Include.
	(mn10300_frame_unwind_cache, set_reg_offsets): Delete.
	(struct mn10300_prologue): Define.
	(push_reg, translate_rreg, check_for_saved): New functions.
	(mn10300_analyze_prologue): Rewrite, using prologue-value
	machinery.  Handle more instructions than before.  Permit
	instructions to occur in any order.
	(mn10300_skip_prologue): Find the extents of the function
	in question; mn10300_analyze_prologue no longer does this.
	(mn10300_analyze_frame_prologue): New function.
	(mn10300_frame_base): New function.
	(mn10300_frame_this_id): Rewrite, no longer using trad-frame
	implementation.
	(mn10300_frame_prev_register): Likewise.
	(mn10300_frame_base_address, mn10300_frame_base struct): Delete.
	(mn10300_unwind_pc, mn10300_unwind_sp): Rename `next_frame' to
	`this_frame'.
	(mn10300_frame_unwind_init): Don't call frame_base_set_default().

2009-03-25  Pierre Muller  <muller@ics.u-strasbg.fr>

	Fix completer problem for filename completion on the first try.

	* gdb/completer.h (gdb_completion_word_break_characters): New function.
	* gdb/completer.c: Include gdb_assert.h.
	(complete_line_internal_reason): New enum.
	(complete_line_internal): Change last argument type to
	complete_line_internal_reason.
	Modify function to handle the different complete_line_internal_reason
	argument values.
	(complete_line): Adapt to change in complete_line_internal.
	(command_completer): Ditto.
	(gdb_completion_word_break_characters): Implement new function.
	* top.c (init_main): Set  rl_completion_word_break_hook to
	gdb_completion_word_break_characters.


2009-03-25  Pierre Muller  <muller@ics.u-strasbg.fr>

	ARI fix: "strlen d_name" rule.
	* linux-nat.c (linux_nat_xfer_osdata): Use NAMELEN macro.


2009-03-24  Tom Tromey  <tromey@redhat.com>
	    Pedro Alves  <pedro@codesourcery.com>

	* configure, config.in: Rebuild.
	* configure.ac: Check for libiconvlist.
	* charset.c: Check HAVE_LIBICONVLIST.
	* acinclude.m4 (AM_ICONV): Don't subst LIBICONV, LIBICONV_INCLUDE,
	LIBICONV_LIBDIR.  Update CPPFLAGS and LIBS.
	* Makefile.in (LIBICONV, LIBICONV_INCLUDE, LIBICONV_LIBDIR):
	Remove.
	(INTERNAL_CFLAGS_BASE): Update.
	(INTERNAL_LDFLAGS): Update.
	(CLIBS): Update.

2009-03-24  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* configure.ac: Initialize the variable $PREFER_CURSES.
	* configure: Regenerated.

2009-03-24  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* configure.ac: Enable $PREFER_CURSES even with default $ENABLE_TUI.
	* configure: Regenerated.

2009-03-24  Pierre Muller  <muller@ics.u-strasbg.fr>

	ARI fix: "strerror" rule.
	* darwin-nat.c (darwin_ptrace): Use safe_strerror.
	(darwin_stop_inferior, darwin_attach, darwin_detach): Ditto.

2009-03-23  Joel Brobecker  <brobecker@adacore.com>

	* ada-exp.y (get_symbol_field_type): Make sure to resolve typedefs
	before looking up the fields inside our struct type.

2009-03-23  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (resolve_subexp) [UNOP_QUAL]: Resolve typedefs before
	trying to resolve the type qualification.

2009-03-23  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_evaluate_subexp) [UNOP_IN_RANGE]: make sure
	we try to apply the attribute on the real type, rather than
	its associated typedef.

2009-03-23  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_evaluate_subexp) [OP_ATR_MODULUS]: Use check_typdef
	to make sure we try to get the modulus of the actual type, not the
	associated typedef.

2009-03-23  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_evaluate_subexp): [OP_ATR_FIRST, OP_ATR_LAST]
	[OP_ATR_LENGTH]: When using the attribute on a type, make sure
	to get the real type, not the associated typedef.

2009-03-23  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_get_field_index): Add handling of the case
	when TYPE is a typedef of a struct.

2009-03-23  Joel Brobecker  <brobecker@adacore.com>

	Add gdb_usleep as a portable version of usleep based on gdb_select.
	* gdb_usleep.h, gdb_usleep.c: New files.
	* Makefile.in (SFILES): Add gdb_usleep.c.
	(HFILES_NO_SRCDIR): Add gdb_usleep.h.
	(COMMON_OBS): Add gdb_usleep.o.
	* ser-unix.c (hardwire_send_break): Replace call to gdb_select
	by call to gdb_usleep.

2009-03-23  Joel Brobecker  <brobecker@adacore.com>

	* buildsym.c (end_symtab): If we ignore the subfiles, then
	unlink the associated symtabs if they were already allocated.

2009-03-23  Jerome Guitton  <guitton@adacore.com>

	Provide a way to force building of GDB with libcurses.
	* configure.ac: Add --with-curses.
	* configure: Regenerated.

2009-03-23  Tom Tromey  <tromey@redhat.com>

	* dwarf2expr.c (execute_stack_op) <DW_OP_GNU_uninit>: Fix typo in
	error message.

2009-03-23  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* breakpoint.c (disable_breakpoints_in_unloaded_shlib): Use
	solib_contains_address_p instead of searching.

2009-03-23  Tom Tromey  <tromey@redhat.com>

	* charset.c (ICONV_CONST) <PHONY_ICONV>: Define.
	(iconv): Make 'inbuf' argument const.
	(convert_between_encodings): Use ICONV_CONST.
	(wchar_iterate): Likewise.

2009-03-22  Christopher Faylor  <me+cygwin@cgf.cx>

	* windows-nat.c (AdjustTokenPrivileges): Implement macro wraparound for
	dynamically loaded function.
	(LookupPrivilegeValueA): Ditto.
	(OpenProcessToken): Ditto.
	(AdjustTokenPrivileges): Rename and define placeholder for address of
	dynamically loaded function.
	(LookupPrivilegeValueA): Ditto.
	(OpenProcessToken): Ditto.
	(set_process_privilege): Remove check for loaded functions.
	(bad_OpenProcessToken): Define.
	(_initialize_loadable): Load token functions from advapi here, setting
	OpenProcessToken function to a dummy static function which always return
	error if OS doesn't support this functionality.

2009-03-22   Nicolas Roche  <roche@adacore.com>
	     Christopher Faylor <me+cygwin@cgf.cx>

	* win32-nat.c (ctrl_c_handler): New function.
	(win32_wait): Register ctrl_c_handler as Ctrl-C handler if the inferior
	is run in a separate console.

2009-03-22  Christopher Faylor  <me+cygwin@cgf.cx>

	* windows-nat.c (DebugActiveProcessStop): Implement macro wraparound
	for dynamically loaded function.
	(DebugBreakProcess): Ditto.
	(DebugSetProcessKillOnExit): Ditto.
	(EnumProcessModules): Ditto.
	(GetModuleFileNameExA): Ditto.
	(GetModuleInformation): Ditto.
	(DebugActiveProcessStop): Rename and define placeholder for address of
	dynamically loaded function.
	(DebugBreakProcess): Ditto.
	(DebugSetProcessKillOnExit): Ditto.
	(EnumProcessModules): Ditto.
	(GetModuleFileNameExA): Ditto.
	(GetModuleInformation): Ditto.
	(psapi_loaded): Delete.
	(get_module_name): Don't check psapi_loaded, just rely on the fact that
	dynamically loaded functions will return failure if they weren't
	previously found.
	(has_detach_ability): Delete.
	(windows_attach): Remove call to has_detach_ability ().  Just rely on
	functions being callable.
	(bad_DebugActiveProcessStop): Define.
	(bad_DebugBreakProcess): Ditto.
	(bad_DebugSetProcessKillOnExit): Ditto.
	(bad_EnumProcessModules): Ditto.
	(bad_GetModuleFileNameExA): Ditto.
	(bad_GetModuleInformation): Ditto.
	(_initialize_loadable): Rename from _initialize_psapi.  Initialize all
	dynamic storage here, setting nonexistent functions to dummy static
	functions which always return error.

2009-03-22  Pedro Alves  <pedro@codesourcery.com>

	* mi/mi-interp.c (mi_interpreter_init): Attach mi_about_to_proceed
	to the about_to_proceed observer notification.
	(mi_about_to_proceed): New.
	(mi_on_resume): Only output ^running and the prompt here if the
	target was proceeded.
	* breakpoint.c (breakpoint_proceeded): New static.
	(breakpoint_about_to_proceed): New.
	(_initialize_breakpoints): Attach breakpoint_about_to_proceed to
	the about_to_proceed observer notification.
	* inferior.h (breakpoint_proceeded): Delete declaration.
	* infrun.c (clear_proceed_status): Don't set breakpoint_proceeded.
	Notify the about_to_proceed observers.
	(struct inferior_status): Delete breakpoint_proceeded member.
	(save_inferior_status): Don't save it.
	(restore_inferior_status): Don't restore it.
	* mi-main.h (mi_proceeded): Declare.
	* mi/mi-main.c (mi_cmd_execute): Clear mi_proceeded before running
	a command.

2009-03-22  Pedro Alves  <pedro@codesourcery.com>

	* gdbthread.h (struct thread_info): Add in_infcall member.
	* infcall.c (run_inferior_call): Save, set and restore in_infcall.
	Remove reverences to suppress_resume_observer.  Refresh
	`call_thread' after returning from `proceed'.
	* infcmd.c (suppress_resume_observer): Delete.
	* inferior.h (suppress_resume_observer): Delete declaration.
	* mi/mi-interp.c (mi_on_resume): Suppress output while calling an
	inferior function.
	* thread.c (set_running): Remove references to
	suppress_resume_observer.
	* infrun.c (struct inferior_status): Add in_infcall member.
	(save_inferior_status): Save it.
	(restore_inferior_status): Restore it.

2009-03-22  Pedro Alves  <pedro@codesourcery.com>

	* infcall.c (run_inferior_call): Remove references to
	suppress_stop_observer.
	* infcmd.c (suppress_stop_observer): Delete.
	(finish_command_continuation): Remove NOTE.  Don't clear
	suppress_stop_observer anymore.
	(finish_command_continuation_free_arg): Likewise.
	(finish_forward): Remove references to suppress_stop_observer.
	Call normal_stop observer if we haven't already.
	* inferior.h (suppress_stop_observer): Delete.
	* infrun.c (normal_stop): When deciding to suppress the
	normal_stop observer, check for proceed_to_finish instead of
	suppress_stop_observer.

2009-03-22  Pedro Alves  <pedro@codesourcery.com>

	* symfile.c (symfile_relocate_debug_section): Remove check for
	SEC_DEBUGGING.

2009-03-21  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Jim Blandy  <jimb@red-bean.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>
	    Tom Tromey  <tromey@redhat.com>

	Miscellaneous fixes to the Python code.
	* python/python-cmd.c (cmdpy_init): Accept keyword
	arguments.
	* python/python-value.c (valpy_string): Accept keyword
	arguments.
	(valpy_binop): Use `break' to exit from the TRY_CATCH block.
	Do not call value_to_value_object on NULL RES_VAL.
	(value_object_methods): Change `string' entry to also accept
	keyword arguments.
	(convert_value_from_python): Return a copy of the value if obj is
	a gdb.Value object.
	(value_object_methods): Mark the `string' method as accepting
	keywords, and show method "prototype" in the doc string.
	* python/python.c (get_parameter): Don't return inside a
	TRY_CATCH.

2009-03-20  Tom Tromey  <tromey@redhat.com>

	Add support for convenience functions in Python.
	* Makefile.in (SUBDIR_PYTHON_OBS): Add python-function.o.
	(SUBDIR_PYTHON_SRCS): Add python-function.c.
	(python-function.o): New target.
	* eval.c: Include "python/python.h" and <ctype.h>.
	(evaluate_subexp_standard): Handle values of type
	TYPE_CODE_INTERNAL_FUNCTION.
	* gdbtypes.h (type_code): Add TYPE_CODE_INTERNAL_FUNCTION.
	* parse.c (write_exp_string): Remove duplicate word in comment.
	* python/python-function.c: New file.
	* python/python-internal.h (gdbpy_initialize_functions): Add
	prototype.
	* python/python.c (_initialize_python): Call
	gdbpy_initialize_functions.
	* valprint.c (value_check_printable): Handle values of type
	TYPE_CODE_INTERNAL_FUNCTION.
	* value.c: Include "cli/cli-decode.h".
	(internal_function): New struct.
	(functionlist, internal_fn_type): New static variables.
	(lookup_only_internalvar,
	lookup_internalvar): Add const qualifier to name argument.
	(create_internalvar): Likewise.  Initialize new field.
	(set_internal_var): Fix typo in comment.  Don't allow assignment
	to canonical variable.
	(value_create_internal_function, value_internal_function_name,
	call_internal_function, function_command, function_destroyer,
	add_internal_function): New functions.
	(_initialize_values): Create `function' placeholder command.
	Initialize internal_fn_type.
	* value.h (lookup_only_internalvar, create_internalvar,
	lookup_internalvar): Add const qualifier to name argument.
	(internal_function_fn, add_internal_function, call_internal_function,
	value_internal_function_name): Add prototypes.
	(struct internalvar) <canonical>: New field.

2009-03-20  Tom Tromey  <tromey@redhat.com>

	* c-lang.c (evaluate_subexp_c): Call check_typedef.

2009-03-20  Tom Tromey  <tromey@redhat.com>
	    Julian Brown  <julian@codesourcery.com>

	PR i18n/7220, PR i18n/7821, PR exp/8815, PR exp/9103,
	PR i18n/9401, PR exp/9613:
	* NEWS: Update
	* value.h (value_typed_string): Declare.
	(val_print_string): Update.
	* valprint.h (print_char_chars): Update.
	* valprint.c (print_char_chars): Add type argument.  Update.
	(val_print_string): Likewise.
	* valops.c (value_typed_string): New function.
	* utils.c (host_char_to_target): New function.
	(parse_escape): Use host_char_to_target, host_hex_value.  Update.
	Remove '^' case.
	(no_control_char_error): Remove.
	* typeprint.c (print_type_scalar): Update.
	* scm-valprint.c (scm_scmval_print): Update.
	* scm-lang.h (scm_printchar, scm_printstr): Update.
	* scm-lang.c (scm_printchar): Add type argument.
	(scm_printstr): Likewise.
	* printcmd.c (print_formatted): Update.
	(print_scalar_formatted): Update.
	(printf_command) <wide_string_arg, wide_char_arg>: New constants.
	Handle '%lc' and '%ls'.
	* parser-defs.h (struct typed_stoken): New type.
	(struct stoken_vector): Likewise.
	(write_exp_string_vector): Declare.
	* parse.c (write_exp_string_vector): New function.
	* p-valprint.c (pascal_val_print): Update.
	* p-lang.h (is_pascal_string_type, pascal_printchar,
	pascal_printstr): Update.
	* p-lang.c (is_pascal_string_type): Remove 'char_size' argument.
	Add 'char_type' argument.
	(pascal_emit_char): Add type argument.
	(pascal_printchar): Likewise.
	(pascal_printstr): Likewise.
	* objc-lang.c (objc_emit_char): Add type argument.
	(objc_printchar): Likewise.
	(objc_printstr): Likewise.
	* macroexp.c (get_character_constant): Handle unicode characters.
	Use c_parse_escape.
	(get_string_literal): Handle unicode strings.  Use
	c_parse_escape.
	* m2-valprint.c (print_unpacked_pointer): Update.
	(m2_print_array_contents): Update.
	(m2_val_print): Update.
	* m2-lang.c (m2_emit_char): Add type argument.
	(m2_printchar): Likewise.
	(m2_printstr): Likewise.
	* language.h (struct language_defn) <la_printchar>: Add type
	argument.
	<la_printstr, la_emitchar>: Likewise.
	(LA_PRINT_CHAR): Likewise.
	(LA_PRINT_STRING): Likewise.
	(LA_EMIT_CHAR): Likewise.
	* language.c (unk_lang_emit_char): Add type argument.
	(unk_lang_printchar): Likewise.
	(unk_lang_printstr): Likewise.
	* jv-valprint.c (java_val_print): Update.
	* jv-lang.c (java_emit_char): Add type argument.
	* f-valprint.c (f_val_print): Update.
	* f-lang.c (f_emit_char): Add type argument.
	(f_printchar): Likewise.
	(f_printstr): Likewise.
	* expprint.c (print_subexp_standard): Update.
	* charset.h (target_wide_charset): Declare.
	(c_target_char_has_backslash_escape, c_parse_backslash,
	host_char_print_literally, host_char_to_target,
	target_char_to_host, target_char_to_control_char): Remove.
	(enum transliterations): New type.
	(convert_between_encodings): Declare.
	(HOST_ESCAPE_CHAR): New define.
	(host_letter_to_control_character, host_hex_value): Declare.
	(enum wchar_iterate_result): New enum.
	(struct wchar_iterator): Declare.
	(make_wchar_iterator, make_cleanup_wchar_iterator, wchar_iterator,
	wchar_push_back): Declare.
	* charset-list.h: New file.
	* c-valprint.c (textual_name): New function.
	(textual_element_type): Handle wide character types.
	(c_val_print): Pass original type to textual_element_type.  Handle
	wide character types.
	(c_value_print): Use textual_element_type.  Pass original type of
	value to val_print.
	* c-lang.h (enum c_string_type): New type.
	(c_printchar, c_printstr): Update.
	* c-lang.c (classify_type): New function.
	(print_wchar): Likewise.
	(c_emit_char): Add type argument.  Handle wide characters.
	(c_printchar): Likewise.
	(c_printstr): Add type argument.  Handle wide and multibyte
	character sets.
	(convert_ucn): New function.
	(emit_numeric_character): Likewise.
	(convert_octal): Likewise.
	(convert_hex): Likewise.
	(ADVANCE): New macro.
	(convert_escape): New function.
	(parse_one_string): Likewise.
	(evaluate_subexp_c): Likewise.
	(exp_descriptor_c): New global.
	(c_language_defn): Use exp_descriptor_c.
	(cplus_language_defn): Likewise.
	(asm_language_defn): Likewise.
	(minimal_language_defn): Likewise.
	(charset_for_string_type): New function.
	* c-exp.y (%union): Add 'svec' and 'tsval'.
	(CHAR): New token.
	(exp): Add CHAR production.
	(string_exp): Rewrite.
	(exp) <string_exp>: Rewrite.
	(tempbuf): Now global.
	(tempbuf_init): New global.
	(parse_string_or_char): New function.
	(yylex) <tempbuf>: Now global.
	<tokptr, tempbufindex, tempbufsize, token_string, class_prefix>:
	Remove.
	Handle 'u', 'U', and 'L' prefixes.  Call parse_string_or_char.
	(c_parse_escape): New function.
	* auxv.c (fprint_target_auxv): Update.
	* ada-valprint.c (ada_emit_char): Add type argument.
	(ada_printchar): Likewise.
	(ada_print_scalar): Update.
	(printstr): Add type argument.  Update calls to ada_emit_char.
	(ada_printstr): Add type argument.
	(ada_val_print_array): Update.
	(ada_val_print_1): Likewise.
	* ada-lang.c (emit_char): Add type argument.
	* ada-lang.h (ada_emit_char, ada_printchar, ada_printstr): Add
	type arguments.
	* gdb_locale.h: Include langinfo.h.
	* charset.c (_initialize_charset): Set default host charset from
	the locale.  Don't register charsets.  Add target-wide-charset
	commands.  Call find_charset_names.
	(struct charset, struct translation): Remove.
	(GDB_DEFAULT_HOST_CHARSET): Remove.
	(GDB_DEFAULT_TARGET_WIDE_CHARSET): New define.
	(target_wide_charset_name): New global.
	(show_host_charset_name): Handle "auto".
	(show_target_wide_charset_name): New function.
	(host_charset_enum, target_charset_enum): Remove.
	(charset_enum): New global.
	(all_charsets, register_charset, lookup_charset, all_translations,
	register_translation, lookup_translation): Remove.
	(simple_charset, ascii_print_literally, ascii_to_control): Remove.
	(iso_8859_print_literally, iso_8859_to_control,
	iso_8859_family_charset): Remove.
	(ebcdic_print_literally, ebcdic_to_control,
	ebcdic_family_charset): Remove.
	(struct cached_iconv, check_iconv_cache, cached_iconv_convert,
	register_iconv_charsets): Remove.
	(target_wide_charset_be_name, target_wide_charset_le_name): New
	globals.
	(identity_either_char_to_other): Remove.
	(set_be_le_names, validate): New functions.
	(backslashable, backslashed, represented): Remove.
	(default_c_target_char_has_backslash_escape): Remove.
	(default_c_parse_backslash, iconv_convert): Remove.
	(ascii_to_iso_8859_1_table, ascii_to_ebcdic_us_table,
	ascii_to_ibm1047_table, iso_8859_1_to_ascii_table,
	iso_8859_1_to_ebcdic_us_table, iso_8859_1_to_ibm1047_table,
	ebcdic_us_to_ascii_table, ebcdic_us_to_iso_8859_1_table,
	ebcdic_us_to_ibm1047_table, ibm1047_to_ascii_table,
	ibm1047_to_iso_8859_1_table, ibm1047_to_ebcdic_us_table): Remove.
	(table_convert_char, table_translation, simple_table_translation):
	Remove.
	(current_host_charset, current_target_charset,
	c_target_char_has_backslash_escape_func,
	c_target_char_has_backslash_escape_baton): Remove.
	(c_parse_backslash_func, c_parse_backslash_baton): Remove.
	(host_char_to_target_func, host_char_to_target_baton): Remove.
	(target_char_to_host_func, target_char_to_host_baton): Remove.
	(cached_iconv_host_to_target, cached_iconv_target_to_host):
	Remove.
	(lookup_charset_or_error, check_valid_host_charset): Remove.
	(set_host_and_target_charsets): Remove.
	(set_host_charset, set_target_charset): Remove.
	(set_host_charset_sfunc, set_target_charset_sfunc): Rewrite.
	(set_target_wide_charset_sfunc): New function.
	(show_charset): Print target wide character set.
	(host_charset, target_charset): Rewrite.
	(target_wide_charset): New function.
	(c_target_char_has_backslash_escape): Remove.
	(c_parse_backslash): Remove.
	(host_letter_to_control_character): New function.
	(host_char_print_literally): Remove.
	(host_hex_value): New function.
	(target_char_to_control_char): Remove.
	(cleanup_iconv): New function.
	(convert_between_encodings): New function.
	(target_char_to_host): Remove.
	(struct wchar_iterator): Define.
	(make_wchar_iterator, make_cleanup_wchar_iterator, wchar_iterator,
	wchar_push_back): New functions.
	(do_cleanup_iterator): New function.
	(char_ptr): New typedef.
	(charsets): New global.
	(add_one, find_charset_names): New functions.
	(default_charset_names): New global.
	(auto_host_charset_name): Likewise.
	* aclocal.m4, config.in, configure: Rebuild.
	* configure.ac: Call AM_LANGINFO_CODESET.
	(GDB_DEFAULT_HOST_CHARSET): Default to UTF-8.
	(AM_ICONV): Invoke earlier.
	* acinclude.m4: Include codeset.m4.  Subst LIBICONV_INCLUDE and
	LIBICONV_LIBDIR.  Check for libiconv in build tree.
	* Makefile.in (LIBICONV_LIBDIR, LIBICONV_INCLUDE): New macros.
	(INTERNAL_CFLAGS_BASE): Add LIBICONV_INCLUDE.
	(INTERNAL_LDFLAGS): Add LIBICONV_LIBDIR.
	* gdb_obstack.h (obstack_grow_wstr): New define.
	* gdb_wchar.h: New file.
	* defs.h: Include it.

2009-03-20  Tom Tromey  <tromey@redhat.com>
	    Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2read.c (process_die): Handle DW_TAG_typedef.
	* eval.c (evaluate_subexp_standard) <OP_TYPE>: Strip a single
	typedef.
	* ada-lang.c (decode_packed_array_type): Call CHECK_TYPEDEF on the
	SYMBOL_TYPE result.
	* ada-typeprint.c (print_array_type): Do the NULL check
	unconditionally.

2009-03-19  Tom Tromey  <tromey@redhat.com>

	* utils.c (do_obstack_free): New function.
	(make_cleanup_obstack_free): Likewise.
	* defs.h (make_cleanup_obstack_free): Declare.

2009-03-18  Doug Evans  <dje@google.com>

	* linux-nat.c (linux_nat_find_memory_regions): Result of PIDGET is an
	int, not a long long.
	(linux_nat_info_proc_cmd): Store pid in long instead of long long.

	* expprint.c (dump_raw_expression): Print note if non-NULL.

	* printcmd.c (display_uses_solib_p): Redo loop, scan element list
	backwards.

2009-03-18  Nathan Sidwell  <nathan@codesourcery.com>

	* Makefile.in: Update license to GPLv3.
	* ada-exp.y: Update license to GPLv3.
	* ada-lex.l: Update license to GPLv3.
	* c-exp.y: Update license to GPLv3.
	* cp-name-parser.y: Update license to GPLv3.
	* darwin-nat-info.c: Update license to GPLv3.
	* f-exp.y: Update license to GPLv3.
	* gdb_thread_db.h: Update license to GPLv3.
	* hppanbsd-nat.c: Update license to GPLv3.
	* hppanbsd-tdep.c: Update license to GPLv3.
	* hppaobsd-tdep.c: Update license to GPLv3.
	* jv-exp.y: Update license to GPLv3.
	* m2-exp.y: Update license to GPLv3.
	* objc-exp.y: Update license to GPLv3.
	* p-exp.y: Update license to GPLv3.
	* reply_mig_hack.awk: Update license to GPLv3.
	* reverse.c: Update license to GPLv3.
	* xtensa-xtregs.c: Update license to GPLv3.

2009-03-18  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (remote_close): Don't call generic_mourn_inferior.
	(remote_mourn_1): Call generic_mourn_inferior after closing the
	target.

2009-03-18  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (remote_start_remote): Add missing call to
	init_wait_for_inferior in non-stop mode.

2009-03-18  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (bpstat_should_step): Only consider software
	watchpoints that have a location.

2009-03-17  Joel Brobecker  <brobecker@adacore.com>

	Add a target_ops parameter to the to_kill method in struct target_ops.

	* target.h (struct target_ops): Add a "target_ops *" parameter to
	method to_kill.
	(target_kill): Remove macro. Add declaration.
	* target.c (debug_to_kill): Delete, no longer necessary.
	(target_kill): New function.
	(update_current_target):  Stop inheriting the to_kill method.
	Do not de_fault it to no_process either.
	(setup_target_debug): Do not set current_target.to_kill.
	* gnu-nat.c, go32-nat.c, hpux-thread.c, inf-ptrace.c, inf-ttrace.c,
	linux-nat.c, monitor.c, nto-procfs.c, procfs.c, remote-m32r-sdi.c,
	remote-mips.c, remote-sim.c, remote.c, windows-nat.c: Update
	accordingly.

2009-03-17  Doug Evans  <dje@google.com>

	* amd64-linux-nat.c (si_timerid,si_overrun): Provide definition for
	glibc 2.3.2 and earlier.

2009-03-17  Joel Brobecker  <brobecker@adacore.com>

	* frame.c (get_prev_frame_1): Do not perform the inner_frame
	sanity check if this_frame is not NORMAL.
	(frame_id_inner): Update the description of this function.

2009-03-17  Hui Zhu  <teawater@gmail.com>

	* stack.c: Change the introduce of "disassemble-next-line".

2009-03-17  Pedro Alves  <pedro@codesourcery.com>

	* mi/mi-main.h (mi_print_timing_maybe): Add strict prototype,
	declare as extern.

2009-03-17  Hui Zhu  <teawater@gmail.com>

	* stack.c: Include valprint.h.
	(disassemble_next_line): New enum.
	(show_disassemble_next_line): New function.  Show the current
	value of disassemble-next-line.
	(gdb_disassembly_stub_args): New struct for argument passing
	between function do_gdb_disassembly and function
	gdb_disassembly_stub.
	(gdb_disassembly_stub): New function.  Helper for
	gdb_disassembly.
	(do_gdb_disassembly): New function.  Use TRY_CATCH to catch
	the exception from the gdb_disassembly because it will be
	broken by filter sometime.
	(print_frame_info): If disassemble-next-line is set to auto
	or on and doesn't have the line debug messages for $pc,
	output the next instruction.
	If disassemble-next-line is set to on and there is line debug
	messages, output assembly codes for next line.
	(_initialize_stack): Make the "set disassemble-next-line"
	command an auto-boolean command.  Change its class to
	class_stack.  Place it in the top level set list.  Extend help
	to describe the auto mode.

2009-03-17  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (normal_stop): Don't overwrite old_chain.

2009-03-16  Joel Brobecker  <brobecker@adacore.com>

	* remote-mips.c (mips_load): Replace call to regcache_set_valid_p,
	which is undefined, by call to regcache_invalidate, which should
	do what the original author wanted to do.

2009-03-16  Joel Brobecker  <brobecker@adacore.com>

	* remote-mips.c (mips_mourn_inferior): Add missing ops parameter.
	(mips_create_inferior): Likewise.

2009-03-16  Joel Brobecker  <brobecker@adacore.com>

	* go32-nat.c (go32_create_inferior): Add missing ops parameter.

2009-03-16  Joel Brobecker  <brobecker@adacore.com>

	* darwin-nat.c (darwin_resume): Fix a compiler warning when
	building on x86_64-darwin.

2009-03-16  Tristan Gingold  <gingold@adacore.com>

	* configure.tgt: Add handling for x86_64-darwin.

2009-03-16  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* auxv.c (fprint_target_auxv): New TAG for AT_RANDOM.

2009-03-15  Joel Brobecker  <brobecker@adacore.com>

	* aix-thread.c (aix_thread_thread_alive, aix_thread_pid_to_str):
	Use the ops parameter to get to the target beneath, rather than
	using the current_target global.  Using the current_target global
	was an unintended accident.

2009-03-15  Joel Brobecker  <brobecker@adacore.com>

	Fix an error happening while loading symbols from a core file
	(on AIX).

	* rs6000-nat.c (xcoff_relocate_symtab): Use target_has_execution
	to detect whether we're debugging a core file or not.

2009-03-15  Joel Brobecker  <brobecker@adacore.com>

	Modernize the aix-thread later by getting rid of the base_target
	global.  This brings back to life the AIX port which was otherwise
	crashing all the time.

	* aix-thread.c (base_target): Delete.
	(pd_enable): Do not set base_target.
	(aix_thread_attach): Use find_target_beneath instead of base_target.
	(aix_thread_detach, aix_thread_resume, aix_thread_wait)
	(aix_thread_fetch_registers, aix_thread_store_registers),
	(aix_thread_xfer_partial, aix_thread_mourn_inferior)
	(aix_thread_thread_alive, aix_thread_pid_to_str): Likewise.
	(aix_thread_kill): Delete. Does not seem necessary.
	(init_aix_thread_ops): Do not set aix_thread_ops.to_kill.

2009-03-15  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* stack.c (return_command <retval_exp>): New variables retval_expr
	and old_chain.  Inline parse_and_eval to initialize retval_expr.  Check
	RETVAL_EXPR for UNOP_CAST and set RETURN_TYPE to the RETURN_VALUE type
	if RETURN_TYPE is NULL.

2009-03-14  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (PACKET_qAttached): New.
	(remote_query_attached): New.
	(remote_add_inferior): Add new `attached' argument.  Handle it.
	(remote_notice_new_inferior, remote_start_remote): Adjust to pass
	-1 to remote_add_inferior in new parameter.
	(extended_remote_attach_1): Adjust to pass 1 to
	remote_add_inferior in the new parameter.
	(extended_remote_create_inferior_1): Adjust to pass 0 to
	remote_add_inferior in the new parameter.
	(_initialize_remote): Add "set/show remote query-attached-packet"
	commands.

2009-03-13  Tom Tromey  <tromey@redhat.com>

	* symtab.c (lookup_symbol_in_language): Use a cleanup.

2009-03-13  Doug Evans  <dje@google.com>

	* exceptions.h: Clean up some comments on catch_exceptions usage.
	* exceptions.c: Ditto.  Plus mark catch_errors as superseded by
	catch_exceptions.

2009-02-17  Joel Brobecker  <brobecker@adacore.com>

	The following patch helps getting rid of a warning inside solib-som.c.

	* source.c (source_full_path_of): Constify parameter filename.
	* defs.h (source_full_path_of): Update declaration accordingly.

2009-03-12  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_evaluate_subexp): Merge case BINOP_REM and
	BINOP_MOD cases with the handling of case BINOP_DIV and BINOP_MUL.
	Remove useless op value checks when EVAL_AVOID_SIDE_EFFECTS.

2009-03-12  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_evaluate_subexp) <BINOP_DIV>: make sure to
	promote the operands when noside is EVAL_AVOID_SIDE_EFFECTS.

2009-03-12  Joel Brobecker  <brobecker@adacore.com>

	* ada-tasks.c (ada_task_is_alive): Move up and make static.
	* ada-lang.h (ada_task_is_alive): Remove declaration.

2009-03-12  Jerome Guitton  <guitton@adacore.com>

	* ada-lang.c (ada_delta): Change the type of numerators and
	denominators to DOUBLEST, as they may not fit into a long.
	(scaling_factor): Ditto.

2009-03-12  Jerome Guitton  <guitton@adacore.com>

	* language.c (lang_bool_type): Set lai->bool_type_symbol to NULL.

2009-03-12  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_evaluate_subexp) [OP_VAR_VALUE]: For tagged
	types, if we are unable to determine the actual symbol type
	from its tag, then use the static approximation instead.

2009-03-12  Joel Brobecker  <brobecker@adacore.com>

	Fix crash printing packed record with packed array.

	* ada-lang.c (ada_modulus_from_name): New function.
	(ada_modulus): In the case where the type length is bigger than
	the size of the type used to hold the bounds, try determining
	the modulus from the type name.
	(ada_value_primitive_packed_val): Fix bug in the computation of
	ntarg causing an out-of-buffer invalid access.

2009-03-12  Joel Brobecker  <brobecker@adacore.com>

	Fix segfault when printing short_integer'last.

	* ada-lang.c (ada_find_any_type): Search in the primitive types
	if a symbol could not be found.

2009-03-12  Joel Brobecker  <brobecker@adacore.com>

	* ada-tasks.c (task_states,long_task_states): Add new states
	Activating and Acceptor_Delay_Sleep.  Update the description
	of state Acceptor_Sleep.

2009-03-12  Jonas Maebe <jonas.maebe@elis.ugent.be>  (obvious change)

	Fix a build failure on Darwin following some changes in
	the profile of some target_ops methods.

	* darwin-nat.c (darwin_kill_inferior): Add target_ops parameter
	where missing.
	(darwin_stop_inferior, darwin_detach): Likewise.

2009-03-12  Vladimir Prus  <vladimir@codesourcery.com>

	Include token in ^running notification for CLI commands.

	* mi/mi-main.c (mi_execute_command): Set current_token here.
	(mi_cmd_execute): Do not set current_token here.

2009-03-12  Vladimir Prus  <vladimir@codesourcery.com>

	Fix MI timings.

	* mi/mi-main.c (mi_print_timing_maybe): New.
	(captured_mi_execute_command): Simplify. Output timings to
	CLI commands, too.
	(mi_execute_async_cli_command): Do not print timings.
	* mi/mi-main.h (mi_print_timing_maybe): Declare.
	* mi/mi-interp.c (mi_on_normal_stop): Call mi_print_timing_maybe.

2009-03-12  Jerome Guitton  <guitton@adacore.com>

	* xcoffread.c (process_linenos): Check if the line in the
	include table refers to the main source file and, if so,
	add them to the main subfile.

2009-03-12  Joel Brobecker  <brobecker@adacore.com>

	Fix a build failure on AIX introduced after a change in the profile
	of some of the "methods" in the target_ops structure.
	* aix-thread.c: Add missing target_ops parameter throughout.

	Implement Ada task switching on AIX.
	* aix-thread.c (aix_thread_get_ada_task_ptid): New function.
	(init_aix_thread_ops): Set aix_thread_ops.to_get_ada_task_ptid.

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

	* breakpoint.c (bpstat_check_breakpoint_conditions): Use
	value_mark and value_free_to_mark.
	* objfiles.c (free_objfile): Call objfile_free_data before
	freeing the BFD.

2009-03-10  Hui Zhu  <teawater@gmail.com>

	* disasm.c (gdb_disassembly): Remove unused argument
	"line_num".
	* disasm.h (gdb_disassembly): Ditto.
	* cli/cli-cmds.c (print_disassembly): Ditto.
	* mi/mi-cmd-disas.c (mi_cmd_disassemble): Ditto.

2009-03-09  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* solib.c (solib_contains_address_p): New function.
	(solib_name_from_address): Use it.
	* printcmd.c (display_uses_solib_p): Use it.
	* solib.h (solib_contains_address_p): Declare it.

2009-03-09  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* varobj.c (free_variable): Call value_free.

2009-03-09  Jan Kratochvil  <jan.kratochvil@redhat.com>

	PR gdb/9873:
	* dwarf2read.c (dwarf_decode_macros): New variable `at_commandline'.
	Move the variable `macinfo_type' out of the loop.  Create a new
	processing pass before the current one to pre-create `current_file'.
	New complaint on misplaced zero/non-zero definitions/includes.
	Skip first DW_MACINFO_start_file with `at_commandline' set.

2008-03-09  Vladimir Prus  <vladimir@codesourcery.com>

       * solib.c (reload_shared_libraries): Give
       inferior a chance to reset solib breakpoint.
       Reinit frame cache.

2009-03-08  Christopher Faylor  <me+cygwin@cgf.cx>

	* windows-nat.c (dr): Redefine to use largest possible integer which
	holds a pointer.
	(cygwin_set_dr): Avoid coercion.

2009-03-08  Oswald Buddenhagen  <oswald.buddenhagen@trolltech.de>

	* windows-nat.c (windows_create_inferior): Implement --tty handling on
	non-cygwin.

2009-03-06  Paul Pluzhnikov  <ppluzhnikov@google.com>

	Rename solib_address to solib_name_from_address.
	* breakpoint.c (insert_bp_location, disable_breakpoints_in_shlibs)
	(disable_breakpoints_in_unloaded_shlib): Update.
	* printcmd.c (display_uses_solib_p): Likewise.
	* stack.c (print_frame): Likewise.
	* solib.c: Rename.
	* solib.h: Rename.

2009-03-05  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* printcmd.c (do_one_display): Reparse exp_string.
	(display_uses_solib_p): New function.
	(clear_dangling_display_expressions): New function.
	(_initialize_printcmd): Add observer.
	* solib.c (no_shared_libraries): Swap order of calls to
	clear_solib and objfile_purge_solibs.

2009-03-05  Joel Brobecker  <brobecker@adacore.com>

	Implement the target-specific part of Ada tasking support
	on Tru64.

	* dec-thread.c (dec_thread_get_ada_task_ptid): New function.
	(init_dec_thread_ops): Set the to_get_ada_task_ptid method.

2009-03-05  Joel Brobecker  <brobecker@adacore.com>

	Get rid of the global "base_target" and use "find_target_beneath"
	to find the underlying target.
	* dec-thread.c (base_target): Delete.
	(enable_dec_thread): Remove assignement to base_target.
	(dec_thread_detach, dec_thread_wait, dec_thread_wait)
	(dec_thread_fetch_registers, dec_thread_store_registers)
	(dec_thread_mourn_inferior, dec_thread_pid_to_str):
	Update the function profile if necessary.
	Use find_target_beneath to call the same method but from
	the underlying target, removing the need for "base_target".

	* dec-thread.c (dec_thread_get_regsets, dec_thread_set_regsets):
	Fix a copy/paste error in a few debug traces...

	* solib-osf.c (init_so): Use a simpler method for computing
	the size of lm_info structure. This also gets rid of warning
	emitted by the compiler.

2009-03-05  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (check_duplicates_for): Skip permanent breakpoints
	duplicates of permanent breakpoints.

2009-03-04  Pedro Alves  <pedro@codesourcery.com>

	* inferior.h (notice_new_inferior): Declare.
	* infcmd.c (notice_new_inferior): New.
	* remote.c (remote_add_inferior, remote_add_thread): New.
	(notice_new_inferiors): Rename to...
	(remote_notice_new_inferior): ... this.  Add RUNNING argument.
	Use remote_add_thread instead of add_thread, passing it the
	RUNNING argument.  Add an inferior with remote_add_inferior.  If
	we just learned about an inferior, call notice_new_inferior.
	(record_currthread): Adjust.
	(remote_threads_info): Adjust to use remote_notice_new_inferior.
	(remote_start_remote, extended_remote_attach_1): Use
	remote_add_inferior.
	(process_stop_reply): Adjust.  Call remote_notice_new_inferior
	after handling expedited registers and watchpoint state.
	(extended_remote_create_inferior_1): Use remote_add_inferior.

2009-03-04  Aleksandar Ristovski  <aristovski@qnx.com>

	* infcmd.c (registers_info): Remove register number case.

2009-03-03  Pedro Alves  <pedro@codesourcery.com>

	* top.c (quit_target): Check for target_has_execution before
	killing or detaching from inferiors.

2009-03-02  Joel Brobecker  <brobecker@adacore.com>

	Remove some unused routines.

	* ada-lang.c (is_suppressed_name, ada_suppress_symbol_printing):
	Delete.
	* ada-lang.c (ada_task_list_iterator_ftype)
	(iterate_over_live_ada_tasks): Delete.
	* ada-tasks.c (ada_get_environment_task, iterate_over_live_ada_tasks):
	Delete.

2009-03-01  Doug Evans  <dje@google.com>

	* symtab.c: Remove trailing whitespace throughout the file.
	(expand_line_sal): Fix some typos and whitespace.

	* Makefile.in (clean): rm -f $(DEPDIR)/*.

	* Makefile.in (GDB_CFLAGS): Add -I$(srcdir)/common.
	(init.c): signals/ -> common/.
	(signals.o): Update.
	* target.h (target_signal_to_string,target_signal_to_string)
	(target_signal_from_name,target_signal_to_host_p)
	(target_signal_from_host,target_signal_to_host): Move to ...
	* common/gdb_signals.h: ... here.  New file.
	* common/signals.c: Moved here from signals/signals.c.
	#include gdb_signals.h, remove #include of target.h in gdb case.
	(target_signal_from_command,default_target_signal_to_host)
	(default_target_signal_from_host): Move inside #ifndef GDBSERVER.

	Include thread ID in target_wait debugging output.
	* infrun.c (print_target_wait_results): New function.
	(wait_for_inferior,fetch_inferior_event): Call it.

2009-02-27  Pedro Alves  <pedro@codesourcery.com>

	* gdb_proc_service.h (struct ps_prochandle): Replace pid_t field
	with a ptid_t field.
	* linux-thread-db.c (thread_get_info_callback): Build the ptid
	using the pid stored in proc_handle.ptid.
	(thread_from_lwp, thread_db_attach_lwp, enable_thread_event)
	(check_for_thread_db, thread_db_detach, check_event)
	(thread_db_mourn_inferior, find_new_threads_callback)
	(thread_db_find_new_threads_1): Adjust.
	* proc-service.c (ps_xfer_memory, ps_lgetregs, ps_lsetregs)
	(ps_lgetfpregs, ps_lsetfpregs, ps_getpid): Adjust.

2009-02-27  Phil Muldoon  <pmuldoon@redhat.com>

	* valprint.c (read_string): Rework clean-up logic. Use
	free_current_contents to clean-up buffer.

2009-02-27  Andreas Schwab  <schwab@linux-m68k.org>

	* MAINTAINERS: Update e-mail address.

2009-02-26  Phil Muldoon  <pmuldoon@redhat.com>

	* python/python-utils.c (python_string_to_unicode): Always return
	a new reference.
	(python_string_to_target_string): Decrement transient python
	instance.
	(python_string_to_host_string): Likewise.

2007-02-26  Pedro Alves  <pedro@codesourcery.com>

	* mips-linux-nat.c (mips64_linux_fetch_registers): Pass `ops' to
	call to super_fetch_registers.
	(mips64_linux_store_registers): Pass `ops' to call to
	super_store_registers.

2009-02-25  Doug Evans  <dje@google.com>

	* breakpoint.c (insert_bp_location): Add \n to overlay breakpoint
	error message.

	* breakpoint.c (disable_breakpoints_in_shlibs): Delete local
	disabled_shlib_breaks, unused.

	* printcmd.c (build_address_symbolic): Fix comment.

2009-02-25  Hui Zhu  <teawater@gmail.com>

	* cli/cli-script.c (define_command): Add _() to query.
	* gnu-nat.c (inf_validate_task_sc): Ditto.
	* infcmd.c (kill_if_already_running): Ditto.
	(jump_command): Ditto.
	(attach_command): Ditto.
	* inflow.c (kill_command): Ditto.
	* infrun.c (handle_command): Ditto.
	* maint.c (maintenance_dump_me): Ditto.
	* memattr.c (mem_delete_command): Ditto.
	* monitor.c (monitor_interrupt_query): Ditto.
	* nto-procfs.c (interrupt_query): Ditto.
	* printcmd.c (undisplay_command): Ditto.
	* remote-mips.c (mips_kill): Ditto.
	* remote.c (interrupt_query): Ditto.
	* solib-irix.c (irix_open_symbol_file_object): Ditto.
	* solib-osf.c (osf_open_symbol_file_object): Ditto.
	* solib-pa64.c (pa64_open_symbol_file_object): Ditto.
	* solib-som.c (som_open_symbol_file_object): Ditto.
	* solib-svr4.c (open_symbol_file_object): Ditto.
	* symfile.c (symbol_file_add_with_addrs_or_offsets): Ditto.
	* target.c (kill_or_be_killed): Ditto.
	* tracepoint.c (delete_trace_command): Ditto.
	* top.c (quit_confirm): Add _() to s that will be used
	in query.

2009-02-24  Pierre Muller  <muller@ics.u-strasbg.fr>

	Fix windows-nat.c compilation failure.

	* windows-nat.c (windows_thread_alive): Fix forward declaration.
	(get_windows_debug_event): Add ops parameter to call to windows_resume.

2009-02-23  Pedro Alves  <pedro@codesourcery.com>

	* remote-sim.c (gdbsim_resume): Add target_ops* argument.

2009-02-23  Jay Krell  <jay.krell@cornell.edu>  (tiny change)

	* symtab.c (find_line_symtab): Initialize exact to avoid
	a compiler warning.

2009-02-23  Pedro Alves  <pedro@codesourcery.com>

	* i386-linux-nat.c (i386_linux_fetch_inferior_registers): Pass
	`ops' to recursive call.

2009-02-23  Pedro Alves  <pedro@codesourcery.com>

	* corelow.c (get_core_registers): Adjust.
	(core_file_thread_alive): Rename to...
	(core_thread_alive): ... this.
	(core_pid_to_str): Try gdbarch_core_pid_to_str first.
	(init_core_ops): Adjust.
	(coreops_suppress_target): Delete.
	(_initialize_corelow): Unconditionally add core_ops.
	* procfs.c: Include "inf-child.h".
	(procfs_ops): Delete.
	(init_procfs_ops): Delete.  Reimplement as...
	(procfs_target): ... this, inheriting from inf-child.
	(procfs_attach, procfs_detach, procfs_fetch_registers): Adjust.
	(procfs_prepare_to_store): Delete.
	(procfs_store_registers, procfs_resume): Adjust.
	(procfs_open): Delete.
	(procfs_suppress_run): Delete.
	(procfs_can_run): Delete.
	(procfs_mourn_inferior): Adjust.
	(procfs_init_inferior): Add target_ops parameter.  Adjust.
	(procfs_create_inferior): Don't pass procfs_init_inferior to
	fork_inferior.  Instead call it after fork_inferior returns.
	(procfs_find_new_threads): Adjust.
	(_initialize_procfs): Adjust to use procfs_target instead of
	init_procfs_ops.
	* sol-thread.c (orig_core_ops, sol_core_ops): Delete.
	(lwp_to_thread): Use target_thread_alive.
	(sol_thread_open): Delete.
	(sol_thread_attach): Delete.
	(sol_thread_detach, sol_thread_resume, sol_thread_wait)
	(sol_thread_fetch_registers, sol_thread_store_registers): Adjust
	to use find_target_beneath.
	(sol_thread_prepare_to_store, sol_thread_xfer_memory): Delete.
	(sol_thread_xfer_partial): Adjust to use find_target_beneath.
	(sol_thread_files_info, sol_thread_kill_inferior): Delete.
	(check_for_thread_db): New.
	(sol_thread_notice_signals, sol_thread_create_inferior): Delete.
	(sol_thread_new_objfile): Call check_for_thread_db.
	(sol_thread_mourn_inferior): Adjust to use find_target_beneath.
	(sol_thread_can_run): Delete.
	(sol_thread_alive): Adjust to use find_target_beneath.
	(sol_thread_stop): Delete.
	(rw_common): Use target_write_memory or target_read_memory.
	(ps_lgetregs, ps_lgetfpregs): Use target_fetch_registers.
	(ps_lsetregs, ps_lsetfpregs): Use target_store_registers.
	(solaris_pid_to_str): Remove check for libthread_db initialization
	failing.
	(sol_find_new_threads): Remove check for libthread_db
	initialization failing, or for an invalid inferior_ptid.  Adjust
	to use find_target_beneath.
	(sol_core_open, sol_core_close, sol_core_detach,
	sol_core_files_info, sol_find_memory_regions,
	sol_make_note_section, ignore): Delete.
	(init_sol_thread_ops): Make it a thread_stratum target.  Remove
	unneeded callback settings.
	(init_sol_core_ops): Delete.
	(_initialize_sol_thread): No longer call init_sol_core_ops, set
	procfs_suppress_run, or hack with core_ops.

	* target.h (struct target_ops): Add a target_ops * parameter to
	to_resume, to_fetch_registers, to_store_registers, to_thread_alive
	and to_find_new_threads.
	(target_fetch_registers, target_store_registers)
	(target_thread_alive, target_find_new_threads): Redeclare as
	function.

	* target.c (update_current_target): Do not inherit or de_fault
	to_resume, to_fetch_registers, to_store_registers,
	to_thread_alive, to_find_new_threads.
	(target_resume): Adjust.
	(target_thread_alive, target_find_new_threads): New.
	(debug_to_resume, debug_to_fetch_registers): Delete.
	(target_fetch_registers): New.
	(debug_to_store_registers): Delete.
	(target_store_registers): New.
	(debug_to_thread_alive, debug_to_find_new_threads): Delete.
	(setup_target_debug): Adjust.

	* gdbcore.h (core_ops): Delete declaration.

	* inf-ptrace.c, linux-nat.c, remote.c, amd64-linux-nat.c,
	inf-child.c, linux-thread-db.c, bsd-uthread.c, inf-ttrace.c,
	i386-sol2-tdep.c, darwin-nat.c, gnu-nat.c, go32-nat.c,
	hpux-thread.c, i386-linux-nat.c, i386fbsd-nat.c, monitor.c,
	nto-procfs.c, remote-m32r-sdi.c, remote-mips.c, windows-nat.c,
	alphabsd-nat.c, amd64bsd-nat.c, arm-linux-nat.c, armnbsd-nat.c,
	bsd-kvm.c, hppa-hpux-nat.c, hppa-linux-nat.c, hppabsd-nat.c,
	hppanbsd-nat.c, i386-darwin-nat.c, i386bsd-nat.c,
	ia64-linux-nat.c, m32r-linux-nat.c, m68kbsd-nat.c,
	m68klinux-nat.c, m88kbsd-nat.c, mips-linux-nat.c,
	mips64obsd-nat.c, mipsnbsd-nat.c, ppc-linux-nat.c, ppcnbsd-nat.c,
	ppcobsd-nat.c, remote-sim.c, rs6000-nat.c, s390-nat.c,
	shnbsd-nat.c, sparc-nat.c, sparc-nat.h, spu-linux-nat.c,
	vaxbsd-nat.c, xtensa-linux-nat.c: Adjust to target_ops changes.

	* gdbarch.sh (core_pid_to_str): New gdbarch callback.
	* gdbarch.h, gdbarch.c: Regenerate.

	* sol2-tdep.c: Include "inferior.h".
	(sol2_core_pid_to_str): New.
	* sol2-tdep.h (sol2_core_pid_to_str): Declare.

	* amd64-sol2-tdep.c (amd64_sol2_init_abi): Set it.
	* sparc-sol2-tdep.c (sparc32_sol2_init_abi): Set it.
	* sparc64-sol2-tdep.c (sparc64_sol2_init_abi): Set it.
	* i386-sol2-tdep.c (i386_sol2_init_abi): Set it.

2009-02-22  Doug Evans  <dje@google.com>

	* exec.c (exec_file_attach): Fix comment.

2009-02-22  Pedro Alves  <pedro@codesourcery.com>

	Silence a few -Wmissing-prototypes warnings.

	PR build/9877:
	* alpha-linux-tdep.c (alpha_linux_regset_from_core_section): Make
	it static.
	* alpha-osf1-tdep.c (_initialize_alpha_osf1_tdep): Declare.
	* amd64fbsd-tdep.c (amd64fbsd_init_abi): Make it static.
	* amd64nbsd-tdep.c (_initialize_amd64nbsd_ndep): Rename to ...
	(_initialize_amd64nbsd_tdep): ... this.
	* arm-linux-tdep.c (arm_linux_software_single_step): Make it static.
	(_initialize_arm_linux_tdep): Declare.
	* armbsd-tdep.c (armbsd_fpreg_offset): Make it static.
	* armnbsd-tdep.c (_initialize_arm_netbsd_tdep): Declare.
	* armobsd-tdep.c (_initialize_armobsd_tdep): Declare.
	* avr-tdep.c (avr_return_value): Make it static.
	(avr_frame_unwind_cache): Ditto.
	* bsd-uthread.c (bsd_uthread_inferior_created): Ditto.
	(bsd_uthread_solib_loaded): Ditto.
	(bsd_uthread_solib_unloaded): Ditto.
	(bsd_uthread_target): Ditto.
	(_initialize_bsd_uthread): Declare.
	* cris-tdep.c (crisv32_single_step_through_delay): Make it static.
	(cris_frame_unwind_cache): Ditto.
	* frv-tdep.c (frv_return_value): Ditto.
	* h8300-tdep.c (h8300_use_struct_convention): Ditto.
	(h8300h_use_struct_convention): Ditto.
	* hppa-tdep.c (hppa_sign_extend, hppa_low_hppa_sign_extend):
	Ditto.
	* hppa-tdep.h (hppa_low_sign_extend, hppa_sign_extend): Delete
	declarations.
	* hppabsd-tdep.c: Include hppabsd-tdep.h.
	(hppabsd_find_global_pointer): Make it static.
	* hppabsd-tdep.h: New.
	* hppanbsd-tdep.c: Include hppabsd-tdep.h.
	(hppabsd_init_abi): Remove declaration.
	(_initialize_hppabsd_tdep): Remove declaration.
	(_initialize_hppanbsd_tdep): Declare.
	* hppaobsd-tdep.c: Include hppabsd-tdep.h.
	(hppabsd_init_abi): Delete declaration.
	(hppaobsd_init_abi): Make it static.
	* i386-nto-tdep.c (_initialize_i386nto_tdep): Declare.
	* i386nbsd-tdep.c (_initialize_i386nbsd_tdep): Declare.
	* ia64-linux-tdep.c (_initialize_ia64_linux_tdep): Declare.
	* ia64-tdep.c (ia64_register_reggroup_p): Make it static.
	* iq2000-tdep.c (_initialize_iq2000_tdep): Declare.
	* m32c-tdep.c (m32c_register_reggroup_p): Make it static.
	(m32c_analyze_prologue, m32c_virtual_frame_pointer): Ditto.
	(_initialize_m32c_tdep): Declare.
	* m32r-rom.c (_initialize_m32r_rom): Declare.
	* m32r-tdep.c (m32r_skip_prologue): Make it static.
	(m32r_return_value): Ditto.
	* m68hc11-tdep.c (m68hc11_frame_unwind_cache): Make it static.
	(m68hc11_return_value): Ditto.
	* m68klinux-tdep.c (_initialize_m68k_linux_tdep): Declare.
	* m88k-tdep.c (m88k_frame_cache): Make it static.
	* mep-tdep.c (mep_gdb_print_insn): Ditto.
	(mep_return_value): Ditto.
	(_initialize_mep_tdep): Declare.
	* mips-irix-tdep.c (_initialize_mips_irix_tdep): Declare.
	* mips-linux-tdep.c (supply_64bit_reg): Make it static.
	(mips_linux_syscall_next_pc): Ditto.
	(_initialize_mips_linux_tdep): Declare.
	* mips-tdep.c (mips_single_step_through_delay): Make it static.
	* mipsnbsd-tdep.c (_initialize_mipsnbsd_tdep): Declare.
	* mn10300-linux-tdep.c (_initialize_mn10300_linux_tdep): Declare.
	* mn10300-tdep.c (_initialize_mn10300_tdep): Declare.
	* mt-tdep.c (_initialize_mt_tdep): Declare.
	* nbsd-tdep.c: Include nbsd-tdep.h.
	* nto-tdep.c (find_load_phdr): Make it static.
	(_initialize_nto_tdep): Declare.
	* ppc-linux-tdep.c (ppc_linux_memory_remove_breakpoint): Make it
	static.
	(_initialize_ppc_linux_tdep): Declare.
	* remote-m32r-sdi.c (m32r_can_use_hw_watchpoint)
	(m32r_insert_watchpoint, m32r_remove_watchpoint)
	(m32r_stopped_data_address, m32r_stopped_by_watchpoint): Make
	static.
	* rs6000-aix-tdep.c (_initialize_rs6000_aix_tdep): Declare.
	* rs6000-nat.c: Include xcoffread.h.
	(find_toc_address): Don't extern declare get_toc_offset.  Adjust
	to call xcoff_get_to_offset.
	* rs6000-tdep.c (ppc_vsx_support_p, ppc_displaced_step_fixup)
	(rs6000_skip_main_prologue, rs6000_in_solib_return_trampoline)
	(rs6000_skip_trampoline_code): Make static.
	* s390-tdep.c (s390_regset_from_core_section): Ditto.
	* sh-tdep.c (sh_register_reggroup_p): Ditto.
	* shnbsd-tdep.c (shnbsd_regset_from_core_section): Ditto.
	(_initialize_shnbsd_tdep): Declare.
	* solib-frv.c (displacement_from_map): Make static.
	(_initialize_frv_solib): Declare.
	* solib-irix.c (fetch_lm_info): Make static.
	(_initialize_irix_solib): Declare.
	* solib-som.c: Include solib-som.h.
	(som_solib_select): Line break.
	* sparc-tdep.c (sparc_regset_from_core_section): Make static.
	* sparcnbsd-tdep.c (_initialize_sparnbsd_tdep): Rename to ...
	(_initialize_sparcnbsd_tdep): ... this.
	* spu-tdep.c (spu_software_single_step): Make it static.
	(_initialize_spu_tdep): Declare.
	* vax-tdep.c (vax_frame_cache): Make it static.
	* xcoffread.c: Include xcoffread.h.
	(get_toc_offset): Rename to ...
	(xcoff_get_toc_offset): ... this.
	(_initialize_xcoffread): Declare.
	* xcoffread.h: New.
	* xtensa-linux-tdep.c (_initialize_xtensa_linux_tdep): Declare.
	* xtensa-tdep.c (xtensa_skip_prologue, xtensa_derive_tdep): Make
	static.
	(_initialize_xtensa_tdep): Declare.

2008-02-21  Pedro Alves  <pedro@codesorcery.com>

	Silence a few -Wmissing-prototypes warnings.

	PR build/9877:
	* amd64-nat.c: Include "amd64-nat.h".
	* fork-child.c (_initialize_fork_child): Ditto.
	* gcore.c (_initialize_gcore): Ditto.
	* inf-ptrace.c: Include "inf-ptrace.h".
	(inf_ptrace_store_registers): Make it static.
	* linux-nat.c (linux_nat_terminal_ours): Make it static.
	(_initialize_linux_nat): Declare before definition.
	* linux-tdep.c: Include "linux-tdep.h".
	* linux-thread-db.c (_initialize_thread_db): Declare before
	definition.
	* proc-service.c (_initialize_proc_service): Ditto.
	* remote.c (remote_send_printf): Make it static.
	* solib.c: Include "solib.h".
	* symfile-mem.c (_initialize_symfile_mem): Declare before
	definition.
	* ada-lang.c (ada_la_decode, ada_match_name)
	(ada_suppress_symbol_printing, ada_is_array_type)
	(ada_value_ptr_subscript, ada_array_length)
	(ada_to_static_fixed_value): Make them static.
	(_initialize_ada_language): Declare before definition.
	* ada-tasks.c (ada_get_task_number, ada_get_environment_task)
	(ada_task_list_changed, ada_new_objfile_observer): Make them
	static.
	(_initialize_tasks): Declare before definition.
	* addrmap.c (_initialize_addrmap): Declare before definition.
	* auxv.c (default_auxv_parse): Make it static.
	* bfd-target.c (target_bfd_xfer_partial, target_bfd_xclose): Make
	them static.
	* breakpoint.c (remove_sal): Add line break.
	(expand_line_sal_maybe): Make it static.
	* cp-name-parser.y: Include "cp-support.h".
	* cp-valprint.c (cp_find_class_member): Make it static.
	* eval.c (value_f90_subarray): Ditto.
	* exceptions.c (print_any_exception): Ditto.
	* findcmd.c (_initialize_mem_search): Declare before definition.
	* frame.c (frame_observer_target_changed): Make it static.
	* gnu-v3-abi.c (gnuv3_find_method_in): Make it static.
	* inf-child.c: Include "inf-child.h".
	* inferior.h (valid_inferior_id): Rename to ...
	(valid_gdb_inferior_id): ... this.
	* infrun.c (infrun_thread_stop_requested, siginfo_make_value):
	Make them static.
	* jv-lang.c (java_language_arch_info): Make it static.
	* m2-typeprint.c (m2_get_discrete_bounds): Ditto.
	* osdata.c (info_osdata_command): Make it static.
	* regcache.c (regcache_observer_target_changed): Make it static.
	* reverse.c (_initialize_reverse): Declare before definition.
	* stabsread.c (cleanup_undefined_types_noname)
	(cleanup_undefined_types_1): Make them static.
	* symfile.c (place_section): Make it static.
	* symtab.c (find_pc_sect_psymtab_closer): Make it static.
	* target-descriptions.c (_initialize_target_descriptions): Declare
	before definition.
	* target.c (default_get_ada_task_ptid, find_default_can_async_p)
	(find_default_is_async_p, find_default_supports_non_stop): Make
	them static.
	(target_supports_non_stop): Add prototype.
	(dummy_pid_to_str): Make it static.
	* utils.c (_initialize_utils): Declare before definition.
	* ada-exp.y (_initialize_ada_exp): Declare before definition.
	* solib-svr4.c (HAS_LM_DYNAMIC_FROM_LINK_MAP): Add a prototype.
	* target.h (struct target_ops): Add a prototype to the
	to_can_execute_reverse callback.
	* macroscope.c (_initialize_macroscope): Declare before definition.
	* cp-namespace.c (_initialize_cp_namespace): Declare before definition.
	* python/python.c (_initialize_python): Declare before definition.
	* tui/tui-command.c: Include "tui/tui-command.h".
	* tui/tui-data.c (init_content_element, init_win_info): Make them
	static.
	* tui/tui-disasm.c: Include "tui/tui-disasm.h".
	* tui/tui-interp.c (_initialize_tui_interp): Declare before
	definition.
	* tui/tui-layout.c: Include "tui/tui-layout.h".
	(_initialize_tui_layout): Declare before definition.
	* tui/tui-regs.c: Include "tui/tui-regs.h".
	(tui_display_reg_element_at_line): Make it static.
	(_initialize_tui_regs): Declare before definition.
	* tui/tui-stack.c (_initialize_tui_stack): Declare before
	definition.
	* tui/tui-win.c: Include "tui/tui-win.h".
	(_initialize_tui_win): Declare before definition.
	(tui_sigwinch_handler): Make it static.  Wrap in ifdef SIGWINCH.
	* tui/tui-win.h (tui_sigwinch_handler): Delete declaration.
	(tui_get_cmd_list): Add a prototype.
	* tui/tui-windata.c: Include tui-windata.h.
	* tui/tui-wingeneral.c (box_win): Make it static.
	* cli/cli-logging.c (show_logging_command): Make it static.
	(_initialize_cli_logging): Declare before definition.
	* mi/mi-common.c (_initialize_gdb_mi_common): Declare before
	definition.

2009-02-20  Pierre Muller  <muller@ics.u-strasbg.fr>

	Extend use of i386_use_watchpoints to all i386 native files
	using hardware watchpoints.
	* go32-nat.c (init_go32_ops): Call i386_use_watchpoints.
	* i386fbsd-nat.c (_initialize_i386fbsd_nat): Ditto.
	* windows-nat.c (init_windows_ops): Ditto.
	* config/i386/nm-cygwin.h: Define I386_WATCHPOINTS_IN_TARGET_VECTOR.
	* config/i386/nm-cygwin64.h: Ditto.
	* config/i386/nm-fbsd.h: Ditto.
	* config/i386/nm-go32.h: Ditto.

2009-02-19  Joel Brobecker  <brobecker@adacore.com>

	* ada-typeprint.c (ada_typedef_print): Remove.  Unused.

2009-02-18  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-interp.c (mi_solib_loaded, mi_solib_unloaded): New.
	(mi_interpreter_init): Register the above.
	* solib.c (clear_solib): Notify solib unload.
	* breakpoint.c (disable_breakpoints_in_unloaded_shlib): Do not
	disable breakpoints on a.out targets.

2009-02-17  Vladimir Prus  <vladimir@codesourcery.com>

	* observer.c (observer_test_first_notification_function)
	(observer_test_second_notification_function)
	(observer_test_third_notification_function): Adjust prototype.

2009-02-17  Pedro Alves  <pedro@codesourcery.com>

	* Makefile.in (ALL_64_TARGET_OBS): Add amd64-dicos-tdep.o.
	(ALL_TARGET_OBS): Add dicos-tdep.o.
	(ALLDEPFILES): Add amd64-dicos-tdep.c and dicos-tdep.c.
	* configure.tgt (i[34567]86-*-dicos*): Add dicos-tdep.o to
	gdb_target_obs.
	(x86_64-*-dicos*): Add dicos-tdep.o and amd64-dicos-tdep.o to
	gdb_target_obs.
	* dicos-tdep.h, dicos-tdep.c: New.
	* amd64-dicos-tdep.c: New.
	* i386-dicos-tdep.c: Don't include solib.h, solib-target.h or
	inferior.h.  Include dicos-tdep.h.
	(i386_dicos_init_abi): Call dicos_init_abi.
	(i386_dicos_bfd_has_symbol_p): Delete.
	(i386_dicos_osabi_sniffer): Use dicos_load_module_p.

	* NEWS: Mention x86-64 DICOS target support.

2009-02-16  Doug Evans  <dje@google.com>

	* amd64-tdep.c (amd64_skip_prefixes): Renamed from skip_prefixes.
	All callers updated.
	(amd64_get_insn_details): Handle more 3-byte opcode insns.
	(amd64_breakpoint_p): Delete.
	(amd64_displaced_step_fixup): When fixing up after stepping an int3,
	don't back up pc to the start of the int3.
	* i386-tdep.c: #include opcode/i386.h.
	(i386_skip_prefixes): New function.
	(i386_absolute_jmp_p): Constify argument.
	(i386_absolute_call_p,i386_ret_p,i386_call_p,i386_syscall_p): Ditto.
	(i386_breakpoint_p): Delete.
	(i386_displaced_step_fixup): Handle unnecessary or redundant prefixes.
	When fixing up after stepping an int3, don't back up pc to the start
	of the int3.

2009-02-16  Pedro Alves  <pedro@codesourcery.com>

	* corelow.c (core_close): Don't hardcode the core's pid.
	(core_open): Find core threads before calling
	post_create_inferior.
	(add_to_thread_list, get_core_register_section): Take into account
	systems where the regset section names encode the pid of the
	inferior.

	* gdbarch.sh (core_reg_section_encodes_pid): New gdbarch setting.
	* gdbarch.h, gdbarch.c: Regenerate.

	* amd64-sol2-tdep.c (amd64_sol2_init_abi): Set it.
	* i386-sol2-tdep.c (i386_sol2_init_abi): Set it.
	* sparc-sol2-tdep.c (sparc32_sol2_init_abi): Set it.
	* sparc64-sol2-tdep.c (sparc64_sol2_init_abi): Set it.

2009-02-14  Vladimir Prus  <vladimir@codesourcery.com>

	Include frame information for *stopped due to CLI commands.

	* ada-tasks.c (ada_normal_stop_observer): Adjust prototype.
	* infcmd.c (finish_command_continuation): Pass '1' for
	'print_frame' parameter to the observer.
	* infrun.c (normal_stop): Don't print mi-specific information
	here. Pass 'stop_print_frame' to the 'print_frame' parameter
	of the observer.
	* mi/mi-interp.c (mi_on_normal_stop): Adjust prototype.
	If we need to print frame, and current uiout is not the MI one,
	print frame again.

2009-02-13  Pierre Muller  <muller@ics.u-strasbg.fr>

	* xtensa-tdep.c (call0_analyze_prologue): Delete BSZ macro.
	Replace BSZ macro uses by XTENSA_ISA_BSZ macro.

2009-02-12  Jan Kratochvil  <jan.kratochvil@redhat.com>

	PR fortran/9806
	* dwarf2read.c (process_die <DW_TAG_module>, read_module)
	(scan_partial_symbols <DW_TAG_module>, add_partial_module): New.

2009-02-11  Pierre Muller  <muller@ics.u-strasbg.fr>

	* dwarf2read.c (read_base_type): Set code to TYPE_CODE_CHAR
	for DW_ATE_signed_char and DW_ATE_unsigned_char
	for pascal language.

2009-02-11  Jim Meyering  <meyering@redhat.com>
	    Jan Kratochvil  <jan.kratochvil@redhat.com>

	Avoid NULL dereference.
	* stack.c (return_command): Guard use of SYMBOL_TYPE (thisfun).
	New variable func_type.

2009-02-11  Pedro Alves  <pedro@codesourcery.com>

	* gdbarch.c: Regenerate.

2009-02-10  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-lang.c (is_pascal_string_type): Fix comment.
	Determine exact size of char elements for GPC
	strings.
	(pascal_printstr): Handle char width of 2 or 4.
	* p-valprint.c (pascal_val_print): Handle char
	of width 2 or 4.

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

	* dwarf2read.c (dwarf2_build_psymtabs_hard): Move lowpc and highpc
	inside the loop.  Only call addrmap_set_empty if the compilation unit
	had DW_AT_high_pc and DW_AT_low_pc.  Update call to
	scan_partial_symbols.
	(scan_partial_symbols): Take NEED_PC argument and pass it along with
	LOWPC and HIGHPC.
	(add_partial_namespace): Take NEED_PC argument and pass it through.
	(add_partial_subprogram): Take NEED_PC argument.  Update the addrmap
	if necessary.

2009-02-07  Pedro Alves  <pedro@codesourcery.com>

	* NEWS: Mention inspecting extra signal information, $_siginfo,
	and the qXfer:siginfo:read and qXfer:siginfo:write packets.

2009-02-07  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (PTRACE_SETSIGINFO): Define if PTRACE_GETSIGINFO
	isn't defined.

2009-02-06  Pedro Alves  <pedro@codesourcery.com>

	* amd64-linux-nat.c (compat_int_t, compat_uptr_t, compat_time_t)
	(compat_timer_t, compat_clock_t, struct compat_timeval)
	(compat_sigval_t, compat_siginfo_t): New types.
	(cpt_si_pid, cpt_si_uid, cpt_si_timerid, cpt_si_overrun)
	(cpt_si_status, cpt_si_utime, cpt_si_stime, cpt_si_ptr)
	(cpt_si_addr, cpt_si_band, cpt_si_fd): New defines.
	(compat_siginfo_from_siginfo, siginfo_from_compat_siginfo)
	(amd64_linux_siginfo_fixup): New.
	* linux-nat.c (linux_nat_siginfo_fixup): New.
	(siginfo_fixup): New.
	(linux_xfer_siginfo): Use siginfo_fixup to convert between the
	siginfo layout expected by ptrace and the siginfo layout of the
	inferior.
	(linux_nat_set_siginfo_fixup): New.
	* linux-nat.h (linux_nat_set_siginfo_fixup): Declare.

2009-02-06  Pedro Alves  <pedro@codesourcery.com>

	* target.h (enum target_object): Add new TARGET_OBJECT_SIGNAL_INFO.
	* infrun.c (siginfo_value_read, siginfo_value_write): New.
	(siginfo_value_funcs): New.
	(siginfo_make_value): New.
	(_initialize_infrun): Create the $_siginfo convenience variable.
	* gdbtypes.h (append_composite_type_field_aligned): Declare.
	* gdbtypes.c (append_composite_type_field): Rename to...
	(append_composite_type_field_aligned): ... this.  Add ALIGNMENT
	argument.  Handle it.
	(append_composite_type_field): Rewrite on top of
	append_composite_type_field_aligned.
	* value.h (internalvar_make_value): New typedef.
	(struct internalvar) <make_value>: New field.
	(create_internalvar_type_lazy): Declare.
	* value.c (create_internalvar): Clear make_value.
	(create_internalvar_type_lazy): New.
	(value_of_internalvar): If make_value is set use it.
	(preserve_values): Skip internal variables that don't have a
	value.
	* gdbarch.sh (get_siginfo_type): New.
	* gdbarch.h, gdbarch.c: Regenerate.

	* linux-tdep.h, linux-tdep.c: New.
	* amd64-linux-tdep.c: Include "linux-tdep.h".
	(amd64_linux_init_abi): Register linux_get_siginfo_type and
	linux_get_siginfo_mapper.
	* i386-linux-tdep.c: Include "linux-tdep.h".
	(i386_linux_init_abi): Register linux_get_siginfo_type and
	linux_get_siginfo_mapper.
	* arm-linux-tdep.c: Include "linux-tdep.h".
	(i386_linux_init_abi): Register linux_get_siginfo_type and
	linux_get_siginfo_mapper.

	* linux-nat.c (linux_xfer_siginfo): New.
	(linux_nat_xfer_partial): Handle TARGET_OBJECT_SIGNAL_INFO.
	* remote.c (PACKET_qXfer_siginfo_read)
	(PACKET_qXfer_siginfo_write): New.
	(feature remote_protocol_features): Add "qXfer:siginfo:read" and
	"qXfer:siginfo:write" features.
	(remote_xfer_partial): Handle TARGET_OBJECT_SIGNAL_INFO.
	(_initialize_remote): Add "set/show remote read-siginfo-object"
	and "set/show remote write-siginfo-object" commands.

	* Makefile.in (ALL_TARGET_OBS): Add linux-tdep.o.
	(HFILES_NO_SRCDIR): Add linux-tdep.h.
	(ALLDEPFILES): Add linux-tdep.c.

	* configure.tgt (arm*-*-linux* | arm*-*-uclinux*)
	(i[34567]86-*-linux*, x86_64-*-linux*): Add linux-tdep.o to
	gdb_target_obs.

2009-02-06  Jim Blandy  <jimb@codesourcery.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>
	    Vladimir Prus  <vladimir@codesourcery.com>
	    Pedro Alves  <pedro@codesourcery.com>

	* defs.h (enum lval_type): New value: lval_computed.
	* value.h (struct lval_funcs): New type.
	(allocate_computed_value, value_computed_funcs)
	(value_computed_closure): New declarations.
	* value.c (struct value): Add a structure to the location union
	for computed lvalues, containing 'funcs' and 'closure' members.
	(allocate_computed_value, value_computed_funcs)
	(value_computed_closure): New functions.
	(value_free): For computed lvalues, call the closure's
	'free_closure' function before freeing the value itself.
	(value_copy): If we're copying an lval_computed value, call the
	closure's 'copy_closure' function.
	(set_value_component_location): If the original value is a
	computed lvalue, then call the closure's 'copy_closure' function.
	(value_of_internalvar): If an internal variable's value is a
	computed lvalue, make retrieving its value produce an equivalent
	computed lvalue.
	* valops.c (value_fetch_lazy): Unlazy computed lvalues by calling
	their read function.
	(value_assign): Assign to computed lvalues by calling their write
	function.

2009-02-06  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (linux_nat_wait): Adjust.
	(linux_nat_pid_to_str): Adjust.  Remove call to thread_db_init.
	* linux-nat.h (thread_db_init): Delete declaration.
	* linux-thread-db.c (target_beneath): Delete.
	(thread_db_init): Delete.
	(thread_db_detach): Use find_target_beneath.
	(thread_db_wait): Adjust interface.  Use find_target_beneath.
	(thread_db_mourn_inferior): Use find_target_beneath.
	(thread_db_can_async_p, thread_db_is_async_p, thread_db_async)
	(thread_db_async_mask): Delete.
	(thread_db_pid_to_str): Adjust interface.  Use
	find_target_beneath.
	(thread_db_get_thread_local_address): Adjust interface.  Use
	find_target_beneath.
	(init_thread_db_ops): Delete references to delete functions.
	* target.c (update_current_target): Don't inherit or default
	to_wait.  Don't inherit to_pid_to_str and
	to_get_thread_local_address.
	(target_translate_tls_address): Look for a pushed target that
	implements to_get_thread_local_address, and use it instead of
	checking for target_get_thread_local_address_p.
	(target_wait, target_pid_to_str): Reimplement as functions.
	(dummy_pid_to_str): New.
	(init_dummy_target): Register it.
	(debug_to_wait): Delete.
	* target.h (struct target_ops): Make to_wait, to_pid_to_str and
	to_get_thread_local_address accept a pointer to struct target_ops.
	(target_wait): Delete macro, and declare as function.
	(target_pid_to_str): Likewise.
	(target_get_thread_local_address)
	(target_get_thread_local_address_p): Delete.
	(noprocess): Add NORETURN and ATTR_NORETURN tags.
	* inf-ptrace.c (inf_ptrace_wait): Adjust.
	(inf_ptrace_pid_to_str): New.
	(inf_ptrace_target): Use inf_ptrace_pid_to_str.
	* aix-thread.c (aix_thread_wait, aix_thread_pid_to_str): Adjust.
	* bsd-kvm.c (bsd_kvm_pid_to_str): Adjust.
	* bsd-uthread.c (bsd_uthread_wait, bsd_uthread_pid_to_str):
	Adjust.
	* corelow.c (core_pid_to_str): Adjust.
	* darwin-nat.c (darwin_wait, darwin_pid_to_str): Adjust.
	* dec-thread.c (dec_thread_wait, dec_thread_pid_to_str): Adjust.
	* gnu-nat.c (gnu_wait, gnu_pid_to_str): Adjust.
	* go32-nat.c (go32_wait, go32_pid_to_str): Adjust.
	* hpux-thread.c (hpux_thread_wait): Adjust.
	* inf-ttrace.c (inf_ttrace_wait, inf_ttrace_pid_to_str): Adjust.
	* monitor.c (monitor_wait, monitor_pid_to_str): Adjust.
	* nto-procfs.c (procfs_wait, procfs_pid_to_str): Adjust.
	* procfs.c (procfs_pid_to_str): Adjust.
	* remote-m32r-sdi.c (m32r_wait, m32r_pid_to_str): Adjust.
	* remote-mips.c (mips_wait): Adjust.
	* remote-sim.c (gdbsim_wait, gdbsim_pid_to_str): Adjust.
	* remote.c (remote_wait, remote_pid_to_str)
	(remote_get_thread_local_address): Adjust.
	* rs6000-nat.c (rs6000_wait): Adjust.
	* sol-thread.c (procfs_pid_to_str): Adjust declaration.
	(sol_thread_wait, solaris_pid_to_str): Adjust.
	* spu-linux-nat.c (spu_child_wait): Adjust.
	* windows-nat.c (windows_wait, windows_pid_to_str): Adjust.

2009-02-06  Tom Tromey  <tromey@redhat.com>

	* Makefile.in (SUBDIR_PYTHON_OBS): Add python-cmd.o.
	(SUBDIR_PYTHON_SRCS): Add python-cmd.c.
	(python-cmd.o): New target.
	* cli/cli-decode.c (set_cmd_completer): Add self parameter to
	completer prototype.
	(add_cmd): Initialize destroyer member of cmd_list_element. Use
	make_symbol_completion_list_fn as completer.
	(delete_cmd): Call destroyer if one is set.
	* cli/cli-decode.h (cmd_list_element): Add cmd parameter to
	completer member.  Add destroyer member.
	(set_cmd_completer): Add self parameter to
	completer prototype.
	* command.h (set_cmd_completer): Add cmd parameter to
	completer prototype.
	* completer.c (noop_completer, filename_completer,
	location_completer, expression_completer, command_completer): Adapt
	to new completer prototype.
	(complete_line_internal): Pass new parameter to completer function.
	* completer.h (noop_completer, filename_completer,
	location_completer, expression_completer, command_completer): Adapt
	prototypes to new completer prototype.
	* interps.c (interpreter_completer): Adapt to new completer
	prototype.
	* python/python-cmd.c: New file.
	* python/python-internal.h (gdbpy_initialize_commands): Add
	prototype.
	(gdbpy_doc_cst): Add forward declaration.
	* python/python.c (gdbpy_doc_cst): Declare.
	(_initialize_python): Call gdbpy_initialize_commands.  Initialize
	gdbpy_doc_cst.
	* symtab.c (make_symbol_completion_list_fn): New function.
	* symtab.h (make_symbol_completion_list_fn): Add prototype.

2009-02-06  Pedro Alves  <pedro@codesourcery.com>

	* target.c (target_get_osdata): Check for equal or higher than
	process_stratum, not dummy_stratum.

2009-02-06  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (extended_remote_can_run): Delete.
	(init_remote_ops): Don't register it.
	* target.c (target_get_osdata): Don't check for target_can_run.
	Instead any target that has already been pushed, otherwise
	fallback to the default run target.

2009-02-06  Pedro Alves  <pedro@codesourcery.com>

	* target.c (target_create_inferior, target_detach)
	(target_mourn_inferior, target_attach, target_close): Do target
	debug output.
	(debug_to_attach, debug_to_detach, debug_to_create_inferior)
	(debug_to_mourn_inferior, debug_to_close): Delete.
	(setup_target_debug): Adjust.

2009-02-05  Pedro Alves  <pedro@codesourcery.com>

	* target.h (target_stopped_data_address_p): Delete declaration,
	and don't define as macro.
	* target.c (target_stopped_data_address_p): Delete.

2009-02-05  Thiago Jung Bauermann  <bauerman@br.ibm.com>
	    Tom Tromey  <tromey@redhat.com>

	* python/python-utils.c (target_string_to_unicode): New function.
	* python/python-internal.h (target_string_to_unicode): New prototype.
	* python/python-value.c (valpy_string): New function.
	(value_object_methods): Add `string' entry.

2009-02-05  Pedro Alves  <pedro@codesourcery.com>

	* target.h (target_tid_to_str): Delete.
	* thread.c (print_thread_info, thread_apply_all_command)
	(thread_apply_command, thread_command, do_captured_thread_select):
	Use target_pid_to_str instead of target_tid_to_str.
	* linux-fork.c (delete_fork_command): Likewise.

2009-02-05  Pedro Alves  <pedro@codesourcery.com>

	* frame.c (has_stack_frames): Make public.
	(get_prev_frame): Don't allow a NULL this_frame anymore.
	* frame.h (has_stack_frames): Declare.
	* varobj.c (find_frame_addr_in_frame_chain): Don't ever pass NULL
	to get_prev_frame, instead start at get_current_frame.
	(varobj_create): Check has_stack_frames before getting any frame;
	eliminate one usage of deprecated_safe_get_selected_frame.

2009-02-05  Tom Tromey  <tromey@redhat.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* python/python.c (GdbMethods): Move to bottom of file.
	(get_parameter, execute_gdb_command, gdbpy_write,
	gdbpy_flush): Remove forward declarations.
	(eval_python_from_control_command): Fix error checking of function
	PyRun_SimpleString.  Fix error string.
	(python_command): Likewise.
	(execute_gdb_command): Added from_tty argument.

2009-02-05  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* language.h (language_dfn): Add la_get_string member.
	(LA_GET_STRING): New macro.
	(default_get_string): New prototype.
	* language.c (default_get_string): New function.
	(unknown_language_defn, auto_language_defn, local_language_defn): Use
	default_get_string for la_get_string.
	* c-lang.c (c_get_string): New function.
	(c_language_defn, cplus_language_defn, asm_language_defn): Use
	c_get_string for la_get_string.
	(minimal_language_defn): Likewise
	* ada-lang.c (ada_language_defn): Likewise.
	* f-lang.c (f_language_defn): Use default_get_string for
	la_get_string.
	* jv-lang.c (java_language_defn): Likewise.
	* m2-lang.c (m2_language_defn): Likewise.
	* objc-lang.c (objc_language_defn): Likewise.
	* p-lang.c (p_language_defn): Likewise.
	* scm-lang.c (scm_language_defn): Likewise.
	* typeprint.c (type_to_string): New function.
	* value.h (type_to_string): New prototype.
	* valprint.c (val_print_string): Factor out code for reading string
	from the inferior into its own function.  Put 2 spaces after period
	in comments.
	(read_string): New function.
	* valprint.h (read_string): New prototype.

2009-01-07  Pierre Muller  <muller@ics.u-strasbg.fr>
	    Tom Tromey  <tromey@redhat.com>

	PR breakpoints/8079:
	* breakpoint.c (print_one_breakpoint): Use exp_string field
	to display expression of watchpoints.
	(mention): Likewise.
	(watch_command_1): Remove trailing whitespace from expression.
	* printcmd.c (struct display) <exp_string>: New field.
	(display_command): Set exp_string.
	(free_display): Free exp_string.
	(clear_displays): Use free_display.
	(do_one_display): Print exp_string.
	(display_info): Likewise.

2009-02-04  Tom Tromey  <tromey@redhat.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>
	    Phil Muldoon  <pmuldoon@redhat.com>

	* python/python-internal.h (gdbpy_get_value_from_history): Rename
	prototype to gdbpy_history.
	(gdbpy_is_string): Declare.
	(python_string_to_host_string): Declare.
	* python/python-utils.c (gdbpy_is_string): New function.
	(unicode_to_encoded_string): New function.
	(unicode_to_target_string): Use it.
	(python_string_to_host_string): New function.
	* python/python-value.c (valpy_address): New function.
	(convert_value_from_python): Use gdbpy_is_string.  Change to throw
	Python exception instead of a GDB exception on error.  Properly check
	Python booleans.
	(valpy_getitem): Convert field name to host string.  Handle array
	accesses.  Adapt to new behaviour of convert_value_from_python.
	(valpy_new): Adapt to new behaviour of convert_value_from_python.
	(enum valpy_opcode) <VALPY_LSH, VALPY_RSH, VALPY_BITAND,
	VALPY_BITXOR, VALPY_BITOR>: New constants.
	(valpy_binop): Update.  Adapt to new behaviour of
	convert_value_from_python.
	(valpy_invert): New function.
	(valpy_lsh): Likewise.
	(valpy_rsh): Likewise.
	(valpy_and): Likewise.
	(valpy_or): Likewise.
	(valpy_xor): Likewise.
	(valpy_richcompare): Call convert_value_from_python instead of doing
	conversions itself.
	(is_intlike, valpy_int, valpy_long, valpy_float): New functions.
	(gdbpy_get_value_from_history): Rename
	function to gdbpy_history.
	(gdbpy_initialize_values): Don't set tp_new.
	(value_object_type): Add valpy_new.
	(value_object_methods): Add `address' entry.
	(value_object_as_number): Update for new methods.
	* python/python.c (GdbMethods): Rename entry from
	`get_value_from_history' to `history'.

2009-02-04  Jerome Guitton  <guitton@adacore.com>

	* ada-lang.c (ada_template_to_fixed_record_type_1): Check size
	of type to guard against a crash.

2009-02-04  Jerome Guitton  <guitton@adacore.com>

	* value.c (value_from_contents_and_address): Always return
	a lval_memory value, even if address is null.

2009-02-04  Tristan Gingold  <gingold@adacore.com>

	* i386-darwin-tdep.c (i386_darwin_sigcontext_addr): New function.
	(amd64_darwin_sigcontext_addr): Ditto.
	(darwin_dwarf_signal_frame_p): Ditto.
	(i386_darwin_init_abi): Handle signal frames, use the const for
	sc_num_regs.
	(x86_darwin_init_abi_64): Ditto.

2009-02-04  Tristan Gingold  <gingold@adacore.com>

	* i386-tdep.c (i386_sigtramp_p): Make it public.
	* i386-tdep.h (i386_sigtramp_p): Declare.

2009-02-04  Tristan Gingold  <gingold@adacore.com>

	* machoread.c (macho_symfile_read): Read minsymtab also from
	shared libraries.
	(macho_symfile_read): Try to read dwarf2 frame info from main
	object file, but not from OSO files.
	(macho_symfile_offsets): Update section names for latest BFD
	changes.
	* i386-darwin-tdep.c (i386_darwin_init_abi): Call set_solib_ops.
	(x86_darwin_init_abi_64): Ditto.
	* solib-darwin.c: New file.
	* solib-darwin.h: New file.
	* configure.tgt: Add solib.o solib-darwin.o for Darwin.

2009-02-04  Tristan Gingold  <gingold@adacore.com>

	* solist.h (struct target_so_ops): Comment fallback behavior for
	operation same.

2009-02-03  Tom Tromey  <tromey@redhat.com>

	* completer.c (add_struct_fields): Check type_name against NULL
	before use.

2009-02-03  Joel Brobecker  <brobecker@adacore.com>

	* MAINTAINERS: Update Elena's email address.

2009-02-02  Joel Brobecker  <brobecker@adacore.com>

	* breakpoint (update_watchpoint): Minor comment adjustment.

2009-02-02  Tom Tromey  <tromey@redhat.com>

	PR gdb/9594:
	* completer.c (count_struct_fields): Count method names.
	(add_struct_fields): Add matching method names.

2009-02-02  Doug Evans  <dje@google.com>

	* configure.ac (gdbkt): Check both no_tcl/no_tk first, before
	doing any further tcl/tk configury.  Don't configure gdbtk if
	tcl or tk check fails.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.

2009-02-02  Tom Tromey  <tromey@redhat.com>

	PR exp/9059:
	* valops.c (find_overload_match): Follow typedefs before taking
	address of object argument.

2009-02-01  Doug Evans  <dje@google.com>

	* target.h (target_waitstatus_to_string): Declare.
	* target.c (target_waitstatus_to_string): New function.  Copied from
	debug_to_wait.  Add missing entries for TARGET_WAITKIND_SYSCALL_ENTRY,
	TARGET_WAITKIND_SYSCALL_RETURN, TARGET_WAITKIND_IGNORE,
	TARGET_WAITKIND_NO_HISTORY.
	(debug_to_wait): Call it.
	* infrun.c (wait_for_inferior): If debug_infrun, print result of
	target_wait.
	(fetch_inferior_event): Ditto.

2009-01-30  Tom Tromey  <tromey@redhat.com>

	* Makefile.in (HFILES_NO_SRCDIR): Remove i386-cygwin-tdep.h.

2009-01-30  Vladimir Prus  <vladimir@codesourcery.com>

	PR 8145.
	* thread.c (do_captured_list_thread_ids): Report the current
	thread id.

2009-01-30  Vladimir Prus  <vladimir@codesourcery.com>

	* breakpoint.c (create_breakpoint, create_breakpoints)
	(break_command_really, set_breakpoint): New parameter enabled.
	(create_breakpoint, break_command_really): Make breakpoint
	disabled if so requested.
	* breakpoint.h (set_breakpoint): New parameter enabled.
	* mi/mi-cmd-break.c (mi_cmd_break_insert): Handle the -d option.

2009-01-28  Doug Evans  <dje@google.com>

	* amd64-tdep.h (amd64_displaced_step_copy_insn): Declare.
	(amd64_displaced_step_fixup): Declare.
	* amd64-tdep.c: #include opcode/i386.h, dis-asm.h.
	(amd64_arch_regmap): Move out of amd64_analyze_stack_align
	and make static global.
	(amd64_arch_regmap_len): New static global.
	(amd64_arch_reg_to_regnum): New function.
	(struct amd64_insn): New struct.
	(struct displaced_step_closure): New struct.
	(onebyte_has_modrm,twobyte_has_modrm): New static globals.
	(rex_prefix_p,skip_prefixes)
	(amd64_insn_length_fprintf,amd64_insn_length_init_dis)
	(amd64_insn_length,amd64_get_unused_input_int_reg)
	(amd64_get_insn_details,fixup_riprel,fixup_displaced_copy)
	(amd64_displaced_step_copy_insn)
	(amd64_absolute_jmp_p,amd64_absolute_call_p,amd64_ret_p)
	(amd64_call_p,amd64_breakpoint_p,amd64_syscall_p)
	(amd64_displaced_step_fixup): New functions.
	* amd64-linux-tdep.c: #include arch-utils.h.
	(amd64_linux_init_abi): Install displaced stepping support.

2009-01-28  Daniel Jacobowitz  <dan@codesourcery.com>
	    Jerome Guitton  <guitton@adacore.com>

	* configure, config.in: Regenerated.
	* configure.ac: Add --with-system-gdbinit.
	* main.c (get_init_files): New.
	(captured_main): Use get_init_files.  Load system gdbinit before
	$HOME/.gdbinit.
	(print_gdb_help): Print location of init files.

2009-01-28  Pedro Alves  <pedro@codesourcery.com>

	* corefile.c (generic_search): Delete disabled code.
	* gdbcore.h (generic_search): Delete declaration.

2009-01-26  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (linux_child_follow_fork): Copy attach_flag from the
	parent to the child.
	* inf-ttrace.c (inf_ttrace_follow_fork): Likewise.
	* inf-ptrace.c (inf_ptrace_follow_fork): Likewise.  Use
	remove_breakpoints to remove breakpoints from the parent.

2009-01-26  Pedro Alves  <pedro@codesourcery.com>

	PR backtrace/9458, PR backtrace/8864:
	* frame.c (create_new_frame): Update the frame's cached PC before
	finding its unwinder.  Use frame_id_build to build the new frame's
	id.
	* stack.c (parse_frame_specification_1): Correct setting ``addrs''
	array values from the ``args'' array values.

2009-01-26  Pedro Alves  <pedro@codesourcery.com>

	* gdbtypes.c (alloc_type, alloc_type_instance, create_range_type)
	(create_array_type, create_set_type, init_flags_type)
	(copy_type_recursive): Replace pairs of calls to XALLOC and memset
	with a call to XZALLOC or XCALLOC, and pairs of calls to
	obstack_alloc and memset with a call to OBSTACK_ZALLOC.

2009-01-26  Pedro Alves  <pedro@codesourcery.com>

	Add "maint set|show internal-error|internal-warning quit|corefile
	ask|yes|no" commands.

	PR gdb/7580:
	* utils.c (internal_problem_ask, internal_problem_yes)
	(internal_problem_no, internal_problem_modes): New.
	(struct internal_problem): Remove FIXME.  Make should_quit and
	should_dump_core types to char *.
	(internal_vproblem, internal_error_problem)
	(internal_warning_problem): Adjust.
	(set_internal_problem_cmd, show_internal_problem_cmd): New dummy
	functions.
	(add_internal_problem_command): New.
	(_initialize_utils): New.

2009-01-25  Pedro Alves  <pedro@codesourcery.com>

	* infcmd.c (program_info): Use paddress instead of casting stop_pc
	to unsigned long.

2009-01-24  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (normal_stop): Don't call
	deprecated_update_frame_pc_hack.
	* frame.c (deprecated_update_frame_pc_hack)
	(deprecated_update_frame_base_hack): Delete, and ...
	(create_new_frame): ... inline here.
	* frame.h (deprecated_update_frame_pc_hack)
	(deprecated_update_frame_base_hack): Delete declarations.

2009-01-23  Pedro Alves  <pedro@codesourcery.com>

	* cli/cli-decode.c (add_setshow_zuinteger_cmd): New.
	* cli/cli-setshow.c (do_setshow_command): Handle it.
	* command.h (enum var_types): Add var_zuinteger.
	(add_setshow_zuinteger_cmd): Declare.

	* valprint.c (_initialize_valprint): Change the set input-radix
	and set output-radix commands to zuinteger type.

2009-01-23  Pedro Alves  <pedro@codesourcery.com>

	PR gdb/9664:
	* infrun.c (normal_stop): Tag threads as stopped, and run the
	hook-stop before printing the stack frame.

2009-01-22  Pedro Alves  <pedro@codesourcery.com>

	PR c++/9631:
	* gnu-v3-abi.c (gnuv3_baseclass_offset): Call check_typedef on
	vbasetype.

2009-01-20  Kazu Hirata  <kazu@codesourcery.com>

	* gdb/procfs.c (info_mappings_callback): Cast map->pr_size to
	unsigned long.

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

	PR gdb/9346
	* infcmd.c (signal_command): Do not specify a resume PC.

2009-01-19  Doug Evans  <dje@google.com>

	* dummy-frame.c (dummy_frame): Replace regcache member with
	caller_state.
	(dummy_frame_push): Replace caller_regcache arg with caller_state.
	All callers updated.
	(remove_dummy_frame,pop_dummy_frame,lookup_dummy_frame): New fns.
	(dummy_frame_pop): Rewrite.  Verify requested frame is in the
	dummy frame stack.  Restore program state.
	(cleanup_dummy_frames): Rewrite.
	(dummy_frame_sniffer): Update.  Make static.
	* dummy-frame.h (regcache,frame_info): Delete forward decls.
	(inferior_thread_state): New forward decl.
	(dummy_frame_push): Update prototype.
	* frame.c (frame_pop): dummy_frame_pop now does all the work for
	DUMMY_FRAMEs.
	* infcall.c (breakpoint_auto_delete_contents): Delete.
	(get_function_name,run_inferior_call): New fns.
	(call_function_by_hand): Simplify by moving some code to
	get_function_name, run_inferior_call.  Inferior function call wrapped
	in TRY_CATCH so there's less need for cleanups and all exits from
	proceed are handled similarily.  Detect program exit.
	Detect program stopping in a different thread.
	Make error messages more consistent.
	* inferior.h (inferior_thread_state): Declare (opaque type).
	(save_inferior_thread_state,restore_inferior_thread_state,
	make_cleanup_restore_inferior_thread_state,
	discard_inferior_thread_state, get_inferior_thread_state_regcache):
	Declare.
	(save_inferior_status): Update prototype.
	* infrun.c: (normal_stop): When stopped for the completion of an
	inferior function call, verify the expected stack frame kind.
	(inferior_thread_state): New struct.
	(save_inferior_thread_state,restore_inferior_thread_state,
	do_restore_inferior_thread_state_cleanup,
	make_cleanup_restore_inferior_thread_state,
	discard_inferior_thread_state,
	get_inferior_thread_state_regcache): New functions.
	(inferior_status): Move stop_signal, stop_pc, registers to
	inferior_thread_state.  Remove restore_stack_info.
	(save_inferior_status): Remove arg restore_stack_info.
	All callers updated.  Remove saving of state now saved by
	save_inferior_thread_state.
	(restore_inferior_status): Remove restoration of state now done by
	restore_inferior_thread_state.
	(discard_inferior_status): Remove freeing of registers, now done by
	discard_inferior_thread_state.

2009-01-18  Pedro Alves  <pedro@codesourcery.com>

	* tui/tui-disasm.c (tui_vertical_disassem_scroll): Scroll one line
	at a time, times NUM_TO_SCROLL.
	* tui/tui-winsource.c (tui_horizontal_source_scroll): Don't try to
	fetch the selected frame if there is no stack.

2009-01-18  Pedro Alves  <pedro@codesourcery.com>

	PR gdb/9747:
	* gdbthread.h (finish_thread_state, finish_thread_state_cleanup):
	Declare.
	* thread.c (finish_thread_state, finish_thread_state_cleanup): New.
	* infrun.c (wait_for_inferior, fetch_inferior_event): If an error
	is thrown while handling an event, finish the thread state.
	(normal_stop): Use finish_thread_state cleanup.
	* infcmd.c (run_command_1): If an error is thrown while starting
	the inferior, finish the thread state.

2009-01-18  Pedro Alves  <pedro@codesourcery.com>

	* tui/tui-winsource.c (tui_update_breakpoint_info): In asm layout,
	skip breakpoints without a location (pending breakpoints).

2009-01-18  Pedro Alves  <pedro@codesourcery.com>

	PR build/9186:
	* hppa-hpux-tdep.c (hppa_hpux_write_pc): Remove 'return'.

2009-01-18  Nick Roberts  <nickrob@snap.net.nz>

	* thread.c (thread_command): Move call to annotate_thread_changed
	to...
	(do_captured_thread_select): ... here, to avoid printing an
	annotation if the thread change generates an exception.

2009-01-16  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Document x86_64/MinGW as a new native configuration.

2009-01-16  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Move the documentation of "info os processes" to
	the appropriate section (documenting the new commands).

2009-01-15  Doug Evans  <dje@google.com>

	* target.h (target_signal_to_string): Make return type const char *.
	(target_signal_to_name): Ditto.
	(target_signal_from_name): Make arg const char *.
	* infrun.c (sig_print_info): Update.
	* signals/signals.c (signals): Make array and struct members const.
	(target_signal_to_string): Make return type const char *.
	(target_signal_to_name): Ditto.
	(target_signal_from_name): Make arg const char *.

2009-01-15  Ulrich Weigand  <uweigand@de.ibm.com>
	    Tristan Gingold  <gingold@adacore.com>

	* solist.h (struct target_so_ops): New member bfd_open.
	(solib_find): Add prototype.
	(solib_bfd_fopen): Add prototype.
	* solib.c (solib_find, solib_bfd_fopen): New functions, extracted
	from solib_bfd_open.
	(solib_bfd_open): Use ops->bfd_open override if present.  Call
	solib_find and solib_bfd_open otherwise.

	* objfiles.h (OBJF_KEEPBFD): New define.
	* objfiles.c (free_objfile): Do not close BFD if OBJF_KEEPBFD
	objfile flag is set.
	* solib.c (symbol_add_stub): Do not allocate second BFD for
	shared library; use OBJF_KEEPBFD flag on solib objfile.

2009-01-15  Ulrich Weigand  <uweigand@de.ibm.com>

	* frame.c (get_frame_arch): Abort if called with NULL this_frame.

2009-01-15  Ulrich Weigand  <uweigand@de.ibm.com>

	* value.h (address_of_variable): Add prototype.
	(locate_var_value): Remove prototype.

	* findvar.c (read_var_value): Do not attempt to default frame
	to selected frame.
	(locate_var_value): Remove function.
	* valops.c (value_of_variable): Retrieve selected frame for
	symbols that require a frame when called with NULL block.
	* valops.c (address_of_variable): New function.

	* eval.c (evaluate_subexp_for_address): Call address_of_variable
	instead of calling locate_var_value.
	(evaluate_subexp_with_coercion): Likewise.

2009-01-14  Daniel Jacobowitz  <dan@codesourcery.com>

	* NEWS: Document "define" for prefixed commands.
	* cli/cli-cmds.c (show_user): Update calls to show_user_1.  Call
	show_user_1 for prefix commands.
	* cli/cli-decode.c (help_cmd_list): Recurse for "help user-defined".
	* cli/cli-script.c (validate_comname): Rewrite to handle prefix
	commands.  Return the containing command list.
	(define_command, document_command): Update to handle prefix commands.
	(show_user_1): Add prefix and name arguments.  Handle prefix
	commands.
	* cli/cli-script.h (show_user_1): Update prototype.

2009-01-14  Kai Tietz  <kai.tietz@onevision.com>

	* ser-mingw.c (console_select_thread): Add return to make
	compiler happy.
	(pipe_select_thread): Likewise.
	(file_select_thread): Likewise.

2009-01-14  Pedro Alves  <pedro@codesourcery.com>

	* mi/mi-main.c (mi_cmd_execute): Clean up parenthesis mess from
	previous change.

2009-01-14  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (extended_remote_mourn_1): Invalidate our notion of
	current general thread.

2009-01-14  Pedro Alves  <pedro@codesourcery.com>

	* mi/mi-main.c (mi_cmd_execute): Also allow -list-thread-groups
	without a live selected thread.

2009-01-14  Joel Brobecker  <brobecker@adacore.com>

	Update the copyright notice of some of the files I missed
	in the previous copyright update.

2009-01-14  Joel Brobecker  <brobecker@adacore.com>

	* windows-nat.c (handle_unload_dll): Use %p to print the DLL
	base address instead of casting it to DWORD.

2009-01-13  Ulrich Weigand  <uweigand@de.ibm.com>

	* dwarf2loc.c (dwarf2_evaluate_loc_desc): Do not call get_frame_arch
	for NULL frame pointers.

2009-01-13  Mark Kettenis  <kettenis@gnu.org>

	* utils.c (host_address_to_string): Reimplement in a way that
	avoids the cast of the address to long.

2009-01-13  Joel Brobecker  <brobecker@adacore.com>

	* mdebugread.c (parse_symbol): Save the symbol private data
	using SYMBOL_VALUE_BYTES instead of SYMBOL_VALUE.
	(psymtab_to_symtab_1): Likewise.
	(parse_procedure): Declare variable "e" only in the scope
	where it is used. Extract the symbol private data using
	SYMBOL_VALUE_BYTES.

2009-01-13  Jim Blandy  <jimb@codesourcery.com>

	Abstract out common code for copying value locations.

	* value.h (set_value_component_location): New declaration.
	* value.c (set_value_component_location): New function.
	(value_primitive_field): Use it.
	* valarith.c (value_subscript, value_subscripted_rvalue): Same.
	* valops.c (search_struct_field, value_slice): Same.
	* ada-lang.c (coerce_unspec_val_to_type)
	(ada_value_primitive_packed_val): Same.

2009-01-13  Joel Brobecker  <brobecker@adacore.com>

	* MAINTAINERS (GLOBAL MAINTAINERS): Add Tom Tromey.

2009-01-12  Christopher Faylor  <me+cygwin@cgf.cx>

	* amd64-windows-nat.c Rename gdb-specific win32_* to windows_*
	throughout.
	* i386-cygwin-tdep.c: Ditto.
	* i386-windows-nat.c: Ditto.
	* windows-nat.h: Ditto.
	* windows-tdep.c: Ditto.
	* windows-tdep.h: Ditto.
	* windows-nat.c: Ditto.
	(cygwin_load_start): Redefine as CORE_ADDR.
	(cygwin_load_end): Ditto.
	(windows_make_so): Coerce result of address arithmetic to uintptr_t
	before coercing to CORE_ADDR to avoid a compiler warning.
	(handle_exception): Define addr as CORE_ADDR and coerce
	ExceptionAddress to uintptr_t before assigining to avoid a compiler
	warning.
	* config/djgpp/fnchange.lst: Add mappings for recently renamed windows
	files.

2009-01-11  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix linking with --enable-targets=all:
	* Makefile.in (ALL_TARGET_OBS): Add windows-tdep.o.
	(HFILES_NO_SRCDIR): Add windows-tdep.h.
	(ALLDEPFILES): Add windows-tdep.c.

2009-01-11  Chris Faylor  <me.gdb@cgf.cx>

	* win32-nat.h: Delete.
	* windows-nat.h: Rename from win32-nat.h.
	* win32-nat.c: Delete.
	* windows-nat.c: Rename from win32-nat.c.
	* win32-termcap.c: Delete.
	* windows-termcap.c: Rename from win32-termcap.c.
	* amd64-windows-nat.c: Handle rename from win32-nat.h -> windows-nat.h.
	* configure.ac: Handle rename from win32-termcap.c ->
	windows-termcap.c.
	* configure: Regenerate.
	* gdb_curses.h: Change comment to reflect rename from win32-termcap.c
	-> windows-termcap.c.
	* i386-cygwin-tdep.c: Handle rename from win32-tdep.h ->
	windows-tdep.h.
	* i386-windows-nat.c: Refect rename from win32-nat.h -> windows-nat.h.
	* windows-nat.c: Ditto.  Also reflect rename from from win32-tdep.h ->
	windows-tdep.h.
	(win32_make_so): Handle cygwin compiler warning due to change of
	load_addr from DWORD to LPVOID.
	(handle_load_dll): Use %p in format string to properly print address
	and avoid a compiler warning.
	(DEBUG_EXCEPTION_SIMPLE): Ditto.
	(handle_exception): Ditto.
	* windows-tdep.c: Handle rename from win32-tdep.h -> windows-tdep.h.
	* config/i386/cygwin.mh: Handle rename from win32-nat.o ->
	windows-nat.o.
	* config/i386/mingw.mh: Ditto.
	* config/i386/mingw64.mh: Ditto.

2009-01-11  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* f-typeprint.c (f_type_print_varspec_suffix): Convert the autovariable
	arrayprint_recurse_level to a parameter.  Update all the callers.  New
	comment at autovariables.

2009-01-11  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* gdbtypes.c (make_qualified_type, replace_type): Reformat to the GNU
	coding style.

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

	* target.c (target_xfer_partial): Use host_address_to_string to
	print the address of readbuf and writebuf. Cast the address of
	elements inside the myaddr buffer into intptr_t.
	(deprecated_debug_xfer_memory): Use paddress to print memaddr.
	Cast the address of elements inside the myaddr buffer into
	intptr_t.

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

	* amd64-windows-nat.c, amd64-windows-tdep.c: New files.
	* config/i386/mingw64.mh, config/i386/nm-cygwin64.h: New files.
	* configure.host, configure.tgt: Add handling for x86_64/windows.
	* config/djgpp/fnchange.lst: Add entries for amd64-windows-nat.c
	and amd64-windows-tdep.c.

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

	* win32-tdep.h, win32-tdep.c: New files.
	* i386-cygwin-tdep.h: Delete.
	* i386-cygwin-tdep.c: Include win32-tdep.h instead of
	i386-cygwin-tdep.h.
	(win32_xfer_shared_library): Delete.  Moved to win32-tdep.c.
	* win32-nat.c: Likewise.
	* configure.tgt: Add win32-tdep.o to the list of target object
	files for i386-cygwin and i386-mingw targets.

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

	* win32-nat.h: New file.
	* win32-nat.c (mappings): Initialize to NULL.
	(win32_set_context_register_offsets): New function.
	* i386-windows-nat.c: New file.
	(mappings): Moved here from win32-nat.c.
	(_initialize_i386_windows_nat): New function.
	* config/i386/mingw.mh (NATDEPFILES): Add i386-windows-nat.o.
	* config/i386/cygwin.mh (NATDEPFILES): Likewise.

2009-01-09  Andreas Schwab  <schwab@suse.de>

	* Makefile.in (init.c): Set LANG/LC_ALL to C, not c.

2009-01-09  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdbtypes.c (append_composite_type_field): Correct the location of
	appended fields.

2009-01-09  Pedro Alves  <pedro@codesourcery.com>

	* defs.h (deprecated_error_hook): Delete declaration.
	* interps.c (clear_interpreter_hooks): Adjust.
	* remote-sim.c (gdb_os_error): Don't try to call
	deprecated_error_hook.  No need to call exit anymore.
	* top.c (deprecated_error_hook): Delete.

2009-01-09  Joel Brobecker  <brobecker@adacore.com>

	* arch-utils.c (gdbarch_update_p): Use host_address_to_string
	to print the address of the gdbarch pointer.

2009-01-09  Joel Brobecker  <brobecker@adacore.com>

	* gdbarch.sh: Fix all the compilation errors on amd64-windows
	due to casting a pointer to a long when printing a function
	address. Instead, use host_address_to_string to convert our
	address to a string.
	* gdbarch.c: Regenerate.

2009-01-09  Joel Brobecker  <brobecker@adacore.com>

	* event-top.c (async_disconnect, async_stop_sig): use "raise"
	instead of "kill" to raise a signal.

2009-01-09  Joel Brobecker  <brobecker@adacore.com>

	* win32-nat.c (get_module_name): Change the type of parameter
	"base_address" to LPVOID.  Remove unnecessary cast.
	(struct lm_info): Change type of load_addr to LPVOID.
	(win32_make_so): Change the type of parameter "load_addr"
	to LPVOID.  Remove some unnecessary casts.
	(handle_unload_dll): Change the type of "lpBaseOfDll" to LPVOID.
	(win32_xfer_shared_libraries): Add missing cast.

2009-01-09  Joel Brobecker  <brobecker@adacore.com>

	* win32-nat.c (has_detach_ability, set_process_privilege):
	Cast the result of GetProcAddress to (void *) to avoid
	a compilation warning.

2009-01-09  Joel Brobecker  <brobecker@adacore.com>

	* win32-nat.c (CONTEXT_EXTENDED_REGISTERS): Define to 0 if not
	already defined.

2009-01-09  Joel Brobecker  <brobecker@adacore.com>

	* win32-nat.c (get_image_name, win32_xfer_memory): Fix type
	definition of local variable "done".
	(info_w32_command, handle_exception): Remove unnecessary cast.

2009-01-09  Joel Brobecker  <brobecker@adacore.com>

	* win32-nat.c (kernel32_DebugSetProcessKillOnExit): Renames
	DebugSetProcessKillOnExit.  Update all uses in this file.
	(kernel32_DebugActiveProcessStop): Renames DebugActiveProcessStop.
	Update all uses in this file.

2009-01-09  Joel Brobecker  <brobecker@adacore.com>

	* win32-nat.c (do_initial_win32_stuff): Add new ops parameter,
	and use it when pushing the target.
	(win32_attach, win32_create_inferior): Update call to
	do_initial_win32_stuff.
	(win32_detach, win32_mourn_inferior): Use our ops parameter
	instead of the global win32_ops to unpush the target.

2009-01-09  Joel Brobecker  <brobecker@adacore.com>

	* ser-mingw.c (ser_windows_open): Use proper type when casting
	in call to _open_osfhandle.

2009-01-09  Kai Tietz  <kai.tietz@onevision.com>

	* coff-pe-read.c (read_pe_exported_syms): Fix typo.

2009-01-09  Joel Brobecker  <brobecker@adacore.com>

	* CONTRIBUTE: Minor reformatting.

2009-01-08  Kai Tietz  <kai.tietz@onevision.com>

	* MAINTAINERS: Add myself to Write After Approval.
	* coff-pe-read.c (read_pe_exported_syms): Enable read of PE+
	export directory.

2009-01-08  Nathan Froyd  <froydnj@codesourcery.com>

	* remote-sim.c (gdb_os_error): Mark as a noreturn function.
	Call exit to make it obvious to GCC.

2009-01-08  Tom Tromey  <tromey@redhat.com>

	PR breakpoints/9350:
	* varobj.c (varobj_invalidate): Unconditionally free
	all_rootvarobj.
	* symfile.c (syms_from_objfile): Free local_addr when returning
	normally.
	* exec.c (exec_file_attach): Do cleanups before returning.
	(exec_file_command): Likewise.
	* corefile.c (reopen_exec_file): Do cleanups before returning.
	* breakpoint.c (insert_breakpoint_locations): Do cleanups before
	returning.
	(do_vec_free): New function.
	(update_global_location_list): Make a cleanup for old_locations.
	Do cleanups before returning.  Remove unused variable 'e'.
	(find_condition_and_thread): Free result of parsing the
	expression.
	(print_it_typical): Do cleanups before returning.
	(breakpoint_re_set_one): Always free sals.sals.

2009-01-08  Joel Brobecker  <brobecker@adacore.com>
	    Emi Suzuki  <emi-suzuki@tjsys.co.jp>

	* breakpoint.c (do_enable_breakpoint): Use update_watchpoint for
	watchpoints.

2009-01-07  Doug Evans  <dje@google.com>

	* top.c (gdb_prompt_string): Delete, unused.

2009-01-07  Pedro Alves  <pedro@codesourcery.com>

	Delete ONE_PROCESS_WRITETEXT leftovers.

	* breakpoint.c (insert_bp_location): Delete process_warning
	argument.  Adjust.
	(insert_breakpoint_locations): Adjust.
	(reattach_breakpoints): Adjust.
	* infrun.c (normal_stop): Drop "It might be running in another
	process" notice.

2009-01-07  Stan Shebs  <stan@codesourcery.com>

	* config/pa/linux.mh (XDEPFILES): Remove.

2009-01-07  Doug Evans  <dje@google.com>

	* cli/cli-cmds.c (set_debug): Fix cut-n-paste error.

2009-01-07  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* f-typeprint.c (f_type_print_base <TYPE_CODE_STRUCT>): Fix output
	spacing, a regression from 2008-04-22.

2009-01-07  Joel Brobecker  <brobecker@adacore.com>

	* utils.c (gdb_print_host_address): Adjust implementation to
	reuse host_address_to_string. Move comment explaining the conversion
	from host address to string from here...
	(host_address_to_string): ... to there.

2009-01-07  Emi Suzuki  <emi-suzuki@tjsys.co.jp>

	* MAINTAINERS: Add myself for write after approval privileges.

2009-01-06  Tom Tromey  <tromey@redhat.com>

	* value.c (set_internalvar): Use value_free, not xfree.

2009-01-06  Jim Blandy  <jimb@red-bean.com>

	Check return values of functions declared with warn_unused_result
	attribute in GLIBC 2.8.
	* cli/cli-cmds.c (pwd_command): Check return value from getcwd.
	* inflow.c (check_syscall): New function.
	(new_tty): Use check_syscall to check return values from open and dup.
	* linux-nat.c (linux_nat_info_proc_cmd): Check return value from fgets.
	* main.c (captured_main): Call cwd after setting up gdb_stderr;
	check for errors from getcwd.
	* mi/mi-cmd-env.c (mi_cmd_env_pwd): Check return value from getcwd.
	* ui-file.c (stdio_file_write): Ignore return value from fwrite.
	(stdio_file_fputs): Same.
	* utils.c (internal_vproblem): abort if last-ditch error message
	write fails.

	* top.c (gdb_init): Don't set the current directory here; that's
	already been done in captured_main.

2009-01-06  Sandra Loosemore  <sandra@codesourcery.com>

	* ser-tcp.c: Adjust includes.
	(tcp_set_cmdlist, tcp_show_cmdlist): Declare.
	(tcp_auto_retry, tcp_retry_limit): Declare.
	(TIMEOUT): Remove, in favor of tcp_retry_limit.
	(POLL_INTERVAL): Increase to 5, in favor of backoff logic.
	(wait_for_connect): New function.
	(net_open): Use it.  Add auto-retry logic.
	(set_tcp_cmd, show_tcp_cmd): New functions.
	(_initialize_ser_tcp): Initialize new "set/show tcp auto-retry"
	and "set/show tcp connect-timeout" commands.
	* NEWS: Document new commands.

2009-01-05  Tom Tromey  <tromey@redhat.com>

	* python/python-internal.h (Py_ssize_t): Define as int.

2009-01-05  Jim Blandy  <jimb@red-bean.com>

	* MAINTAINERS: Fix my e-mail address as steering committee member.

2009-01-03  Joel Brobecker  <brobecker@adacore.com>

	Updated copyright notices for most files.

2009-01-03  Joel Brobecker  <brobecker@adacore.com>

	* top.c (print_gdb_version): Update copyright year.

2009-01-03  Joel Brobecker  <brobecker@adacore.com>

	* config/djgpp/fnchange.lst: Add entry for ChangeLog-2008.

2009-01-01  Pedro Alves  <pedro@codesourcery.com>

	PR breakpoints/9681:
	* exceptions.h (enum errors): New error type, MEMORY_ERROR.
	* corefile.c (memory_error): Rewrite to throw a MEMORY_ERROR.
	* breakpoint.c (fetch_watchpoint_value): Ignore MEMORY_ERRORs, but
	retrow all other exceptions.

For older changes see ChangeLog-2008.

Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
coding: utf-8
End:
