2011-12-30  Doug Evans  <dje@google.com>

	* dwarf2read.c (read_typedef): Guard against self-referential typedefs.

2011-12-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* gdbarch.sh (max_insn_length): Extend the comment by unit.
	* gdbarch.h: Regenerate.

2011-12-28  Joel Brobecker  <brobecker@adacore.com>

	* varobj.c (varobj_update): Minor reformatting, putting the function
	name at the start of the next line.

2011-12-27  Doug Evans  <dje@google.com>

	* dwarf2read.c (struct dwarf2_cu): Delete members first_fn, last_fn,
	cached_fn.
	(struct function_range): Delete.
	(initialize_cu_func_list, add_to_cu_func_list): Delete.  All callers
	updated.
	(check_cu_functions): Ditto.

2011-12-27  Mark Kettenis  <kettenis@gnu.org>

	* inf-ptrace.c [PT_IO && PIOD_READ_AUXV]
	(inf_ptrace_xfer_partial): Implement TARGET_OBJECT_AUXV.
	(inf_ptrace_auxv_parse): New function.
	(inf_ptrace_target): Initialize to_auxv_parse field.

2011-12-27  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (should_use_wild_match): New function.
	(ada_lookup_simple_minsym): Use should_use_wild_match.
	Minor simplification.  Add comment.
	(ada_lookup_symbol_list): Use should_use_wild_match.
	Minor simplification.

2011-12-27  Joel Brobecker  <brobecker@adacore.com>

	* py-finishbreakpoint.c (bpfinishpy_init): Replace call to
	sprintf by call to xsnprintf.

2011-12-27  Joel Brobecker  <brobecker@adacore.com>

	* linespec.c (struct collect_minsyms) [list_mode]: New field.
	(add_minsym): Ignore data symbols if not in list mode.
	(search_minsyms_for_name): Set local.list_mode.

2011-12-27  Joel Brobecker  <brobecker@adacore.com>

	* utils.c (gdb_realpath): Add better support for Windows hosts.

2011-12-23  Kevin Pouget  <kevin.pouget@st.com>

	Introduce gdb.FinishBreakpoint in Python.
	* NEWS: Add entry for FinishBreakpoint.
	* Makefile.in (SUBDIR_PYTHON_OBS): Add py-finishbreakpoint.o.
	(SUBDIR_PYTHON_SRCS): Add python/py-finishbreakpoint.c.
	Add build rule for this file.
	* infcmd.c (print_return_value): Split to create get_return_value.
	(get_return_value): New function based on print_return_value. Handle
	case where stop_registers are not set.
	* inferior.h (get_return_value): New prototype.
	* python/py-breakpoint.c (bppy_pending_object): Make non-static.
	(gdbpy_breakpoint_created): Set is_py_finish_bp is necessary.
	(struct breakpoint_object): Move to python-internal.h
	(BPPY_REQUIRE_VALID): Likewise.
	(BPPY_SET_REQUIRE_VALID): Likewise.
	(gdbpy_breakpoint_created): Initialize is_finish_bp.
	(gdbpy_should_stop): Add  pre/post hooks before/after calling stop
	method.
	* python/python-internal.h (breakpoint_object_type): Add as extern.
	(bppy_pending_object): Likewise.
	(typedef struct breakpoint_object) Removed.
	(struct breakpoint_object): Moved from py-breakpoint.c.
	Add field is_finish_bp.
	(BPPY_REQUIRE_VALID): Moved from py-breakpoint.c.
	(BPPY_SET_REQUIRE_VALID): Likewise.
	(frame_object_to_frame_info): New prototype.
	(gdbpy_initialize_finishbreakpoints): New prototype.
	(bpfinishpy_is_finish_bp): Likewise.
	(bpfinishpy_pre_stop_hook): Likewise.
	(bpfinishpy_post_stop_hook): Likewise.
	* python/py-finishbreakpoint.c: New file.
	* python/py-frame.c(frame_object_to_frame_info): Make non-static and
	accept PyObject instead of frame_object.
	(frapy_is_valid): Don't cast to frame_object.
	(frapy_name): Likewise.
	(frapy_type): Likewise.
	(frapy_unwind_stop_reason): Likewise.
	(frapy_pc): Likewise.
	(frapy_block): Likewise.
	(frapy_function): Likewise.
	(frapy_older): Likewise.
	(frapy_newer): Likewise.
	(frapy_find_sal): Likewise.
	(frapy_read_var): Likewise.
	(frapy_select): Likewise.
	* python/python.c (gdbpy_is_stopped_at_finish_bp): New noop function.
	(_initialize_python): Add gdbpy_initialize_finishbreakpoints.
	* python/python.h: Include breakpoint.h
	(gdbpy_is_stopped_at_finish_bp): New prototype.

2011-12-22  Tom Tromey  <tromey@redhat.com>

	PR python/12533:
	* value.h (release_value_or_incref): Declare.
	* value.c (struct value) <released>: New field.
	(free_all_values, release_value, value_release_to_mark): Update
	'released'.
	(release_value_or_incref): New function.
	* python/py-value.c (valpy_new): Use release_value_or_incref.
	(value_to_value_object): Likewise.
	* varobj.c (install_new_value): Move value_incref earlier.

2011-12-22  Tom Tromey  <tromey@redhat.com>

	* value.c (struct value) <modifiable, lazy, optimized_out,
	initialized, stack>: Now bitfields.  Move to top.
	<reference_count>: Move earlier.

2011-12-21  Tom Tromey  <tromey@redhat.com>

	* minsyms.h: Rearrange.  Document header and all functions.
	* minsyms.c: Move some comments to minsyms.h.

2011-12-21  Tom Tromey  <tromey@redhat.com>

	* symtab.h: Include minsyms.h.
	(prim_record_minimal_symbol, prim_record_minimal_symbol_full)
	(prim_record_minimal_symbol_and_info, msymbol_hash_iw)
	(msymbol_hash, SYMBOL_HASH_NEXT, msymbol_objfile)
	(lookup_minimal_symbol, lookup_minimal_symbol_text)
	(lookup_minimal_symbol_solib_trampoline)
	(lookup_minimal_symbol_by_pc_name, lookup_minimal_symbol_by_pc)
	(iterate_over_minimal_symbols, lookup_minimal_symbol_and_objfile)
	(lookup_minimal_symbol_by_pc_section)
	(lookup_solib_trampoline_symbol_by_pc)
	(init_minimal_symbol_collection)
	(make_cleanup_discard_minimal_symbols, install_minimal_symbols)
	(msymbols_sort): Move to minsyms.h.
	* objfiles.c (terminate_minimal_symbol_table): Move to minsyms.c.
	* minsyms.c (terminate_minimal_symbol_table): Move from
	objfiles.c.
	* minsyms.h: New file.

2011-12-21  Tom Tromey  <tromey@redhat.com>

	* hppa-hpux-tdep.c (hppa64_hpux_search_dummy_call_sequence): Use
	ALL_OBJFILE_MSYMBOLS.
	(hppa_hpux_find_dummy_bpaddr): Likewise.
	* jit.c (jit_object_close_impl): Use
	terminate_minimal_symbol_table.

2011-12-21  Tom Tromey  <tromey@redhat.com>

	* elfread.c (elf_symtab_read): Put the filename in the filename
	bcache.

2011-12-21  Tom Tromey  <tromey@redhat.com>

	* symtab.h (struct minimal_symbol) <filename>: Now const.

2011-12-21  Ulrich Weigand  <ulrich.weigand@linaro.org>

	PR tdep/12797
	* arm-tdep.c (arm_return_value): Handle complex types.

2011-12-21  Andreas Schwab  <schwab@linux-m68k.org>

	* ppc-linux-nat.c (create_watchpoint_request): Only use ranged
	watchpoints when supported.

2011-12-21  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* symfile.c (objfilep): New typedef and new DEF_VEC_P.
	(reread_symbols): Remove variable reread_one, new variables
	new_objfiles, all_cleanups and ix.  Use new_objfiles instead of
	reread_one.  Push changed objfiles to new_objfiles, call
	observer_notify_new_objfile for them later.

2011-12-21  Joel Brobecker  <brobecker@adacore.com>

	* psymtab.c (expand_symtabs_matching_via_partial): Match
	the partial symbols using their SYMBOL_SEARCH_NAME.
	* symfile.h (struct quick_symbol_functions): Udate the
	documentation of expand_symtabs_matching.
	* dwarf2read.c (write_psymbols): Use SYMBOL_SEARCH_NAME instead
	of SYMBOL_NATURAL_NAME in index entry.

2011-12-21  Joel Brobecker  <brobecker@adacore.com>

	* linespec.c (locate_first_half): Add handling of Ada operators
	when the current language is Ada.

2011-12-21  Joel Brobecker  <brobecker@adacore.com>

	* objfiles.c (insert_section_p): Do not detect overlay sections
	if overlay debugging is off.

2011-12-21  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (is_name_suffix): Add handling of "TKB" suffixes.
	Update function documentation.
	* dictionary.c (dict_hash): Ignore "TKB" suffixes in hash
	computation.

2011-12-20  Pedro Alves  <alves.ped@gmail.com>
	    Jan Kratochvil  <jan.kratochvil@redhat.com>

        * linux-nat.c (add_lwp): Don't call linux_nat_new_thread on the
	first LWP.
	* amd64-linux-nat.c (update_debug_registers_callback): Instantiate
	`lwp->arch_private' if NULL.
	(amd64_linux_prepare_to_resume): Do nothing if `lwp->arch_private'
	is NULL.
	* i386-linux-nat.c (update_debug_registers_callback): Instantiate
	`lwp->arch_private' if NULL.
	(i386_linux_prepare_to_resume): Do nothing if `lwp->arch_private'
	is NULL.

2011-12-19  Doug Evans  <dje@google.com>

	* python/py-auto-load.c (info_auto_load_scripts): Pass address of
	scripts vector to collect_matching_scripts.
	(collect_matching_scripts): Update.

2011-12-19  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* symfile.c (reread_symbols): Move free_objfile_separate_debug,
	preserve_values, sym_finish and clear_objfile_data calls before BFD
	close.  Move free_objfile_separate_debug as the very first call.  New
	comment on the ordering.

2011-12-19  Ulrich Weigand  <uweigand@de.ibm.com>

	* s390-tdep.c (s390_push_dummy_call): Set addressing mode bit
	in return PSWA.

2011-12-19  Tom Tromey  <tromey@redhat.com>

	* symtab.h (add_minsym_to_hash_table): Don't declare.
	* minsyms.c (add_minsym_to_hash_table): Now static.

2011-12-19  Joel Brobecker  <brobecker@adacore.com>

	* elfread.c (elf_symtab_read): Ignore undefined symbols with
	nonzero addresses if they do not correspond to a .plt section
	when one is available in the objfile.

2011-12-17  Andreas Schwab  <schwab@linux-m68k.org>

	* cp-name-parser.y (cp_merge_demangle_parse_infos): Don't use
	obstack_empty_p.

2011-12-17  Mark Kettenis  <kettenis@gnu.org>

	* amd64obsd-tdep.c (amd64obsd_init_abi): Don't set
	regset_from_core_section.
	(amd64obsd_core_init_abi): New function that sets
	regset_from_core_section.
	(_initialize_amd64obsd_tdep): Use amd64obsd_core_init_abi for
	traditional core dumps.

2011-12-17  Mark Kettenis  <kettenis@gnu.org>

	* amd64obsd-tdep.c (amd64obsd_sigtramp_p): Detect new signal
	trampoline to be introduced in OpenBSD 5.0.

2011-12-17  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix build regression from the PR threads/10729 fix.
	* s390-nat.c (s390_insert_watchpoint, s390_remove_watchpoint): Use LP,
	not LP->PTID.

2011-12-16  Andrey Smirnov  <andrew.smirnov@gmail.com>

	* mi/mi-main.c (mi_cmd_list_thread_groups): Rename `optind' and
	`optarg' to `oind' and `oarg', respectively(-Wshadow).
	(mi_cmd_data_read_memory): Ditto.
	(mi_cmd_data_read_memory_bytes): Ditto.
	(mi_cmd_data_write_memory): Ditto.

2011-12-16  Andrey Smirnov  <andrew.smirnov@gmail.com>

	* mi/mi-getopt.c (mi_getopt): Rename `optind' and `optarg' to
	`oind' and `oarg', respectively(-Wshadow).
	(mi_valid_noargs): Ditto.

2011-12-16  Andrey Smirnov  <andrew.smirnov@gmail.com>

	* mi/mi-cmd-var.c (print_varobj): Rename `optind' and `optarg' to
	`oind' and `oarg', respectively(-Wshadow).

2011-12-16  Andrey Smirnov  <andrew.smirnov@gmail.com>

	* mi/mi-cmd-target.c (mi_cmd_target_file_get): Rename `optind' and
	`optarg' to `oind' and `oarg', respectively(-Wshadow).
	(mi_cmd_target_file_put): Ditto.
	(mi_cmd_target_file_delete): Ditto.

2011-12-16  Andrey Smirnov  <andrew.smirnov@gmail.com>

	* mi/mi-cmd-env.c (mi_cmd_env_path): Rename `optind' and
	`optarg' to `oind' and `oarg', respectively(-Wshadow).
	(mi_cmd_env_dir): Ditto.

2011-12-16  Andrey Smirnov  <andrew.smirnov@gmail.com>

	* mi/mi-cmd-disas.c (mi_cmd_disassemble): Rename `optind' and
	`optarg' to `oind' and `oarg', respectively(-Wshadow).

2011-12-16  Andrey Smirnov  <andrew.smirnov@gmail.com>

	* mi/mi-cmd-break.c (mi_cmd_break_insert): Rename `optind' and
	`optparg' to `oind' and `oarg', respectively(-Wshadow).
	(mi_cmd_break_watch): Ditto.

2011-12-16  Tom Tromey  <tromey@redhat.com>

	* linespec.c (collect_symbols): Call maybe_add_address after
	calling symbol_to_sal.
	(minsym_found): Call maybe_add_address here.
	(search_minsyms_for_name): Don't call maybe_add_address.

2011-12-16  Tom Tromey  <tromey@redhat.com>

	* linespec.c (struct collect_info) <objfile>: Remove field.
	(decode_objc): Update.
	(find_method): Update.
	(decode_variable): Update.
	(struct minsym_and_objfile): New.
	(struct collect_minsyms): New.
	(classify_mtype): New function.
	(compare_msyms): Likewise.
	(add_minsym): Likewise.
	(check_minsym): Remove.
	(search_minsyms_for_name): Sort minsyms and apply only those with
	top priority.

2011-12-16  Tom Tromey  <tromey@redhat.com>

	* cli/cli-cmds.c (filter_sals): Filter out sals with NULL symtab.

2011-12-16  Pedro Alves  <pedro@codesourcery.com>

	* inf-loop.c: Include top.h.
	(inferior_event_handler): Call check_frame_language.
	* top.c (check_frame_language_change): New, factored out from ...
	(execute_command): ... this.  Use check_frame_language_change.
	* top.h (check_frame_language_change): Declare.

2011-12-16  asmwarrior  <asmwarrior@gmail.com>	(obvious fix)

	* windows-nat.c (cygwin_get_dr, cygwin_get_dr7): Add missing
	prototypes.

2011-12-16  Doug Evans  <dje@google.com>

	* NEWS: Add entry for stdio gdbserver.

2011-12-16  Phil Muldoon  <pmuldoon@redhat.com>

	* python/python.c: Define python_excp_enums.
	(eval_python_from_control_command): Do not call gdbpy_print_stack.
	(python_command): Ditto.
	(gdbpy_print_stack): Rewrite to use new enum constants.
	(maint_set_python): Remove function.
	(maint_show_python): Ditto.
	(_initialize_python): Do not add "maint" commands.  Add "set/show
	python print-stack commands".
	* NEWS: Update to reflect removal for "maint set/show
	print-stack"

2011-12-15  Doug Evans  <dje@google.com>

	* exceptions.c (catcher_list_size): New function.
	(last_message): Delete.
	(exception_messages, exception_messages_size): New static globals.
	(throw_it): Use exception_messages array to handle nested calls.

2011-12-15  Tom Tromey  <tromey@redhat.com>

	* symfile.c (symbol_file_add_with_addrs_or_offsets): Remove bad
	do_cleanups call.

2011-12-14  Doug Evans  <dje@google.com>

	* defs.h (wait_to_die_with_timeout): Declare.
	* utils.c: #include "gdb_wait.h".
	(sigalrm_handler, wait_to_die_with_timeout): New functions.
	* ser-pipe.c: Don't #include "gdb_wait.h".
	(pipe_close): Give child a chance to die on its own after closing
	its stdin before SIGTERM'ing it.

2011-12-14  Joel Brobecker  <brobecker@adacore.com>
	    Tom Tromey  <tromey@redhat.com>

	* ada-lang.c (add_nonlocal_symbols): Initialize data to
	all zeros.  Remove setting of data.arg_sym to NULL.

2011-12-14  Pedro Alves  <pedro@codesourcery.com>

	PR threads/10729

	* linux-nat.c (linux_nat_new_thread): Change parameter to an lwp
	pointer.
	(linux_nat_prepare_to_resume): New global.
	(lwp_free): New.
	(purge_lwp_list): Use it.
	(add_lwp): Call linux_nat_new_thread even on the first LWP.
	Adjust to interface change.
	(delete_lwp): Call lwp_free instead of xfree.
	(detach_callback, linux_nat_detach, resume_lwp, linux_nat_resume)
	(linux_handle_syscall_trap, linux_handle_extended_wait)
	(linux_nat_filter_event, resume_stopped_resumed_lwps): Call
	linux_nat_prepare_to_resume before resuming.
	(linux_stop_lwp): New.
	(linux_nat_set_new_thread): Adjust.
	(linux_nat_set_prepare_to_resume): New.
	* linux-nat.h (struct arch_lwp_info): Forward declare.
	(struct lwp_info) <arch_private>: New field.
	(linux_stop_lwp): Declare.
	(linux_nat_set_new_thread): Adjust.
	(linux_nat_set_prepare_to_resume): New.

	* i386-nat.c (DR_NADDR, DR_STATUS, DR_CONTROL)
	(struct i386_debug_reg_state): Move to i386-nat.h.
	(dr_mirror): Comment.
	(i386_debug_reg_state): New.
	(i386_update_inferior_debug_regs): Simplify.
	(i386_stopped_data_address): Use the debug register state from the
	inferior, not from the local cache.
	* i386-nat.h (struct i386_dr_low_type): Delete reset_addr and
	unset_status fields.  New get_addr and get_control fields.
	(DR_FIRSTADDR, DR_LASTADDR, DR_CONTROL): Moved from i386-nat.c.
	(DR_NADDR, DR_STATUS): New.
	(struct i386_debug_reg_state): Moved from i386-nat.c.

	* amd64-linux-nat.c (struct arch_lwp_info): New.
	(amd64_linux_dr): Delete global.
	(amd64_linux_dr_get_addr): New.
	(amd64_linux_dr_get_control): New.
	(amd64_linux_dr_unset_status): Delete.
	(amd64_linux_dr_set_addr): Reimplement.
	(amd64_linux_dr_reset_addr): Delete.
	(update_debug_registers_callback): New.
	(amd64_linux_dr_set_control): Reimplement.
	(amd64_linux_dr_set_addr): Reimplement.
	(amd64_linux_prepare_to_resume): New.
	(amd64_linux_new_thread): Change parameter to an lwp pointer.
	Reimplement.
	(_initialize_amd64_linux_nat): No longer install
	i386_dr_low.reset_addr and i386_dr_low.unset_status.  Install
	amd64_linux_dr_get_control as i386_dr_low.get_control.  Install
	amd64_linux_dr_get_addr as i386_dr_low.get_addr.  Install
	amd64_linux_prepare_to_resume.
	* i386-linux-nat.c (DR_FIRSTADDR, DR_LASTADDR, DR_STATUS)
	(DR_CONTROL): Delete.
	(struct arch_lwp_info): New.
	(i386_linux_dr): Delete global.
	(i386_linux_dr_set_control): Reimplement.
	(i386_linux_dr_get_addr): New.
	(i386_linux_dr_set_addr): Reimplement.
	(i386_linux_dr_get_control): New.
	(update_debug_registers_callback): New.
	(i386_linux_dr_unset_status): Delete.
	(i386_linux_dr_set_addr): Reimplement.
	(i386_linux_prepare_to_resume): New.
	(i386_linux_new_thread): Change parameter to an lwp pointer.
	Reimplement.
	(_initialize_i386_linux_nat): No longer install
	i386_dr_low.reset_addr and i386_dr_low.unset_status.  Install
	i386_linux_dr_get_control as i386_dr_low.get_control.  Install
	i386_linux_dr_get_addr as i386_dr_low.get_addr.  Install
	i386_linux_prepare_to_resume.

	* arm-linux-nat.c (arm_linux_new_thread): Change parameter to an
	lwp pointer.  Adjust.
	* ia64-linux-nat.c (ia64_linux_new_thread): Likewise.
	* mips-linux-nat.c (mips_linux_new_thread): Likewise.
	* ppc-linux-nat.c (ppc_linux_new_thread): Likewise.
	* s390-nat.c (s390_fix_watch_points): Likewise.

	* i386-darwin-nat.c (DR_FIRSTADDR, DR_LASTADDR, DR_STATUS)
	(DR_CONTROL): Delete.
	(i386_darwin_dr_reset_addr): Delete.
	(i386_darwin_dr_get_addr): New.
	(i386_darwin_dr_get_control): New.
	* go32-nat.c
	(go32_get_dr7, go32_get_dr): New.
	(init_go32_ops): No longer install i386_dr_low.reset_addr.
	Install go32_get_dr7 as i386_dr_low.get_control.  Install
	go32_get_dr as i386_dr_low.get_addr.
	* i386bsd-nat.c (i386bsd_dr_get): New.
	(i386bsd_dr_reset_addr): Delete.
	(i386bsd_dr_get_addr): New.
	(i386bsd_dr_get_status): Use i386bsd_dr_get.
	(i386bsd_dr_get_control): New.
	* i386bsd-nat.h (i386bsd_dr_reset_addr): Delete.
	(i386bsd_dr_get_addr): New.
	(i386bsd_dr_get_control): New.
	* i386fbsd-nat.c (_initialize_i386fbsd_nat): No longer install
	i386_dr_low.reset_addr and i386_dr_low.unset_status.  Install
	i386bsd_dr_get_control as i386_dr_low.get_control.  Install
	i386bsd_dr_get_addr as i386_dr_low.get_addr.
	* windows-nat.c (init_windows_ops): No longer install
	i386_dr_low.reset_addr and i386_dr_low.unset_status.  Install
	cygwin_get_dr7 as i386_dr_low.get_control.  Install cygwin_get_dr
	as i386_dr_low.get_addr.
	(cygwin_get_dr): New.
	(cygwin_get_dr7): New.

2011-12-14  Pedro Alves  <pedro@codesourcery.com>

	* ia64-tdep.c (ia64_memory_remove_breakpoint): Use
	target_write_raw_memory.
	* m32r-tdep.c (m32r_memory_remove_breakpoint): Use
	target_write_raw_memory.
	* microblaze-linux-tdep.c
	(microblaze_linux_memory_remove_breakpoint): Use
	target_write_raw_memory.
	* ppc-linux-tdep.c (ppc_linux_memory_remove_breakpoint): Use
	target_write_raw_memory.

2011-12-14  Joel Brobecker  <brobecker@adacore.com>

	* linespec.c (decode_line_internal): Make static.

2011-12-14  Yao Qi  <yao@codesourcery.com>

	* breakpoint.c (create_breakpoint): Set canonical.addr_string
	for static tracepoint.

2011-12-13  Joel Brobecker  <brobecker@adacore.com>

	GDB 7.4 branch created (branch timestamp: 2011-12-13 13:00 UTC)
	* version.in: Bump version to 7.4.50.20111213-cvs.

2011-12-13  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Create a new section for the next release branch.
	Rename the section of the current branch, now that it has
	been cut.

2011-12-11  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_exception_support_info_sniffer): Improve
	error message.

2011-12-11  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (struct ada_inferior_data) [exception_info]:
	New field.
	(exception_info): Delete.
	(ada_exception_support_info_sniffer): Get exception_support_info
	data from our per-inferior data.  Adjust code accordingly.
	(ada_unhandled_exception_name_addr_from_raise): Likewise.
	(ada_exception_name_addr_1, ada_exception_sym_name): Ditto.
	(ada_executable_changed_observer): Delete.
	(_initialize_ada_language): Remove call to
	observer_attach_executable_changed.

2011-12-11  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_has_this_exception_support): Raise an error
	if we could find the Ada exception hook in the Ada runtime,
	but no debugging info for that hook.

2011-12-11  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_has_this_exception_support): New function,
	extracted out of ada_exception_sal and ada_exception_sal.
	(ada_exception_support_info_sniffer): Simplify by using
	ada_has_this_exception_support.
	(ada_exception_sal): Replace unnecessary checks by assertions.
	Minor simplifications.

2011-12-10  Andrey Smirnov  <andrew.smirnov@gmail.com>

	* breakpoint.c (update_global_location_list): Remove nested
	definition of `b'(-Wshadow).

2011-12-10  Andrey Smirnov  <andrew.smirnov@gmail.com>

	* breakpoint.c (insert_breakpoint_locations): Rename `error' to
	`error_flag'(-Wshadow).

2011-12-10  Andrey Smirnov  <andrew.smirnov@gmail.com>

	* bfd-target.c (target_bfd_reopen): Rename `bfd' to
	`abfd'(-Wshadow).

2011-12-10  Andrey Smirnov  <andrew.smirnov@gmail.com>

	* annotate.c (annotate_array_section_begin): Rename `index' to
	`idx'(-Wshadow).

2011-12-10  Andrey Smirnov  <andrew.smirnov@gmail.com>

	* amd64-tdep.c (amd64_get_unused_input_int_reg): Rename `index' to
	`idx'(-Wshadow).

2011-12-10  Andrey Smirnov  <andrew.smirnov@gmail.com>

	* amd64-linux-tdep.c (amd64_canonicalize_syscall): Rename
	`syscall' to `syscall_number'(-Wshadow).

2011-12-10  Andrey Smirnov  <andrew.smirnov@gmail.com>

	* ada-lang.c (remove_extra_symbols): Rename `remove' to
	`remove_p'(-Wshadow).

2011-12-10  Andrey Smirnov  <andrew.smirnov@gmail.com>

	* ada-exp.y (write_var_or_type): Rename nested `renaming' to
	`ren_sym'(-Wshadow).

2011-12-10  Doug Evans  <dje@google.com>

	* dwarf2read.c (dwarf2_per_cu_data): Rename debug_type_section to
	debug_types_section.  All uses updated.
	(partial_read_comp_unit_head): Rename parameter is_debug_type_section
	to is_debug_types_section.

	* python/py-auto-load.c (source_section_scripts): Call xfree
	instead of free.

2011-12-10  Hui Zhu  <teawater@gmail.com>
	    Yao Qi  <yao@codesourcery.com>

	* tracepoint.c (start_tracing): Clear `inserted' flag.

2011-12-10  Hui Zhu  <teawater@gmail.com>

	* tracepoint.c (create_tsv_from_upload): Change sprintf to xstrprintf.

2011-12-09  Andrey Smirnov  <andrew.smirnov@gmail.com>

	* breakpoint.c (bp_loc_is_permanent): Rename `brk' to
	`bpoint'(-Wshadow).

2011-12-09  Andrey Smirnov  <andrew.smirnov@gmail.com>

	* breakpoint.c (update_static_tracepoint): Rename nested `sal' and
	`marker' variables to `sal2' and `tpmarker' respectively
	(-Wshadow).

2011-12-09  Andrew Pinski  <apinski@cavium.com>

	* linespec.c (hash_address_entry): Use iterative_hash_object on each
	field rather than the struct itself.

2011-12-09  Tom Tromey  <tromey@redhat.com>

	* breakpoint.c (compare_breakpoints): New function.
	(clear_command): Remove duplicate breakpoints.  Properly clean
	up.

2011-12-08  Maciej W. Rozycki  <macro@mips.com>
            Maciej W. Rozycki  <macro@codesourcery.com>

	* mips-tdep.c (mips_skip_mips16_trampoline_code): Sign-extend
	address chunks retrieved from decoded lui/addiu pairs.

2011-12-08  Maciej W. Rozycki  <macro@codesourcery.com>

	* mips-tdep.c (extended_offset): Correct calculation.
	(unpack_mips16): Correct bitfield positions used for extraction
	of the immediate argument; fix sign-extension of same.
	(extended_mips16_next_pc): Correct B instruction's offset
	calculation.  Correct register decoding of the BEQZ and BNEZ
	as well as jump-register instructions.  Handle compact jumps.

2011-12-08  Tom Tromey  <tromey@redhat.com>

	* objfiles.h (struct objfile): Remove obsolete comment.
	* objfiles.c (build_objfile_section_table): Remove obsolete
	comment.

2011-12-07  Stan Shebs  <stan@codesourcery.com>

	* MAINTAINERS (Responsible Maintainers): Add Yao Qi as
	maintainer of the tic6x target.

2011-12-07  Ulrich Weigand  <ulrich.weigand@linaro.org>

	* arm-tdep.h (arm_deal_with_atomic_sequence): Add prototype.
	* arm-tdep.c (thumb_deal_with_atomic_sequence_raw): New function.
	(arm_deal_with_atomic_sequence_raw): Likewise.
	(arm_deal_with_atomic_sequence): Likewise.
	(arm_software_single_step): Call it.
	* arm-linux-tdep.c (arm_linux_software_single_step): Likewise.

2011-12-07  Ulrich Weigand  <uweigand@de.ibm.com>

	* s390-tdep.c: Replace "Linux" by "GNU/Linux" in comments
	where appropriate.
	* s390-tdep.h: Likewise.

2011-12-07  Tristan Gingold  <gingold@adacore.com>

	* machoread.c (macho_symtab_read): Do not consider N_OPT as
	a debugging stab.  Improve complaint message.

2011-12-07  Maciej W. Rozycki  <macro@codesourcery.com>

	* mips-tdep.c (mips32_scan_prologue): Only update the immediate
	load adjustment if still within the prologue.

2011-12-06  Maciej W. Rozycki  <macro@codesourcery.com>

	* mips-tdep.c (mips32_next_pc): Fix floating point condition
	code mask.

2011-12-06  Maciej W. Rozycki  <macro@codesourcery.com>

	* mips-tdep.c (deal_with_atomic_sequence): Fix the handling
	of BLTZ* and BGEZ* instructions.

2011-12-06  Maciej W. Rozycki  <macro@codesourcery.com>

	* mips-tdep.c (mips_pc_is_mips16): Reverse the order of checks
	performed to determine whether an address refers to standard
	MIPS or MIPS16 code.
	(mips16_next_pc): Use mips_pc_is_mips16 instead of
	is_mips16_addr.

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

	* breakpoint.c (breakpoint_restore_shadows): Rename to ...
	(breakpoint_xfer_memory): ... this.  Change prototype.  Handle
	memory writes too.
	* breakpoint.h (breakpoint_restore_shadows): Delete.
	(breakpoint_xfer_memory): Declare.
	* mem-break.c (default_memory_insert_breakpoint)
	(default_memory_remove_breakpoint): Use target_write_raw_memory.
	(memory_xfer_partial): Rename to ...
	(memory_xfer_partial_1): ... this.  Don't mask out breakpoints
	here.
	(memory_xfer_partial): New.
	(target_write_raw_memory): New.
	* target.h (target_write_raw_memory): New.

2011-12-06  Doug Evans  <dje@google.com>

	* linespec.c (decode_dollar): Avoid "may be used uninitialized" warning.

2011-12-06  Joel Brobecker  <brobecker@acacore.com>

        * language.h (struct language_defn): Add new component
        la_symbol_name_compare.
        * symfile.h (struct quick_symbol_functions): Update the profile
        of parameter "name_matcher" for the expand_symtabs_matching
        method.  Update the documentation accordingly.
        * ada-lang.h (ada_name_for_lookup): Add declaration.
        * ada-lang.c (ada_name_for_lookup): New function, extracted out
        from ada_iterate_over_symbols.
        (ada_iterate_over_symbols): Do not encode symbol name anymore.
        (ada_expand_partial_symbol_name): Adjust profile.
        (ada_language_defn): Add value for la_symbol_name_compare field.
        * linespec.c: #include "ada-lang.h".
        (iterate_name_matcher): Add language parameter. Replace call
        to strcmp_iw by call to language->la_symbol_name_compare.
        (decode_variable): Encode COPY if current language is Ada.
        * dwarf2read.c (dw2_expand_symtabs_matching): Adjust profile
        of name_matcher parameter.  Adjust call to name_matcher.
        * psymtab.c (expand_symtabs_matching_via_partial): Likewise.
        (expand_partial_symbol_names): Update profile of parameter "fun".
        * psymtab.h (expand_partial_symbol_names): Update profile of
        parameter "fun".
        * symtab.c (demangle_for_lookup): Update function documentation.
        (search_symbols_name_matches): Add language parameter.
        (expand_partial_symbol_name): Likewise.
        * c-lang.c (c_language_defn, cplus_language_defn)
        (asm_language_defn, minimal_language_defn): Add value for
        la_symbol_name_compare field.
        * d-lang.c (d_language_defn): Likewise.
        * f-lang.c (f_language_defn): Ditto.
        * jv-lang.c (java_language_defn): Ditto.
        * m2-lang.c (m2_language_defn): Ditto.
        * objc-lang.c (objc_language_defn): Ditto.
        * opencl-lang.c (opencl_language_defn): Ditto.
        * p-lang.c (pascal_language_defn): Ditto.
        * language.c (unknown_language_defn, auto_language_defn)
        (local_language_defn): Ditto.

2011-12-06  Tom Tromey  <tromey@redhat.com>

	* linespec.c (iterate_over_all_matching_symtabs): Use
	LA_ITERATE_OVER_SYMBOLS.
	(lookup_prefix_sym, add_matching_symbols_to_info): Likewise.
	(find_function_symbols, decode_variable): Remove Ada special
	case.
	* language.h (struct language_defn) <la_iterate_over_symbols>: New
	field.
	(LA_ITERATE_OVER_SYMBOLS): New macro.
	* language.c (unknown_language_defn, auto_language_defn)
	(local_language_defn): Update.
	* c-lang.c (c_language_defn, cplus_language_defn)
	(asm_language_defn, minimal_language_defn): Update.
	* d-lang.c (d_language_defn): Update.
	* f-lang.c (f_language_defn): Update.
	* jv-lang.c (java_language_defn): Update.
	* m2-lang.c (m2_language_defn): Update.
	* objc-lang.c (objc_language_defn): Update.
	* opencl-lang.c (opencl_language_defn): Update.
	* p-lang.c (pascal_language_defn): Update.
	* ada-lang.c (ada_iterate_over_symbols): New function.
	(ada_language_defn): Update.

2011-12-06  Tom Tromey  <tromey@redhat.com>
	    Joel Brobecker  <brobecker@acacore.com>

	PR breakpoints/13105, PR objc/8341, PR objc/8343, PR objc/8366,
	PR objc/8535, PR breakpoints/11657, PR breakpoints/11970,
	PR breakpoints/12023, PR breakpoints/12334, PR breakpoints/12856,
	PR shlibs/8929, PR shlibs/7393:
	* python/py-type.c (compare_maybe_null_strings): Rename from
	compare_strings.
	(check_types_equal): Update.
	* utils.c (compare_strings): New function.
	* tui/tui-winsource.c (tui_update_breakpoint_info): Update for
	location changes.
	* tracepoint.c (scope_info): Update.
	(trace_find_line_command): Use DECODE_LINE_FUNFIRSTLINE.
	* symtab.h (iterate_over_minimal_symbols)
	(iterate_over_some_symtabs, iterate_over_symtabs)
	(find_pcs_for_symtab_line, iterate_over_symbols)
	(demangle_for_lookup): Declare.
	(expand_line_sal): Remove.
	* symtab.c (iterate_over_some_symtabs, iterate_over_symtabs)
	(lookup_symtab_callback): New functions.
	(lookup_symtab): Rewrite.
	(demangle_for_lookup): New function, extract from
	lookup_symbol_in_language.
	(lookup_symbol_in_language): Use it.
	(iterate_over_symbols): New function.
	(find_line_symtab): Update.
	(find_pcs_for_symtab_line): New functions.
	(find_line_common): Add 'start' argument.
	(decode_line_spec): Update.  Change argument to 'flags', change
	interpretation.
	(append_expanded_sal): Remove.
	(append_exact_match_to_sals): Remove.
	(expand_line_sal): Remove.
	* symfile.h (struct quick_symbol_functions) <lookup_symtab>:
	Remove.
	<map_symtabs_matching_filename>: New field.
	* stack.c (func_command): Only look in the current program space.
	Use DECODE_LINE_FUNFIRSTLINE.
	* source.c (line_info): Set pspace on sal.  Check program space in
	the loop.  Use DECODE_LINE_LIST_MODE.
	(select_source_symtab): Use DECODE_LINE_FUNFIRSTLINE.
	* solib-target.c: Remove DEF_VEC_I(CORE_ADDR).
	* python/python.c (gdbpy_decode_line): Update.
	* psymtab.c (partial_map_expand_apply): New function.
	(partial_map_symtabs_matching_filename): Rename from
	lookup_partial_symbol.  Update arguments.
	(lookup_symtab_via_partial_symtab): Remove.
	(psym_functions): Update.
	* objc-lang.h (parse_selector, parse_method): Don't declare.
	(find_imps): Update.
	* objc-lang.c (parse_selector, parse_method): Now static.
	(find_methods): Change arguments.  Fill in a vector of symbol
	names.
	(uniquify_strings): New function.
	(find_imps): Change arguments.
	* minsyms.c (iterate_over_minimal_symbols): New function.
	* linespec.h (enum decode_line_flags): New.
	(struct linespec_sals): New.
	(struct linespec_result) <canonical>: Remove.
	<pre_expanded, addr_string, sals>: New fields.
	(destroy_linespec_result, make_cleanup_destroy_linespec_result)
	(decode_line_full): Declare.
	(decode_line_1): Update.
	* linespec.c (struct address_entry, struct linespec_state, struct
	collect_info): New types.
	(add_sal_to_sals_basic, add_sal_to_sals, hash_address_entry)
	(eq_address_entry, maybe_add_address): New functions.
	(total_number_of_methods): Remove.
	(iterate_name_matcher, iterate_over_all_matching_symtabs): New
	functions.
	(find_methods): Change arguments.  Don't canonicalize input.
	Simplify logic.
	(add_matching_methods, add_constructors)
	(build_canonical_line_spec): Remove.
	(filter_results, convert_results_to_lsals): New functions.
	(decode_line_2): Change arguments.  Rewrite for new data
	structures.
	(decode_line_internal): Rename from decode_line_1.  Change
	arguments.  Add cleanups.  Update for new data structures.
	(linespec_state_constructor, linespec_state_destructor)
	(decode_line_full, decode_line_1): New functions.
	(decode_indirect): Change arguments.  Update.
	(locate_first_half): Use skip_spaces.
	(decode_objc): Change arguments.  Update for new data structures.
	Simplify logic.
	(decode_compound): Change arguments.  Add cleanups.  Remove
	fallback code, replace with error.
	(struct decode_compound_collector): New type.
	(collect_one_symbol): New function.
	(lookup_prefix_sym): Change arguments.  Update.
	(compare_symbol_name, add_all_symbol_names_from_pspace)
	(find_superclass_methods ): New functions.
	(find_method): Rewrite.
	(struct symtab_collector): New type.
	(add_symtabs_to_list, collect_symtabs_from_filename): New
	functions.
	(symtabs_from_filename): Change API.  Rename from
	symtab_from_filename.
	(collect_function_symbols): New function.
	(find_function_symbols): Change API.  Rename from
	find_function_symbol.  Rewrite.
	(decode_all_digits): Change arguments.  Rewrite.
	(decode_dollar): Change arguments.  Use decode_variable.
	(decode_label): Change arguments.  Rewrite.
	(collect_symbols): New function.
	(minsym_found): Change arguments.  Rewrite.
	(check_minsym, search_minsyms_for_name)
	(add_matching_symbols_to_info): New function.
	(decode_variable): Change arguments.  Iterate over all symbols.
	(symbol_found): Remove.
	(symbol_to_sal): New function.
	(init_linespec_result, destroy_linespec_result)
	(cleanup_linespec_result, make_cleanup_destroy_linespec_result):
	New functions.
	(decode_digits_list_mode, decode_digits_ordinary): New functions.
	* dwarf2read.c (dw2_map_expand_apply): New function.
	(dw2_map_symtabs_matching_filename): Rename from
	dw2_lookup_symtab.  Change arguments.
	(dwarf2_gdb_index_functions): Update.
	* dwarf2loc.c: Remove DEF_VEC_I(CORE_ADDR).
	* defs.h (compare_strings): Declare.
	* cli/cli-cmds.c (compare_strings): Move to utils.c.
	(edit_command, list_command): Use DECODE_LINE_LIST_MODE.  Call
	filter_sals.
	(compare_symtabs, filter_sals): New functions.
	* breakpoint.h (struct bp_location) <line_number, source_file>:
	New fields.
	(struct breakpoint) <line_number, source_file>: Remove.
	<filter>: New field.
	* breakpoint.c (print_breakpoint_location, init_raw_breakpoint)
	(momentary_breakpoint_from_master, add_location_to_breakpoint):
	Update for changes to locations.
	(init_breakpoint_sal): Add 'filter' argument.  Set 'filter' on
	breakpoint.
	(create_breakpoint_sal): Add 'filter' argument.
	(remove_sal, expand_line_sal_maybe): Remove.
	(create_breakpoints_sal): Remove 'sals' argument.  Handle
	pre-expanded sals and the filter.
	(parse_breakpoint_sals): Use decode_line_full.
	(check_fast_tracepoint_sals): Use get_sal_arch.
	(create_breakpoint): Create a linespec_sals.  Update.
	(break_range_command): Use decode_line_full.  Update.
	(until_break_command): Update.
	(clear_command): Update match conditions for linespec.c changes.
	Use DECODE_LINE_LIST_MODE.
	(say_where): Update for changes to locations.
	(bp_location_dtor): Free 'source_file'.
	(base_breakpoint_dtor): Free 'filter'.  Don't free 'source_file'.
	(update_static_tracepoint): Update for changes to locations.
	(update_breakpoint_locations): Disable ranged breakpoint if too
	many locations match.  Update.
	(addr_string_to_sals): Use decode_line_full.  Resolve all sal
	PCs.
	(breakpoint_re_set_default): Don't call expand_line_sal_maybe.
	(decode_line_spec_1): Update.  Change argument name to 'flags',
	change interpretation.
	* block.h (block_containing_function): Declare.
	* block.c (block_containing_function): New function.
	* skip.c (skip_function_command): Update.
	(skip_re_set): Update.
	* infcmd.c (jump_command): Use DECODE_LINE_FUNFIRSTLINE.
	* mi/mi-main.c (mi_cmd_trace_find): Use DECODE_LINE_FUNFIRSTLINE.
	* NEWS: Add entry.

2011-12-06  Tom Tromey  <tromey@redhat.com>

	* elfread.c (elf_gnu_ifunc_resolver_return_stop): Allow
	breakpoint's pspace to be NULL.
	* breakpoint.h (struct breakpoint) <pspace>: Update comment.
	* breakpoint.c (init_raw_breakpoint): Conditionally set
	breakpoint's pspace.
	(init_breakpoint_sal): Don't set breakpoint's pspace.
	(prepare_re_set_context): Conditionally switch program space.
	(addr_string_to_sals): Check executing_startup on location's
	program space.

2011-12-06  Tom Tromey  <tromey@redhat.com>

	* breakpoint.h (enum enable_state) <bp_startup_disabled>: Remove.
	* breakpoint.c (should_be_inserted): Explicitly check if program
	space is executing startup.
	(describe_other_breakpoints): Update.
	(disable_breakpoints_before_startup): Change executing_startup
	earlier.  Remove loop.
	(enable_breakpoints_after_startup): Likewise.
	(init_breakpoint_sal): Don't use bp_startup_disabled.
	(create_breakpoint): Don't use bp_startup_disabled.
	(update_global_location_list): Use should_be_inserted.
	(bkpt_re_set): Update.

2011-12-06  Tom Tromey  <tromey@redhat.com>

	* python/lib/gdb/command/pretty_printers.py
	(InfoPrettyPrinter.invoke1): Remove extra double quote.

2011-12-06  Tom Tromey  <tromey@redhat.com>

	* NEWS: Add MI news.

2011-12-06  Ulrich Weigand  <uweigand@de.ibm.com>

	* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
	(S390_LAST_BREAK_REGNUM): Likewise.
	(S390_SYSTEM_CALL_REGNUM): Likewise.
	(S390_NUM_REGS): Update.

	(s390_regmap_last_break): Add declaration.
	(s390x_regmap_last_break): Likewise.
	(s390_regmap_system_call): Likewise.

	(tdesc_s390_linux32v1): Add declaration.
	(tdesc_s390_linux32v2): Likewise.
	(tdesc_s390_linux64v1): Likewise.
	(tdesc_s390_linux64v2): Likewise.
	(tdesc_s390x_linux64v1): Likewise.
	(tdesc_s390x_linux64v2): Likewise.

	* s390-tdep.c: Include new target description files
	"features/s390-linux32v1.c", "features/s390-linux32v2.c",
	"features/s390-linux64v1.c", "features/s390-linux64v2.c",
	"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
	(s390_cannot_store_register): New function.
	(s390_write_pc): Likewise.
	(s390_dwarf_regmap): Add fields for new registers.
	(s390_regmap_gregset): Likewise.
	(s390x_regmap_gregset): Likewise.
	(s390_regmap_fpregset): Likewise.
	(s390_regmap_upper): Likewise.
	(s390_regmap_last_break): New variable.
	(s390x_regmap_last_break): Likewise.
	(s390_regmap_system_call): Likewise.
	(s390_last_break_regset): Likewise.
	(s390x_last_break_regset): Likewise.
	(s390_system_call_regset): Likewise.
	(s390_upper_regset_sections): Rename to ...
	(s390_linux64_regset_sections): ... this.
	(s390_linux32_regset_sections): New variable.
	(s390x_linux64_regset_sections): Likewise.
	(s390_linux32v1_regset_sections): Likewise.
	(s390_linux32v2_regset_sections): Likewise.
	(s390_linux64v1_regset_sections): Likewise.
	(s390_linux64v2_regset_sections): Likewise.
	(s390x_linux64v1_regset_sections): Likewise.
	(s390x_linux64v2_regset_sections): Likewise.
	(s390_regset_from_core_section): Handle .reg-s390-last-break and
	.reg-s390-system-call core file sections.
	(s390_core_read_description): Check for presence of
	.reg-s390-last-break and .reg-s390-system-call core file
	sections and return appropriate target description.
	(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
	"last_break" and "system_call" in target description.  Install
	appropriate gdbarch_core_regset_sections array.
	Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
	(_initialize_s390_tdep): Initialize additional target descriptions.

	* s390-nat.c: Include "elf/common.h".
	(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
	(have_regset_last_break): New static variable.
	(have_regset_system_call): Likewise.
	(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
	(s390_native_collect): Likewise.
	(fetch_regset, store_regset, check_regset): New functions.
	(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
	and S390_SYSTEM_CALL_REGNUM.
	(s390_linux_store_inferior_registers): Likewise.
	(s390_read_description): Check for presence of NT_S390_LAST_BREAK
	and NT_S390_SYSTEM_CALL regsets and use appropriate description.

	* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
	s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
	(s390-linux32v1-expedite): Define.
	(s390-linux32v2-expedite): Likewise.
	(s390-linux64v1-expedite): Likewise.
	(s390-linux64v2-expedite): Likewise.
	(s390x-linux64v1-expedite): Likewise.
	(s390x-linux64v2-expedite): Likewise.

	* features/s390-linux32.xml: Add orig_r2 register.
	* features/s390-linux64.xml: Likewise.
	* features/s390x-linux64.xml: Likewise.
	* features/s390-linux32v1.xml: New file.
	* features/s390-linux32v2.xml: Likewise.
	* features/s390-linux64v1.xml: Likewise.
	* features/s390-linux64v2.xml: Likewise.
	* features/s390x-linux64v1.xml: Likewise.
	* features/s390x-linux64v2.xml: Likewise.

	* features/s390-linux32.c: Regenerate.
	* features/s390-linux64.c: Likewise.
	* features/s390x-linux64.c: Likewise.
	* features/s390-linux32v1.c: New generated file.
	* features/s390-linux32v2.c: Likewise.
	* features/s390-linux64v1.c: Likewise.
	* features/s390-linux64v2.c: Likewise.
	* features/s390x-linux64v1.c: Likewise.
	* features/s390x-linux64v2.c: Likewise.

	* regformats/s390-linux32.dat: Regenerate.
	* regformats/s390-linux64.dat: Regenerate.
	* regformats/s390x-linux64.dat: Regenerate.
	* regformats/s390-linux32v1.dat: New generated file.
	* regformats/s390-linux32v2.dat: Likewise.
	* regformats/s390-linux64v1.dat: Likewise.
	* regformats/s390-linux64v2.dat: Likewise.
	* regformats/s390x-linux64v1.dat: Likewise.
	* regformats/s390x-linux64v2.dat: Likewise.

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

	* linux-nat.c (resume_stopped_resumed_lwps): Call
	registers_changed.

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

	* breakpoint.c: Include record.h.
	(breakpoints_always_inserted_mode): Return false when the record
	target is in use.

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

	* amd64-linux-nat.c (amd64_linux_dr_get): Remove FIXME comment.
	Reinstate perror_with_name call on ptrace error.  Remove #if 0.
	* i386-linux-nat.c (i386_linux_dr_get): Likewise.
	* i386bsd-nat.c (i386bsd_dr_get_status): Likewise.

2011-12-05  Andrey Smirnov  <andrew.smirnov@gmail.com>

	* breakpoint.c (init_breakpoint_sal): Remove nested definitions of
	`i'(-Wshadow).

2011-12-05  Andrey Smirnov  <andrew.smirnov@gmail.com>

	* bcache.c (bcache): Rename `bcache' to `cache'(-Wshadow).

2011-12-05  Andrey Smirnov  <andrew.smirnov@gmail.com>

	* amd64-tdep.c (amd64_push_dummy_call): Remove nested definition
	of `tdep'(-Wshadow).

2011-12-03  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix compilation --without-expat.
	* solib-svr4.c (svr4_free_so, svr4_free_library_list): Move them here
	from ...
	[HAVE_LIBEXPAT] (svr4_free_so, svr4_free_library_list): ... here.

2011-12-02  Paul Pluzhnikov  <ppluzhnikov@google.com>
	    Jan Kratochvil  <jan.kratochvil@redhat.com>

	* Makefile.in (XMLFILES): Add library-list-svr4.dtd.
	* features/library-list-svr4.dtd: New file.
	* remote.c (PACKET_qXfer_libraries_svr4): New.
	(remote_protocol_features): new entry for PACKET_qXfer_libraries_svr4.
	(remote_xfer_partial): Handle TARGET_OBJECT_LIBRARIES_SVR4.
	* solib-svr4.c (struct svr4_library_list): New.
	[HAVE_LIBEXPAT]: Include xml-support.h.
	[HAVE_LIBEXPAT] (svr4_library_list_start_library)
	[HAVE_LIBEXPAT] (svr4_library_list_start_list, svr4_library_attributes)
	[HAVE_LIBEXPAT] (svr4_library_list_children)
	[HAVE_LIBEXPAT] (svr4_library_list_attributes)
	[HAVE_LIBEXPAT] (svr4_library_list_elements, svr4_parse_libraries)
	[HAVE_LIBEXPAT] (svr4_current_sos_via_xfer_libraries)
	[!HAVE_LIBEXPAT] (svr4_current_sos_via_xfer_libraries): New.
	(svr4_read_so_list): Extend the corruption message by addresses.
	(svr4_current_sos): New variable library_list, call
	svr4_current_sos_via_xfer_libraries.
	* target.h (enum target_object): New TARGET_OBJECT_LIBRARIES_SVR4.

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

	PR threads/13448
	* dwarf2read.c (decode_locdesc): Handle DW_OP_const8u.
	For DW_OP_GNU_push_tls_address increment the value, new comment for it.

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

	PR breakpoints/13346
	* dwarf2read.c (process_psymtab_comp_unit): Set
	PSYMTABS_ADDRMAP_SUPPORTED.
	* psympriv.h (struct partial_symtab): Comment textlow and texthigh
	validity.  New field psymtabs_addrmap_supported.
	* psymtab.c (find_pc_sect_psymtab_closer): New gdb_assert on
	psymtabs_addrmap_supported.
	(find_pc_sect_psymtab): Do not fallback to TEXTLOW and TEXTHIGH for
	!PSYMTABS_ADDRMAP_SUPPORTED.
	(dump_psymtab, maintenance_info_psymtabs): Print also
	psymtabs_addrmap_supported.

2011-12-01  Doug Evans  <dje@google.com>

	* python/py-type.c (type_object_methods): Fix "array" doc string.

2011-12-01  Andrew Burgess  <aburgess@broadcom.com>

	* source.c (print_source_lines_base): Fix missing braces on else
	clause leading to additional output.

2011-11-30  Ulrich Weigand  <uweigand@de.ibm.com>

	* s390-nat.c (SUBOFF): Remove.
	(s390_native_supply, s390_native_collect): New functions.
	(supply_gregset, supply_fpregset): Use s390_native_supply.
	(fill_gregset, fill_fpregset): Use s390_native_collect.

	* s390-tdep.c (s390_pseudo_register_reggroup_p): Update comment.
	(s390_unwind_pseudo_register): New function.
	(s390_prologue_frame_unwind_cache): Unwind PSW address and mask
	registers instead of PC and CC.
	(s390_backchain_frame_unwind_cache): Likewise.
	(s390_sigtramp_frame_unwind_cache): Do not unwind PC, CC, or
	full GPR pseudos.
	(s390_trad_frame_prev_register): New function.
	(s390_frame_prev_register): Use it.
	(s390_sigtramp_frame_prev_register): Likewise.
	(s390_dwarf2_prev_register): Use s390_unwind_pseudo_register.
	(s390_dwarf2_frame_init_reg): Unwind PSW address and mask.  Use
	special callback to unwind any pseudo.

	* features/s390-core32.xml: Add pswm/pswa to save/restore group.
	* features/s390-core64.xml: Likewise.
	* features/s390x-core64.xml: Likewise.
	* features/s390-linux32.c: Regenerate.
	* features/s390-linux64.c: Likewise.
	* features/s390x-linux64.c: Likewise.

2011-11-30  Ulrich Weigand  <uweigand@de.ibm.com>

	* s390-tdep.c (s390_gdbarch_init): Call set_gdbarch_get_siginfo_type.

2011-11-30  Ulrich Weigand  <uweigand@de.ibm.com>

	* s390-tdep.c (s390_displaced_step_fixup): Fix processing of LARL
	instruction.  Add more diagnostic output.

2011-11-29  Andrey Smirnov  <andrew.smirnov@gmail.com>

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

2011-11-29  Sanjoy Das  <sdas@igalia.com>

	* jit.c (add_objfile_entry, jit_reader_try_read_symtab)
	(jit_bfd_try_read_symtab): Fix comments.

2011-11-28  DJ Delorie  <dj@redhat.com>

	* NEWS: Mention RL78 simulator.

2011-11-28  Joel Brobecker  <brobecker@adacore.com>

	* symfile.h (struct quick_symbol_functions): Fix the documentation
	of field map_matching_symbols, as symbols are sorted using
	strcmp_iw_ordered, not strcmp_iw.

2011-11-28  Paul Hilfinger  <hilfinger@adacore.com>

	* symfile.h (struct quick_symbol_functions): Update the
	documentation for field map_matching_symbols.

2011-11-28  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (compare_names): Fix wrong return value in case
	string1 starts with the same contents as string2, followed
	by an underscore that do not start a symbol name suffix.

2011-11-28  Phil Muldoon  <pmuldoon@redhat.com>

	PR python/13369
	PR python/13374

	* python/python.c (gdbpy_decode_line): Do not acquire GIL.
	* python/py-inferior.c (inferior_to_inferior_object): Ditto.
	* python/py-value.c (valpy_nonzero): Use TRY_CATCH to catch GDB
	exceptions.
	* python/py-type.c (typy_strip_typedefs): Ditto.
	(typy_legacy_template_argument): Ditto.
	* python/py-inferior.c (inferior_to_inferior_object): Ditto.
	* python/py-breakpoint.c (bppy_set_ignore_count): Ditto.

2011-11-27  Joel Brobecker  <brobecker@acacore.com>

	* remote.c (remote_get_tracepoint_status): Delete addrbuf
	local variable.  Avoid use of sprintf_vma.

2011-11-27  Sanjoy Das  <sdas@igalia.com>

	Fix regression in jit.exp.
	* jit.c (jit_reader_try_read_symtab, jit_bfd_try_read_symtab)
	(jit_register_code): Set the jit_objfile_data field to the correct
	value.

2011-11-25  Uros Bizjak  <ubizjak@gmail.com>

	* alpha-tdep.c (br_opcode): New.
	(ldl_l_opcode, ldq_l_opcode, stl_c_opcode, stq_c_opcode): Ditto.
	(alpha_deal_with_atomic_sequence): New function.
	(alpha_gdbarch_init): Handle single stepping of atomic sequences
	with alpha_deal_with_atomic_sequence.

2011-11-24  Tristan Gingold  <gingold@adacore.com>

	* machoread.c (oso_el): Remove num_Sections, symbols, offsets
	fields.  Add oso_sym, end_sym and nbr_syms.
	(macho_register_oso): Change interface.
	(macho_symtab_add_minsym): New function.
	(macho_symtab_read): Rewritten.
	(get_archive_prefix_len): Remove trailing blanks.
	(oso_el_compare_name): Add comment.
	(struct macho_sym_hash_entry): New structure.
	(macho_relocate_common_syms): Remove.
	(macho_sym_hash_newfunc): New function.
	(macho_resolve_oso_sym_with_minsym): Likewise.
	(macho_add_oso_symfile): Rewritten.
	(macho_symfile_read_all_oso): Remove trailing blanks.
	Adjust code to free oso vector.
	(macho_symfile_read): Likewise.
	Move code to initialize minimal symbol

2011-11-24  Maciej W. Rozycki  <macro@codesourcery.com>

	* mips-tdep.c (extended_offset): Fix formatting.

2011-11-23  Doug Evans  <dje@google.com>

	* dwarf2read.c (dw2_lookup_symtab): Add comment.
	(dw2_expand_symtabs_with_filename): Ditto.
	(dw2_expand_symtabs_matching): Ditto.
	(dw2_map_symbol_filenames): Ditto.

2011-11-23  Andrey Smirnov  <andrew.smirnov@gmail.com>

	* ada-lang.c (assign_aggregate): Minor reformatting.

2011-11-23  Andrey Smirnov  <andrew.smirnov@gmail.com>

	* ada-lang.c (assign_aggregate): Remove declaration of local
	variable `i' which is shadowing another variable with the same
	name declared in the outer scope.

2011-11-23  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (get_base_type): Renames base_type.  Adjust all
	calls throughout this file.

2011-11-23  Joel Brobecker  <brobecker@adacore.com>

	* gdb-dlfcn.c (gdb_dlopen): Add missing coma in call to
	FormatMessage.

2011-11-22  Tom Tromey  <tromey@redhat.com>

	PR mi/8444:
	* mi/mi-common.h (EXEC_ASYNC_SOLIB_EVENT, EXEC_ASYNC_FORK)
	(EXEC_ASYNC_VFORK, EXEC_ASYNC_SYSCALL_ENTRY)
	(EXEC_ASYNC_SYSCALL_RETURN, EXEC_ASYNC_EXEC): New constants.
	* mi/mi-common.c (async_reason_string_lookup): Add new reasons.
	* breakpoint.c (print_it_catch_fork, print_it_catch_vfork)
	(print_it_catch_syscall, print_it_catch_exec)
	(internal_bkpt_print_it): Use ui_out.  Emit stop reason.
	(bpstat_print): Add 'kind' argument.  Handle
	TARGET_WAITKIND_LOADED.
	* infrun.c (normal_stop): Update for bpstat_print change.  Don't
	handle TARGET_WAITKIND_LOADED here.
	* breakpoint.h (bpstat_print): Update.

2011-11-22  Tom Tromey  <tromey@redhat.com>

	* mi/mi-interp.c (mi_on_normal_stop): Call bpstat_print.

2011-11-22  Tom Tromey  <tromey@redhat.com>

	* mi/mi-common.c (_initialize_gdb_mi_common): Remove.
	Use static_assert to check the size of
	async_reason_string_lookup.
	* common/gdb_assert.h (static_assert): New macro.

2011-11-22  Alan Modra  <amodra@gmail.com>

	* rs6000-tdep.c (ppc_deal_with_atomic_sequence): Correct branch
	destination calculation.  Don't expect >> to sign extend.  Don't
	add a break if branch lands inside the sequence anywhere.

2011-11-21  Keith Seitz  <keiths@redhat.com>

	* gdb.mi/mi-var-display.exp: Remove XFAIL for c_variable-7.51,
	-var-evaluate-expression of an enumeration and fix expected result.
	* gdb.mi/mi2-varvdisplay.exp: Likewise.

2011-11-21  Kwok Cheung Yeung  <kcy@codesourcery.com>

	* osdata.c (info_osdata_command): Rename nprocs to nrows.  Handle
	the case where osdata->items is empty.  Rename column names to a
	canonical form to avoid problems with unusual column names.

2011-11-21  Yao Qi  <yao@codesourcery.com>

	* MAINTAINERS (Write After Approval): Keep list in alphabetical order.

2011-11-20  Stan Shebs  <stan@codesourcery.com>

	* NEWS: Mention tracepoint additions.
	* breakpoint.h (struct tracepoint): New field traceframe_usage.
	* breakpoint.c (print_one_breakpoint_location): Identify
	tracepoints as such when reporting hit counts, report
	trace buffer usage.
	(create_tracepoint_from_upload): Copy status info.
	* tracepoint.h (struct trace_status): Rename error_desc to stop_desc,
	add fields user_name, notes, start_time, stop_time.
	(struct uploaded_tp): Add fields hit_count, traceframe_usage.
	* tracepoint.c (trace_user): New global.
	(trace_notes): New global.
	(trace_stop_notes): New global.
	(start_tracing): Add argument and trace note handling.
	(stop_tracing): Ditto.
	(trace_start_command): Add notes argument.
	(trace_stop_command): Ditto.
	(trace_status_command): Report additional status info.
	(trace_status_mi): Similarly.
	(trace_save): Update, record tracepoint status.
	(set_disconnected_tracing): Call target method directly.
	(send_disconnected_tracing_value): Remove.
	(set_trace_user): New function.
	(set_trace_notes): New function.
	(set_trace_stop_notes): New function.
	(parse_trace_status): Handle additional status.
	(parse_tracepoint_status): New function.
	(parse_tracepoint_definition): Call it.
	(tfile_get_tracepoint_status): New function.
	(init_tfile_ops): Use it.
	(_initialize_tracepoint): Add new setshows.
	* target.h (struct target_ops): New methods to_get_tracepoint_status
	and to_set_trace_notes.
	(target_get_tracepoint_status): New macro.
	(target_set_trace_notes): New macro.
	* target.c (update_current_target): Add new methods.
	* remote.c (remote_get_tracepoint_status): New function.
	(remote_set_trace_notes): New function.
	(init_remote_ops): Add them.
	* mi/mi-main.c (mi_cmd_trace_start): Add argument to call.
	(mi_cmd_trace_stop): Ditto.

2011-11-20  Sanjoy Das  <sdas@igalia.com>

	* jit.c: Include regcache.h.
	(jit_gdbarch_data, jit_frame_unwind): New static variables.
	(jit_unwind_reg_set_impl, free_reg_value_impl)
	(jit_unwind_reg_get_impl, jit_frame_sniffer)
	(jit_frame_unwind_stop_reason, jit_frame_this_id)
	(jit_frame_prev_register, jit_dealloc_cache)
	(jit_prepend_unwinder, jit_gdbarch_data_init): New functions.
	(jit_inferior_init): Prepend (new) pseudo unwinder by calling
	jit_prepend_unwinder.
	(_initialize_jit): Register new gdbarch data jit_gdbarch_data.

2011-11-20  Sanjoy Das  <sdas@igalia.com>

	* jit.c: Include block.h, dictionary.h and frame-unwind.h.
	(add_objfile_entry, jit_target_read_impl, jit_object_open_impl)
	(jit_symtab_open_impl, compare_block, jit_block_open_impl)
	(jit_symtab_line_mapping_add_impl, jit_symtab_close_impl)
	(finalize_symtab, jit_object_close_impl)
	(jit_reader_try_read_symtab, jit_bfd_try_read_symtab)
	(free_objfile_data): New functions.
	(_initialize_jit): Register jit_objfile_data with a proper cleanup
	function.

2011-11-20  Sanjoy Das  <sdas@igalia.com>

	* jit.c: Include gdb-dlfcn.h.
	(loaded_jit_reader, reader_init_fn_sym): New static variables.
	(jit_reader_load, jit_reader_load_command)
	(jit_reader_unload_command): New functions.
	(_initialize_jit): Add commands "jit-reader-load" and
	"jit-reader-unload".

2011-11-20  Sanjoy Das  <sdas@igalia.com>

	* Makefile.in: Add gdb-dlfcn.c and gdb-dlfcn.h to build system.
	* config.in: Add new #define HAVE_LIBDL.
	* configure.ac: Add check for -ldl.
	* configure: Re-generated by autoconf.
	* gdb-dlfcn.c: New file.
	* gdb-dlfcn.h: New file.

2011-11-20  Sanjoy Das  <sdas@igalia.com>

	* config.in: Add new #defines: JIT_READER_DIR and
	JIT_READER_DIR_RELOCATABLE.
	* configure.ac: New GDB directory entry for jit-reader-dir.
	* configure: Re-generated by autoconf.
	* jit.c: New static variable: const char *jit_reader_dir.
	(_initialize_jit): Relocate jit_reader_dir.

2011-11-20  Sanjoy Das  <sdas@igalia.com>

	* Makefile.in: Add jit-reader.h as a header.  Have it installed in
	$(includedir)/gdb.
	* configure.ac: Generate a correct value for TARGET_PTR for
	jit-reader.h.  Tell configure to generate jit-reader.h from
	jit-reader.in.
	* configure: Re-generated by autoconf.
	* jit-reader.in: New file.
	* jit.c: Include jit-reader.h.

2011-11-20  Sanjoy Das  <sdas@igalia.com>

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

2011-11-18  Ulrich Weigand  <uweigand@de.ibm.com>

	* findvar.c (read_frame_register_value): Respect value_offset
	of the register value.  Remove big-endian special case.

2011-11-18  Tom Tromey  <tromey@redhat.com>

	PR build/7196:
	* remote.c (putpkt_for_catch_errors): New function.
	(remote_kill): Use it.

2011-11-18  Yao Qi  <yao@codesourcery.com>

	* breakpoint.c (create_breakpoint): Produce query message according to
	breakpoint's type.
	Allocate tracepoint per correct type.
	Don't check SALs for pending fast tracepoints.
	* tracepoint.c (process_tracepoint_on_disconnect): New.
	(disconnect_tracing): Call process_tracepoint_on_disconnect.

2011-11-18  Yao Qi  <yao@codesourcery.com>

	* breakpoint.c (install_breakpoint):  Add one more parameter so that
	update_global_location_list is called conditionally.
	(create_fork_vfork_event_catchpoint): Update.
	(create_syscall_event_catchpoint): Update.
	(create_breakpoint_sal): Update.
	(create_breakpoint_sal): Update. Call do_cleanups before
	install_breakpoint.
	* ada-lang.c (create_ada_exception_catchpoint): Update.
	* breakpoint.h (install_breakpoint): Update declaration.

2011-11-16  Ulrich Weigand  <uweigand@de.ibm.com>

	* spu-tdep.c (spu_return_value): Fix handling of
	TYPE_CALLING_CONVENTION annotation.

2011-11-16  Ulrich Weigand  <uweigand@de.ibm.com>

	* skip.c (skip_function_command): Work around uninitialized
	variable warning.

2011-11-16  David S. Miller  <davem@davemloft.net>

	* utils.c (report_command_stats): Cast delta_wall_time 'tv_sec' and
	'tv_usec' to long for printf since these fields have a type which
	varies.

2011-11-15  Doug Evans  <dje@google.com>

	* buildsym.c (add_symbol_to_list): Delete outdated comment.

2011-11-15  Paul Koning  <paul_koning@dell.com>

	* python/py-type.c (typy_get_composite): New function.
	(typy_nonzero): New function.
	(typy_values): Rename from typy_fields.
	(typy_fields): New function.
	(typy_length): Raise exception if not struct, union, or enum type.
	(typy_getitem): Ditto.
	(typy_has_key): Ditto.
	(typy_make_iter): Ditto.

2011-11-15  Doug Evans  <dje@google.com>

	PR gdb/8367
	* NEWS: Mention new parameter basenames-may-differ.
	* dwarf2read.c (dw2_lookup_symtab): Avoid calling gdb_realpath if
	! basenames_may_differ.
	* psymtab.c (lookup_partial_symtab): Ditto.
	* symtab.c (lookup_symtab): Ditto.
	(basenames_may_differ): New global.
	(_initialize_symtab): New parameter basenames-may-differ.
	* symtab.h (basenames_may_differ): Declare.

2011-11-15  Pedro Alves  <pedro@codesourcery.com>
	    Luis Machado  <lgustavo@codesourcery.com>

	* auxv.c: Include observer.h.
	(auxv_inferior_data_cleanup): New.
	(invalidate_auxv_cache_inf): New.
	(invalidate_auxv_cache): New.
	(get_auxv_inferior_data): New.
	(auxv_inferior_data): New static global.
	(auxv_info): New structure.
	(target_auxv_search): Use get_auxv_inferior_data instead of
	target_read_alloc and don't free cached buffers.
	(fprint_target_auxv): Likewise
	(_initialize_auxv): Register per-inferior auxv cache and register
	observers to invalidate auxv cache when needed.

2011-11-14  Doug Evans  <dje@google.com>

	PR gdb/7200 Make "!" an alias for "shell".
	* NEWS: Add mention.
	* cli/cli-cmds.c (init_cli_cmds): Remove xdb_commands condition on
	adding "!" command, always add it.
	* cli/cli-decode.c (find_command_name_length): Recognize "!" as a
	command of length one.

2011-11-14  Stan Shebs  <stan@codesourcery.com>
	    Kwok Cheung Yeung  <kcy@codesourcery.com>

	* NEWS: Document shorter fast tracepoints and qTMinFTPILen packet.
	* i386-tdep.c (i386_fast_tracepoint_valid_at): Query target for
	the minimum instruction size for fast tracepoints.
	* target.h (struct target_ops): Add new method
	to_get_min_fast_tracepoint_insn_len.
	(target_get_min_fast_tracepoint_insn_len): New.
	* target.c (update_current_target): Set up new target operation.
	* remote.c (remote_write_bytes_aux): Fix typo.
	(remote_get_min_fast_tracepoint_insn_len): New.
	(init_remote_ops): Initialize new field.

2011-11-14  Tom Tromey  <tromey@redhat.com>

	* tracepoint.c (encode_actions_1): Use the location's gdbarch.
	(encode_actions): Likewise.

2011-11-14  Yao Qi  <yao@codesourcery.com>

	* remote.c (struct remote_state): <install_in_trace> new field.
	(PACKET_InstallInTrace): New enum value.
	(remote_install_in_trace_feature): Support InstallInTrace.
	(remote_supports_install_in_trace): Likewise.
	(remote_protocol_features): Likewise.
	(_initialize_remote): Likewise.
	(remote_can_download_tracepoint): New.
	* target.h (struct target): New field
	`to_can_download_tracepoint'.
	(target_can_download_tracepoint): New macro.
	* target.c (update_current_target): Update.
	* breakpoint.h (struct bp_location): Add comment on field
	`duplicate'.
	* breakpoint.c (should_be_inserted): Don't differentiate breakpoint
	and tracepoint.
	(remove_breakpoints): Don't remove tracepoints.
	(tracepoint_locations_match ): New.
	(breakpoint_locations_match): Call it.
	(disable_breakpoints_in_unloaded_shlib): Handle tracepoint.
	(download_tracepoint_locations): New.
	(update_global_location_list): Call it.
	* tracepoint.c (find_matching_tracepoint): Delete.
	(find_matching_tracepoint_location): Renamed from
	find_matching_tracepoint.  Return bp_location rather than
	tracepoint.
	(merge_uploaded_tracepoints): Set `inserted' field to 1 if
	tracepoint is found.

2011-11-14  Yao Qi  <yao@codesourcery.com>

	* target.h (struct target): <to_download_tracepoint> Change type
	of parameter from tracepoint to bp_location.
	* target.c (update_current_target): Update.
	* tracepoint.c (start_tracing): Update.
	* remote.c (remote_download_tracepoint): Remove loop for each location
	of a tracepoint.

2011-11-14  Maciej W. Rozycki  <macro@codesourcery.com>

	* i386-nat.c (i386_insert_hw_breakpoint): Call
	i386_update_inferior_debug_regs.
	(i386_remove_hw_breakpoint): Likewise.

2011-11-14  Yao Qi  <yao@codesourcery.com>

	* breakpoint.c (init_raw_breakpoint): Call
	add_location_to_breakpoint to replace duplicated code.
	(add_location_to_breakpoint): Adjust the breakpoint's
	address prior to allocating a location.

2011-11-12  Matt Rice  <ratmice@gmail.com>

	* macrocmd.c (macro_no_macro_info): New function.
	(macro_expand_command): Use macro_no_macro_info.
	(macro_expand_once_command): Ditto.
	(info_macro_command): Add argument processing,
	move info_definitions_command here.
	(_initialize_macrocmd): Remove info definitions command.
	Add arguments to info macro help text.
	* NEWS: Replace info definitions command with new info macro options.

2011-11-11  Keith Seitz  <keiths@redhat.com>

	PR gdb/12843
	* linespec.c (locate_first_half): Keep ':' if it looks
	like it could be part of a Windows path starting with
	a drive letter.

2011-11-10  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (linux_nat_wait): Don't force waking up the event
	loop when returning a TARGET_WAITKIND_NO_RESUMED.

2011-11-10  Pedro Alves  <pedro@codesourcery.com>

	* target.c (target_waitstatus_to_string): Handle
	TARGET_WAITKIND_NO_RESUMED.

2011-11-10  Doug Evans  <dje@google.com>

	* dwarf2read.c (dw2_map_symbol_filenames): New parameter
	`need_fullname'.
	* psymtab.c (map_symbol_filenames_psymtab): Ditto.
	(map_partial_symbol_filenames): Ditto.  All callers updated.
	* psymtab.h (map_partial_symbol_filenames): Update prototype.
	* symfile.h (struct quick_symbol_functions, map_symbol_filenames): New
	parameter need_fullname.

	* psymtab.c (psymtab_to_fullname): Use cached copy if it exists.
	* source.c (symtab_to_fullname): Ditto.

	* defs.h (is_cplus_marker, set_demangling_style): Moved to ...
	* gdb-demangle.h: ... here.  New file.
	* demangle.c: #include "gdb-demangle.h".
	(_initialize_demangler): Use initialize_file_ftype for prototype.
	Move "set demangle" and "set asm-demangle" parameters here from utils.c
	(demangle, show_demangle, asm_demangle, show_asm_demangle): Move here
	from utils.c
	* utils.c: Update. #include "gdb-demangle.h".
	* symtab.h (asm_demangle): Delete.
	(demangle): Move declaration next to use.
	* breakpoint.c: #include "gdb-demangle.h" instead of "demangle.h".
	* dwarf2read.c: #include "gdb-demangle.h".
	* gnu-v2-abi.c: Ditto.
	* jv-typeprint.c: Ditto.
	* mdebugread.c: Ditto.
	* p-typeprint.c: Ditto.
	* stabsread.c: Ditto.
	* printcmd.c: Ditto.
	(asm_demangle): Delete declaration.
	* tui/tui-stack.c: #include "gdb-demangle.h".

	* python/py-type.c (typy_fields_items): Call check_typedef.

2011-11-10  Joel Brobecker  <brobecker@adacore.com>

	* findvar.c (read_frame_register_value): Read the correct bytes
	from registers on big-endian architectures.

2011-11-10  Tom Tromey  <tromey@redhat.com>

	* procfs.c (load_syscalls): Make a cleanup.
	(open_procinfo_files): fd==0 is ok.

2011-11-10  Joel Brobecker  <brobecker@adacore.com>

	* procfs.c (iterate_over_mappings): Call do_cleanups before
	returning.

2011-11-09  Doug Evans  <dje@google.com>

	* gdbtypes.c (check_typedef): Document that this function can
	throw an exception.

2011-11-09  Tom Tromey  <tromey@redhat.com>

	PR c++/13342:
	* valops.c (value_full_object): Return early if real type is
	smaller than the enclosing type.

2011-11-08  Yao Qi  <yao@codesourcery.com>

	* amd64-tdep.c (amd64_relocate_instruction): Make it static.

2011-11-08  Meador Inge  <meadori@codesourcery.com>

	* arm-tdep.c (thumb_analyze_prologue): Always fallback on the SP
	register when the frame can't be determined.
	* arm-tdep.c (arm_analyze_prologue): Ditto.

2011-11-07  Stan Shebs  <stan@codesourcery.com>

	* MAINTAINERS: Move Michael Snyder to Past Maintainers.

2011-11-07  Joel Brobecker  <brobecker@adacore.com>

	* infrun.c (handle_inferior_event): Minor reformatting.

2011-11-05  Doug Evans  <dje@google.com>

	* source.c (forget_cached_source_info_for_objfile): Move call to
	objfile->sf->qf->forget_cached_source_info outside of
	ALL_OBJFILE_SYMTABS loop.
	(forget_cached_source_info): Delete unused variable `s'.

2011-11-05  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* i386-nat.c (dr_ref_count): Remove unused variable.

2011-11-05  Doug Evans  <dje@google.com>

	* main.c (captured_main): Set lim_at_start before calling
	make_command_stats_cleanup.

2011-11-04  Doug Evans  <dje@google.com>

	* utils.c: #include "timeval-utils.h".
	(cmd_stats): Rename start_time to start_cpu_time.
	New member start_wall_time.
	(report_command_stats): Report wall time.
	(make_command_stats_cleanup): Record start wall time.

2011-11-04  Tom Tromey  <tromey@redhat.com>

	* cp-namespace.c (cp_lookup_symbol_imports): Reindent.

2011-11-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* coff-pe-read.c: Include defs.h before bfd.h.

2011-11-04  Phil Muldoon  <pmuldoon@redhat.com>

	PR Python/13345

	* python/python.c (python_run_simple_file): Expand tilde in path.

2011-11-04  Phil Muldoon  <pmuldoon@redhat.com>

	PR Python/13363

	* python/py-type.c (typy_lookup_type): Do not return a type in
          an exception handler.

2011-11-03  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Eli Zaretskii  <eliz@gnu.org>

	* linux-nat.c (_initialize_linux_nat): Improve help
	for `info proc stat', `info proc status', `info proc cwd',
	`info proc cmdline' and `info proc exe'.

2011-11-02  Stan Shebs  <stan@codesourcery.com>

	String collection for tracepoints.
	* NEWS: Mention string collection.
	* common/ax.def (tracenz): New bytecode.
	* ax-gdb.h (trace_string_kludge): Declare.
	* ax-gdb.c: Include valprint.h and c-lang.h.
	(trace_string_kludge): New global.
	(gen_traced_pop): Add string case.
	(agent_command): Add string case.
	* tracepoint.h (decode_agent_options): Declare.
	* tracepoint.c: Include cli-utils.h.
	(decode_agent_options): New function.
	(validate_actionline): Call it.
	(encode_actions_1): Ditto.
	* target.h (struct target_ops): New method to_supports_string_tracing.
	(target_supports_string_tracing): New macro.
	* target.c (update_current_target): Add to_supports_string_tracing.
	* remote.c (struct remote_state): New field string_tracing.
	(remote_string_tracing_feature): New function.
	(remote_protocol_features): New feature tracenz.
	(remote_supports_string_tracing): New function.
	(init_remote_ops): Set to_supports_string_tracing.

2011-11-02  Pedro Alves  <pedro@codesourcery.com>
	    Jan Kratochvil  <jan.kratochvil@redhat.com>

	* linux-nat.c: Include cli/cli-utils.h.
	(enum info_proc_what): New.
	(linux_nat_info_proc_cmd): Rename to ...
	(linux_nat_info_proc_cmd_1): ... here.  Remove variables argv and all.
	New parameter what.  Initialize cmdline_f, cwd_f, exe_f, mappings_f,
	status_f and stat_f from WHAT.  Throw error on extra parameters.
	(linux_nat_info_proc_cmd, linux_nat_info_proc_cmd_mappings)
	(linux_nat_info_proc_cmd_stat, linux_nat_info_proc_cmd_status)
	(linux_nat_info_proc_cmd_cwd, linux_nat_info_proc_cmd_cmdline)
	(linux_nat_info_proc_cmd_exe, linux_nat_info_proc_cmd_all): New.
	(_initialize_linux_nat): New variable info_proc_cmdlist.  Install `info
	proc mappings', `info proc stat`, `info proc status', `info proc cwd',
	`info proc cmdline', `info proc exe' and `info proc all' as real
	subcommands of `info proc'.

2011-11-01  Justin Lebar  <justin.lebar@gmail.com>

	* Makefile.in: (SFILES): Add skip.c.
	(HFILES_NO_SRCDIR): Add skip.h.
	(COMMON_OBS): Add skip.o.
	* skip.h, skip.c: New.
	* breakpoint.h (set_default_breakpoint): Remove.
	(get_sal_arch): Declare.
	* breakpoint.c: Remove default_breakpoint_valid,
	default_breakpoint_address, default_breakpoint_symtab,
	default_breakpoint_line, default_breakpoint_pspace variables.
	(get_sal_arch): Make public.
	(set_default_breakpoint): Remove.
	(parse_breakpoint_sals, create_breakpoint, clear_command,
	decode_line_spec_1): Remove uses of default_breakpoint variables;
	replaced with function calls into stack.c.
	* cli/cli-cmds.h: Add cmd_list_element *skiplist.
	* cli/cli-cmds.c: Add skiplist.
	(init_cmd_lists): Initialize skiplist.
	(init_cli_cmds): Fix comment (classes of commands appear in
	alphabetical order).
	* infrun.c (handle_inferior_event): Add check that we don't step into
	a function whose pc is marked for skip.
	* stack.c: Declare last_displayed_sal_valid, last_displayed_pspace,
	last_displayed_addr, last_displayed_symtab, last_displayed_line
	variables.
	(set_last_displayed_sal): New static function.
	(print_frame_info): Switch call to set_default_breakpoint to call to
	set_last_displayed_sal.
	(clear_last_displayed_sal, last_displayed_sal_is_valid,
	get_last_displayed_pspace, get_last_displayed_addr,
	get_last_displayed_symtab, get_last_displayed_line,
	get_last_displayed_sal): New public functions.
	* stack.h (clear_last_displayed_sal, last_displayed_sal_is_valid,
	get_last_displayed_pspace, get_last_displayed_addr,
	get_last_displayed_symtab, get_last_displayed_line,
	get_last_displayed_sal): Declare.

2011-11-01  Justin Lebar <justin.lebar@gmail.com>

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

2011-10-29  Yao Qi  <yao@codesourcery.com>

	* infcmd.c (disconnect_command): Call disconnect_tracing.

2011-10-29  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup.
	* symtab.c (skip_prologue_sal): Code reformatting.

2011-10-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	PR symtab/13208
	* jit.c (jit_register_code): Remove unused variable my_cleanups.  Check
	for NULL from bfd_open_from_target_memory.  Fix ownership of NBFD and
	SAI.

2011-10-28  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (linux_nat_filter_event): Remove `options'
	parameter, and dead code that used it.  If we're handling a
	PTRACE_EVENT_EXEC event, and the thread group leader is no longer
	in our lwp list, re-add it.
	(check_zombie_leaders): New.
	(linux_nat_wait_1): Remove `options' and `pid' locals.  Always
	wait for children with WNOHANG, and always wait for all children.
	Don't check for no resumed children upfront.  Simplify wait loop.
	Check for zombie thread group leaders after handling all wait
	statuses.  Return TARGET_WAITKIND_NO_RESUMED if there no
	unwaited-for children left.
	* infrun.c (fetch_inferior_event): Handle TARGET_WAITKIND_NO_RESUMED.
	(handle_inferior_event): Handle TARGET_WAITKIND_NO_RESUMED.
	(normal_stop): Handle TARGET_WAITKIND_NO_RESUMED.
	* target.h (enum target_waitkind) <TARGET_WAITKIND_NO_RESUMED>: New.

2011-10-28  Sterling Augustine  <saugustine@google.com>

	* psymtab.c (map_symbol_filenames_psymtab): Call QUIT.
	* symtab.c (free_completion_list): New function.
	(do_free_completion_list): Likewise.
	(default_make_symbol_completion_list_break_on): New variable
	back_to. Call make_cleanup and discard_cleanups.
	(make_source_files_completion_list): Likewise.

2011-10-28  Paul Koning  <paul_koning@dell.com>

	* python/lib/gdb/types.py (deep_items): Rename from deepitems.
	* NEWS: Mention deep_items.

2011-10-28  Alen Skondro  <askondro@gmail.com>

	* ser-tcp.c [USE_WIN32API] (ETIMEDOUT): Don't define if already
	defined.

2011-10-27  Meador Inge  <meadori@codesourcery.com>

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

2011-10-27  Joel Brobecker  <brobecker@adacore.com>

	* value.h (read_frame_register_value): Add declaration.
	* findvar.c (read_frame_register_value): New function.
	(value_from_register): Use read_frame_register_value
	instead of get_frame_register_value + value_contents_copy
	to get value contents.

2011-10-27  Doug Evans  <dje@google.com>

	* cli/cli-cmds.c (source_script_with_search): Pass full path to
	source_script_from_stream if it may have been found on the search path.
	* python/py-auto-load.c (source_section_scripts): Pass full path to
	source_python_script_for_objfile.
	* python/python.c (source_python_script): Delete stream parameter.
	All callers updated.
	(source_python_script_for_objfile): Ditto.
	* python/python-internal.h (source_python_script_for_objfile): Update.
	* python/python.h (source_python_script): Update.

2011-10-27  Tom Tromey  <tromey@redhat.com>

	* ada-lang.h (ada_start_decode_line_1, ada_finish_decode_line_1)
	(ada_sals_for_line): Remove declarations.

2011-10-27  Kevin Pouget  <kevin.pouget@st.com>

	Move unwind reasons to an external .def file
	* frame.c (frame_stop_reason_string): Rewrite using
	unwind_stop_reasons.def.
	* frame.h (enum unwind_stop_reason): Likewise.
	* python/py-frame.c (gdbpy_initialize_frames): Likewise.
	(gdbpy_frame_stop_reason_string): Use new enum unwind_stop_reason
	constants for bound-checking.
	* unwind_stop_reasons.def: New file.
	* stack.c (backtrace_command_1): Handle UNWIND_FIRST_ERROR as an alias
	instead of a distinct value.

2011-10-27  Phil Muldoon  <pmuldoon@redhat.com>

        PR python/13331

	* python/py-function.c (fnpy_call): Check 'args' is not NULL.
	(convert_values_to_python): Return on Python tuple allocation
	failure.  Return NULL on value conversion error.

2011-10-27  Phil Muldoon  <pmuldoon@redhat.com>

	* python/py-breakpoint.c (bppy_set_enabled): Use TRY_CATCH.
	(bppy_set_task): Ditto.
	(bppy_delete_breakpoint): Ditto.
	* python/py-symbol.c (gdbpy_lookup_symbol): Ditto.
	(gdbpy_lookup_global_symbol): Ditto.
	* python/py-lazy-string.c (stpy_convert_to_value): Ditto.
	* python/py-frame.c (frapy_is_valid): Ditto.
	(frame_info_to_frame_object): Ditto.
	* python/py-type.c (typy_lookup_type): Ditto.
	(typy_getitem): Ditto.
	(typy_has_key): Ditto.
	(typy_richcompare): Use TRY_CATCH.  Do not return Py_NE on error.

2011-10-26  Joel Brobecker  <brobecker@adacore.com>

	* gdbarch.h: Regenerate.

2011-10-26  Meador Inge  <meadori@codesourcery.com>

	* gdbarch.sh (function_list): Use 'pstring' when printing
	'gcore_bfd_target'.
	* gdbarch.c: Regenerate.

2011-10-26  Ulrich Weigand  <uweigand@de.ibm.com>

	* regcache.c (registers_changed_ptid): Invalidate thread architecture
	and frame caches if PTID refers to all threads of a process.

2011-10-26  Ulrich Weigand  <uweigand@de.ibm.com>

	* spu-tdep.c (spu_catch_start): Pass non-NULL breakpoint ops
	to create_breakpoint.

2011-10-26  Ulrich Weigand  <uweigand@de.ibm.com>

	* ppc-sysv-tdep.c (ppc_sysv_use_opencl_abi): New function.
	(ppc_sysv_abi_push_dummy_call): Use it.
	(do_ppc_sysv_return_value): Likewise.
	(ppc64_sysv_abi_push_dummy_call): Likewise.
	(ppc64_sysv_abi_return_value): Likewise.

2011-10-26  Paul Koning  <paul_koning@dell.com>

	* python/lib/gdb/types.py (deepitems): New function.
	
2011-10-25  Paul Koning  <paul_koning@dell.com>

	PR python/13327
	
	* python/py-value.c (value_to_value_object): Remove fetching of
	the value if it was lazy.
	(valpy_get_is_lazy): New function.
	(valpy_fetch_lazy): New function.

2011-10-24  Joel Brobecker  <brobecker@adacore.com>

	* ppc-sysv-tdep.c (do_ppc_sysv_return_value): Do not check
	FUNC_TYPE's calling convention if FUNC_TYPE is not a function.

2011-10-24  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (linux_handle_extended_wait): When handling a clone
	event, in non-stop, if not stopping, make sure the new lwp has
	last_resume_kind set to resume_continue.  Assert that when we're
	resuming the new lwp, its last_resume_kind is resume_continue.

2011-10-24  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (handle_inferior_event): Don't assume inferior_ptid is
	already set when marking the event thread as not executing in
	non-stop mode.

2011-10-24  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (handle_inferior_event): Add debug output for
	TARGET_WAITKIND_NO_HISTORY.

2011-10-24  Phil Muldoon  <pmuldoon@redhat.com>

	* NEWS: Move set/show extended-prompt to "New Options". Expand
	description. Fix typos.

2011-10-24  Phil Muldoon  <pmuldoon@redhat.com>

        PR python/13310

	* python/py-param.c (call_doc_function): Correctly deference on
	function exit.

2011-10-21  Joel Brobecker  <brobecker@adacore.com>

	* ada-tasks.c (print_ada_task_info): Fix computation of
	number of tasks displayed in command output.

2011-10-20  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Ulrich Weigand  <uweigand@de.ibm.com>

	* dwarf2-frame-tailcall.c: Include dwarf2-frame.h.
	(dwarf2_tailcall_prev_register_first): Use dwarf2_frame_cfa.
	(dwarf2_tailcall_sniffer_first): Remove variable pc_regnum.  Replace
	gdbarch_pc_regnum and frame_unwind_register_unsigned by
	gdbarch_unwind_pc.

2011-10-20  Cary Coutant  <ccoutant@google.com>

	* dwarf2read.c (dw2_get_file_names): Move adjustment for type
	section to...
	(partial_read_comp_unit_head): ...here.  Add is_debug_type_section
	flag.  Adjust all callers.
	(process_psymtab_comp_unit): Remove adjustment for type section.

2011-10-20  Aleksandar Ristovski  <aristovski@qnx.com>

	* cp-namespace.c (cp_scan_for_anonymous_namespaces): Changed function
	arguments by adding OBJFILE.  Instead of getting objfile from
	symbol's symtab, use new argument OBJFILE.
	* cp-support.h (cp_scan_for_anonymous_namespaces): Changed function
	arguments by adding OBJFILE.
	* gdb/dwarf2read.c (new_symbol_full): Change call to
	cp_scan_for_anonymous_namespaces to match new signature.
	* gdb/stabsread.c (define_symbol): Change call to
	cp_scan_for_anonymous_namespaces to match new signature.

2011-10-20  Phil Muldoon  <pmuldoon@redhat.com>

        PR python/13308
        PR python/13309

	* python/py-breakpoint.c (gdbpy_breakpoints): Fix List reference
	leak.
	* python/py-inferior.c (gdbpy_inferiors): Fix List reference
	leak.  Delete unused variables.

2011-10-20  Phil Muldoon  <pmuldoon@redhat.com>

	PR python/12656

	* python/py-frame.c (frapy_read_var): Use const struct *block.
	* python/py-type.c (typy_lookup_typename): Likewise.
	(typy_lookup_type): Likewise.
	(typy_legacy_template_argument): Likewise.
	(typy_template_argument): Likewise.
	(gdbpy_lookup_type): Likewise.
	* python/py-symbol.c (gdbpy_lookup_symbol): Likewise.
	* python/py-block.c (blpy_block_object): Likewise.
	(blpy_iter): Likewise.
	(blpy_get_start): Likewise.
	(blpy_get_end): Likewise.
	(blpy_get_function): Likewise.
	(blpy_get_superblock): Likewise.
	(set_block):  Likewise.
	(block_to_block_object): Likewise.
	(block_object_to_block): Likewise.
	(blpy_is_valid): Likewise.
	(blpy_get_global_block): New function.
	(blpy_get_static_block): New function.
	(blpy_is_global): New function.
	(blpy_is_static): New function.
	* blockframe.c (block_innermost_frame): Likewise.
	* valops.c (value_of_variable): Likewise.
	* frame.h: Update prototypes.
	* python/python-internal.h: Likewise.
	* value.h: Likewise.

2011-10-19  Cary Coutant  <ccoutant@google.com>

	* dwarf2read.c (create_debug_types_hash_table): Fix size of
	type_offset field.

2011-10-19  Cary Coutant  <ccoutant@google.com>

	* dwarf2read.c (peek_abbrev_code): New function.
	(dw2_get_file_names): Check for dummy compilation units.
	(create_debug_types_hash_table): Likewise.
	(process_psymtab_comp_unit): Likewise.
	(load_partial_comp_unit): Likewise.
	(load_full_comp_unit): Likewise.

2011-10-18  Aleksandar Ristovski  <aristovski@qnx.com>

	* solib-svr4.c (read_program_header): New variables pt_phdr, pt_phdr_p,
	initialize them from target PT_PHDR p_vaddr, relocate sect_addr by
	pt_phdr if PT_PHDR was found.

2011-10-17  Joost van der Sluis  <joost@cnoc.nl>

	* gdbtypes.h: Added TYPE_SAFE_NAME macro to get the name of a
	type or "<unnamed type"> when there is no name assigned.
	* gnu-v3-abi.c (gnuv3_rtti_type): Use TYPE_SAFE_NAME macro to
	avoid a sigint when no name is assigned.

2011-10-17  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Revert:
	2011-07-27  Jan Kratochvil  <jan.kratochvil@redhat.com>
        * dwarf2expr.c (ctx_no_read_reg): New function.
        * dwarf2expr.h (ctx_no_read_reg): New declaration.
        * dwarf2read.c (read_2_signed_bytes, read_4_signed_bytes): Remove.
        (decode_locdesc_read_mem, decode_locdesc_ctx_funcs): New.
        (decode_locdesc): Replace by a caller of dwarf_expr_eval.

2011-10-16  Doug Evans  <dje@google.com>

	* NEWS: Document python gdb.printing.register_pretty_printer's new
	`replace' parameter.

2011-10-14  Keith Seitz  <keiths@redhat.com>

	PR c++/13225
	* eval.c (evaluate_subexp_standard): Do not construct
	an array of types; pass the value array directly to
	find_overload_match.
	* gdbtypes.h (NULL_POINTER_CONVERSION_BADNESS): Declare.
	(rank_function): Take an array of values instead of types.
	(rank_one_type): Add struct value * parameter.
	* gdbtypes.c (NULL_POINTER_CONVERSION_BADNESS): Define.
	(rank_function): For each argument, pass the argument's
	value to rank_one_type.
	(rank_one_type): Add VALUE parameter.
	If the parameter type is a pointer and the argument type
	is an integer, return NULL_POINTER_CONVERSION_BADNESS if
	VALUE is zero.
	Update all calls to rank_one_type, passing NULL for new
	VALUE parameter.
	* valarith.c (value_user_defined_cpp_op): Do not construct
	an array of types; pass the value array directly to
	find_overload_match.
	* valops.c (find_overload_method_list): Take an array of
	values instead of types.
	Save the type of OBJP for later use.
	Update calls to find_oload_champ, and find_oload_champ_namespace.
	(find_oload_champ_namespace): Take an array of values instead
	of types.
	(find_oload_champ_namespace_loop): Likewise.
	(find_oload_champ): Likewise.
	(classify_oload_match): Inspect all arguments
	until INCOMPATIBLE is found. Return the worst badness found
	otherwise.
	(compare_parameters): Update call to rank_one_type.
	* value.h (find_overload_match): Take an array of values instead
	of types.

2011-10-14  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Drop lazy lm_info reading.
	* solib-svr4.c (struct lm_info): Remove field lm.  New fields l_addr_p,
	l_addr_inferior, l_ld, l_next, l_prev and l_name.
	(lm_info_read): New function.
	(lm_addr_from_link_map, lm_dynamic_from_link_map): Remove.
	(lm_addr_check): Use l_addr_p.  No longer use lm_addr_from_link_map and
	lm_dynamic_from_link_map.
	(lm_next, lm_prev, lm_name): Remove.
	(svr4_keep_data_in_core): Use lm_info_read, drop the lm_info entries
	initialization incl. read_memory.  No longer use lm_name.
	(svr4_free_so): Drop lm_info->lm freeing.
	(svr4_default_sos): Initialize lminfo with zeroes.  Use l_addr_p.  Drop
	explicit lm_addr and lm initialization.
	(svr4_read_so_list): Use lm_info_read, drop the initailization of
	fields by hand, incl. read_memory.  No longer use lm_next, lm_prev and
	lm_name.

2011-10-14  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Paul Pluzhnikov  <ppluzhnikov@google.com>

	* defs.h (struct so_list): New forward declaration.
	(make_cleanup_free_so): New declaration.
	* solib-svr4.c (ignore_first_link_map_entry): Remove.
	(svr4_free_so): Move the function here from downwards.  Handle NULL
	so->lm_info.
	(svr4_free_library_list): New.
	(svr4_read_so_list): New, moved here code from svr4_current_sos.
	Use more cleanups.  Use new parameter ignore_first instead of
	ignore_first_link_map_entry.
	(svr4_current_sos): New variable ignore_first, initialize it.  New
	variable back_to, use it for svr4_free_library_list protection.
	(svr4_free_so): Remove - move upwards.
	* utils.c: Include solist.h.
	(do_free_so, make_cleanup_free_so): New functions.

2011-10-13  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix internal error regression.
	* value.c (value_primitive_field): Handle value_optimized_out.  Move
	packed bitfields comment.

2011-10-13  Tom Tromey  <tromey@redhat.com>

	* python/py-breakpoint.c (gdbpy_breakpoint_deleted): Ensure GIL is
	always released.

2011-10-13  Tom Tromey  <tromey@redhat.com>

	* python/py-type.c (typy_has_key): Make 'field' const.

2011-10-13  Luis Machado  <lgustavo@codesourcery.com>

	* remote.c (remote_save_trace_data): Invert comparison.

2011-10-13  Luis Machado  <lgustavo@codesourcery.com>

	* tracepoint.c (trace_save_command): Use filename instead of
	args when printing.

2011-10-13  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2read.c (dwarf2_fetch_die_location_block): Initialize .data even
	if .size is 0.

2011-10-13  Yao Qi  <yao@codesourcery.com>

	PR gdb/12703
	* arm-tdep.c (thumb_analyze_prologue): Call thumb_insn_size to check
	whether insn is a 32-bit Thumb-2 instruction.
	(thumb_in_function_epilogue_p): Likewise.
	(thumb_get_next_pc_raw): Likewise.
	(arm_breakpoint_from_pc): Likewise.

2011-10-12  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix empty DWARF expressions DATA vs. SIZE conditionals.
	* dwarf2loc.c (dwarf2_find_location_expression): Clear *LOCEXPR_LENGTH.
	(dwarf_expr_frame_base_1): Indicate unavailability via zero *LENGTH.
	(locexpr_tracepoint_var_ref): Check only zero SIZE, not zero DATA.
	(loclist_read_variable, loclist_tracepoint_var_ref): Do not check for
	zero DATA.
	* dwarf2loc.h (struct dwarf2_locexpr_baton): Comment DATA vs. SIZE
	validity.
	* dwarf2read.c (struct dwarf_block): Comment DATA validity.
	(dwarf2_fetch_die_location_block, dwarf2_symbol_mark_computed): Do not
	clear DATA on zero SIZE.

2011-10-12  Doug Evans  <dje@google.com>

	* dwarf2read.c (partial_read_comp_unit_head): Set header->offset,
	header->first_die_offset here.  All callers updated.

2011-10-12  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix compatibility with texinfo versions older than 4.12.
	* Makefile.in (MAKEINFO): Set to @MAKEINFO@.
	(MAKEINFOFLAGS, MAKEINFO_EXTRA_FLAGS, MAKEINFO_CMD): New.
	(MAKEHTMLFLAGS): Use MAKEINFO_CMD.
	(FLAGS_TO_PASS): Add MAKEINFOFLAGS and MAKEINFO_EXTRA_FLAGS.
	* configure: Regenerate.
	* configure.ac (MAKEINFO): Find it, from libiberty/configure.ac.
	(MAKEINFOFLAGS): Pre-set it to --split-size=5000000.
	(MAKEINFO_EXTRA_FLAGS): New test for -DHAVE_MAKEINFO_CLICK.

2011-10-12  Gary Benson  <gbenson@redhat.com>

	* breakpoint.h (pc_at_non_inline_function): Declare.
	* breakpoint.c (is_non_inline_function,
	pc_at_non_inline_function): New functions.
	* infrun.c (handle_inferior_event): Don't call skip_inline_frames
	if the stop is at a location where functions cannot be inlined.

2011-10-12  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (stop_and_resume_callback): Don't re-resume LWPs if
	the core wanted them stopped, or if they now have a pending event
	to report.
	(linux_nat_filter_event): New parameter `new_pending_p'.  Pass it
	down to stop_and_resume_callback.
	(linux_nat_wait_1): Always clear `options' when retrying.  Handle
	having new pending events after calling linux_nat_filter_event.

2011-10-11  Sterling Augustine  <saugustine@google.com>

	* dwarf2read.c: Undo inadvertent changes in previous commit.

2011-10-11  Sterling Augustine  <saugustine@google.com>

	* dwarf2read.c (partial_die_parent_scope): Rearrange conditional
	logic.

2011-10-11  Ulrich Weigand  <ulrich.weigand@linaro.org>

	* symfile.c (separate_debug_file_exists): Fix condition.

2011-10-11  David S. Miller  <davem@davemloft.net>

	* regcache.c (regcache_restore): Do not write unavailable regs, mark
	static.
	* regcache.h (regcache_restore): Remove declaration.

	* gdbarch.sh: New field 'long_long_align_bit'.
	* gdbarch.c, gdbarch.h: Regenerate.
	* i386-tdep.c (i386_gdbarch_init): Set long_long_align_bit to 32.
	* jit.c (jit_read_code_entry): Use it to determine correct size offset.

2011-10-11  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Revert this part of:
	2011-10-09  Jan Kratochvil  <jan.kratochvil@redhat.com>
	Support @entry in input expressions.
	* c-exp.y (ENTRY, unknown_cpp_name): New.
	(exp: UNKNOWN_CPP_NAME): Change to `exp: unknown_cpp_name'.
	(unknown_cpp_name: UNKNOWN_CPP_NAME, unknown_cpp_name: ENTRY)
	(variable: name_not_typename '@' ENTRY, name: ENTRY)
	(name_not_typename: ENTRY): New.
	(yylex): Recognize ENTRY.

	Reimplement @entry in input expressions.
	* c-exp.y (ENTRY): New.
	(variable: name_not_typename ENTRY): New.
	(lex_one_token): Optionally return ENTRY instead of the '@' lex.

2011-10-11  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (linux_handle_extended_wait): Always dump both the
	parent and child's pids as soon as we detect a clone event.
	Adjust another debug message.

2011-10-11  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (linux_lwp_is_zombie): Return early if the LWP is
	not zombie instead of reading the whole file.

2011-10-11  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix separate debuginfo warning with "remote:" access.
	* objfiles.h (struct objfile): New fields crc32 and crc32_p.
	* symfile.c (get_file_crc): New function with the code moved from ...
	(separate_debug_file_exists): ... this function, specifically variables
	buffer and count.  New variable verified_as_different, set it.  Remove
	file_crc initialization.  Verify also if both files are not the same
	manually, if needed.

2011-10-11  Yao Qi  <yao@codesourcery.com>

	* arm-tdep.c (arm_get_next_pc_raw): Use read_memory_unsigned_integer
	to get address.

2011-10-10  Doug Evans  <dje@google.com>

	* linux-thread-db.c (thread_db_new_objfile): Only try to load
	libthread_db when we load libpthread or the main symbol file.
	(thread_db_inferior_created): New function.
	(_initialize_thread_db): Attach inferior_created observer.
	* linux-nat.c (linux_child_post_attach): Remove call to
	check_for_thread_db.
	(linux_child_post_startup_inferior): Ditto.
	* objfiles.h (OBJF_MAINLINE): Define.
	* symfile.c (symbol_file_add_with_addrs_or_offsets): Pass it to
	allocate_objfile when appropriate.

2011-10-10  Ulrich Weigand  <ulrich.weigand@linaro.org>

	PR gdb/13218
	* arm-linux-nat.c (os_version, os_major, os_minor, os_release):
	Remove unused variables.
	(get_linux_version): Remove function.
	(_initialize_arm_linux_nat): Do not call it.

2011-10-10  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (linux_handle_extended_wait): Don't resume the new
	new clone lwp if the core asked it to stop.  Don't pass on
	unexpected signals to the new clone; leave them pending instead.

2011-10-10  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (resume_lwp): Remove redundant debug output.

2011-10-10  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (linux_nat_wait_1): Copy the event lwp's
	last_resume_kind before clearing it, and use the copy instead to
	determine whether to report a SIGSTOP as TARGET_SIGNAL_0.  Use
	resume_clear_callback in the non-stop path too.

2011-10-09  Yao Qi  <yao@codesourcery.com>

	* valprint.c (value_check_printable): Add one parameter OPTIONS.
	Honor OPTIONS and VAL's type.
	(common_val_print, value_print): Update to pass one more parameter.

2011-10-09  Doug Evans  <dje@google.com>

	Add new "alias" command.
	* NEWS: Mention new command.
	* command.h (valid_user_defined_cmd_name_p): Declare.
	* defs.h (make_cleanup_dyn_string_delete): Declare.
	* utils.c: #include "dyn-string.h".
	(do_dyn_string_delete, make_cleanup_dyn_string_delete): New functions.
	* cli/cli-cmds.c: #include "dyn-string.h".
	(argv_to_dyn_string, valid_command_p, alias_command): New functions.
	(init_cli_cmds): Add new command.
	* cli/cli-decode.c (valid_user_defined_cmd_name_p): New function.

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

	Fix compatibility with older GCCs.
	* dwarf2loc.c (dwarf_expr_reg_to_entry_parameter): Initialize parameter.
	* stack.c (read_frame_arg): Initialize val_deref.

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

	Entry values NEWS entries, DWARF disassembly support.
	* NEWS: New entry values entry.
	(set print entry-values, show print entry-values)
	(set debug entry-values, show debug entry-values): New entries.
	* dwarf2loc.c (disassemble_dwarf_expression): New parameters start and
	indent.  Remove variable start.  Move header printing out.  Respect
	INDENT.  Support DW_OP_GNU_entry_value.
	(locexpr_describe_location_1): Move the header printing here, extend
	the disassemble_dwarf_expression passed parameters.

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

	Display @entry parameter values even for references.
	* ada-valprint.c (ada_val_print_1) <TYPE_CODE_REF>: Try also
	coerce_ref_if_computed.
	* c-valprint.c (c_val_print) <TYPE_CODE_REF>: Likewise.
	* dwarf2expr.c (dwarf_block_to_dwarf_reg_deref): New function.
	(execute_stack_op) <DW_OP_GNU_entry_value>: Add -1 deref_size to the
	existing push_dwarf_reg_entry_value call.  Add new detection calling
	dwarf_block_to_dwarf_reg_deref.  Update the error message.
	(ctx_no_push_dwarf_reg_entry_value): New parameter deref_size.
	* dwarf2expr.h
	(struct dwarf_expr_context_funcs) <push_dwarf_reg_entry_value>: Add new
	parameter deref_size, describe it in the comment.
	(ctx_no_push_dwarf_reg_entry_value): Add new parameter deref_size.
	(dwarf_block_to_dwarf_reg_deref): New declaration.
	* dwarf2loc.c (dwarf_entry_parameter_to_value): Add new parameter
	deref_size, describe it in the function comment.  New variables
	data_src and size, fetch the alternative block accoring to DEREF_SIZE.
	(dwarf_expr_push_dwarf_reg_entry_value): Add new parameter deref_size,
	describe it in the function comment.  Fetch the alternative block
	accoring to DEREF_SIZE.
	(entry_data_value_coerce_ref, entry_data_value_copy_closure)
	(entry_data_value_free_closure, entry_data_value_funcs): New.
	(value_of_dwarf_reg_entry): New variables checked_type, target_type,
	outer_val, target_val, val and addr.  Try to fetch and create also
	referenced value content.
	(pieced_value_funcs): NULL value for coerce_ref.
	(needs_dwarf_reg_entry_value): Add new parameter deref_size.
	* f-valprint.c (f_val_print) <TYPE_CODE_REF>: Try also
	coerce_ref_if_computed.
	* opencl-lang.c (opencl_value_funcs): NULL value for coerce_ref.
	* p-valprint.c (pascal_val_print) <TYPE_CODE_REF>: Likewise.
	* stack.c (read_frame_arg): Compare also dereferenced values.
	* value.c (value_computed_funcs): Make the parameter v const, use
	value_lval_const for it.
	(value_lval_const, coerce_ref_if_computed): New function.
	(coerce_ref): New variable retval.  Call also coerce_ref_if_computed.
	* value.h (struct lval_funcs): New field coerce_ref.
	(value_computed_funcs): Make the parameter v const.
	(value_lval_const, coerce_ref_if_computed): New declarations.

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

	Support @entry in input expressions.
	* c-exp.y (ENTRY, unknown_cpp_name): New.
	(exp: UNKNOWN_CPP_NAME): Change to `exp: unknown_cpp_name'.
	(unknown_cpp_name: UNKNOWN_CPP_NAME, unknown_cpp_name: ENTRY)
	(variable: name_not_typename '@' ENTRY, name: ENTRY)
	(name_not_typename: ENTRY): New.
	(yylex): Recognize ENTRY.
	* eval.c (evaluate_subexp_standard): Support also OP_VAR_ENTRY_VALUE.
	* expprint.c (print_subexp_standard, dump_subexp_body_standard):
	Likewise.
	* parse.c (operator_length_standard): Likewise.
	* std-operator.def: New operator OP_VAR_ENTRY_VALUE.

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

	Display referenced values in backtraces.
	* printcmd.c (print_variable_and_value): Set OPTS.DEREF_REF to 1.
	* stack.c (print_frame_arg): Likewise.

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

	Make some lval_funcs methods to default on NULL.
	* valops.c (value_fetch_lazy): Check if lval_computed read method is
	NULL.
	(value_assign): Check if lval_computed write method is NULL.
	* value.h (struct lval_funcs): Comment NULL values for read and write
	methods.

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

	Display @entry parameter values (without references).
	* dwarf2expr.c (dwarf_block_to_fb_offset, dwarf_block_to_sp_offset):
	New functions.
	* dwarf2expr.h (dwarf_block_to_fb_offset, dwarf_block_to_sp_offset):
	New declarations.
	* dwarf2loc.c (dwarf2_find_location_expression): Support location list
	entry record.
	(dwarf_entry_parameter_to_value, value_of_dwarf_reg_entry)
	(value_of_dwarf_block_entry, locexpr_read_variable_at_entry): New
	functions.
	(dwarf2_locexpr_funcs): Install locexpr_read_variable_at_entry.
	(loclist_read_variable_at_entry): New function.
	(dwarf2_loclist_funcs): Install loclist_read_variable_at_entry.
	* dwarf2read.c (read_call_site_scope): Support also DW_OP_fbreg in
	DW_AT_location, call dwarf_block_to_sp_offset for it.
	* frame.h (print_entry_values_no, print_entry_values_only)
	(print_entry_values_preferred, print_entry_values_if_needed)
	(print_entry_values_both, print_entry_values_compact)
	(print_entry_values_default, print_entry_values): New declarations.
	(struct frame_arg): New field entry_kind.
	(read_frame_arg): New parameter entryargp.
	* mi/mi-cmd-stack.c (list_arg_or_local): New gdb_assert for
	arg->entry_kind.  Optionally print the `@entry' suffix.
	(list_args_or_locals): New variable entryarg, initialize it.
	Initialize also entry_kind of arg and entryarg.  Conditionalize
	list_arg_or_local for arg, add list_arg_or_local for entryarg.  Call
	xfree for entryarg.error.
	* stack.c (print_entry_values_no, print_entry_values_only)
	(print_entry_values_preferred, print_entry_values_if_needed)
	(print_entry_values_both, print_entry_values_compact)
	(print_entry_values_default, print_entry_values_choices)
	(print_entry_values): New variables.
	(print_frame_arg): New gdb_assert for arg->entry_kind.  Optionally
	print the `@entry' suffix, possibly in combination for
	print_entry_values_compact.
	(read_frame_arg): New parameter entryargp, new variables entryval,
	entryval_error and val_equal.  Read in also entryargp, respect
	print_entry_values, compare the values using val_equal, fill in also
	argp->entry_kind (together with entryargp->entry_kind).
	(print_frame_args): New variable entryarg, initialize it.
	Conditionalize print_frame_arg for arg, add print_frame_arg for
	entryarg.  Call xfree for entryarg.error.
	(_initialize_stack): Call add_setshow_enum_cmd for `entry-values'.
	* symtab.h (struct symbol_computed_ops): New field
	read_variable_at_entry.

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

	Code reshuffle.
	* frame.h (struct frame_arg): New definition.
	(read_frame_arg): New declaration.
	* mi/mi-cmd-stack.c (list_arg_or_local): New functiom from ...
	(list_args_or_locals): ... the code here.  New variable arg, call
	read_frame_arg and list_arg_or_local with it.  Unify the
	PRINT_SIMPLE_VALUES and PRINT_ALL_VALUES cases.  Call xfree for
	arg.error.
	* stack.c (print_frame_arg): New functiom from the code of
	print_frame_args.
	(read_frame_arg): New function.
	(print_frame_args): Remove variable val.  New variable arg, call
	read_frame_arg and print_frame_arg with it.  Call xfree for arg.error.

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

	Protect entry values against self tail calls.
	* dwarf2loc.c (VEC (CORE_ADDR), func_verify_no_selftailcall): New.
	(dwarf_expr_dwarf_reg_entry_value): Call func_verify_no_selftailcall.

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

	Recognize virtual tail call frames.
	* Makefile.in (SFILES): Add dwarf2-frame-tailcall.c.
	(HFILES_NO_SRCDIR): Add dwarf2-frame-tailcall.h.
	(COMMON_OBS): Add dwarf2-frame-tailcall.o.
	* dwarf2-frame-tailcall.c: New file.
	* dwarf2-frame-tailcall.h: New file.
	* dwarf2-frame.c: Include dwarf2-frame-tailcall.h.
	(execute_cfa_program): New function comment.  Return INSN_PTR.  Reset
	REGS.PREV only after CIE execution.
	(struct dwarf2_frame_cache): New field tailcall_cache.
	(dwarf2_frame_cache): New variables entry_pc, entry_cfa_sp_offset,
	entry_cfa_sp_offset_p and instr.  Execute FDE instructions in two
	parts, try to find entry_cfa_sp_offset.  Call
	dwarf2_tailcall_sniffer_first.
	(dwarf2_frame_prev_register): Call dwarf2_tailcall_prev_register_first
	when appropriate.
	(dwarf2_frame_dealloc_cache): New function.
	(dwarf2_frame_sniffer): Preinitialize cache by dwarf2_frame_cache.
	(dwarf2_frame_unwind): Install dwarf2_frame_dealloc_cache.
	(dwarf2_signal_frame_unwind): Do not install dwarf2_frame_dealloc_cache.
	(dwarf2_append_unwinders): Add dwarf2_tailcall_frame_unwind.
	(dwarf2_frame_cfa): Support also dwarf2_tailcall_frame_unwind.
	* dwarf2loc.c (func_addr_to_tail_call_list)
	(tailcall_dump, call_sitep, VEC (call_sitep), chain_candidate)
	(call_site_find_chain_1, call_site_find_chain): New.
	* dwarf2loc.h (struct call_site_chain): New.
	(call_site_find_chain): New declaration.
	* frame.c (get_frame_address_in_block): Support also TAILCALL_FRAME.
	* frame.h (enum frame_type): New entry TAILCALL_FRAME.
	* python/py-frame.c (gdbpy_initialize_frames): Add TAILCALL_FRAME.
	* stack.c (frame_info): Support also TAILCALL_FRAME.

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

	Tail call sites reader implementation.
	* dwarf2read.c (read_call_site_scope): Recognize DW_AT_GNU_tail_call,
	fill in TYPE_TAIL_CALL_LIST.
	* gdbtypes.h (struct func_type): New field tail_call_list.
	(struct call_site): New field tail_call_next.
	(TYPE_TAIL_CALL_LIST): New definition.

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

	Implement basic support for DW_TAG_GNU_call_site.
	* block.c: Include gdbtypes.h and exceptions.h.
	(call_site_for_pc): New function.
	* block.h (call_site_for_pc): New declaration.
	* defs.h: Include hashtab.h.
	(make_cleanup_htab_delete, core_addr_hash, core_addr_eq): New
	declarations.
	* dwarf2-frame.c (dwarf2_frame_ctx_funcs): Install
	ctx_no_push_dwarf_reg_entry_value.
	* dwarf2expr.c (read_uleb128, read_sleb128): Support R as NULL.
	(dwarf_block_to_dwarf_reg): New function.
	(execute_stack_op) <DW_OP_GNU_entry_value>: Implement it.
	(ctx_no_push_dwarf_reg_entry_value): New function.
	* dwarf2expr.h (struct dwarf_expr_context_funcs): New field
	push_dwarf_reg_entry_value.
	(ctx_no_push_dwarf_reg_entry_value, dwarf_block_to_dwarf_reg): New
	declarations.
	* dwarf2loc.c: Include gdbcmd.h.
	(dwarf_expr_ctx_funcs): New forward declaration.
	(entry_values_debug, show_entry_values_debug, call_site_to_target_addr)
	(dwarf_expr_reg_to_entry_parameter)
	(dwarf_expr_push_dwarf_reg_entry_value): New.
	(dwarf_expr_ctx_funcs): Install dwarf_expr_push_dwarf_reg_entry_value.
	(dwarf2_evaluate_loc_desc_full): Handle NO_ENTRY_VALUE_ERROR.
	(needs_dwarf_reg_entry_value): New function.
	(needs_frame_ctx_funcs): Install it.
	(_initialize_dwarf2loc): New function.
	* dwarf2loc.h (entry_values_debug): New declaration.
	* dwarf2read.c (struct dwarf2_cu): New field call_site_htab.
	(read_call_site_scope): New forward declaration.
	(process_full_comp_unit): Copy call_site_htab.
	(process_die): Support DW_TAG_GNU_call_site.
	(read_call_site_scope): New function.
	(dwarf2_get_pc_bounds): Support NULL HIGHPC.
	(dwarf_tag_name): Support DW_TAG_GNU_call_site.
	(cleanup_htab): Delete.
	(write_psymtabs_to_index): Use make_cleanup_htab_delete instead of it.
	* exceptions.h (enum errors): New NO_ENTRY_VALUE_ERROR.
	* gdb-gdb.py (StructMainTypePrettyPrinter): Support
	FIELD_LOC_KIND_DWARF_BLOCK.
	* gdbtypes.h (enum field_loc_kind): New entry
	FIELD_LOC_KIND_DWARF_BLOCK.
	(struct main_type): New loc entry dwarf_block.
	(struct call_site, FIELD_DWARF_BLOCK, SET_FIELD_DWARF_BLOCK)
	(TYPE_FIELD_DWARF_BLOCK): New.
	* python/py-type.c: Include dwarf2loc.h.
	(check_types_equal): Support FIELD_LOC_KIND_DWARF_BLOCK.  New
	internal_error call on unknown FIELD_LOC_KIND.
	* symtab.h (struct symtab): New field call_site_htab.
	* utils.c (do_htab_delete_cleanup, make_cleanup_htab_delete)
	(core_addr_hash, core_addr_eq): New functions.

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

	Code reshuffle.
	* gdb-gdb.py (StructMainTypePrettyPrinter): Change
	TYPE_SPECIFIC_CALLING_CONVENTION to TYPE_SPECIFIC_FUNC.  Move
	calling_convention under func_stuff there.
	* gdbtypes.c (make_function_type): Call INIT_FUNC_SPECIFIC.
	(init_type) <TYPE_CODE_FUNC>: Likewise.
	(recursive_dump_type): Change TYPE_SPECIFIC_CALLING_CONVENTION to
	TYPE_SPECIFIC_FUNC.  New comment for tail_call_list.
	* gdbtypes.h (enum type_specific_kind): Change
	TYPE_SPECIFIC_CALLING_CONVENTION to TYPE_SPECIFIC_FUNC.
	(struct main_type) <type_specific>: Change calling_convention to
	func_stuff.  Move calling_convention to ...
	(struct func_type): ... this new struct.
	(INIT_FUNC_SPECIFIC): New #define.
	(TYPE_CALLING_CONVENTION): Change calling_convention to func_stuff.

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

	Fix DW_OP_GNU_implicit_pointer for DWARF32 v3+ on 64-bit arches.
	* dwarf2-frame.c (execute_stack_op): Initialize ctx->ref_addr_size.
	* dwarf2expr.c (execute_stack_op) <DW_OP_GNU_implicit_pointer>: Use
	ctx->ref_addr_size.  Handle its invalid value.
	* dwarf2expr.h (struct dwarf_expr_context): New field ref_addr_size.
	* dwarf2loc.c (dwarf2_evaluate_loc_desc_full)
	(dwarf2_loc_desc_needs_frame): Initialize ctx->ref_addr_size.
	* dwarf2loc.h (dwarf2_per_cu_ref_addr_size): New declaration.
	* dwarf2read.c (decode_locdesc): Initialize ctx->ref_addr_size.
	(dwarf2_per_cu_ref_addr_size): New function.

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

	Code cleanup.
	* dwarf2read.c (per_cu_header_read_in): New function.
	(dwarf2_per_cu_addr_size, dwarf2_per_cu_offset_size): Use it, with new
	variables cu_header_local and cu_headerp.

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

	Fix initial language detection with -readnow.
	* dwarf2read.c (dw2_find_symbol_file): Handle OBJF_READNOW case.
	* symfile.h (struct quick_symbol_functions): State find_symbol_file
	searches only for global symbols.

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

	Fix printed anonymous struct name.
	* dwarf2read.c (fixup_partial_die): Handle for anonymous structs also
	DW_TAG_interface_type.  Strip for anonymous structs any prefixes.
	(anonymous_struct_prefix): New function.
	(determine_prefix): New variables retval.  Call anonymous_struct_prefix.
	(dwarf2_name): Strip for anonymous structs any prefixes.

2011-10-07  Doug Evans  <dje@google.com>

	* python/lib/gdb/printing.py (register_pretty_printer): New argument
	`replace'.

	* python/lib/gdb/printing.py: Whitespace cleanup.

	* python/py-value.c (valpy_call): Initialize ftype to avoid compiler
	warning.

2011-10-07  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.h (ALL_LWPS): Remove the ptid parameter.
	* amd64-linux-nat.c (amd64_linux_dr_set_control)
	(amd64_linux_dr_set_addr, amd64_linux_dr_unset_status): Adjust.
	* arm-linux-nat.c (arm_linux_insert_hw_breakpoint)
	(arm_linux_remove_hw_breakpoint, arm_linux_insert_watchpoint)
	(arm_linux_remove_watchpoint): Adjust.
	* i386-linux-nat.c (i386_linux_dr_set_control)
	(i386_linux_dr_set_addr, i386_linux_dr_unset_status): Adjust.
	* ia64-linux-nat.c (ia64_linux_insert_watchpoint)
	(ia64_linux_remove_watchpoint): Adjust.
	* mips-linux-nat.c (write_watchpoint_regs): Adjust.
	* ppc-linux-nat.c (ppc_linux_insert_hw_breakpoint)
	(ppc_linux_insert_hw_breakpoint, ppc_linux_remove_hw_breakpoint)
	(ppc_linux_insert_mask_watchpoint)
	(ppc_linux_remove_mask_watchpoint, ppc_linux_insert_watchpoint)
	(ppc_linux_remove_watchpoint): Adjust.
	* s390-nat.c (s390_insert_watchpoint, s390_remove_watchpoint):
	Adjust.

2011-10-07  Corinna Vinschen  <vinschen@redhat.com>

	* windows-nat.c: Include wchar.h to avoid compiler warnings.
	(clear_win32_environment): New function for Cygwin to clear out
	Win32 environment.
	(windows_create_inferior): Prepare new environment from in_env
	for Cygwin, too.

2011-10-07  Phil Muldoon  <pmuldoon@redhat.com>

	PR python/13264
	* python/py-value.c (valpy_call): Check that arguments are
	a tuple.
        (is_intlike): Remove call to CHECK_TYPEDEF.
	(valpy_nonzero): Catch GDB exceptions.
	(valpy_absolute): Ditto.
        (valpy_lazy_string): Ditto.
        (valpy_call): Ditto.
        (valpy_get_is_optimized_out): Ditto.
        (valpy_long): Ditto.
        (valpy_float): Ditto.
        (valpy_int): Call CHECK_TYPEDEF.  Catch GDB exceptions.
        (valpy_richcompare): Ditto.

2011-10-07  Ulrich Weigand  <ulrich.weigand@linaro.org>

	* inferior.h (disable_randomization): Declare.
	* infrun.c (disable_randomization): New global variable.
	(show_disable_randomization): New function.
	(set_disable_randomization): Likewise.
	(_initialize_infrun): Install set/show disable-randomization
	commands.
	* linux-nat.c (disable_randomization): Remove.
	(show_disable_randomization): Likewise.
	(set_disable_randomization): Likewise.
	(_initialize_linux_nat): No longer install set/show
	disable-randomization commands here.
	(linux_nat_supports_disable_randomization): New function.
	(linux_nat_add_target): Install it.
	* remote.c (PACKET_QDisableRandomization): New enum value.
	(remote_protocol_packets): Support QDisableRandomization.
	(_initialize_remote): Likewise.
	(remote_supports_disable_randomization): New function.
	(init_remote_ops): Install it.
	(extended_remote_supports_disable_randomization): New function.
	(init_extended_remote_ops): Install it.
	(extended_remote_disable_randomization): New function.
	(extended_remote_create_inferior_1): Call it.
	* target.h (struct target_ops): Add to_supports_disable_randomization.
	(target_supports_disable_randomization): Add prototype.
	* target.c (target_supports_disable_randomization): New function.
	(find_default_supports_disable_randomization): Likewise.
	(init_dummy_target): Install it.

2011-10-07  Kevin Pouget  <kevin.pouget@st.com>

	Allow Python notification of new object-file loadings.
	* Makefile.in (SUBDIR_PYTHON_SRCS): Add py-newobjfilevent.c.
	(SUBDIR_PYTHON_OBS): Add py-newobjfileevent.o.
	Add build rule for this file.
	* python/py-event.h (emit_new_objfile_event): New prototype.
	(newobjfile): New Python event emitter.
	* python/py-evts.c (gdbpy_initialize_py_events): Add new_objfile to
	Python event registry.
	* python/py-inferior.c: Include objfiles.h
	(python_new_objfile): New function.
	(gdbpy_initialize_inferior): Add python_new_objfile to the new objfile
	observers.
	* python/py-newobjfileevent.c: New file.
	* python-internal.h (gdbpy_initialize_new_objfile_event): New
	prototype.
	* python/python.c (_initialize_python): Add 
	gdbpy_initialize_new_objfile_event call.
	* NEWS: Add item for new Python event "gdb.newobjfile"

2011-10-05  Tristan Gingold  <gingold@adacore.com>

	* ada-tasks.c (read_atcb): Make ravenscar_task_name static.
	Extract the ravenscar task name from the symbol for the atcb.

2011-10-04  Paul Koning  <paul_koning@dell.com>

	* python/py-type.c (typy_make_iter): Add forward declaration.
	(typy_fields_items):  Use the gdb.Type iterator.

2011-10-04  Paul Koning  <paul_koning@dell.com>

	* NEWS: Add entry for Python gdb.Type mapping methods.

2011-10-04  Kevin Pouget  <kevin.pouget@st.com>

	PR python/12691: Add the inferior to Python exited event
	* python/py-exitedevent.c (create_exited_event_object): Add inferior
	to exited_event.
	* python/py-event.h (emit_exited_event): Likewise
	* python/-inferior.c (python_inferior_exit): Likewise

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

	* ada-tasks.c (print_ada_task_info): Add "thread-id" field
	in output of -ada-task-info GDB/MI command.

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

	* ada-lang.h (struct inferior): Declare.
	(print_ada_task_info): Add declaration.
	* ada-tasks.c (print_ada_task_info): Make non-static.
	* mi/mi-cmds.c (mi_cmds): Add "ada-task-info".
	* mi/mi-cmds.h (mi_cmd_ada_task_info): Add declaration.
	* mi/mi-main.c: #include "ada-lang.h".
	(mi_cmd_list_features): Add "ada-task-info" to the list
	of supported features.
	(mi_cmd_ada_task_info): New function.

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

	* python/python.c (python_run_simple_file): New function.
	(source_python_script, source_python_script_for_objfile):
	Replace call to PyRun_SimpleFile by call to
	python_run_simple_file.

2011-10-03  Paul Koning  <paul_koning@dell.com>

	* python/py-value.c (valpy_get_address): Use Py_XINCREF.
	(value_to_value_object): Fetch value if it was lazy.

2011-10-02  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup.
	* solib-svr4.c (svr4_default_sos):  Remove variables head and link_ptr.
	Rearrange the code for it.

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

	* breakpoint.c (bkpt_print_recreate): Add call to
	print_recreate_thread.

2011-09-29  Mike Frysinger  <vapier@gentoo.org>

	* common/linux-ptrace.h (PTRACE_GETFDPIC, PTRACE_GETFDPIC_EXEC,
	PTRACE_GETFDPIC_INTERP): Define.

2011-09-28  Yao Qi  <yao@codesourcery.com>

	* symfile.c (add_symbol_file_command): Update message on usage.

2011-09-28  Paul Koning  <paul_koning@dell.com>

	* python/py-type.c (make_fielditem, typy_field_names, typy_items)
	(typy_length, typy_get, typy_has_key, typy_make_iter)
	(typy_iterkeys, typy_iteritems, typy_itervalues, typy_iter)
	(typy_iterator_iter, typy_iterator_iternext)
	(typy_iterator_dealloc): New functions to implement standard
	Python mapping methods on gdb.Type object.
	(gdb.TypeIterator): New Python type.
	* python/python-internal.h (gdbpy_iter_kind): New enum.

2011-09-28  David S. Miller  <davem@davemloft.net>

	* sparc-tdep.h (SPARC_F2_REGNUM, SPARC_F3_REGNUM, SPARC_F4_REGNUM,
	SPARC_F5_REGNUM, SPARC_F6_REGNUM, SPARC_F7_REGNUM): New enums.
	* sparc-tdep.c (sparc_complex_floating_p): New function.
	(sparc32_store_arguments): Handle complex floats.
	(sparc32_extract_return_value): Likewise.
	(sparc32_store_return_value): Likewise.
	(sparc32_stabs_argument_has_addr): Likewise.
	* sparc64-tdep.c (sparc64_complex_floating_p): New function.
	(sparc64_store_floating_fields): Handle complex floats.
	(sparc64_store_arguments): Likewise.
	(sparc64_store_return_value): Likewise.

2011-09-28  Eli Zaretskii  <eliz@gnu.org>

	* windows-nat.c (env_sort) [!__CYGWIN__]: Function restored from
	before the change on 2006-12-09.
	(windows_create_inferior) [!__CYGWIN__]: Restore code that
	generates the environment block for CreateProcessA, modulo the
	Cygwin-specific parts that are not needed here.

2011-09-27  Tristan Gingold  <gingold@adacore.com>

	* target.h (enum target_object): Add TARGET_OBJECT_DARWIN_DYLD_INFO.
	* solib-darwin.c (DYLD_VERSION_MAX): Update number.
	(darwin_solib_get_all_image_info_addr_at_init): New function.
	(darwin_solib_read_all_image_info_addr): Likewise.
	(darwin_solib_create_inferior_hook): Use the above two functions.
	* darwin-nat.c (darwin_execvp): Renames retval to res.
	(darwin_read_write_inferior): Update comment.
	(darwin_read_dyld_info): New function.
	(darwin_xfer_partial): Handle DYLD_INFO.

2011-09-27  Stan Shebs  <stan@codesourcery.com>

	Add return address collection for tracepoints.
	* tracepoint.c (encode_actions_1): Add case for $_ret.
	(validate_actionline): Check for $_ret.
	(trace_dump_actions): Ditto.
	* ax-gdb.h (gen_trace_for_return_address): Declare.
	* ax-gdb.c: Include arch-utils.h.
	(gen_trace_for_return_address): New function.
	(agent_command): Add return address special case.
	* amd64-tdep.c: Include ax.h and ax-gdb.h.
	(amd64_gen_return_address): New function.
	(amd64_init_abi): Call it.
	* i386-tdep.c: Include ax.h and ax-gdb.h.
	(i386_gen_return_address): New function.
	(i386_init_abi): Call it.
	* arch-utils.h (default_gen_return_address): Declare.
	* arch-utils.c (default_gen_return_address): New function.
	* gdbarch.sh (gen_return_address): New method.
	* gdbarch.h, gdbarch.c: Regenerate.

2011-09-23  Joseph Myers  <joseph@codesourcery.com>

	PR gdb/13079
	* i386-tdep.c (i386_frame_align): New.
	(i386_gdbarch_init): Use i386_frame_align.

2011-09-23  Yao Qi  <yao@codesourcery.com>

	* i386-linux-nat.c (i386_linux_resume): Use read_memory_unsigned_integer
	to get address.

2011-09-22  Tristan Gingold  <gingold@adacore.com>

	* fork-child.c (fork_inferior): Add exec_fun parameter.
	Call exec_fun or execvp.
	* inferior.h: Adjust prototype.
	* gnu-nat.c (gnu_create_inferior): Adjust fork_inferior call.
	* inf-ttrace.c (inf_ttrace_create_inferior): Ditto.
	* inf-ptrace.c (inf_ptrace_create_inferior): Ditto.
	* procfs.c (procfs_create_inferior): Ditto.
	* darwin-nat.c (darwin_execvp): New function.
	(darwin_create_inferior): Use it.

2011-09-22  Yao Qi  <yao@codesourcery.com>

	* infrun.c (context_switch): Print debug message when switching to
	a different thread.

2011-09-21  Ulrich Weigand  <uweigand@de.ibm.com>

	* s390-tdep.c (s390_function_arg_pass_by_reference): Handle
	complex and vector types.
	(s390_return_value_convention): Likewise.

	(s390_value_from_register): Call check_typedef.
	(extend_simple_arg): Likewise.
	(alignment_of): Likewise.
	(s390_push_dummy_call): Likewise.
	(s390_return_value): Likewise.

2011-09-21  Joseph Myers  <joseph@codesourcery.com>

	* event-top.c (async_disconnect): If an exception is thrown from
	quit_cover, call pop_all_targets.  Use TRY_CATCH instead of
	catch_errors.
	* top.c (quit_cover): Return void and take no arguments.
	* top.h (quit_cover): Update prototype.

2011-09-20  Joseph Myers  <joseph@codesourcery.com>

	* mi/mi-main.c (mi_load_progress): Restore saved_uiout value to
	current_uiout, not uiout.

2011-09-19  Doug Evans  <dje@google.com>

	* python/py-auto-load.c (source_section_scripts): Fix file
	descriptor leak.
	* python/python.c (source_python_script_for_objfile): Tweak comments.

2011-09-18  Yao Qi  <yao@codesourcery.com>
	    Ulrich Weigand  <ulrich.weigand@linaro.org>

	Support displaced stepping for Thumb 16-bit insns.
	* arm-tdep.c (THUMB_NOP) Define.
	(thumb_copy_unmodified_16bit): New.
	(thumb_copy_b, thumb_copy_bx_blx_reg): New.
	(thumb_copy_alu_reg): New.
	(arm_copy_svc): Move some common code to ...
	(install_svc): ... here.  New.
	(thumb_copy_svc): New.
	(install_pc_relative): New.
	(thumb_copy_pc_relative_16bit): New.
	(thumb_decode_pc_relative_16bit): New.
	(thumb_copy_16bit_ldr_literal): New.
	(thumb_copy_cbnz_cbz): New.
	(cleanup_pop_pc_16bit_all): New.
	(thumb_copy_pop_pc_16bit): New.
	(thumb_process_displaced_16bit_insn): New.
	(thumb_process_displaced_32bit_insn): New.
	(thumb_process_displaced_insn): process thumb instruction.

	Support displaced stepping for Thumb 32-bit insns.
	* arm-tdep.c (thumb_copy_unmodified_32bit): New.
	(thumb2_copy_preload): New.
	(thumb2_copy_copro_load_store): New.
	(thumb2_copy_b_bl_blx): New.
	(thumb2_copy_alu_imm): New.
	(thumb2_copy_load_reg_imm): New.
	(thumb2_copy_load_literal): New
	(thumb2_copy_block_xfer): New.
	(thumb_32bit_copy_undef): New.
	(thumb_32bit_copy_unpred): New.
	(thumb2_decode_ext_reg_ld_st): New.
	(thumb2_decode_svc_copro): New.
	(decode_thumb_32bit_store_single_data_item): New.
	(thumb_copy_pc_relative_32bit): New.
	(thumb_decode_pc_relative_32bit): New.
	(decode_thumb_32bit_ld_mem_hints): New.
	(thumb2_copy_table_branch): New
	(thumb_process_displaced_32bit_insn): Process Thumb 32-bit
	instructions.

2011-09-18  Yao Qi  <yao@codesourcery.com>

	* arm-tdep.c (install_copro_load_store): PC is set 4-byte aligned.
	(install_b_bl_blx): Likewise.

2011-09-17  Yao Qi  <yao@codesourcery.com>

        * arm-tdep.c (install_ldr_str_ldrb_strb): Renamed to ...
        (install_load_store): ... this.  New.
        Change parameter BYTE to SIZE.
        (arm_copy_ldr_str_ldrb_strb): Update caller.
        (arm_decode_ld_st_word_ubyte): Update caller.

2011-09-17  Yao Qi  <yao@codesourcery.com>

	* infrun.c (displaced_step_fixup): Move some code ...
	(displaced_step_restore): ... here.  New function.
	(handle_inferior_event): Cleanup displaced stepping state for both
	child and parent when get forked or vforked event.
	* regcache.c (get_thread_arch_aspace_regcache): New function.
	get_thread_arch_regcache (): Call it.

2011-09-16  Joel Brobecker  <brobecker@adacore.com>

	* ada-tasks.c (print_ada_task_info): New function, merging
	short_task_info and info_tasks together.  Reimplement using
	ui-out instead of printing to stdout directly.  Move the code
	building and checking the task list here, instead of leaving it
	in info_tasks_command.
	(info_task): Move the code building and checking the task
	list here, instead of leaving it in info_tasks_command.
	(info_tasks_command): Delete code building and checking
	the task list - moved elsewhere.  Update calls to info_tasks
	and info_task.

2011-09-16  Joel Brobecker  <brobecker@adacore.com>

	* ada-tasks.c (info_task): Delete parameter `from_tty'.

2011-09-16  Joel Brobecker  <brobecker@adacore.com>

	* ada-tasks.c (info_tasks): Delete parameter `from_tty'.

2011-09-16  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.h (ada_build_task_list): Remove parameter
	`warn_if_null'.
	* ada-tasks.c (ada_build_task_list): Remove parameter
	`warn_if_null'.  Adjust implementation and documentation.
	(valid_task_id, ada_get_environment_task)
	iterate_over_live_ada_tasks): Adjust call to ada_build_task_list.
	(info_tasks_command): Adjust implementation.
	(task_command): Likewise.
	* ravenscar-thread.c (ravenscar_find_new_threads): Fix call
	to ada_build_task_list.

2011-09-16  Joel Brobecker  <brobecker@adacore.com>

	* ada-tasks.c (ada_tasks_check_symbol_table, task_list): Delete.
	(enum ada_known_tasks_kind, struct ada_tasks_inferior_data): New.
	(ada_tasks_inferior_data_handle): New static global.
	(get_ada_tasks_inferior_data): New function.
	(ada_get_task_number, get_task_number_from_id, valid_task_id)
	(ada_get_environment_task, iterate_over_live_ada_tasks)
	(add_ada_task, read_known_tasks_array, read_known_tasks_list):
	Adjust.
	(ada_set_current_inferior_known_tasks_addr): New function.
	(read_known_tasks, ada_build_task_list, short_task_info)
	(info_tasks, info_task, info_tasks_command, task_command_1)
	(task_command, ada_task_list_changed): Adjust.
	(ada_tasks_invalidate_inferior_data): New function.
	(ada_normal_stop_observer, ada_new_objfile_observer): Adjust.
	(_initialize_tasks): Set ada_tasks_inferior_data_handle.
	* ada-lang.h (struct inferior): Add declaration.
	(ada_task_list_changed): Update profile.
	* remote-wtx-pd.c: #include "inferior.h".
	(switch_to_pd_internal): Update call to ada_task_list_changed.

2011-09-16  Joel Brobecker  <brobecker@adacore.com>

	* ada-tasks.c: #include "progspace.h" and "objfiles.h".
	(atcb_type, atcb_common_type, atcb_ll_type, atcb_call_type)
	(atcb_fieldno): Delete these static globals.
	(struct ada_tasks_pspace_data): New struct.
	(ada_tasks_pspace_data_handle): New static global.
	(get_ada_tasks_pspace_data): New function.
	(ada_tasks_invalidate_pspace_data): New function.
	(get_tcb_types_info, ptid_from_atcb_common, read_atcb)
	(read_known_tasks_list, ada_new_objfile_observer): Adjust.
	(_initialize_tasks): Create this module's per-progspace
	data handle.

2011-09-16  Joel Brobecker  <brobecker@adacore.com>

	* ada-tasks.c (struct atcb_fieldnos): Renames struct tcb_fieldnos.

2011-09-16  Tristan Gingold  <gingold@adacore.com>

	* fork-child.c (fork_inferior): Update comment.  Use alloca
	instead of xmalloc for argv.  Move len and shell_command
	declarations in the block where they are used.
	Only call execvp.  Factorize failure code.

2011-09-16  Abhijit Halder  <abhijit.k.halder@gmail.com>

	Code cleanup.
	* parse.c (write_exp_elt): Change argument to pass a pointer of union
	`exp_element' instead of an element of the same and make the function
	static.
	(write_exp_elt_opcode, write_exp_elt_sym, write_exp_elt_block)
	(write_exp_elt_objfile, write_exp_elt_longcst, write_exp_elt_dblcst)
	(write_exp_elt_decfloatcst, write_exp_elt_type, write_exp_elt_intern):
	Change argument of `write_exp_elt' function call.
	Remove extra spaces from comments.
	* parser-defs.h (write_exp_elt): Remove prototype.

2011-09-15  Paul Koning  <paul_koning@dell.com>

	* python/py-cmd.c (gdbpy_string_to_argv): Decrement reference
	count of item appended to list.
	* python/py-type.c (typy_fields): Likewise.

2011-09-15  Paul Koning  <paul_koning@dell.com>

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

2011-09-15  Kevin Pouget  <kevin.pouget@st.com>

	PR threads/12628
	* linux-fork.c (checkpoint_command): Disallow checkpointing of
	processes with multiple threads.
	(inf_has_multiple_thread_cb): New function.
	(inf_has_multiple_threads): New function.

2011-09-15  Kevin Pouget  <kevin.pouget@st.com>

	PR Python/12692 Add gdb.selected_inferior() to Python interface.
	* python/py-inferior.c (GdbMethods): New Python method definition.

2011-09-15  Kevin Pouget  <kevin.pouget@st.com>

	Handle multiple breakpoint hits in Python interface:
	* python/py-bpevent.c (create_breakpoint_event_object): Rename C/Python
	variable to breakpoints.
	* python/py-stopevent.c (emit_stop_event): Return a Python tuple of
	bps instead of single breakpoint. Fix some space typos.
	* python/py-stopevent.c (create_breakpoint_event_object): Rename
	variable to breakpoints.

2011-09-15  Kevin Pouget  <kevin.pouget@st.com>

	* breakpoint.c (describe_other_breakpoints): Do not write 'duplicate'
	note if the breakpoint is internal.

2011-09-15  Kevin Pouget  <kevin.pouget@st.com>

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

2011-09-14  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (prepare_for_detach, wait_for_inferior)
	(fetch_inferior_event): Don't flush the register cache.
	* remote.c (struct stop_reply) <regcache>: Add comment.

2011-09-13  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Remove excessive DWARF expressions memory duplication.
	* dwarf2loc.c (per_cu_dwarf_call): Remove variable back_to and its use
	for block.data.
	(indirect_pieced_value): Remove variable result.  Remove variable
	back_to and its use for baton.data.
	(dwarf2_compile_expr_to_ax): Remove variable back_to and its use for
	block.data.
	* dwarf2read.c (dwarf2_fetch_die_location_block): Remove xmemdup.
	Update the function comment.

2011-09-13  Pedro Alves  <pedro@codesourcery.com>

	* inferior.h (ALL_INFERIORS): New.
	* linux-thread-db.c (thread_db_find_new_threads_2): Remove check
	for a stopped thread.
	(thread_db_find_new_threads): Look for threads in all inferiors.

2011-09-13  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (update_watchpoint): Handle the case of the
	watchpoint to update not being in the breakpoint list yet.
	(hw_watchpoint_use_count): New, factored out from
	hw_watchpoint_used_count.
	(hw_watchpoint_used_count): Rename to ...
	(hw_watchpoint_used_count_others): ... this.  Add `except'
	parameter.  Don't count resources of `except'.  Use
	hw_watchpoint_use_count.

2011-09-13  Pedro Alves  <pedro@codesourcery.com>

	* gdbthread.h (enum thread_state): Moved here.
	(struct thread_info): Rename `executing_' field to `executing' and
	`state_' to `state'.
	* thread.c (enum thread_state): Moved to gdbthread.h.
	(new_thread, add_thread_silent, delete_thread_1)
	(any_live_thread_of_process, thread_alive, set_running)
	(set_running, is_thread_state, any_running, is_executing)
	(set_executing, finish_thread_state, print_thread_info)
	(do_captured_thread_select): Adjust.

2011-09-13  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix compatibility with gcc < 4.3 and non-gcc compilers.
	* amd64-tdep.c (amd64_skip_xmm_prologue): Convert 0b constants.

2011-09-12  Pedro Alves  <pedro@codesourcery.com>
	    Matt Rice  <ratmice@gmail.com>

	PR gdb/13175

	* interps.c (struct interp) <interpreter_out>: Delete field.
	(interp_new): Remove the data and uiout parameters and adjust.
	(interp_set): Only set the current_uiout from the interpreter's
	uiout after initializing the interpreter.  Adjust call to
	init_proc.
	(interp_ui_out): Adjust to call procs->ui_out_proc.
	(interp_data, interp_name): New.
	* interps.h (interp_init_ftype): Add `self' parameter.
	(interp_ui_out_ftype): New typedef.
	(struct interp_procs) <ui_out_proc>: New method pointer.
	(interp_new): Remove the data and uiout parameters.
	(interp_data, interp_name): Declare.
	* tui/tui-interp.c (tui_init): Adjust prototype.
	(tui_ui_out): New.
	(_initialize_tui_interp): Install tui_ui_out.  Don't instanciate
	tui_out here.  Adjust call to interp_new.
	* tui/tui-io.c (tui_initialize_io): Don't set current_uiout here.
	* cli/cli-interp.c (cli_interpreter_init): Adjust prototype.
	(cli_ui_out): New.
	(_initialize_cli_interp): Install it.  Adjust call to interp_new.
	* mi/mi-common.h (struct mi_interp) <uiout>: New field.
	* mi/mi-interp.c (mi_interpreter_init): Adjust prototype.
	Initialize mi->uiout depending on the mi_version as extracted from
	the interpreter's name.
	(mi_ui_out): New.
	(_initialize_mi_interp): Install mi_ui_out.  Adjust calls to
	interp_new.  Don't allocate the ui_out's of the interpreters here.

2011-09-12  Aleksandar Ristovski  <aristovski@qnx.com>

	* solib.c (solib_used): New function.
	(update_solib_list, reload_shared_libraries_1): Check if objfile is used
	by another so_list object before freeing it.

2011-09-11  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup.
	* mi/mi-cmd-stack.c (list_args_or_locals): Use enum for the parameter
	values.

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

	Code cleanup.
	* amd64-tdep.c (amd64_skip_prologue): Move the XMM code to ...
	(amd64_skip_xmm_prologue): ... this new function.  Describe its
	parameters.  No longer use amd64_prologue_line_bug.
	* defs.h (producer_is_gcc_ge_4): New declaration.
	* dwarf2read.c (producer_is_gcc_ge_4): Move to utils.c.
	(process_full_comp_unit): Update its caller.  Remove
	amd64_prologue_line_bug initialization.
	* symtab.h (struct symtab): Remove field amd64_prologue_line_bug.
	* utils.c (producer_is_gcc_ge_4): Moved here from dwarf2read.c.

2011-09-09  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.h (enum resume_kind): New.
	(struct lwp_info) <last_resume_kind>: New field.
	* linux-nat.c (linux_child_follow_fork): Set last_resume_kind to
	resume_stop on the new lwp.
	(add_lwp): Set last_resume_kind as resume_continue by default.
	(lin_lwp_attach_lwp): Set last_resume_kind as resume_stop.
	(resume_lwp): New, factored out from resume_callback.  Also check
	for pending status in lp->waitstatus.
	(resume_callback): Reimplement.
	(resume_clear_callback): Set last_resume_kind as resume_stop.
	(resume_set_callback): Set last_resume_kind as resume_continue.
	(linux_nat_resume, linux_handle_extended_wait): Set
	last_resume_kind.
	(running_callback): Also check lp->waitstatus for pending events.
	(select_singlestep_lwp_callback): Check that lp->last_resume_kind
	is resume_step.
	(stop_and_resume_callback): Don't re-resume if the core wanted the
	lwp stopped.  Use resume_lwp instead of resume_callback.  Avoid
	using an invalidated pointer.
	(linux_nat_filter_event): Don't discard SIGSTOPs as delayed
	SIGSTOPs if the core wanted the LWP to stop.
	(linux_nat_wait_1) Don't consume a pending SIGSTOP if the core
	wanted the lwp to stop.  If the core wanted the lwp to stop, and
	the lwp stopped with a SIGSTOP, report a TARGET_SIGNAL_0 instead
	of TARGET_SIGNAL_STOP.
	(linux_nat_stop_lwp): Don't synchronously wait for the lwp to stop
	here.  Instead, signal the lwp, and set the last_resume_kind to
	resume_stop.

2011-09-09  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (lin_lwp_attach_lwp): Return 1 (ignore) instead of
	-1 (error), if the lwp exits right after attaching.

2011-09-08  Doug Evans  <dje@google.com>

	* py-cmd.c: Some minor formatting fixes.
	(gdbpy_parse_command_name): Rename text arg to name, make const.
	All callers updated.
	* python-internal.h (gdbpy_parse_command_name): Update.

	* cli/cli-decode.c (add_cmd): Add comment.

2011-09-08  Jan Kratochvil  <jan.kratochvil@redhat.com>

	PR breakpoints/12435
	* amd64-tdep.c (amd64_skip_prologue): New variables start_pc_sal,
	next_sal, buf, offset and xmmreg.  Advance PC if it sees the PR.
	* dwarf2read.c (process_full_comp_unit): Initialize
	amd64_prologue_line_bug.
	* symtab.h (struct symtab): New field amd64_prologue_line_bug.

2011-09-08  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix TUI screen corruption.
	* utils.c (fputs_maybe_filtered): Replace !input_from_terminal_p by
	batch_flag.

2011-09-08  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* findvar.c (read_var_value): Never return NULL, throw an error
	instead.  Update the function comment.  State symbol name in the error
	messages.
	* python/py-frame.c (frapy_read_var): Remove handling of NULL from
	read_var_value.
	* stack.c (print_frame_args): Likewise.
	* valops.c (value_of_variable): Likewise.

2011-09-08  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* stack.c (print_frame_args): New variable except.  Wrap
	read_var_value and common_val_print into TRY_CATCH.

2011-09-08  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* eval.c (evaluate_subexp_standard) <OP_THIS>: Update the value_of_this
	caller to value_of_this.
	* p-exp.y: Update the value_of_this caller to value_of_this_silent.
	Twice.
	* valops.c (value_of_this): Remove parameter complain and variable ret.
	Update function comment.  Never return NULL by this code.
	(value_of_this_silent): New function.
	* value.h (value_of_this): Remove parameter complain.
	(value_of_this_silent): New declaration.

2011-09-07  Yao Qi  <yao@codesourcery.com>

	* gdbthread.h (struct thread_info): Remove fields
	`stepping_through_solib_after_catch' and
	`stepping_through_solib_catchpoints'.
	* infrun.c (init_thread_stepping_state): Update.
	(process_event_stop_test, currently_stepping): Update.
	(currently_stepping_or_nexting_callback): Update.

2011-09-07  Yao Qi  <yao@codesourcery.com>

	* gdbthread.h (struct thread_info): Comment on field
	`step_after_step_resume_breakpoint'.

2011-09-07  Abhijit Halder  <abhijit.k.halder@gmail.com>

	* remote.c (remote_console_output): Reindent.

2011-09-06  Luis Machado  <lgustavo@codesourcery.com>

	* frame.c (has_stack_frames): Check for currently selected
	traceframe.

2011-09-06  Pedro Alves  <pedro@codesourcery.com>

	* event-top.h (MAXPROMPTS, struct prompts): Delete.
	(set_async_annotation_level, set_async_prompt, pop_prompt)
	(push_prompt, new_async_prompt): Delete declarations.
	* top.h (get_prompt, set_prompt): Change prototype.
	(get_prefix, set_prefix, get_suffix, set_suffix): Delete
	declarations.
	* top.c (command_loop):
	(top_prompt): New global.
	(get_prefix, set_prefix, get_suffix, ): Delete.
	(get_prompt, set_prompt): Rewrite.
	(show_new_async_prompt): Rename to ...
	(show_prompt): ... this.
	(init_main): Adjust.  Don't handle --annotate=2 here.
	* event-top.c (new_async_prompt): Delete.
	(the_prompts): Delete.
	(more_to_come): Make static.
	(display_gdb_prompt): Use top_level_prompt() to compute the top
	level prompt, and don't notify the before_prompt observers
	directly here.  Always trick readline into not trying to display
	the prompt if sync_execution and displaying the primary prompt.
	If displaying a local/secondary prompt, always show it, even if
	sync_execution is set.
	(change_annotation_level): Delete.
	(top_level_prompt): New, based on change_annotation_level.
	(push_prompt, pop_prompt): Delete.
	(async_disable_stdin): No longer pushes prompt.
	(command_line_handler): No longer pushes or pops prompt.  If more
	input is expected, call display_gdb_prompt with an explicit empty
	prompt.
	(async_stop_sig): Adjust.
	(set_async_annotation_level, set_async_prompt): Delete.
	* python/python.c (before_prompt_hook): Adjust.

2011-09-05  Pedro Alves  <pedro@codesourcery.com>

	PR cli/13110

	* infrun.c (fetch_inferior_event): Check if there's a selected
	thread before checking if the selected thread is executing.

2011-09-05  Pedro Alves  <pedro@codesourcery.com>

	* inf-loop.c (execute_command): Don't check if the current thread
	if running before synchronously waiting for command completion.
	* infrun.c (fetch_inferior_event): Handle "set exec-done-display"
	here.
	(normal_stop): Call async_enable_stdin here.
	* inf-loop.c (inferior_event_handler): Don't call
	async_enable_stdin, nor handle "set exec-done-display" here.

2011-09-04  Joel Brobecker  <brobecker@adacore.com>

	GDB 7.3.1 released.

2011-09-04  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Change `7.3' into `7.3.1' in `Changes since GDB 7.3'.

2011-09-04  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Add entry for OpenBSD/NetBSD build failure.

2011-09-02  Jan Kratochvil  <jan.kratochvil@redhat.com>

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

2011-09-02  Matt Rice  <ratmice@gmail.com>

	PR gdb/10720
	* event-top.c (cli_command_loop): Replace readline setup with
	direct call to display_gdb_prompt.
	(display_gdb_prompt): Do not call observer mechanism during
	synchronous execution.

2011-09-02  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (in_pid_list_p): New.
	(linux_record_stopped_pid): Delete.
	(lin_lwp_attach_lwp): Check if PTRACE_ATTACH failed because we're
	already attached to the LWP.  Return an indication if so.
	(linux_nat_filter_event): Adjust.
	* linux-thread-db.c (attach_thread): Handle lin_lwp_attach_lwp
	returning an indication to ignore this thread.

2011-09-02  Pedro Alves  <pedro@codesourcery.com>

	* top.c: Include interps.h.
	(execute_command): If the target can async, but the interpreter is
	in sync mode, synchronously wait for the command to finish before
	returning.
	(execute_command_to_string): Force the interpreter to sync mode.
	* infrun.c: Include interps.h.
	(fetch_inferior_event): Don't restore the prompt yet if the
	interpreter is in sync mode.
	* interps.c (interpreter_async): New global.
	* interps.h (interpreter_async): Declare.
	* inf-loop.c: Include interps.h.
	(inferior_event_handler): Don't print the language change or run
	breakpoint commands yet if the interpreter in is sync mode.
	* main.c (captured_command_loop): Flip the interpreter to async
	mode.
	* cli/cli-script.c: Include interps.h.
	(execute_user_command, while_command, if_command): Force the
	interpreter to sync mode.
	* python/python.c: Include interps.h.
	(python_command, execute_gdb_command): Force the interpreter to
	sync mode.

2011-09-02  Pedro Alves  <pedro@codesourcery.com>

	* value.c (show_convenience): Catch errors thrown while printing
	each internal variable.
	* infrun.c (validate_siginfo_access): New function.
	(siginfo_value_read, siginfo_value_write): Call it.

2011-09-01  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Revert:
	2010-05-21  Pierre Muller  <muller@ics.u-strasbg.fr>
	* dwarf2read.c (new_symbol): Handle DW_AT_variable_parameter
	attribute.

2011-08-29  Yao Qi  <yao@codesourcery.com>

	* solib-dsbt.c (bfd_lookup_symbol): Removed.
	(cmp_name): New.
	(enable_break2): Update caller.
	* solib-frv.c (bfd_lookup_symbol): Removed.
	(cmp_name): New.
	(enable_break2): Update caller.
	* solib-pa64.c (bfd_lookup_symbol): Removed.
	(cmp_name): New.
	* solib-svr4.c (bfd_lookup_symbol): Removed.
	(cmp_name_and_sec_flags): New.
	(enable_break): Update caller.
	* solib.c (gdb_bfd_lookup_symbol_from_symtab): New.
	(gdb_bfd_lookup_symbol_from_dyn_symtab): New.
	(gdb_bfd_lookup_symbol): New.
	* solib.h: Functions declarations.

2011-08-29  Yao Qi  <yao@codesourcery.com>

	* Makefile.in (ALL_TARGET_OBS): Add tic6x-tdep.o tic6x-linux-tdep.o
	and solib-dsbt.o.

2011-08-29  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix TUI stepi on code without symbols.
	* tui/tui-stack.c (tui_show_frame_info): Remove error, set LOW for
	current PC instead.

2011-08-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup.
	* mi/mi-cmd-stack.c (list_args_or_locals): Remove stb initialization
	and the static keyword.
	* mi/mi-cmd-target.c (mi_cmd_target_file_get, mi_cmd_target_file_put):
	Make prefix an array.
	* mi/mi-cmd-target.c (mi_cmd_target_file_delete): Likewise.
	* mi/mi-main.c (get_register): Remove stb initialization and the static
	keyword.

2011-08-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup - make mi_opt const.
	* mi/mi-cmd-break.c (mi_cmd_break_insert, mi_cmd_break_watch): Make
	opts const.
	* mi/mi-cmd-disas.c (mi_cmd_disassemble): Likewise.
	* mi/mi-cmd-env.c (mi_cmd_env_path): Likewise.
	(mi_cmd_env_dir): Likewise.
	* mi/mi-cmd-target.c (mi_cmd_target_file_get): Likewise.
	(mi_cmd_target_file_put): Likewise.
	* mi/mi-cmd-target.c (mi_cmd_target_file_delete): Likewise.
	* mi/mi-cmd-var.c (mi_cmd_var_evaluate_expression): Likewise.
	* mi/mi-getopt.c (mi_getopt): Make opts and opt const.
	(mi_valid_noargs): Make opts const.
	* mi/mi-getopt.h (mi_getopt): Make opts and opt const.
	* mi/mi-main.c (mi_cmd_list_thread_groups): Make opts const.
	(mi_cmd_data_read_memory): Likewise.
	(mi_cmd_data_read_memory_bytes): Likewise.
	(mi_cmd_data_write_memory): Likewise.

2011-08-26  Matt Rice  <ratmice@gmail.com>

	* solib-sunos.c (allocate_rt_common_objfile): Add missing arguments to
	bcache_xmalloc,  replace bcache_xmalloc with call to
	psymbol_bcache_init for psymbol_cache.
	* symfile.c (reread_symbols): Remove extra calls to bcache_xmalloc.

2011-08-26  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* inf-loop.c (inferior_event_handler): Add exception_print in
	INF_EXEC_COMPLETE.

2011-08-26  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* breakpoint.c (bpstat_do_actions): New variable cleanup_if_error, call
	make_bpstat_clear_actions_cleanup and discard_cleanups for it.
	* defs.h (make_bpstat_clear_actions_cleanup): New declaration.
	* exceptions.c (throw_exception): Remove the bpstat_clear_actions call.
	* inf-loop.c (inferior_event_handler): New variable cleanup_if_error,
	call make_bpstat_clear_actions_cleanup and discard_cleanups for it.
	Call bpstat_clear_actions for failed fetch_inferior_event_wrapper.
	* infrun.c (fetch_inferior_event): Call
	make_bpstat_clear_actions_cleanup.
	* top.c (execute_command): New variable cleanup_if_error, call
	make_bpstat_clear_actions_cleanup and discard_cleanups for it.
	* utils.c (do_bpstat_clear_actions_cleanup)
	(make_bpstat_clear_actions_cleanup): New functions.

2011-08-26  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (linux_child_follow_fork): Don't set lp->resumed on
	either the parent or the child forks.  Rename a couple locals.

2011-08-26  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (wait_lwp): Avoid assuming errno is preserved by a
	library call.  Avoid reading the `status' local if all waitpid
	calls failed.

2011-08-26  Pedro Alves  <pedro@codesourcery.com>

	* common/linux-osdata.c (get_cores_used_by_process): Don't assume
	opening /proc/PID/task always succeeds.

2011-08-26  Aleksandar Ristovski <aristovski@qnx.com>

	* linespec.c (symtab_from_filename): Check for the end of string.

2011-08-26  Marc Khouzam  <marc.khouzam@ericsson.com>

	PR mi/11912
	* varobj.c (cplus_describe_child): Add the keyword
	'class' to the output of the method when dealing 
	with a cast to a base class.

2011-08-26  Jan Kratochvil  <jan.kratochvil@redhat.com>

	No functionality change.
	* breakpoint.c (bpstat_clear_actions): Remove the BS parameter, make
	function comment a reference, new variables tp and bs, move here code
	from throw_exception.
	* breakpoint.h (bpstat_clear_actions): Remove the BS parameter,
	describe it in the comment.
	* exceptions.c (throw_exception): Remove variable tp, move the code for
	bpstat_clear_actions to bpstat_clear_actions.

2011-08-24  Luis Machado  <lgustavo@codesourcery.com>

	* linux-nat.h (linux_proc_get_tgid): Remove declaration.
	* linux-nat.c: Include linux-procfs.h.
	(linux_proc_get_tgid): Move to ...
	* common/linux-procfs.c: ... here. New file.
	* common/linux-procfs.h: New file.
	* linux-thread-db.c: Include linux-procfs.h.
	* Makefile.in: Update dependencies.
	* config/alpha/alpha-linux.mh: Add linux-procfs.o dependency.
	* config/arm/linux.mh: Likewise.
	* config/i386/linux.mh: Likewise.
	* config/i386/linux64.mh: Likewise.
	* config/ia64/linux.mh: Likewise.
	* config/m32r/linux.mh: Likewise.
	* config/m68k/linux.mh: Likewise.
	* config/mips/linux.mh: Likewise.
	* config/pa/linux.mh: Likewise.
	* config/pa/linux.mh: Likewise.
	* config/powerpc/linux.mh: Likewise.
	* config/powerpc/ppc64-linux.mh: Likewise.
	* config/powerpc/spu-linux.mh: Likewise.
	* config/sparc/linux.mh: Likewise.
	* config/sparc/linux64.mh: Likewise.
	* config/xtensa/linux.mh: Likewise.

2011-08-24  Hui Zhu  <teawater@gmail.com>

	* tracepoint.c (cond_string_is_same): New function.
	(find_matching_tracepoint): Add condition check
	by cond_string_is_same.

2011-08-23  Josh Matthews  <josh@joshmatthews.net>

	Fix build error in Darwin port.
	* darwin-nat-info.c (darwin_debug_regions_recurse): New variable uiout.

2011-08-21  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup.
	* breakpoint.c (bpstat_clear_actions): Remove clearing of commands_left.
	(command_line_is_silent): New function.
	(bpstat_do_actions_1): No longer use commands_left, use
	command_line_is_silent for commands.
	(bpstat_alloc): Remove clearing of commands_left.
	(bpstat_stop_status): Remove initialization of commands_left, use
	command_line_is_silent.
	* breakpoint.h (struct bpstats): Remove commands_left.

2011-08-18  Keith Seitz  <keiths@redhat.com>

	PR c++/12266
	* cp-name-parser.y (struct demangle_info): Remove unused
	member PREV.
	(d_grab): Likewise.
	(allocate_info): Change return type to struct demangle_info *.
	Always allocate a new demangle_info.
	Remove unused PREV pointer.
	(cp_new_demangle_parse_info): New function.
	(cp_demangled_name_parse_free): New function.
	(do_demangled_name_parse_free_cleanup): New function.
	(make_cleanup_cp_demangled_name_parse_free): New function.
	(cp_demangled_name_to_comp): Change return type to
	struct demangle_parse_info *.
	Allocate a new storage for each call.
	(main): Update usage for cp_demangled_name_to_comp
	API change.
	* cp-support.h (struct demangle_parse_info): New structure.
	(cp_demangled_name_to_comp): Update API change for
	return type.
	(cp_new_demangle_parse_info): Declare.
	(make_cleanup_cp_demangled_name_parse_free): New declaration.
	(cp_demangled_name_parse_free): Declare.
	* cp-support.c (cp_canonicalize_string): Update API
	change for cp_demangled_name_to_comp.
	(mangled_name_to_comp): Likewise.
	Return struct demangle_parse_info, too.
	(cp_class_name_from_physname): Update mangled_name_to_comp
	API change.
	(method_name_from_physname): Likewise.
	(cp_func_name): Update API change for cp_demangled_name_to_comp.
	(cp_remove_params): Likewise.
	* python/py-type.c (typy_legacy_template_argument): Likewise.

	* cp-support.h (cp_canonicalize_string_no_typedefs): Declare.
	(cp_merge_demangle_parse_infos): Declare.
	* cp-support.c (ignore_typedefs): New file global.
	(copy_string_to_obstack): New function.
	(inspect_type): New function.
	(replace_typedefs): New function.
	(replace_typedefs_qualified_name): New function.
	(cp_canonicalize_string_no_typedefs): New function.
	* cp-name-parser.y (cp_merge_demangle_parse_infos): New function.
	(cp_new_demangle__parse_info): Allocate and initialize the obstack.
	* linespec.c (find_methods): Use cp_canonicalize_string_no_typedefs
	instead of cp_canonicalize_string.
	(find_method): Likewise.
	(decode_compound): Before looking up the name, call
	cp_canonicalize_string_no_typedefs.
	(decode_variable): Likewise.

2011-08-17  Phil Muldoon  <pmuldoon@redhat.com>
            Tom Tromey  <tromey@redhat.com>
            Matt Rice <ratmice@gmail.com>

        * python/lib/gdb/prompt.py: New file.
        * python/lib/gdb/command/prompt.py: New file.
        * NEWS: Document set extended-prompt and gdb.prompt library

2011-08-16  Yao Qi  <yao@codesourcery.com>

	* tic6x-linux-tdep.c: Move const arrays definition from here...
	* tic6x-tdep.c: to here ...

2011-08-14  Yao Qi  <yao@codesourcery.com>

	* NEWS: New port to Texas Instruments TMS320C6x.

2011-08-14  Andrew Jenner  <andrew@codesourcery.com>
	    Bernd Schmidt  <bernds@codesourcery.com>
	    Yao Qi  <yao@codesourcery.com>

	* configure.tgt: Handle tic6x-*-*linux and tic6x-*-*.
	* solib-dsbt.c: New file.  Support DSBT shared object.
	* tic6x-linux-tdep.c: New file.
	* tic6x-tdep.c: New file.
	* tic6x-tdep.h: New file.

2011-08-14  Andrew Stubbs <ams@codesourcery.com>
	    Yao Qi  <yao@codesourcery.com>

	* remote.c (PACKET_qXfer_fdpic): New enum value.
	(remote_protocol_features): Add qXfer:fdpic:read packet.
	(remote_xfer_partial): Support TARGET_OBJECT_FDPIC.
	(_initialize_remote): Add set/show remote read-fdpic-loadmap command.
	* target.h (enum target_object): Add TARGET_OBJECT_FDPIC.

2011-08-14  Yao Qi  <yao@codesourcery.com>

	Target description for tic6x.
	* features/Makefile (WHICH): Add tic6x-c64xp tic6x-c64x tic6x-c62x
	tic6x-c64xp-linux tic6x-c64x-linux and tic6x-c62x-linux.
	* features/tic6x-c6xp.xml, features/tic6x-core.xml: New.
	* features/tic6x-gp.xml, features/tic6x-c62x.xml: New.
	* features/tic6x-c64x.xml, features/tic6x-c64xp.xml: New.
	* features/tic6x-c62x-linux.xml, features/tic6x-c64x-linux.xml: New.
	* features/tic6x-c64xp-linux.xml: New.
	* features/tic6x-c64xp.c, features/tic6x-c64x.c: Generated.
	* features/tic6x-c62x.c, features/tic6x-c64xp-linux.c: Generated.
	* features/tic6x-c64x-linux.c, features/tic6x-c62x-linux.c: Generated.
	* regformats/tic6x-c62x.dat, regformats/tic6x-c64x.dat: Generated.
	* regformats/tic6x-c64xp.dat,
	regformats/tic6x-c62x-linux.dat: Generated.
	* regformats/tic6x-c64x-linux.dat,
	regformats/tic6x-c64xp-linux.dat: Generated.
	* config/djgpp/fnchange.lst: Add features/tic6x-*.xml and
	features/tic6x-*.c files.
	Add regformats/tic6x-*.dat files.

2011-08-12  Doug Evans  <dje@google.com>

	* NEWS: Mention new "type" attribute of python gdb.Symbol objects.
	* python/py-symbol.c (sympy_get_type): New function.
	(symbol_object_getset): Add "type".

2011-08-12  Pedro Alves  <pedro@codesourcery.com>

	PR tui/13073

	* tui/tui-regs.c (tui_show_register_group): Skip registers with an
	empty name.
	(tui_show_register_group): Don't store a byte buffer in the data
	element's value.
	(tui_register_format): Skip registers with an empty name.
	(tui_get_register): Store a struct value in the data element's
	value field instead of a byte buffer holding the raw register
	contents.  Account for optimized-out and unavailable registers
	when comparing register contents.

2011-08-09  Pedro Alves  <pedro@codesourcery.com>

	* printcmd.c (current_display_number): Update comment.
	(disable_current_display_cleanup): Delete.
	(do_one_display): Use make_cleanup_restore_integer.  Gracefully
	catch errors thrown while evaluating and printing the display.

2011-08-09  Tom Tromey  <tromey@redhat.com>

	* mi/mi-cmd-break.c (mi_cmd_break_passcount): Fix typo.

2011-08-09  Pedro Alves  <pedro@codesourcery.com>

	* elfread.c (elf_symtab_read): Rework comments.
	* maint.c (maintenance_command): Ditto.
	* somread.c (som_symtab_read): Ditto.
	* solib.c (solib_find, solib_map_sections, update_solib_list)
	(solib_add, info_sharedlibrary_command, solib_name_from_address)
	(solib_create_inferior_hook, in_solib_dynsym_resolve_code)
	(sharedlibrary_command, no_shared_libraries): Ditto.
	* solib-irix.c (locate_base, disable_break, enable_break)
	(irix_solib_create_inferior_hook, irix_solib_create_inferior_hook)
	(irix_current_sos, irix_open_symbol_file_object)
	(irix_special_symbol_handling): Ditto.
	* solib-sunos.c (locate_base, first_link_map_member)
	(sunos_current_sos, disable_break, enable_break)
	(sunos_special_symbol_handling, sunos_solib_create_inferior_hook):
	Ditto.
	* solib-svr4.c (bfd_lookup_symbol, elf_locate_base, locate_base)
	(open_symbol_file_object, svr4_current_sos, enable_break)
	(svr4_special_symbol_handling, svr4_solib_create_inferior_hook):
	Ditto.
	* solib-frv.c (bfd_lookup_symbol, open_symbol_file_object)
	(frv_current_sos, enable_break, frv_special_symbol_handling)
	(frv_solib_create_inferior_hook): Ditto.
	* solist.h (struct target_so_ops): Extend the comments of the
	special_symbol_handling, current_sos and open_symbol_file_object
	methods.

2011-08-09  Phil Muldoon  <pmuldoon@redhat.com>

	* python/lib/gdb/__init__.py: Auto-load files in command and
	function directories.
	* python/python.c (finish_python_initialization): Use
	os.path.join.
	* python/lib/gdb/command/pretty_printers.py: Self register
	command.
	* NEWS: Document auto-loading.

2011-08-08  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2loc.c (dwarf2_evaluate_loc_desc_full) <DWARF_VALUE_STACK>
	(dwarf2_evaluate_loc_desc_full) <DWARF_VALUE_LITERAL>: New variable
	objfile_gdbarch.  Fix BFD_ENDIAN_BIG case.

2011-08-08  Tom Tromey  <tromey@redhat.com>

	* breakpoint.c (clean_up_filters): Remove.
	(catch_syscall_split_args): Use VEC_cleanup.

2011-08-06  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* cp-name-parser.y (xfree): Wrap the name free by CONCAT2.
	(main): Uncomment "Demangling error\n".

2011-08-05  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* solib-target.c (segment_attributes): Make them static.
	(section_attributes, library_children, library_attributes): Likewise.
	(library_list_children, library_list_attributes): Likesise.
	(library_list_elements): Likewise.

2011-08-05  Pedro Alves  <pedro@codesourcery.com>

	* exceptions.c (throw_exception): Don't disable the current
	display.
	* printcmd.c (disable_current_display_cleanup): New function.
	(do_one_display): Install a cleanup to disable the current display
	if doing the display throws.

2011-08-05  Eli Zaretskii  <eliz@gnu.org>

	* python/py-breakpoint.c (gdbpy_initialize_breakpoints): Move the
	initialization of the tp_new member to the corresponding
	gdbpy_initialize_* function.
	* python/py-cmd.c (gdbpy_initialize_commands): Likewise.
	* python/py-frame.c (gdbpy_initialize_frames): Likewise.
	* python/py-function.c (gdbpy_initialize_functions): Likewise.
	* python/py-inferior.c (gdbpy_initialize_inferior): Likewise.
	* python/py-param.c (gdbpy_initialize_parameters): Likewise.

2011-08-05  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* spu-tdep.c (info_spu_event_command, info_spu_signal_command)
	(info_spu_mailbox_list, info_spu_mailbox_command, info_spu_dma_cmdlist)
	(info_spu_dma_command, info_spu_proxydma_command): Rename uiout
	references to current_uiout.

2011-08-04  Pedro Alves  <pedro@codesourcery.com>

	* event-loop.c (gdb_do_one_event): Remove `data' parameter.
	(start_event_loop): Use TRY_CATCH instead of catch_errors.
	* event-loop.h (gdb_do_one_event): Remove `data' parameter.
	* top.c (gdb_readline_wrapper): Adjust.
	* tui/tui-interp.c (tui_command_loop):
	(_initialize_tui_interp): Don't install it.

2011-08-04  Pedro Alves  <pedro@codesourcery.com>

	* ui-out.h (uiout): Rename to ...
	(current_uiout): ... this.
	* ui-out.c (uiout): Rename to ...
	(current_uiout): ... this.
	* ada-lang.c (print_it_exception, print_one_exception)
	(print_mention_exception): Adjust.
	* breakpoint.c (watchpoint_check): Adjust.
	(print_breakpoint_location, print_one_breakpoint, breakpoint_1)
	(default_collect_info, watchpoints_info, print_one_catch_fork)
	(print_one_catch_vfork, print_one_catch_syscall)
	(print_one_catch_exec, mention, print_it_ranged_breakpoint)
	(print_one_ranged_breakpoint, print_mention_ranged_breakpoint)
	(print_it_watchpoint, print_mention_watchpoint)
	(print_it_masked_watchpoint, print_mention_masked_watchpoint)
	(print_it_exception_catchpoint, print_one_exception_catchpoint)
	(print_mention_exception_catchpoint, say_where, bkpt_print_it)
	(bkpt_print_mention, momentary_bkpt_print_it)
	(tracepoint_print_mention, update_static_tracepoint)
	(tracepoints_info, save_breakpoints): Adjust.
	* cli-out.c (field_separator): Adjust.
	* cp-abi.c (list_cp_abis, show_cp_abi_cmd): Adjust.
	* exceptions.c (catch_exceptions_with_msg, catch_errors): Adjust.
	* frame.c (get_current_frame): Adjust.
	* infcmd.c (run_command_1, print_return_value): Adjust.
	* inferior.c (inferior_command, info_inferiors_command): Adjust.
	* infrun.c (print_end_stepping_range_reason): Adjust.
	(print_signal_exited_reason, print_exited_reason): Adjust.
	(print_signal_received_reason, print_no_history_reason): Adjust.
	* interps.c (interp_set): Adjust.
	* osdata.c (info_osdata_command): Adjust.
	* progspace.c (maintenance_info_program_spaces_command): Adjust.
	* remote-fileio.c (remote_fileio_request): Adjust.
	* remote.c (show_remote_cmd): Adjust.
	* solib.c (info_sharedlibrary_command): Adjust.
	* source.c (print_source_lines_base): Adjust.
	* stack.c (print_stack_frame): Adjust.
	(do_gdb_disassembly, print_frame_info, print_frame): Adjust.
	* symfile-mem.c (add_vsyscall_page): Adjust.
	* symfile.c (load_progress, generic_load)
	(print_transfer_performance): Adjust.
	* thread.c (info_threads_command, restore_selected_frame)
	(thread_command): Adjust.
	* top.c (make_cleanup_restore_ui_file): Adjust.
	* tracepoint.c (tvariables_info_1, trace_status_mi, tfind_1)
	(print_one_static_tracepoint_marker): Adjust.
	* cli/cli-cmds.c (print_disassembly): Adjust.
	* cli/cli-decode.c (print_doc_line): Adjust.
	* cli/cli-interp.c (safe_execute_command): Adjust.
	* cli/cli-logging.c (set_logging_redirect, pop_output_files)
	(handle_redirections): Adjust.
	* cli/cli-script.c (show_user_1): Adjust.
	* cli/cli-setshow.c (do_setshow_command, cmd_show_list): Adjust.
	* mi/mi-cmd-break.c (breakpoint_notify): Adjust.
	* mi/mi-cmd-disas.c (mi_cmd_disassemble): Adjust.
	* mi/mi-cmd-env.c (mi_cmd_env_pwd, mi_cmd_env_path)
	(mi_cmd_env_dir): Adjust.
	* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_file)
	(print_partial_file_name, mi_cmd_file_list_exec_source_files): Adjust.
	* mi/mi-cmd-stack.c (mi_cmd_stack_list_frames)
	(mi_cmd_stack_info_depth, mi_cmd_stack_list_args)
	(list_args_or_locals): Adjust.
	* mi/mi-cmd-var.c (print_varobj, mi_cmd_var_create)
	(mi_cmd_var_delete, mi_cmd_var_set_format, mi_cmd_var_set_frozen)
	(mi_cmd_var_show_format, mi_cmd_var_info_num_children)
	(mi_cmd_var_list_children, mi_cmd_var_info_type)
	(mi_cmd_var_info_path_expression, mi_cmd_var_info_expression)
	(mi_cmd_var_show_attributes, mi_cmd_var_evaluate_expression)
	(mi_cmd_var_assign, mi_cmd_var_update, varobj_update_one): Adjust.
	* mi/mi-interp.c (mi_on_normal_stop): Adjust.
	* mi/mi-main.c (mi_cmd_gdb_exit, mi_cmd_thread_select)
	(mi_cmd_thread_list_ids, mi_cmd_thread_info, print_one_inferior)
	(list_available_thread_groups, mi_cmd_list_thread_groups)
	(mi_cmd_data_list_register_names)
	(mi_cmd_data_list_changed_registers)
	(mi_cmd_data_list_register_values, get_register)
	(mi_cmd_data_evaluate_expression, mi_cmd_data_read_memory)
	(mi_cmd_data_read_memory_bytes, mi_cmd_list_features)
	(mi_cmd_list_target_features, mi_cmd_add_inferior)
	(mi_execute_command, mi_load_progress): Adjust.
	* mi/mi-symbol-cmds.c (mi_cmd_symbol_list_lines): Adjust.
	* python/py-auto-load.c (print_script, info_auto_load_scripts):
	Adjust.
	* python/py-breakpoint.c (bppy_get_commands): Adjust.
	* tui/tui-interp.c (tui_command_loop): Adjust.
	* tui/tui-io.c (tui_setup_io, tui_initialize_io): Adjust.

2011-08-04  Pedro Alves  <pedro@codesourcery.com>

	* exceptions.c (struct catcher): Remove saved_uiout field.
	(exceptions_state_mc_init): Remove the `func_uiout' parameter, and
	no longer save/resvore the global ui_out builder.
	(catch_exceptions_with_msg): Save/override/restore the global
	ui_out builder manually instead of relying on TRY_CATCH to do it.
	(catch_errors): Save/restore the global ui_out builder manually
	instead of relying on TRY_CATCH to do it.
	* exceptions.h (exceptions_state_mc_init): Remove the `func_uiout'
	parameter.
	(TRY_CATCH): Adjust.
	* cli/cli-interp.c (safe_execute_command): Save/override/restore
	the global ui_out builder manually instead of relying on TRY_CATCH
	to do it.

2011-08-03  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* breakpoint.c (update_global_location_list): Ensure
	invariant 'first loc marked not duplicated and inserted,
	following locs marked duplicated/not inserted' is respected
	for multiple locations at the same address.
	(unduplicated_should_be_inserted) New function.
	(swap_insertion) New function.

2011-08-03  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* stack.c (print_frame_arguments_choices): Comment typo fix.

2011-08-01  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	Revert:
	2011-07-31  Thiago Jung Bauermann  <bauerman@br.ibm.com>
	* breakpoint.c (insert_bp_location): Remove disabled_breaks
	argument.  Update callers.

2011-08-01  Paul Pluzhnikov  <ppluzhnikov@google.com>

	PR gdb/13045
	* doublest.c (convert_doublest_to_floatformat): Pass correct
	mantissa length to put_field.

2011-08-01  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* stack.c (do_gdb_disassembly): Use RETURN_MASK_ERROR, simplify the
	exception_print code path.
	(backtrace_command): Remove variable e.  Protect arg by make_cleanup in
	advance.  Simplify memset.  Remove TRY_CATCH.  Remove explicit xfree.
	(backtrace_full_command):  Remove variable e.  Remove TRY_CATCH.

2011-08-01  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup.
	* stack.c (struct print_stack_frame_args, print_stack_frame_stub):
	Remove, merge them into ...
	(print_stack_frame): ... here with a TRY_CATCH.  New variable e, remove
	variable args and its initialization.
	(struct print_args_args, print_args_stub): Remove, merge them into
	print_frame.
	(struct gdb_disassembly_stub_args, gdb_disassembly_stub): Remove, merge
	them into ...
	(do_gdb_disassembly): ... here.  Remove variable args and its
	initialization.
	(print_frame): Remove variable args and its initialization, new
	variable gdbarch and numargs (from print_args_stub), inline here
	print_args_stub with a TRY_CATCH.
	(struct backtrace_command_args, backtrace_command_stub): Remove, merge
	them into ...
	(backtrace_command, backtrace_full_command): ... here with a TRY_CATCH.
	New variable e, remove variable btargs and its initialization.

2011-08-01  Tristan Gingold  <gingold@adacore.com>

	* darwin-nat.c (darwin_decode_exception_message): Adjust assertion.

2011-07-31  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* breakpoint.c (insert_bp_location): Document return value.
	(insert_breakpoint_locations): Fix documentation.
	(remove_breakpoints): Add documentation.

2011-07-31  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* breakpoint.c (insert_bp_location): Remove disabled_breaks
	argument.  Update callers.

2011-07-30  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* stack.c (print_frame_info): Comment typo fix.

2011-07-29  Sterling Augustine  <saugustine@google.com>

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

2011-07-29  Tom Tromey  <tromey@redhat.com>

	* solib-target.c: Use DEF_VEC_I, not DEF_VEC_O.
	(library_list_start_segment): Update.
	(library_list_start_section): Update.

2011-07-28  Phil Muldoon  <pmuldoon@redhat.com>

	* varobj.c (value_get_print_value): Move hint check later into the
	function.  Comment function.  Free thevalue before reusing it.

2011-07-27  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Pedro Alves  <pedro@codesourcery.com>

	* eval.c (evaluate_subexp_standard): Remove not_lval from all calls of
	value_one.
	* valops.c (value_one): Remove parameter lv.  Do not pass it to itself.
	Assert the result kind.
	* value.h (value_one): Remove parameter lv.

2011-07-27  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix crash on lval_computed values.
	* valops.c (value_zero): Use not_lval for lval_computed.

2011-07-27  Tom Tromey  <tromey@redhat.com>

	* Makefile.in (HFILES_NO_SRCDIR): Add 'common' prefix for
	gdb_assert.h, gdb_locale.h, gdb_dirent.h.

2011-07-27  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* typeprint.c (_initialize_typeprint): Extend the help of "whatis" and
	"ptype" by their typedefs difference.

2011-07-27  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2expr.c (ctx_no_read_reg): New function.
	* dwarf2expr.h (ctx_no_read_reg): New declaration.
	* dwarf2read.c (read_2_signed_bytes, read_4_signed_bytes): Remove.
	(decode_locdesc_read_mem, decode_locdesc_ctx_funcs): New.
	(decode_locdesc): Replace by a caller of dwarf_expr_eval.

2011-07-27  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2-frame.c (no_get_frame_base, no_get_frame_cfa, no_get_frame_pc)
	(no_get_tls_address, no_dwarf_call, no_base_type): Move to the other
	file.
	(dwarf2_frame_ctx_funcs): Reference the renamed functions.
	* dwarf2expr.c (ctx_no_get_frame_base, ctx_no_get_frame_cfa)
	(ctx_no_get_frame_pc, ctx_no_get_tls_address, ctx_no_dwarf_call)
	(ctx_no_get_base_type): Move the functions here.
	* dwarf2expr.h (ctx_no_get_frame_base, ctx_no_get_frame_cfa)
	(ctx_no_get_frame_pc, ctx_no_get_tls_address, ctx_no_dwarf_call)
	(ctx_no_get_base_type): New declarations.

2011-07-27  Tom Tromey  <tromey@redhat.com>

	* xcoffread.c (dwarf2_xcoff_names): Add 'macro' and 'sentinel'
	entries.
	* symfile.h (struct dwarf2_debug_sections) <sentinel>: New field.
	* dwarf2read.c (dwarf2_elf_names): Add sentinel entry.

2011-07-26  Sterling Augustine  <saugustine@google.com>

	* cli/cli-dump.c (dump_binary_file): Change parameter type to
	ULONGEST.
	(dump_bfd_file): Likewise.

2011-07-26  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* remote.c (remote_region_ok_for_hw_watchpoint): New function.
	(remote_hw_watchpoint_length_limit): New variable.
	(_initialize_remote) add set,show cmds for this new variable.
	* gdb.texinfo: document these new commands.
	* NEWS: Mention these new commands.

2011-07-26  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (works_in_software_mode_watchpoint): Also return
	true for software watchpoints.

2011-07-26  Joel Brobecker  <brobecker@adacore.com>

	GDB 7.3 released.

2011-07-26  Tom Tromey  <tromey@redhat.com>

	* symfile.h (struct dwarf2_debug_sections) <macro>: New field.
	* dwarf2read.c (read_indirect_string_at_offset): New function.
	(read_indirect_string): Use it.
	(dwarf_decode_macro_bytes): New function, taken from
	dwarf_decode_macros.  Handle DW_MACRO_GNU_*.
	(dwarf_decode_macros): Use it.  handle DW_MACRO_GNU_*.
	(dwarf_parse_macro_header, skip_form_bytes, skip_unknown_opcode):
	New functions.
	(struct dwarf2_per_objfile) <macro>: New field.
	(dwarf2_elf_names): Add .debug_macro.
	(dwarf2_macros_too_long_complaint): Add 'section' argument.
	(dwarf2_locate_sections): Handle new section.
	(read_file_scope): Handle DW_AT_GNU_macros.
	(dwarf2_per_objfile_free): Unmap the .debug_macro section.

2011-07-26  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* NEWS: Mention dcache configuration.
	* dcache.c (dcache_set_list, dcache_show_list): New variables.
	(dcache_size, dcache_line_size): New variables.
	(LINE_SIZE_MASK, XFORM, MASK): Adjust.
	(struct dcache_block): Make it expandable.
	(struct dcache_struct): New field.
	(dcache_invalidate): Discard freelist upon dcache_line_size changes.
	(dcache_hit, dcache_alloc, dcache_peek_byte): Adjust.
	(dcache_poke_byte, dcache_print_line): Adjust.
	(set_dcache_size, set_dcache_line_size): New functions.
	(set_dcache_command, show_dcache_command): New functions.
	(_initialize_dcache): Add new commands.

2011-07-26  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* progspace.h (struct program_space): Add solib_add_generation.
	* infcmd.c (post_create_inferior): Only call solib_add if not
	already done.
	* solib.c (solib_add): Increment solib_add_generation.

2011-07-25  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix implicit pointer offsets.
	* dwarf2loc.c (indirect_pieced_value): Comment byte_offset.  Use also
	ptr.OFFSET.

2011-07-25  Tom Tromey  <tromey@redhat.com>

	* ada-lang.c (ada_exception_breakpoint_ops): Make return type
	const.
	(ada_exception_sal): Make 'ops' const.
	(ada_decode_exception_location): Likewise.
	(ada_decode_assert_location): Likewise.
	(catch_assert_command): Update.
	(catch_ada_exception_command): Update.
	(create_ada_exception_catchpoint): Make 'ops' const.
	* breakpoint.c (set_raw_breakpoint_without_location)
	(set_raw_breakpoint, momentary_breakpoint_from_master): Make 'ops'
	const.
	(create_internal_breakpoint): Update.
	(init_raw_breakpoint_without_location): Make 'ops' const.
	(init_raw_breakpoint, init_catchpoint)
	(create_fork_vfork_event_catchpoint)
	(create_syscall_event_catchpoint, init_breakpoint_sal)
	(create_breakpoint_sal, create_breakpoints_sal)
	(create_breakpoint, init_ada_exception_breakpoint): Likewise.
	* breakpoint.h (struct breakpoint) <ops>: Now const.
	(init_ada_exception_breakpoint, create_breakpoint): Make 'ops'
	const.

2011-07-25  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* linux-thread-db.c (thread_from_lwp): Initialize th.th_unique.

2011-07-25  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.h (print_recreate_thread): Declare.
	(struct breakpoint): Move step_count, pass_count,
	number_on_target, static_trace_marker_id,
	static_trace_marker_id_idx ...
	(struct tracepoint): ... to this new struct.
	(get_tracepoint, get_tracepoint_by_number_on_target)
	(get_tracepoint_by_number): Change return type to struct
	tracepoint pointer.
	* breakpoint.c (is_tracepoint_type): New, factored out from
	is_tracepoint.
	(is_tracepoint): Adjust.
	(print_one_breakpoint_location): Cast to struct tracepoint as
	necessary, and adjust.
	(print_recreate_catch_fork, print_recreate_catch_vfork)
	(print_recreate_catch_syscall, print_recreate_catch_exec): Call
	print_recreate_thread.
	(init_breakpoint_sal): New, factored out from
	create_breakpoint_sal.
	(create_breakpoint_sal): Reimplement.
	(create_breakpoint): Allocate a struct tracecepoint if the caller
	wanted a tracepoint.  Use init_breakpoint_sal and
	install_breakpoint.
	(print_recreate_ranged_breakpoint, print_recreate_watchpoint)
	(print_recreate_masked_watchpoint)
	(print_recreate_exception_catchpoint): Call print_recreate_thread.
	(tracepoint_print_one_detail): Adjust.
	(tracepoint_print_recreate): Adjust.  Call print_recreate_thread.
	Dump the pass count here.
	(update_static_tracepoint): Adjust.
	(addr_string_to_sals): Adjust.
	(create_tracepoint_from_upload): Adjust.  Change return type to
	struct tracepoint pointer.
	(trace_pass_set_count): Change parameter type to struct tracepoint
	pointer, and adjust.
	(trace_pass_command): Adjust.
	(get_tracepoint, get_tracepoint_by_number_on_target)
	(get_tracepoint_by_number): Change return type to struct
	tracepoint pointer, and adjust.
	(print_recreate_thread): New, factored out from save_breakpoints.
	(save_breakpoints): Don't print thread and task and passcount
	recreation here.
	* remote.c (remote_download_tracepoint): Adjust.
	* tracepoint.c (trace_actions_command, validate_actionline)
	(start_tracing, tfind_1, trace_find_tracepoint_command)
	(trace_dump_command): Adjust.
	(find_matching_tracepoint): Change return type to struct
	tracepoint pointer, and adjust.
	(merge_uploaded_tracepoints, tfile_get_traceframe_address)
	(tfile_trace_find, tfile_fetch_registers): Adjust.
	* tracepoint.h (create_tracepoint_from_upload): Change return type
	to struct tracepoint pointer.
	* ada-lang.c (print_recreate_exception): Call
	print_recreate_thread.
	* mi/mi-cmd-break.c (mi_cmd_break_passcount): Adjust.

2011-07-25  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.h (struct breakpoint): Move ops as first field.  Move
	exp_string, exp_string_reparse, exp, exp_valid_block, cond_exp,
	cond_exp_valid_block, val, val_valid, watchpoint_frame,
	watchpoint_thread, watchpoint_triggered ...
	(struct watchpoint): ... to this new struct.
	(is_watchpoint): Declare.
	(install_breakpoint): Add new `internal' parameter.
	* breakpoint.c (is_watchpoint): Delete declaration.
	(set_breakpoint_condition): Handle watchpoints.
	(is_watchpoint): Make public.
	(watchpoint_in_thread_scope): Change parameter type to struct
	watchpoint.
	(watchpoint_del_at_next_stop): Change parameter type to struct
	watchpoint.  Remove assertion.  Adjust.
	(update_watchpoint): Ditto.
	(insert_breakpoints, breakpoint_init_inferior)
	(watchpoints_triggered, watchpoint_check)
	(bpstat_check_watchpoint, bpstat_check_breakpoint_conditions)
	(bpstat_stop_status, print_one_breakpoint_location)
	(print_one_breakpoint_location, watchpoint_locations_match): Cast
	to struct watchpoint as necessary, and adjust.
	(install_breakpoint): Add `internal' argument.  If true, don't
	mention the new breakpoint.  Use set_breakpoint_number.
	(create_fork_vfork_event_catchpoint)
	(create_syscall_event_catchpoint): Adjust.
	(dtor_watchpoint): New.
	(re_set_watchpoint, insert_watchpoint, remove_watchpoint)
	(breakpoint_hit_watchpoint, resources_needed_watchpoint)
	(print_it_watchpoint, print_mention_watchpoint)
	(print_recreate_watchpoint, insert_masked_watchpoint)
	(remove_masked_watchpoint, resources_needed_masked_watchpoint)
	(print_one_detail_masked_watchpoint)
	(print_mention_masked_watchpoint)
	(print_recreate_masked_watchpoint): Cast to struct watchpoint as
	necessary, and adjust.
	(watch_command_1): Allocate and initialize a struct watchpoint
	instead of a struct breakpoint.  Use install_breakpoint.
	(catch_exec_command_1): Adjust.
	(base_breakpoint_dtor): Delete accesses to watchpoint specific
	fields.
	(delete_breakpoint, enable_breakpoint_disp)
	(invalidate_bp_value_on_memory_change): Cast to struct watchpoint
	as necessary, and adjust.
	(initialize_breakpoint_ops): Install dtor_watchpoint as
	watchpoints' dtor method.
	* ada-lang.c (create_ada_exception_catchpoint): Adjust.
	* python/py-breakpoint.c (bppy_get_expression): Use is_watchpoint.
	to struct watchpoint as necessary, and adjust.

2011-07-25  Pedro Alves  <pedro@codesourcery.com>

	* ada-lang.c (dtor_exception, re_set_exception): Indirect through
	the the base class ops table.
	(catch_exception_breakpoint_ops)
	(catch_exception_unhandled_breakpoint_ops)
	(catch_assert_breakpoint_ops): Don't statically initialize.
	(initialize_ada_catchpoint_ops): New.
	(_initialize_ada_language): Call it.
	* breakpoint.c (base_breakpoint_ops, bkpt_base_breakpoint_ops)
	(bkpt_breakpoint_ops): Forward declare.
	(catch_fork_breakpoint_ops, catch_vfork_breakpoint_ops)
	(catch_syscall_breakpoint_ops, catch_exec_breakpoint_ops)
	(ranged_breakpoint_ops, watchpoint_breakpoint_ops)
	(masked_watchpoint_breakpoint_ops)
	(gnu_v3_exception_catchpoint_ops): Don't statically initialize.
	(dtor_catch_syscall, dtor_catch_exec): Indirect through the the
	base class ops table.
	(null_re_set, null_check_status, null_works_in_software_mode)
	(null_resources_needed, null_print_one_detail): Delete.
	(bkpt_dtor): Rename to ...
	(base_breakpoint_dtor): ... this.  Make static.
	(bkpt_allocate_location): Rename to ...
	(base_breakpoint_allocate_location): ... this.  Make static.
	(base_breakpoint_re_set): New.
	(internal_error_pure_virtual_called): New.
	(base_breakpoint_insert_location, base_breakpoint_remove_location)
	(base_breakpoint_breakpoint_hit, base_breakpoint_check_status)
	(base_breakpoint_works_in_software_mode)
	(base_breakpoint_resources_needed, base_breakpoint_print_it)
	(base_breakpoint_print_one_detail, base_breakpoint_print_mention)
	(base_breakpoint_print_recreate): New functions.
	(base_breakpoint_ops): New global.
	(bkpt_re_set, bkpt_insert_location, bkpt_remove_location)
	(bkpt_breakpoint_hit): Make static.
	(bkpt_check_status): Delete.
	(bkpt_resources_needed): Make static.
	(bkpt_works_in_software_mode): Delete.
	(bkpt_print_it, bkpt_print_mention, bkpt_print_recreate): Make
	static.
	(bkpt_breakpoint_ops, internal_breakpoint_ops)
	(momentary_breakpoint_ops): Don't statically initialize.
	(internal_bkpt_print_recreate, momentary_bkpt_print_recreate):
	Delete.
	(tracepoint_insert_location, tracepoint_remove_location)
	(tracepoint_check_status, tracepoint_works_in_software_mode)
	(tracepoint_print_it): Delete.
	(tracepoint_breakpoint_ops): Don't statically initialize.
	(initialize_breakpoint_ops): New.
	(_initialize_breakpoint): Call it.
	* breakpoint.h (null_re_set, null_works_in_software_mode)
	(null_resources_needed, null_check_status, null_print_one_detail):
	(bkpt_dtor, bkpt_allocate_location, bkpt_re_set)
	(bkpt_insert_location, bkpt_remove_location, bkpt_breakpoint_hit)
	(bkpt_check_status, bkpt_resources_needed)
	(bkpt_works_in_software_mode, bkpt_print_it)
	(null_print_one_detail, bkpt_print_mention, bkpt_print_recreate):
	Delete declarations.
	(initialize_breakpoint_ops): Declare.

2011-07-25  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (bkpt_print_it, internal_bkpt_print_it)
	(momentary_bkpt_print_it): Simplify.

2011-07-25  Pedro Alves  <pedro@codesourcery.com>

	Split internal, momentary and user breakpoints breakpoint_ops
	tables.

	* breakpoint.c (internal_breakpoint_ops)
	(momentary_breakpoint_ops): Forward declare.
	(create_internal_breakpoint): Add new breakpoint_ops parameter.
	Pass it down, rather than hardcoding bkpt_breakpoint_ops.
	(create_overlay_event_breakpoint)
	(create_std_terminate_master_breakpoint)
	(create_exception_master_breakpoint): Create breakpoints with
	internal_breakpoint_ops vtable.
	(set_longjmp_breakpoint): Create momentary breakpoints with
	momentary_breakpoint_ops vtable, using
	momentary_breakpoint_from_master.
	(create_thread_event_breakpoint, create_jit_event_breakpoint)
	(create_solib_event_breakpoint): Create breakpoints with
	internal_breakpoint_ops vtable.
	(set_momentary_breakpoint): Create breakpoints with
	momentary_breakpoint_ops vtable.
	(momentary_breakpoint_from_master): New, factored out from
	clone_momentary_breakpoint.
	(clone_momentary_breakpoint): Adjust.
	(watch_command_1): Create scope breakpoints with
	momentary_breakpoint_ops vtable.
	(bkpt_re_set): Remove handling of internal and momentary
	breakpoints.
	(bkpt_print_mention, bkpt_print_recreate): New.
	(bkpt_breakpoint_ops): Adjust.
	(internal_bkpt_re_set, internal_bkpt_check_status)
	(internal_bkpt_print_it, internal_bkpt_print_mention)
	(internal_bkpt_print_recreate, internal_breakpoint_ops): New.
	(momentary_bkpt_re_set, momentary_bkpt_check_status)
	(momentary_bkpt_print_it, momentary_bkpt_print_mention)
	(momentary_bkpt_print_recreate): New.
	(momentary_breakpoint_ops): New.

2011-07-25  Pedro Alves  <pedro@codesourcery.com>

	Implement most breakpoint_ops methods for all breakpoint types,
	and move the default handlings to the proper callbacks.

	* breakpoint.c (update_watchpoint): Always call the breakpoint's
	works_in_software_mode method.
	(insert_bp_location): Go through breakpoint_ops->insert_location
	for software and hardware watchpoints.
	(create_internal_breakpoint): Pass bkpt_breakpoint_ops as
	breakpoint_ops.
	(remove_breakpoint_1): Go through breakpoint_ops->remove_location
	for software and hardware watchpoints.
	(print_it_typical): Delete.
	(print_bp_stop_message): Always call the breakpoint_ops->print_it
	method.
	(watchpoint_check): Adjust comment.
	(bpstat_check_location): Simply always call the breakpoint's
	breakpoint_hit method.
	(bpstat_stop_status): Always call the breakpoint's check_status
	method.  Remove special cases for watchpoints and internal event
	breakpoints from here (moved to the check_status implementations).
	(print_one_breakpoint_location): Assume b->ops is never NULL.
	Remove static tracepoint marker id printing from here (moved to
	the print_one_detail callback implementation of tracepoints).
	(init_bp_location): Assert OPS is never NULL.
	(allocate_bp_location): Always call the breakpoint's
	allocate_location method, and remove the default code from here.
	(free_bp_location): Always call the location's dtor method, and
	remove the default code from here.
	(init_raw_breakpoint_without_location): Assert OPS is never NULL.
	(set_raw_breakpoint_without_location): Add new breakpoint_ops
	parameter.  Pass it down.
	(set_raw_breakpoint): Ditto.
	(print_it_catch_fork): Adjust to take a bpstat as argument.
	(catch_fork_breakpoint_ops): Install methods.
	(print_it_catch_vfork): Adjust to take a bpstat as argument.
	(catch_vfork_breakpoint_ops): Install methods.
	(dtor_catch_syscall): Call the base dtor.
	(print_it_catch_syscall): Adjust to take a bpstat as argument.
	(catch_syscall_breakpoint_ops): Install methods.
	(dtor_catch_exec): Call the base dtor.
	(print_it_catch_exec): Adjust to take a bpstat as argument.
	(catch_exec_breakpoint_ops): Install methods.
	(hw_breakpoint_used_count, hw_watchpoint_used_count): Always call
	the breakpoint's resources_needed method, and remove the default
	code from here.
	(set_momentary_breakpoint): Pass bkpt_breakpoint_ops as
	breakpoint_ops.
	(clone_momentary_breakpoint): Clone the original's ops.
	(mention): Always call the breakpoint's print_mention method, and
	remove the default code from here.
	(create_breakpoint_sal): Adjust to pass the ops to
	set_raw_breakpoint rather than setting it manually.
	(create_breakpoint): Assert ops is never NULL.  Adjust to pass the
	ops to set_raw_breakpoint_without_location rather than setting it
	manually.
	(break_command_1): Pass bkpt_breakpoint_ops as breakpoint_ops.
	(print_it_ranged_breakpoint): Adjust to take a bpstat as argument.
	(ranged_breakpoint_ops): Install methods.
	(break_range_command): Adjust to pass the ops to
	set_raw_breakpoint rather than setting it manually.
	(re_set_watchpoint, breakpoint_hit_watchpoint)
	(check_status_watchpoint, resources_needed_watchpoint)
	(works_in_software_mode_watchpoint, print_it_watchpoint)
	(print_mention_watchpoint, print_recreate_watchpoint): New
	functions.
	(watchpoint_breakpoint_ops): Install new methods.
	(print_it_masked_watchpoint): New function.
	(masked_watchpoint_breakpoint_ops): Install new methods.
	(watch_command_1): Adjust to pass the right breakpoint_ops to
	set_raw_breakpoint_without_location rather than setting it
	manually later.  Record the current pspace.
	(print_it_exception_catchpoint): Adjust to take a bpstat as
	argument.
	(gnu_v3_exception_catchpoint_ops): Install new methods.
	(say_where): New function.
	(null_re_set, null_check_status, null_works_in_software_mode)
	(null_resources_needed, null_print_one_detail, bp_location_dtor):
	New functions.
	(bp_location_ops): New global.
	(bkpt_dtor, bkpt_allocate_location, bkpt_re_set)
	(bkpt_insert_location, bkpt_remove_location, bkpt_breakpoint_hit)
	(bkpt_check_status, bkpt_resources_needed)
	(bkpt_works_in_software_mode, bkpt_print_it, bkpt_print_mention)
	(bkpt_print_recreate): New functions.
	(bkpt_breakpoint_ops): New global.
	(tracepoint_re_set, tracepoint_insert_location)
	(tracepoint_remove_location, tracepoint_breakpoint_hit)
	(tracepoint_check_status, tracepoint_works_in_software_mode)
	(tracepoint_print_it, tracepoint_print_one_detail)
	(tracepoint_print_mention, tracepoint_print_recreate): New
	functions.
	(tracepoint_breakpoint_ops): New global.
	(delete_breakpoint): Always call the breakpoint's dtor method, and
	remove the default handling from here.
	(breakpoint_re_set_default): Make static.
	(breakpoint_re_set_one): Always call the breakpoints re_set
	method, and remove the default handling from here.
	(trace_command, ftrace_command, strace_command)
	(create_tracepoint_from_upload): Pass appropriate breakpoints_ops
	to create_breakpoint.
	(save_breakpoints): Always call the breakpoint's print_recreate
	method, and remove the default handling from here.

	* ada-lang.c (dtor_exception): Call the base dtor.
	(re_set_exception): Call the base method.
	(print_it_exception, print_it_catch_exception): Adjust to take a
	bpstat as argument.
	(catch_exception_breakpoint_ops): Install methods.
	(print_it_catch_exception_unhandled): Adjust to take a bpstat as
	argument.
	(catch_exception_unhandled_breakpoint_ops): Install methods.
	(print_it_catch_assert): Adjust to take a bpstat as argument.
	(catch_assert_breakpoint_ops): Install methods.

	* breakpoint.h (struct breakpoint_ops): Adjust the print_it method
	to take a bpstat as argument.
	(enum print_stop_action): Add describing comments to each enum
	value.
	(breakpoint_re_set_default): Delete declaration.
	(null_re_set, null_works_in_software_mode, null_resources_needed)
	(null_check_status, null_print_one_detail): Declare.
	(bkpt_breakpoint_ops): Declare.
	(bkpt_dtor, bkpt_allocate_location, bkpt_re_set)
	(bkpt_insert_location, bkpt_remove_location, bkpt_breakpoint_hit)
	(bkpt_check_status, bkpt_resources_needed)
	(bkpt_works_in_software_mode, bkpt_print_it)
	(null_print_one_detail, bkpt_print_mention, bkpt_print_recreate):
	Declare.

	* mi/mi-cmd-break.c (mi_cmd_break_insert): Adjust to pass
	bkpt_breakpoint_ops.
	* python/py-breakpoint.c (bppy_init): Ditto.

2011-07-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

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

2011-07-23  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* elfread.c (elf_rel_plt_read): Fix off-by-one bug.

2011-07-22  Pedro Alves  <pedro@codesourcery.com>

	* i386-nat.c (I386_DR_VACANT, I386_DR_LOCAL_ENABLE)
	(I386_DR_GLOBAL_ENABLE, I386_DR_DISABLE, I386_DR_SET_RW_LEN)
	(I386_DR_GET_RW_LEN, I386_DR_WATCH_HIT): Add state parameter and
	adjust.
	(dr_mirror, dr_status_mirror, dr_control_mirror): Delete.
	(struct i386_debug_reg_state): New.
	(i386_init_dregs): New.
	(dr_mirror): New.
	(i386_cleanup_dregs): Use i386_init_dregs.
	(i386_show_dr): Add state parameter and adjust.
	(i386_insert_aligned_watchpoint): Ditto.  Don't pass the info to
	the inferior here.
	(i386_remove_aligned_watchpoint): Likewise.
	(i386_handle_nonaligned_watchpoint): Add state parameter and adjust.
	(i386_update_inferior_debug_regs): New.
	(i386_insert_watchpoint): Work on a local mirror of the debug
	registers, and only update the inferior on success.
	(i386_remove_watchpoint): Ditto.
	(i386_region_ok_for_watchpoint): Adjust.
	(i386_stopped_data_address): Adjust.
	(i386_insert_hw_breakpoint): Adjust.
	(i386_remove_hw_breakpoint): Adjust.

2011-07-22  Tom Tromey  <tromey@redhat.com>

	* amd64-tdep.c (amd64_pseudo_register_read_value): Rename
	from amd64_pseudo_register_read.  Change arguments.  Call
	mark_value_bytes_unavailable when needed.
	(amd64_init_abi): Use set_gdbarch_pseudo_register_read_value, not
	set_gdbarch_pseudo_register_read.
	* sentinel-frame.c (sentinel_frame_prev_register): Use
	regcache_cooked_read_value.
	* regcache.h (regcache_cooked_read_value): Declare.
	* regcache.c (regcache_cooked_read_value): New function.
	(regcache_cooked_read): Call
	gdbarch_pseudo_register_read_value if available.
	* i386-tdep.h (i386_pseudo_register_read_value): Declare.
	(i386_pseudo_register_read): Remove.
	* i386-tdep.c (i386_pseudo_register_read_into_value): Rename from
	i386_pseudo_register_read.  Change arguments.  Call
	mark_value_bytes_unavailable when needed.
	(i386_pseudo_register_read_value): New function.
	(i386_gdbarch_init): Call set_gdbarch_pseudo_register_read_value,
	not set_gdbarch_pseudo_register_read.
	* gdbarch.sh (pseudo_register_read_value): New method.
	* gdbarch.c, gdbarch.h: Rebuild.
	* findvar.c (value_from_register): Call get_frame_register_value.

2011-07-22  Phil Muldoon  <pmuldoon@redhat.com>

	* event-top.c (cli_command_loop): Use get_prompt, get_suffix,
	get_prefix.
	(display_gdb_prompt): Likewise.
	(change_annotation_level): Likewise.
	(push_prompt): Likewise.
	(pop_prompt): Likewise.
	(handle_stop_sig): Use get_prompt with a level.
	* top.c (command_loop): Use get_prompt with a level.
	(set_async_annotation_level): Use set_prompt with a level.
	(get_prefix): New function.
	(set_prefix): Ditto.
	(set_suffix): Ditto.
	(get_suffix): Ditto.
	(get_prompt): Accept a level argument.
	(set_prompt): Accept a level argument.  Free old prompts.  Set
	new_async_prompt if level is 0.
	(init_main): Use set_prompt with a level.  Do not set
	new_async_prompt.
	* event-top.h (PROMPT, SUFFIX, PREFIX): Move to top.c
	* top.h: Declare set_suffix, get_suffix, set_prefix, get_prefix.
	Modify set_prompt, get_prompt to account for levels.
	* tui/tui-interp.c (tui_command_loop): Use get_prompt with a
	level.
	* python/python.c (before_prompt_hook): Use set_prompt.
	
2011-07-22  Kwok Cheung Yeung  <kcy@codesourcery.com>

	* defs.h: Add guard against inclusion in gdbserver.
	(struct ptid, ptid_t): Move to common/ptid.h.
	(xfree, xzalloc, xasprintf, xvasprintf, xstrprintf, xstrvprintf,
	xsnprintf, internal_error): Move to common/common-utils.h.
	(nomem): Delete.
	* gdb_assert.h: Move into common/ sub-directory.
	* gdb_locale.h: Ditto.
	* gdb_dirent.h: Ditto.
	* inferior.h (minus_one_ptid, null_ptid, ptid_build, pid_to_ptid,
	ptid_get_pid, ptid_get_lwp, ptid_get_tid, ptid_equal, ptid_is_pid):
	Move into common/ptid.h.
	* xml-support.c (xml_escape_text): Move into common/xml-utils.c.
	(gdb_xml_create_parser_and_cleanup_1, xml_fetch_context_from_file):
	Change nomem to malloc_failure.
	* xml-support.h (xml_escape_text): Move into common/xml-utils.h.
	* utils.c (nomem): Rename to malloc_failure.
	(xmalloc, xzalloc, xrealloc, xcalloc, xfree, xstrprintf, xasprintf,
	xvasprintf, xstrvprintf, xsnprintf): Move to common/common-utils.c.
	(gdb_buildargv): Change nomem to malloc_failure.
	* infrun.c (null_ptid, minus_one_ptid, ptid_build, pid_to_ptid,
	ptid_get_pid, ptid_get_lwp, ptid_get_tid, ptid_equal,
	ptid_is_pid): Move into common/ptid.c.
	(initialize_infrun): Delete initialization of null_ptid and
	minus_one_ptid.
	* linux-nat.c (linux_nat_xfer_osdata): Defer to
	linux_common_xfer_osdata.
	* Makefile.in (SFILES): Add common/common-utils.c, common/xml-utils.c,
	common/ptid.c and common/buffer.c.
	(HFILES_NO_SRCDIR): Add common/common-utils.h, common/xml-utils.h,
	common/ptid.h, common/buffer.h and common/linux-osdata.h.
	(COMMON_OBS): Add xml-utils.o, common-utils.o, buffer.o and ptid.o.
	(common-utils.o, xml-utils.o, ptid.o, buffer.o, linux-osdata.o): New
	rules.
	* common/gdb_assert.h: New.
	* common/gdb_dirent.h: New.
	* common/gdb_locale.h: New.
	* common/buffer.c: New.
	* common/buffer.h: New.
	* common/ptid.c: New.
	* common/ptid.h: New.
	* common/xml-utils.c: New.
	* common/xml-utils.h: New.
	* common/common-utils.c: New.
	* common/common-utils.h: New.
	* common/linux-osdata.c: New.
	* common/linux-osdata.h: New.
	* config/alpha/alpha-linux.mh (NATDEPFILES): Add linux-osdata.o.
	* config/arm/linux.mh (NATDEPFILES): Ditto.
	* config/i386/linux.mh (NATDEPFILES): Ditto.
	* config/i386/linux64.mh (NATDEPFILES): Ditto.
	* config/ia64/linux.mh (NATDEPFILES): Ditto.
	* config/m32r/linux.mh (NATDEPFILES): Ditto.
	* config/m68k/linux.mh (NATDEPFILES): Ditto.
	* config/mips/linux.mh (NATDEPFILES): Ditto.
	* config/pa/linux.mh (NATDEPFILES): Ditto.
	* config/powerpc/linux.mh (NATDEPFILES): Ditto.
	* config/powerpc/ppc64-linux.mh (NATDEPFILES): Ditto.
	* config/s390/s390.mh (NATDEPFILES): Ditto.
	* config/sparc/linux.mh (NATDEPFILES): Ditto.
	* config/sparc/linux64.mh (NATDEPFILES): Ditto.
	* config/xtensa/linux.mh (NATDEPFILES): Ditto.

2011-07-21  Matt Rice  <ratmice@gmail.com>

	* NEWS: Add info macros and info definitions commands.

2011-07-21  Phil Muldoon  <pmuldoon@redhat.com>

	* NEWS: Document Python prompt substitution hook.

2011-07-18  Matt Rice  <ratmice@gmail.com>

	PR macros/12999
	* macrotab.h (macro_callback_fn): Add new arguments to callback.
	* macrotab.c (foreach_macro): Ditto.
	(foreach_macro_in_scope): Ditto.
	* macrocmd.c (print_macro_callback): New function.
	(info_macro_command): Move some code to print_macro_definition.
	(print_macro_definition): New function.
	(print_one_macro): Add new arguments to callback.
	(info_definitions_command): New function.
	(info_macros_command): Ditto.
	(_initialize_macrocmd): Add info macros and info definitions commands.
	* symtab.c (add_macro_name): Add new arguments to callback.

2011-07-21  Phil Muldoon  <pmuldoon@redhat.com>
            Tom Tromey  <tromey@redhat.com>

	* top.c (set_prompt): Rewrite to free previous prompt, free
	asynch_new_prompt and set both on new prompts.
	* event-top.c (display_gdb_prompt): Add prompt substitution
	logic.
	* python/python.c (before_prompt_hook): New function.

2011-07-20  Matt Rice  <ratmice@gmail.com>

	* bfin-tdep.c (bfin_extract_return_value): Fix swapped
	arguments to store_unsigned_integer.

2011-07-20  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (process_enumeration_scope): Do not call new_symbol
	in some declaration-only cases.

2011-07-18  Tom Tromey  <tromey@redhat.com>

	PR symtab/12984:
	* dwarf2read.c (dwarf2_section_info_def): New typedef.
	(struct dwarf2_per_objfile) <types>: Change to a VEC.
	(struct dwarf2_per_cu_data) <from_debug_types>: Remove.
	<debug_type_section>: New field.
	(dwarf2_locate_sections): Push .debug_types sections onto VEC.
	(load_cu): Use appropriate section.
	(create_signatured_type_table_from_index): Add 'section'
	argument.
	(dwarf2_read_index): Only allow a single .debug_types section.
	(dw2_get_file_names): Use appropriate section.
	(read_type_comp_unit_head): Add 'section' argument.
	(create_debug_types_hash_table): Loop over all .debug_types
	sections.
	(init_cu_die_reader): Use appropriate section.
	(process_psymtab_comp_unit, load_partial_comp_unit)
	(load_full_comp_unit, read_die_and_children, find_partial_die)
	(lookup_die_type, determine_prefix, follow_die_offset): Update.
	(lookup_signatured_type_at_offset): Add 'section' argument.
	(read_signatured_type_at_offset): Add 'sect' argument.
	(read_signatured_type): Use appropriate section.
	(set_die_type, get_die_type_at_offset): Update.
	(dwarf2_per_objfile_free): Free all .debug_types sections, and
	VEC.
	(write_psymtabs_to_index): Don't allow index with more than one
	.debug_types section.

2011-07-19  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix crash if referenced CU is aged out.
	* dwarf2loc.c (per_cu_dwarf_call): New variable back_to, use to for
	xfree of block.data.
	(indirect_pieced_value): New variable back_to, use to for xfree of
	baton.data.
	(dwarf2_compile_expr_to_ax): New variable back_to, use to for xfree of
	block.data.
	* dwarf2read.c (dwarf2_find_base_address): New prototype.
	(load_cu): New function from ...
	(dw2_do_instantiate_symtab): ... the code here ...
	(process_full_comp_unit): ... and here.
	(dwarf2_fetch_die_location_block): Call load_cu first.  Call xmemdup on
	retval.data.

2011-07-19  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2loc.c (indirect_pieced_value): Use check_typedef for VALUE's
	type.

2011-07-19  Gary Benson  <gbenson@redhat.com>

	* infrun.c (struct execution_control_state): New member
	stop_func_filled_in.
	(clear_stop_func, fill_in_stop_func): New functions.
	(handle_inferior_event): Call clear_stop_func rather than
	manipulating the execution control state directly.
	Call fill_in_stop_func lazily as required rather than
	directly calling find_pc_partial_function in all cases.

2011-07-18  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (read_subrange_type): Use attr_form_is_block when
	checking for variable-sized array.

2011-07-18  Jean-Charles Delay  <delay@adacore.com>

	* varobj.h (varobj_languages): Add vlang_ada definition to the list
	of supported languages.
	* varobj.c: Add top definitions and basic implementation of the
	following callbacks: ada_number_of_children, ada_name_of_variable,
	ada_name_of_child, ada_path_expr_of_child, ada_value_of_root,
	ada_value_of_child, ada_type_of_child, ada_value_of_variable.
	(languages): Register Ada-specific callbacks.
	(variable_language): Add the Ada case in the language setter switch.

2011-07-17  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* remote-mips.c (pmon_download): Fix ignored return value GCC warning.

2011-07-15  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup.
	* dwarf2-frame.c (dwarf2_frame_ctx_funcs): New.
	(execute_stack_op): Use dwarf2_frame_ctx_funcs
	* dwarf2expr.c (dwarf_get_base_type): Access get_base_type via funcs.
	(execute_stack_op): Access read_reg, get_frame_base, read_mem,
	get_frame_cfa, get_tls_address and dwarf_call via funcs.
	* dwarf2expr.h (struct dwarf_expr_context): New forward declaration.
	(struct dwarf_expr_context_funcs): New, move here methods from ...
	(struct dwarf_expr_context): ... here.  New fields funcs.
	* dwarf2loc.c (dwarf_expr_dwarf_call): Access get_frame_pc via funcs.
	(dwarf_expr_ctx_funcs): New.
	(dwarf2_evaluate_loc_desc_full): Use dwarf_expr_ctx_funcs.
	(needs_frame_dwarf_call): Access get_frame_pc via funcs.
	(needs_frame_ctx_funcs): New.
	(dwarf2_loc_desc_needs_frame): Use needs_frame_ctx_funcs.

2011-07-15  Fawzi Mohamed  <fawzi.mohamed@nokia.com>

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

2011-07-15  Fawzi Mohamed  <fawzi.mohamed@nokia.com>

	* dwarf2-frame.c (decode_frame_entry, decode_frame_entry_1): Ensure
	that CIE pointer of an FDE really points to a CIE .

2011-07-15  Hui Zhu  <teawater@gmail.com>

	* remote.c (remote_get_trace_status): Add comments.

2011-07-14  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup - constify struct lval_funcs.
	* dwarf2loc.c (pieced_value_funcs): Make it const.
	* infrun.c (siginfo_value_funcs): Likewise.
	* opencl-lang.c (opencl_value_funcs): Likewise.
	* valops.c (value_assign, value_ind): Make the funcs variable const.
	* value.c (struct value): Make location.computed.funcs target const.
	Rearrange the comments.
	(allocate_computed_value): Make the funcs parameter target const.
	(value_computed_funcs): Return the funcs target const.
	(value_free, value_copy, set_value_component_location): Make the funcs
	variable const.
	* value.h (allocate_computed_value): Make the funcs parameter target
	const.
	(value_computed_funcs): Return the funcs target const.
	* windows-tdep.c (tlb_value_funcs): Make it const.

2011-07-14  Hui Zhu  <teawater@gmail.com>

	* remote.c (remote_get_trace_status): Initialize p.

2011-07-13  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Work around kgdb.
	* remote.c (remote_get_trace_status): New variable ex.  Put
	remote_get_noisy_reply into TRY_CATCH.  Call exception_fprintf for it.

2011-07-13  Tom Tromey  <tromey@redhat.com>

	* dwarf2expr.c (execute_stack_op) <DW_OP_GNU_regval_type>: Use
	value_from_contents for final conversion.

2011-07-13  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup.
	* dwarf2loc.c (dwarf_expr_frame_base_1, dwarf2_evaluate_loc_desc_full):
	Indent prototypes so they do not get into tags.

2011-07-12  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup making also optimized out values lazy.
	* dwarf2loc.c (dwarf2_evaluate_loc_desc_full): Use
	allocate_optimized_out_value.  Twice.
	(loclist_read_variable)  Use allocate_optimized_out_value.  Once.
	* findvar.c (read_var_value): Likewise.
	* value.c (allocate_optimized_out_value): New function.
	* value.h (allocate_optimized_out_value): New declaration.

2011-07-12  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix occasional crash of CTRL-C during DWARF read in.
	* dwarf2read.c (dwarf2_mark_helper): Return on NULL CU.

2011-07-11  Tom Tromey  <tromey@redhat.com>

	* regcache.c (struct regcache_descr): Fix typo.
	* i387-tdep.c (i387_supply_xsave): Fix typo.

2011-07-11  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (handle_DW_AT_stmt_list): New function.
	(read_file_scope, read_type_unit_scope): Use it.

2011-07-11  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2expr.c (read_sleb128): Fix signed extension overflowing host
	`int'.

2011-07-11  Phil Muldoon  <pmuldoon@redhat.com>

        PR python/12438
	* python/python.c: Set gdbpy_should_print_stack default to off.
	(set_python): Deprecate maint set python print-stack to
	class_deprecate.
	(_initialize_python): Deprecate maint set/show python print-stack.
	Add new prefix command, python.  Add new setting, print-backtrace.
	* NEWS: Document set python print-stack.  Document default change.

2011-07-11  Phil Muldoon  <pmuldoon@redhat.com>

	* python/py-inferior.c (infpy_dealloc): New function.
        (inferior_to_inferior_object): Return a new object, or a
	new reference to the existing object.
        (find_thread_object): Cleanup references to inferior.
        (delete_thread_object): Ditto.
        * python/py-infthread.c (create_thread_object): Do not increment
	inferior reference count.

2011-07-08  Tom Tromey  <tromey@redhat.com>

	* dwarf2loc.c (locexpr_regname): New function.
	(locexpr_describe_location_piece): Use it.
	(disassemble_dwarf_expression): Add per_cu argument.  Use
	locexpr_regname.
	<DW_OP_GNU_deref_type, DW_OP_GNU_const_type,
	DW_OP_GNU_regval_type, DW_OP_GNU_convert, DW_OP_GNU_reinterpret>:
	New cases.
	(locexpr_describe_location_1): Add per_cu argument.
	(locexpr_describe_location): Update.
	(loclist_describe_location): Update.

2011-07-08  Tom Tromey  <tromey@redhat.com>

	* dwarf2expr.c (execute_stack_op): Add QUIT.

2011-07-07  Hui Zhu  <teawater@gmail.com>

	Revert:
	2011-07-06  Hui Zhu  <teawater@gmail.com>
	* remote.c (remote_start_remote): Add TRY_CATCH for
	remote_get_trace_status.
	* tracepoint.c (disconnect_tracing): Ditto.

2011-07-07  Andrew Burgess  <aburgess@broadcom.com>

	* cli/cli-setshow.c (do_setshow_command): Display var_zinteger
	variables as signed, not unsigned.

2011-07-06  Joel Brobecker  <brobecker@adacore.com>

	* jit.c (jit_inferior_init): Reformat forward declaration.

2011-07-06  Matt Rice  <ratmice@gmail.com>

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

2011-07-06  Hui Zhu  <teawater@gmail.com>

	* remote.c (remote_start_remote): Add TRY_CATCH for
	remote_get_trace_status.
	* tracepoint.c (disconnect_tracing): Ditto.

2011-07-05  Tom Tromey  <tromey@redhat.com>

	* symtab.c (operator_chars): Now static.
	* linespec.c (operator_chars): Don't declare.

2011-07-05  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* ui-out.h (ui_out_field_core_addr): Fix typo in comment.

2011-07-05  Tom Tromey  <tromey@redhat.com>

	* gnu-v3-abi.c (gnuv3_rtti_type): Check TYPE_CPLUS_REALLY_JAVA.
	* gdbtypes.h (struct cplus_struct_type) <is_java>: New field.
	(TYPE_CPLUS_REALLY_JAVA): New macro.
	* dwarf2read.c (process_structure_scope): Set
	TYPE_CPLUS_REALLY_JAVA.

2011-07-05  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* ada-lang.c: Fix typos.
	* amd64-tdep.c: Likewise.
	* breakpoint.c: Likewise.
	* cli/cli-decode.c: Likewise.
	* findcmd.c: Likewise.
	* inline-frame.c: Likewise.
	* mi/mi-main.c: Likewise.
	* minsyms.c: Likewise.
	* monitor.c: Likewise.
	* monitor.h: Likewise.
	* prologue-value.c: Likewise.
	* reverse.c: Likewise.
	* s390-tdep.c: Likewise.

2011-07-06  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* jit.c (jit_inferior_init): Forward declare.
	(jit_breakpoint_re_set_internal): Call jit_inferior_init.

2011-07-04  Joel Brobecker  <brobecker@adacore.com>

        * osabi.c (generic_elf_osabi_sniffer): Minor comment reformatting.

2011-07-04  Tristan Gingold  <gingold@adacore.com>

	* ada-tasks.c (KNOWN_TASKS_LIST): New macro.
	(tcb_fieldno): Add activation_link field.
	(get_known_tasks_addr): Moved and rewritten.
	(get_tcb_types_info): Set activation_link field.
	(read_known_tasks_array): Add parameter.  Rewritten.
	(read_known_tasks_list): New function.
	(read_known_tasks): New function.
	(ada_build_task_list): Call read_known_tasks instead of
	read_known_tasks_array.
	* ravenscar-thread.c: Add first_task_name constant.
	(has_ravenscar_runtime): Check for task list too.

2011-07-04  Tristan Gingold  <gingold@adacore.com>

	* ada-tasks.c: Renames fieldno to actb_fieldno.
	(ada_get_task_number): Indentation.
	(get_tcb_types_info): Remove all parameters.  Write directly
	the globals.
	(ptid_from_atcb_common): Adjust.
	(read_atcb): Adjust.

2011-07-04  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* symtab.c (in_prologue): Remove mention of ppc's refine_prologue_limit.

2011-07-04  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* ui-out.c (ui_out_field_core_addr): Mention that the function
	description is in the header file.
	* ui-out.h (ui_out_field_core_addr): Document function.

2011-07-04  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* ui-out.c (ui_out_get_field_separator): Remove unused function.
	* ui-out.h (ui_out_get_field_separator): Remove prototype.

2011-07-04  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* symtab.c (expand_line_sal): Remove empty line.

2011-07-04  Thomas Schwinge  <thomas@schwinge.name>

	* osabi.c (generic_elf_osabi_sniffer) <ELFOSABI_GNU>: Handle in the
	same way as ELFOSABI_NONE.
	<ELFOSABI_LINUX, ELFOSABI_HURD>: Remove cases.

2011-07-04  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* breakpoint.c: Fix typos in comments.
	* linespec.c: Likewise.
	* symtab.c: Likewise.

2011-07-04  Joel Brobecker  <brobecker@adacore.com>

	* dwarf2-frame.c (dwarf2_build_frame_info): Do not load .eh_frame
	section in separate object files.

2011-07-04  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix false GCC warning.
	* linespec.c (decode_line_1): Initialize values.

2011-07-01  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* linespec.c (find_method): Accept the function type automatically only
	if it was specified with parameter types.

2011-07-01  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Stop on first linespec terminator instead of eating what we can.
	* linespec.c (is_linespec_boundary): New function.
	(name_end): Remove function.
	(keep_name_info): New parameter on_boundary, replace the body.
	(decode_line_1): Provide the parameter to keep_name_info.
	(decode_compound): Likewise.  Drop the trailing java return type
	handling.  Twice.

2011-07-01  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fall back linespec to minimal symbols.
	* linespec.c (decode_line_1): New variable ex, saved_argptr.  Protect
	decode_compound by TRY_CATCH, fall back on minsyms if it failed.
	(find_method, symbol_found): Change error to cplusplus_error.

2011-07-01  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* symtab.c (symbol_find_demangled_name): Remove DMGL_VERBOSE.

2011-07-01  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (check_physname): New variable.
	(dwarf2_physname): Prefer DW_AT_linkage_name over dwarf2_compute_name.
	(show_check_physname): New function.
	(_initialize_dwarf2_read): Add `check-physname' for check_physname.

2011-07-01  Joel Brobecker  <brobecker@adacore.com>

	* machoread.c (macho_symfile_read): Delete OBE comment.

2011-07-01  Joel Brobecker  <brobecker@adacore.com>

	* machoread.c (struct macho_oso_data): Delete.
	(current_oso): Delete.
	(macho_relocate_common_syms): New function, mostly extracted
	out of
	(macho_add_oso_symfile): Call macho_relocate_common_syms.
	Remove code that sets and unset current_oso.
	(macho_symfile_relocate): Delete handling of common symbols,
	now moved to macho_relocate_common_syms.

2011-07-01  Joel Brobecker  <brobecker@adacore.com>

	* darwin-nat.c (darwin_ptrace): Add documentation.
	Set errno to zero before calling ptrace.  If ptrace returns
	-1 and errno is zero, then change then return zero.
	(darwin_kill_inferior): Issue a warning instead of triggering
	a failed assertion when the PT_KILL ptrace operations returned
	nonzero.

2011-07-01  Joel Brobecker  <brobecker@adacore.com>

	* darwin-nat.c (darwin_detach): Call darwin_resume_inferior
	only when inf->private->no_ptrace.

2011-07-01  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (print_it_exception): Print temporary catchpoints
	as "Temporary catchpoint".
	(print_mention_exception): Likewise.

2011-07-01  Tom Tromey  <tromey@redhat.com>

	* jv-lang.c (java_language_defn): Use java_printchar,
	java_printstr.
	(java_get_encoding): New function.
	(java_emit_char): Use generic_emit_char.
	(java_printchar): New function.
	(java_printstr): Likewise.

2011-07-01  Joel Brobecker  <brobecker@adacore.com>

	* ada-typeprint.c (print_record_type): If unable to decode
	the name of the parent type, use the encoded name.

2011-07-01  Jean-Charles Delay  <delay@adacore.com>

	* ada-typeprint.c (ada_print_type): Fix both PAD type and
	pointer to constrained packed array type output.
	* ada-valprint.c (ada_val_print_1): Fix pointer to constrained
	packed array output.

2011-07-01  Jean-Charles Delay  <delay@adacore.com>

	* ada-typeprint.c (print_array_type): removed if condition on show
	being negative for bounds printing.

2011-07-01  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_identical_enum_types_p): New function.
	(symbols_are_identical_enums): New function.
	(remove_extra_symbols): Do nothing if NSYMS < 2.
	Use symbols_are_identical_enums.

2011-07-01  Joel Brobecker  <brobecker@adacore.com>

	* ada-valprint.c (ada_value_print): Handle typedefs.

2011-07-01  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_evaluate_subexp): Add missing word in comment.

2011-07-01  Eric Botcazou  <ebotcazou@adacore.com>

	* ada-lang.c (thin_descriptor_type): Deal with typedefs.
	(decode_constrained_packed_array): Likewise.
	(ada_evaluate_subexp) <TERNOP_SLICE>: Likewise.

2011-07-01  Joel Brobecker  <brobecker@adacore.com>

	* ada-exp.y (convert_char_literal): Handle typedef types.

2011-07-01  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_remove_trailing_digits): Expand documentation.

2011-06-30  Tom Tromey  <tromey@redhat.com>

	* varobj.c (varobj_create): Call do_cleanups on early exit path.
	* valops.c (find_overload_match): Call do_cleanups on early exit
	path.
	* solib.c (solib_find): Call do_cleanups on early exit path.

2011-06-30  Tom Tromey  <tromey@redhat.com>

	* symfile-mem.c (symbol_file_add_from_memory): Call do_cleanups.
	* solib-svr4.c (open_symbol_file_object): Call do_cleanups on all
	return paths.  Defer final do_cleanups until last return.
	* arm-tdep.c (arm_exidx_new_objfile): Make null cleanup after
	early return.

2011-06-30  Tom Tromey  <tromey@redhat.com>

	* Makefile.in (SUBDIR_MI_CFLAGS): Don't add -DMI_OUT=1.

2011-06-30  Andrew Burgess  <aburgess@broadcom.com>

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

2011-06-29  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Disable epilogue unwinders on recent GCCs.
	* amd64-tdep.c (amd64_in_function_epilogue_p): New variable symtab,
	initialize it, return 0 on EPILOGUE_UNWIND_VALID.
	* dwarf2read.c (process_full_comp_unit): Initialize
	EPILOGUE_UNWIND_VALID.
	* i386-tdep.c (i386_in_function_epilogue_p): New variable symtab,
	initialize it, return 0 on EPILOGUE_UNWIND_VALID.
	* symtab.h (struct symtab): New field epilogue_unwind_valid.

2011-06-29  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup - reformatting.
	* dwarf2read.c (producer_is_gcc_ge_4_0): Rename to ...
	(producer_is_gcc_ge_4): ... here, change the return value.
	(process_full_comp_unit): New variable gcc_4_minor, adjust the value
	interpretation.

2011-06-29  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix non-only rename list for Fortran modules import.
	* cp-namespace.c (cp_scan_for_anonymous_namespaces): Adjust the
	cp_add_using_directive caller.
	(cp_add_using_directive): New parameter excludes, describe it.  New
	variables ix and param.  Compare if also excludes match.  Allocate NEW
	with variable size, initialize EXCLUDES there.
	(cp_lookup_symbol_imports): New variable excludep, test
	current->EXCLUDES with it.
	* cp-support.h: Include vec.h.
	(struct using_direct): New field excludes, describe it.
	(DEF_VEC_P (const_char_ptr)): New.
	(cp_add_using_directive): New parameter excludes.
	* defs.h (const_char_ptr): New typedef.
	* dwarf2read.c (read_import_statement): New variables child_die,
	excludes and cleanups, read in excludes.
	(read_namespace): Adjust the cp_add_using_directive caller.

2011-06-29  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup.
	* cp-namespace.c (cp_add_using_directive): Turn positive comparison to
	negative comparisons.

2011-06-29  André Pönitz  <andre.poenitz@nokia.com>

	* mi/mi-main.c (mi_cmd_list_features): Emit
	breakpoint-notifications.

2011-06-29  Tom Tromey  <tromey@redhat.com>

	PR fortran/10036:
	* valprint.h (generic_emit_char, generic_printstr): Declare.
	* valprint.c (wchar_printable, append_string_as_wide)
	(print_wchar): Move from c-lang.c.
	(generic_emit_char): New function; mostly taken from c_emit_char.
	(generic_printstr): New function; mostly taken from c_printstr.
	* f-valprint.c (f_val_print) <TYPE_CODE_ARRAY>: Handle strings
	represented as arrays.
	<TYPE_CODE_CHAR>: Treat as TYPE_CODE_INT; recognize as character
	type.
	* f-typeprint.c (f_type_print_base) <TYPE_CODE_CHAR>: Treat
	identically to TYPE_CODE_INT.
	* f-lang.c (f_get_encoding): New function.
	(f_emit_char): Use generic_emit_char.
	(f_printchar): Replace comment.
	(f_printstr): Use generic_printstr.
	* dwarf2read.c (read_base_type) <DW_ATE_unsigned>: Handle Fortran
	"character" types specially.
	<DW_ATE_signed_char, DW_ATE_unsigned_char>: Make TYPE_CODE_CHAR
	for Fortran.
	* c-lang.c (wchar_printable, append_string_as_wide, print_wchar):
	Move to valprint.c
	(c_emit_char): Call generic_emit_char.
	(c_printstr): Call generic_printstr.

2011-06-29  Gary Benson  <gbenson@redhat.com>

	* breakpoint.c (bpstat_what): Removed duplicated case.

2011-06-28  Tom Tromey  <tromey@redhat.com>

	* python/python-internal.h (PY_SSIZE_T_CLEAN): Define.

2011-06-27  Tom Tromey  <tromey@redhat.com>

	* valops.c (find_overload_match): Call do_cleanups before early
	return.
	* top.c (execute_command): Call do_cleanups before early return.
	(command_loop): Likewise.
	* stack.c (backtrace_command): Make a null cleanup early.  Don't
	conditionally call do_cleanups.
	* python/py-value.c (TRY_CATCH): Move cleanup handling into
	TRY_CATCH.
	* python/py-breakpoint.c (gdbpy_breakpoint_has_py_cond): Rearrange
	so cleanups are always run.
	* mi/mi-cmd-var.c (mi_cmd_var_delete): Reset old_cleanups.
	* findcmd.c (parse_find_args): Call do_cleanups on early return
	path.
	* dbxread.c (elfstab_build_psymtabs): Make a null cleanup early.
	Don't conditionally call do_cleanups.
	* cli/cli-script.c (execute_user_command): Initialize 'old_chain'
	later.

2011-06-27  Eric Botcazou  <ebotcazou@adacore.com>

	* MAINTAINERS (Write After Approval): Use default email address.

2011-06-27  Joel Brobecker  <brobecker@adacore.com>

	* MAINTAINERS (Write After Approval): Add Eric Botcazou.

2011-06-27  Eric Botcazou  <ebotcazou@adacore.com>

	* sparc-tdep.h (struct sparc_frame_cache): Add frame_offset,
	saved_regs_mask and copied_regs_mask fields.
	(sparc_record_save_insn): New prototype.
	* sparc-tdep.c (sparc_alloc_frame_cache): Initialize the new fields.
	(sparc_record_save_insn): New function.
	(sparc_analyze_prologue): Add head comment.  Recognize store insns
	of call-saved registers.  Use OFFSET consistently.  Recognize flat
	frames and cache their settings.
	(sparc32_skip_prologue): Handle flat frames.
	(sparc_frame_cache): Add frame_offset to the base address.
	(sparc32_frame_cache): Adjust to new frame description.
	(sparc32_frame_prev_register): Likewise.
	* sparc64-tdep.c (sparc64_frame_prev_register): Likewise.
	* sparc-sol2-tdep.c (sparc32_sol2_sigtramp_frame_cache): Likewise.
	* sparc64-sol2-tdep.c (sparc64_sol2_sigtramp_frame_cache): Likewise.
	* sparcnbsd-tdep.c (sparc32nbsd_sigcontext_frame_cache): Force the
	frame by calling sparc_record_save_insn.
	* sparc64nbsd-tdep.c (sparc64nbsd_sigcontext_frame_cache): Likewise.
	* sparcobsd-tdep.c (sparc32obsd_sigtramp_frame_cache): Likewise.
	* sparc64obsd-tdep.c (sparc64obsd_frame_cache): Likewise.

2011-06-27  Tristan Gingold  <gingold@adacore.com>

	* dwarf2read.c (struct dwarf2_section_info): Replace was_mmapped
	field by map_addr and map_len.
	(dwarf2_read_section): Adjust for the new bfd_mmap api.
	(munmap_section_buffer): Likewise.

2011-06-24  Tom Tromey  <tromey@redhat.com>

	* varobj.c (update_dynamic_varobj_children): Make 'name' const.
	* symtab.h (lookup_struct, lookup_union, lookup_enum): Update.
	* python/python.c (gdbpy_parameter): Make 'arg' const.
	(execute_gdb_command): Likewise.
	(gdbpy_decode_line): Likewise.  Copy it.
	(gdbpy_parse_and_eval): Make 'expr_string' const.  Copy it.
	(gdbpy_write): Make 'arg' const.
	* python/py-type.c (typy_lookup_typename): Make 'type_name'
	const.
	(gdbpy_lookup_type): Likewise.
	* python/py-prettyprint.c (print_children): Make 'name' const.
	* python/py-param.c (parmpy_init): Make 'name' const.  Copy it.
	* python/py-inferior.c (infpy_write_memory): Make 'buf_len' a
	Py_ssize_t.
	* python/py-function.c (fnpy_init): Make 'name' const.
	* python/py-cmd.c (cmdpy_init): Make 'name' const.  Copy it.
	(gdbpy_string_to_argv): Make 'input' const.
	* python/py-breakpoint.c (bppy_init): Make 'spec' const.  Copy
	it.
	* gdbtypes.h (lookup_typename): Update.
	* gdbtypes.c (lookup_typename): Make 'name' const.
	(lookup_struct): Likewise.
	(lookup_union): Likewise.
	(lookup_enum): Likewise.

2011-06-24  Tom Tromey  <tromey@redhat.com>

	* Makefile.in (HFILES_NO_SRCDIR): Add "common/" to
	gdb_thread_db.h.  Move all common/ entries to be together.
	(TAGS): Don't depend on DEPFILES.

2011-06-23  Yao Qi  <yao@codesourcery.com>

	* infrun.c (start_remote): Move call init_wait_for_inferior to ...
	* remote.c (remote_start_remote): ... here.
	* monitor.c (monitor_open): ... here.

2011-06-23  Andrew Burgess  <aburgess@broadcom.com>

	* gdbtypes.c (append_composite_type_field_aligned): Fix
	calculation of bit position based on alignment.

2011-06-22  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (bpstat_stop_status): Call the check_status
	breakpoint_ops method.
	(print_one_breakpoint_location): Also print the condition for Ada
	exception catchpoints.
	(allocate_bp_location): New, factored out from
	allocate_bp_location.
	(allocate_bp_location): Adjust.  Call the owner breakpoint's
	allocate_location method, if there is one.
	(free_bp_location): Call the locations's dtor method, if there is
	one.
	(init_raw_breakpoint_without_location): New breakpoint_ops
	parameter.  Use it.
	(set_raw_breakpoint_without_location): Adjust.
	(init_raw_breakpoint): New breakpoint_ops parameter.  Pass it down.
	(set_raw_breakpoint): Adjust.
	(catch_fork_breakpoint_ops, catch_vfork_breakpoint_ops)
	(catch_syscall_breakpoint_ops): Install NULL allocate_location,
	re_set and check_status methods.
	(init_catchpoint): Don't memset, initialize thread, addr_string
	and enable_state.  Pass the ops down to init_raw_breakpoint.
	(install_catchpoint): Rename to ...
	(install_breakpoint): ... this, and make extern.
	(create_fork_vfork_event_catchpoint): Adjust.
	(catch_exec_breakpoint_ops): Install NULL allocate_location,
	re_set and check_status methods.
	(create_syscall_event_catchpoint): Adjust.
	(ranged_breakpoint_ops, watchpoint_breakpoint_ops)
	(masked_watchpoint_breakpoint_ops): Install NULL
	allocate_location, re_set and check_status methods.
	(catch_exec_command_1): Adjust.
	(gnu_v3_exception_catchpoint_ops): Install NULL allocate_location,
	re_set and check_status methods.
	(create_ada_exception_breakpoint): Rename to ...
	(init_ada_exception_breakpoint): ... this.  Add a struct
	breakpoint parameter, and delete the exp_string, cond_string and
	cond parameters.  Use init_raw_breakpoint, and don't install or
	mention the breakpoint yet.  Don't clear breakpoint fields that
	init_raw_breakpoint already clears.
	(re_set_breakpoint): Delete, split into ...
	(breakpoint_re_set_default, prepare_re_set_context): ... these new
	functions.
	(breakpoint_re_set_one): Call the breakpoint's
	breakpoint_ops->re_set implementation, if there's one.  Adjust.
	* breakpoint.h: Forward declare struct bpstats and struct bp_location.
	(struct bp_location_ops): New type.
	(struct bp_location): New field `ops'.
	(struct breakpoint_ops): New `allocate_location', `re_set' and
	`check_status' fields.  Make `breakpoint_hit''s description match
	reality.
	(init_bp_location): Declare.
	(breakpoint_re_set_default): Declare.
	(create_ada_exception_breakpoint): Rename to ...
	(init_ada_exception_breakpoint): ... this.  Add a struct
	breakpoint parameter, and delete the exp_string, cond_string and
	cond parameters.
	(install_breakpoint): Declare.
	* ada-lang.c: Include exceptions.h.
	<Ada exceptions description>: Update.
	(struct ada_catchpoint_location): New type.
	(ada_catchpoint_location_dtor): New function.
	(ada_catchpoint_location_ops): New global.
	(ada_catchpoint): New type.
	(create_excep_cond_exprs): New function.
	(dtor_exception, allocate_location_exception, re_set_exception)
	(should_stop_exception, check_status_exception): New functions.
	(print_one_exception, print_mention_exception)
	(print_recreate_exception): Adjust.
	(dtor_catch_exception, allocate_location_catch_exception)
	(re_set_catch_exception, check_status_catch_exception): New
	functions.
	(catch_exception_breakpoint_ops): Install them.
	(dtor_catch_exception_unhandled)
	(allocate_location_catch_exception_unhandled)
	(re_set_catch_exception_unhandled)
	(check_status_catch_exception_unhandled): New functions.
	(catch_exception_unhandled_breakpoint_ops): Install them.
	(dtor_catch_assert, allocate_location_catch_assert)
	(re_set_catch_assert, check_status_catch_assert): New functions.
	(catch_assert_breakpoint_ops): Install them.
	(ada_exception_catchpoint_p): Delete.
	(catch_ada_exception_command_split)
	(ada_exception_catchpoint_cond_string): Rename exp_string
	parameter to excep_string.  Adjust.
	(ada_parse_catchpoint_condition): Delete.
	(ada_exception_sal): Rename the exp_string parameter to
	excep_string.  Delete the cond_string and cond parameters.
	Adjust.
	(ada_decode_exception_location): Rename the exp_string parameter
	to excep_string.  Delete the cond_string and cond parameters.
	Adjust.
	(create_ada_exception_catchpoint): New function.
	(catch_ada_exception_command, ada_decode_assert_location)
	(catch_assert_command): Adjust.
	* ada-lang.h (ada_exception_catchpoint_p): Delete declaration.

2011-06-22  Pedro Alves  <pedro@codesourcery.com>

	* ada-lang.c: Include arch-utils.h.
	(ada_decode_exception_location): Make static.
	(catch_ada_exception_command): Moved here from breakpoint.c.
	(ada_decode_assert_location): Make static.
	(catch_assert_command): Moved here from breakpoint.c.
	(_initialize_ada_lang): Install the exception and assert
	catchpoint commands here.
	* ada-lang.h (ada_decode_exception_location)
	(ada_decode_assert_location): Delete declarations.
	* breakpoint.c (CATCH_PERMANENT, CATCH_TEMPORARY): Moved to
	breakpoint.h.
	(create_ada_exception_breakpoint): Make extern.
	(catch_ada_exception_command, catch_assert_command): Moved to
	ada-lang.c.
	(add_catch_command): Make extern.
	(_initilize_breakpoint): Don't install the exception and assert
	catchpoint commands here.
	* breakpoint.h (CATCH_PERMANENT, CATCH_TEMPORARY): Moved from
	breakpoint.c
	(add_catch_command, create_ada_exception_breakpoint): Declare.

2011-06-22  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (init_raw_breakpoint_without_location): Don't add
	the breakpoint to the breakpoint chain here.
	(set_raw_breakpoint_without_location): Add the breakpoint to the
	breakpoint chain here.
	(init_raw_breakpoint): Adjust comments.
	(set_raw_breakpoint): Add the breakpoint to the breakpoint chain
	here.
	(init_catchpoint): Don't set the catchpoint's breakpoint number
	here.
	(install_catchpoint): New function.
	(create_fork_vfork_event_catchpoint)
	(create_syscall_event_catchpoint, catch_exec_command_1): Adjust to
	use install_catchpoint.

2011-06-22  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (create_catchpoint_without_mention)
	(create_catchpoint): Delete.

2011-06-22  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.h (struct breakpoint): Delete field `exec_pathname'.
	* breakpoint.c (init_raw_breakpoint_without_location): Remove
	reference to exec_pathname.
	(struct exec_catchpoint): New type.
	(dtor_catch_exec): New function.
	(insert_catch_exec, print_it_catch_exec, print_one_catch_exec): Adjust.
	(catch_exec_breakpoint_ops): Install dtor_catch_syscall.
	(catch_exec_command_1): Adjust to use init_catchpoint.
	(delete_breakpoint): Remove reference to exec_pathname.

2011-06-22  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.h (struct breakpoint_ops): New field `dtor'.
	(struct breakpoint): Delete field `syscalls_to_be_caught'.
	* breakpoint.c (init_raw_breakpoint_without_location): Remove
	reference to syscalls_to_be_caught.
	(catch_fork_breakpoint_ops, catch_vfork_breakpoint_ops): Install a
	NULL `dtor'.
	(struct syscall_catchpoint): New type.
	(dtor_catch_syscall): New function.
	(insert_catch_syscall, remove_catch_syscall)
	(breakpoint_hit_catch_syscall, print_one_catch_syscall)
	(print_recreate_catch_syscall): Adjust.
	(catch_syscall_breakpoint_ops): Install dtor_catch_syscall.
	(catch_exec_breakpoint_ops): Install a NULL `dtor'.
	(create_syscall_event_catchpoint): Adjust to use init_catchpoint.
	(ranged_breakpoint_ops, watchpoint_breakpoint_ops)
	(masked_watchpoint_breakpoint_ops)
	(gnu_v3_exception_catchpoint_ops): Install a NULL `dtor'.
	(delete_breakpoint): Call the `dtor' breakpoint_ops method, if
	there is one.  Remove references to syscalls_to_be_caught.
	(catching_syscall_number): Adjust.
	* ada-lang.c (catch_exception_breakpoint_ops)
	(catch_exception_unhandled_breakpoint_ops)
	(catch_assert_breakpoint_ops): Install a NULL `dtor'.

2011-06-22  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.h (struct breakpoint): Delete forked_inferior_pid
	field.
	* breakpoint.c (init_raw_breakpoint_without_location): Remove
	reference to forked_inferior_pid.
	(struct fork_catchpoint): New type.
	(breakpoint_hit_catch_fork, print_it_catch_fork)
	(print_one_catch_fork, breakpoint_hit_catch_vfork)
	(print_it_catch_vfork, print_one_catch_vfork): Adjust.
	(create_fork_vfork_event_catchpoint): Adjust to use
	init_catchpoint.

2011-06-22  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (add_to_breakpoint_chain)
	(init_raw_breakpoint_without_location): New functions, factored
	out from ...
	(set_raw_breakpoint_without_location): ... this one.
	(init_raw_breakpoint): New function, factored out from
	set_raw_breakpoint and adjusted to use
	init_raw_breakpoint_without_location.
	(set_raw_breakpoint): Adjust.
	(init_catchpoint): New function, factored out from
	create_catchpoint_without_mention and adjusted to use
	init_raw_breakpoint.
	(create_catchpoint_without_mention): Adjust.

2011-06-22  Tom Tromey  <tromey@redhat.com>

	* dwarf2expr.c (execute_stack_op) <DW_OP_GNU_convert>: Treat type
	argument of 0 specially.

2011-06-22  Yao Qi  <yao@codesourcery.com>

	* infrun.c (handle_inferior_event): Remove write-only local variable
	`sw_single_step_trap_p'.

2011-06-20  Tom Tromey  <tromey@redhat.com>

	* symtab.c (lookup_language_this): End loop if block is NULL.

2011-06-17  Tom Tromey  <tromey@redhat.com>

	* valops.c (value_of_this): Use lookup_language_this.
	* symtab.h (lookup_language_this): Declare.
	* symtab.c (lookup_language_this): New function.
	(lookup_symbol_aux): Use lookup_language_this.
	* ax-gdb.c (gen_expr) <OP_THIS>: Use lookup_language_this.

2011-06-17  Tom Tromey  <tromey@redhat.com>

	* value.h (value_of_this): Update.
	(value_of_local): Remove.
	* valops.c (value_of_this): Rename from value_of_local.  Change
	parameters.
	* p-exp.y (exp): Update.
	(variable): Likewise.
	* eval.c (evaluate_subexp_standard) <OP_THIS>: Use value_of_this.

2011-06-17  Tom Tromey  <tromey@redhat.com>

	* valops.c (value_of_local): Complain if NAME is NULL.
	* std-operator.def (OP_OBJC_SELF): Remove.
	* parse.c (operator_length_standard) <OP_OBJC_SELF>: Remove.
	* objc-exp.y (name_not_typename): Use OP_THIS.
	* expprint.c (print_subexp_standard) <OP_THIS>: Print language's
	name for "this".
	<OP_OBJC_SELF>: Remove.
	* eval.c (evaluate_subexp_standard) <OP_OBJC_SELF>: Remove.

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

	* python/py-events.h (gdb_py_events): Make it extern.
	* python/py-evtregistry.c (gdb_py_events): Declare.

2011-06-16  Hui Zhu  <teawater@gmail.com>

	* remote.c (remote_trace_set_readonly_regions): Add check for
	remote_protocol_packets[PACKET_qXfer_traceframe_info].support before
	output warning.

2011-06-15  Ulrich Weigand  <ulrich.weigand@linaro.org>

	* arm-linux-tdep.c: Include "auxv.h".
	(AT_HWCAP): Define.
	(ARM_LINUX_SIZEOF_VFP): Define.
	(arm_linux_supply_vfp): New function.
	(arm_linux_collect_vfp): Likewise.
	(arm_linux_regset_from_core_section): Handle .reg-arm-vfp sections.
	(arm_linux_fpa_regset_sections): New variable.
	(arm_linux_vfp_regset_sections): Likewise.
	(arm_linux_core_read_description): New function.
	(arm_linux_init_abi): Install arm_linux_core_read_description and
	arm_linux_fpa_regset_sections or arm_linux_vfp_regset_sections as
	appropriate for the architecture.
	* arm-tdep.h (struct gdbarch_tdep): Add member "vfpregset".
	(tdesc_arm_with_m): Declare.
	(tdesc_arm_with_iwmmxt): Likewise.
	(tdesc_arm_with_vfpv2): Likewise.
	(tdesc_arm_with_vfpv3): Likewise.
	(tdesc_arm_with_neon): Likewise.
	* arm-linux-nat.c: Move features/*.c includes ...
	* arm-tdep.c: ... here.
	* arm-linux-nat.c (arm_linux_read_description): Move initializing
	target description data structures ...
	* arm-tdep.c (_initialize_arm_tdep): ... here.
	* arm-linux-nat.c (HWCAP_VFP, HWCAP_IWMMXT, HWCAP_NEON, HWCAP_VFPv3,
	HWCAP_VFPv3D16): Move definitions ...
	* arm-linux-tdep.h: ... here.

2011-06-15  Hui Zhu  <teawater@gmail.com>

	* remote.c (remote_trace_set_readonly_regions): Add a check for
	target_buf_size.

2011-06-14  Tom Tromey  <tromey@redhat.com>

	* coffread.c (coffread_objfile): Rename from current_objfile.
	* dbxread.c (dbxread_objfile): Rename from current_objfile.
	* mdebugread.c (mdebugread_objfile): Rename from current_objfile.

2011-06-14  Tom Tromey  <tromey@redhat.com>

	* jv-lang.c (jv_type_objfile_data_key, dynamics_objfile)
	(class_symtab): Remove.
	(jv_dynamics_progspace_key): New global.
	(jv_per_objfile_free): Reset program space data.  Update assert.
	Don't clear globals.
	(get_dynamics_objfile): Use and set program space data.
	(get_java_class_symtab): Use get_dynamics_objfile.
	(add_class_symbol): Likewise.
	(java_link_class_type): Likewise.
	(java_object_type, jv_clear_object_type, set_java_object_type):
	Remove.
	(get_java_object_type): Update.  Don't cache result.
	(is_object_type): Don't call set_java_object_type.
	(_initialize_java_language): Don't set jv_type_objfile_data_key;
	initialize jv_dynamics_progspace_key.

2011-06-14  Tom Tromey  <tromey@redhat.com>

	* symtab.h (current_objfile): Don't declare.
	* objfiles.h (current_objfile): Don't declare.
	* objfiles.c (current_objfile): Remove.
	* mdebugread.c (current_objfile): New file-scope global.
	* dbxread.c (current_objfile): New file-scope global.
	* coffread.c (current_objfile): New file-scope global.

2011-06-13  Pedro Alves  <pedro@codesourcery.com>

	* top.h (line): Rename to ...
	(saved_command_line): ... this.
	(linesize): Rename to ...
	(saved_command_line_size): ... this.
	* top.c (line): Rename to ...
	(saved_command_line): ... this.
	(linesize): Rename to ...
	(saved_command_line_size): ... this.
	(dont_repeat, command_line_input, dont_repeat_command): Adjust.
	* event-top.c (command_line_handler): Adjust.
	* main.c (captured_main): Adjust.

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

	* i386-tdep.c (i386_epilogue_frame_cache): Simplify code.  Call
	get_frame_func instead of get_frame_pc to determine the code
	address used to construct the frame ID.
	(i386_epilogue_frame_unwind_stop_reason): Fix coding style.
	(i386_epilogue_frame_this_id): Likewise.
	(i386_epilogue_frame_prev_register): New function.
	(i386_epilogue_frame_unwind): Use i386_epilogue_frame_prev_register.
	(i386_stack_tramp_frame_sniffer): Fix coding style.
	(i386_stack_tramp_frame_unwind): Use i386_epilogue_frame_prev_register.
	(i386_gdbarch_init): Fix comments.

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

	* i386-tdep.c (i386_match_insn_block): Use length of the proper
	instruction when walking back through the instruction stream.

2011-06-10  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* symtab.c (output_partial_symbol_filename): Exchange the filename and
	fullname parameters order.

2011-06-10  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup.
	* dwarf2read.c (dw2_map_symbol_filenames): Use symbol_filename_ftype
	for fun.
	* psymtab.c (map_symbol_filenames_psymtab)
	(map_partial_symbol_filenames): Likewise.
	* psymtab.h: Include symfile.h.
	(map_partial_symbol_filenames): Use symbol_filename_ftype for fun.
	* symfile.h (symbol_filename_ftype): New.
	(struct quick_symbol_functions): Use symbol_filename_ftype for fun of
	map_symbol_filenames, clarify more the naming in comment.

2011-06-07  Doug Evans  <dje@google.com>

	* cc-with-index.sh: Fix typos in comment.
	Look for ../../gdb, for fullname.exp.

2011-06-07  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Pedro Alves  <pedro@codesourcery.com>

	* cli/cli-cmds.c (shell_escape): Use waitpid.
	* rs6000-nat.c (exec_one_dummy_insn): Likewise.

2011-06-07  Tristan Gingold  <gingold@adacore.com>

	* xcoffread.c (dwarf2_xcoff_names): New variable.
	(aix_process_linenos): Add a guard.
	(xcoff_symfile_finish): Free dwarf2.
	(xcoff_initial_scan): Add dwarf2 support.

2011-06-06  Pedro Alves  <pedro@codesourcery.com>

	* infcall.c (run_inferior_call): Don't mask async.  Instead force
	a synchronous wait, if the target can async.

	* target.h (struct target_ops): Delete to_async_mask.
	(target_async_mask): Delete.
	* target.c (update_current_target): Delete references to to_async_mask.
	* linux-nat.c (linux_nat_async_mask_value): Delete.
	(linux_nat_is_async_p, linux_nat_can_async_p): Remove references
	to linux_nat_async_mask_value.
	(linux_nat_async_mask): Delete.
	(linux_nat_async, linux_nat_close): Remove references to
	linux_nat_async_mask_value.
	* record.c (record_async_mask_value): Delete.
	(record_async): Remove references to record_async_mask_value.
	(record_async_mask): Delete.
	(record_can_async_p, record_is_async_p): Remove references to
	record_async_mask_value.
	(init_record_ops, init_record_core_ops): Remove references to
	record_async_mask.
	* remote.c (remote_async_mask_value): Delete.
	(init_remote_ops): Remove reference to remote_async_mask.
	(remote_can_async_p, remote_is_async_p): Remove references to
	remote_async_mask_value.
	(remote_async): Remove references to remote_async_mask_value.
	(remote_async_mask): Delete.

	* infrun.c (fetch_inferior_event): Don't claim registers changed
	if the current thread is already not executing.

2011-06-03  Joel Brobecker  <brobecker@adacore.com>  (obvious fix)

	From Stephen Kitt  <steve@sk2.org>
	* breakpoint.c, breakpoint.h, cli/cli-dump.c, dwarf2expr.c,
	gdbarch.c, gdbarch.sh, remote.c: Various spelling fixes.

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

	* dwarf2expr.c (execute_stack_op) [DW_OP_deref]: Handle
	the case where ADDR_SIZE is different from TYPE_LENGTH (type).

2011-06-03  Tom Tromey  <tromey@redhat.com>

	* python/py-inferior.c (python_inferior_exit): Use inferior's exit
	code fields.
	* python/py-exitedevent.c (create_exited_event_object): Change
	type of 'exit_code'.  Optionally add exit_code attribute.
	(emit_exited_event): Change type of 'exit_code'.
	* python/py-event.h (emit_exited_event): Update.
	* mi/mi-interp.c (mi_inferior_exit): Print exit code.
	* infrun.c (handle_inferior_event): Set exit code fields on
	inferior.
	* inferior.h (struct inferior) <has_exit_code, exit_code>: New
	fields.
	* inferior.c (exit_inferior_1): Initialize new fields.

2011-06-03  Tom Tromey  <tromey@redhat.com>

	* dwarf2expr.c (get_signed_type): New function.
	(execute_stack_op) <DW_OP_shra>: Always perform a signed shift.

2011-06-02  Keith Seitz  <keiths@redhat.com>

	* objc-lang.c (find_methods): Increment objfile_csym earlier.

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

	* top.h (simplified_command_loop): Delete declaration.

2011-06-01  Mike Frysinger  <vapier@gentoo.org>

	* remote-sim.c (gdbsim_open): Add the strlen of " --sysroot=" and
	gdb_sysroot to the "len" variable.  Append both to "arg_buf".

2011-06-01  Yao Qi  <yao@codesourcery.com>

	* objfiles.h (obj_section_addr): Update reference to objfile from
	`abfd' to `obfd'.
	(obj_section_endaddr): Likewise.

2011-06-01  Daniel Jacobowitz  <drow@false.org>

	* MAINTAINERS: Update my email address and affiliation.  Also
	update Ian Lance Taylor's affiliation.  Use UTF-8 for ludo@gnu.org.

2010-05-31  Keith Seitz  <keiths@redhat.com>

	PR c++/12750
	* linespec.c (get_search_block): New function.
	(find_methods): Add FILE_SYMTATB parameter and use it and
	get_search_block to pass an appropriate block to
	lookup_symbol_in_namespace.
	(decode_line_1): Record if *ARGPTR is single-quote enclosed.
	Check if *ARGPTR starts with a filename first.
	If it does, call locate_first_half again to locate the next
	"first half" of the linespec.
	Pass FILE_SYMTATB to decode_objc and decode_compound.
	Swallow the trailing single-quote if IS_SQUOTE_ENCLOSED.
	(locate_first_half): Stop on the first colon seen.
	(decode_compound): Add FILE_SYMTAB parameter.
	Pass FILE_SYMTAB to lookup_prefix_sym and find_method.
	(lookup_prefix_sym): Add FILE_SYMTAB parameter and use
	get_search_block with lookup_symbol.
	(find_method): Add FILE_SYMTAB parameter and pass it to
	find_methods.
	(decode_objc): Use get_search_block.

2010-05-31  Keith Seitz  <keiths@redhat.com>

	PR symtab/12704
	* cp-namespace.c (ANONYMOUS_NAMESPACE_LEN): Remove.
	(cp_scan_for_anonymous_namespaces): Use CP_ANONYMOUS_NAMESPACE_STR
	and CP_ANONYMOUS_NAMESPACE_LEN.
	(cp_is_anonymous): Likewise.
	* cp-support.h (CP_ANONYMOUS_NAMESPACE_STR): Define.
	(CP_ANONYMOUS_NAMESPACE_LEN): Define.
	* dwarf2read.c (namespace_name): Likewise.
	(fixup_partial_die): Likewise.
	* linespec.c (decode_compound): If CP_ANONYMOUS_NAMESPACE_STR is
	seen in the input, keep it.

2011-05-30  Pedro Alves  <pedro@codesourcery.com>

	* target.h (enum inferior_event_type): Delete INF_QUIT_REQ.
	* inf-loop.h (inferior_event_handler_wrapper): Delete.
	* inf-loop.c (inferior_event_handler_wrapper): Delete.
	(inferior_event_handler): Don't handle INF_QUIT_REQ.
	* remote.c (_initialize_remote): Register
	async_remote_interrupt_twice directly as
	sigint_remote_twice_token event.

2011-05-30  Pedro Alves  <pedro@codesourcery.com>

	* target.h (enum inferior_event_type): Delete INF_ERROR.
	* inf-loop.c (inferior_event_handler): Don't handle INF_ERROR.

2011-05-30  Pedro Alves  <pedro@codesourcery.com>

	* interps.c (interp_set): Don't cancel continuations.

2011-05-30  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* linux-nat.c (linux_lwp_is_zombie): Use xsnprintf.

2011-05-30  Pedro Alves  <pedro@codesourcery.com>

	* continuations.h (continuation_ftype): Add `err' parameter.
	Document parameters.
	(do_all_continuations, do_all_continuations_thread)
	(do_all_intermediate_continuations)
	(do_all_intermediate_continuations_thread)
	(do_all_inferior_continuations): Add `err' parameter.
	* continuations.c (do_my_continuations_1, do_my_continuations)
	(do_all_inferior_continuations, do_all_continuations_ptid)
	(do_all_continuations_thread_callback)
	(do_all_continuations_thread, do_all_continuations)
	(do_all_intermediate_continuations_thread_callback)
	(do_all_intermediate_continuations_thread)
	(do_all_intermediate_continuations): Add `err' parameter, and pass
	it down all the way to the continuations proper.
	* inf-loop.c (inferior_event_handler): If fetching an inferior
	event throws an error, don't pop the target, and still call the
	continuations, but with `err' set.  Adjust all other continuation
	calls.
	* breakpoint.c (until_break_command_continuation): Add `err'
	parameter.
	* infcmd.c (step_1_continuation): Add `err' parameter.  Don't
	issue another step if `err' is set.
	(struct until_next_continuation_args): New.
	(until_next_continuation): Add `err' parameter.  Adjust.
	(until_next_command): Adjust.
	(struct finish_command_continuation_args): Add `thread' field.
	(finish_command_continuation): Add `err' parameter.  Handle it.
	(finish_forward): Adjust.
	(attach_command_continuation): Add `err' parameter.  Handle it.
	* infrun.c (infrun_thread_stop_requested_callback): Adjust to
	cancel the continuations.
	* interps.c (interp_set): Adjust to cancel the continuations.
	* thread.c (clear_thread_inferior_resources): Adjust to cancel the
	continuations rather than discarding.
	(free_thread): Don't clear thread inferior resources here.
	(delete_thread_1): Do it here instead.  And do it before removing
	the thread from the threads list.  Tag the thread as exited before
	clearing thread inferior resources.

2011-05-30  Joel Brobecker  <brobecker@adacore.com>

	* infcall.c (call_function_by_hand): Rephrase error message.

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

	* defs.h (struct thread_info, struct inferior): Delete forward
	declarations.
	* breakpoint.h (struct thread_info): New forward declaration.
	* observer.sh (struct inferior): New forward declaration.
	* python/python-internal.h (struct inferior): New forward
	declaration.

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

	* defs.h (struct continuation, continuation_ftype)
	(continuation_free_arg_ftype, add_continuation)
	(do_all_continuations, do_all_continuations_thread)
	(discard_all_continuations, discard_all_continuations_thread)
	(add_intermediate_continuation, do_all_intermediate_continuations)
	(do_all_intermediate_continuations_thread)
	(discard_all_intermediate_continuations)
	(discard_all_intermediate_continuations_thread)
	(add_inferior_continuation, do_all_inferior_continuations)
	(discard_all_inferior_continuations): Move to ...
	* continuations.h: ... this new file.
	* breakpoint.c, continuations.c, event-top.c, inf-loop.c,
	infcmd.c, inferior.c, infrun.c, interps.c: Include
	continuations.h.

2011-05-27  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Doug Evans  <dje@google.com>

	Fix PR 10970, PR 12702.
	* linux-nat.c (linux_lwp_is_zombie): New function.
	(wait_lwp): Initialize status.  New variable prev_mask.  Block signals.
	Check for linux_lwp_is_zombie.  Use WNOHANG and sigsuspend.

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

	* defs.h (continuation_ftype, continuation_free_arg_ftype): New
	typedefs.
	(add_continuation, add_intermediate_continuation)
	(add_inferior_continuation): Use them.
	* continuations.c (struct continuation): Use them.
	(make_continuation_ftype): Delete.
	(make_continuation, add_inferior_continuation, add_continuation)
	(add_intermediate_continuation): Use continuation_ftype and
	continuation_free_arg_ftype.  Rename parameters to shorter names.

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

	* continuations.c (make_continuation): Make it return void.
	(do_my_continuations): Rename to ...
	(do_my_continuations_1): ... this.  Remove old_chain parameter and
	adjust.
	(do_my_continuations): New.
	(discard_my_continuations): Rename to ...
	(discard_my_continuations_1): ... this.  Remove old_chain
	parameter and adjust.
	(discard_my_continuations): New.
	(add_inferior_continuation): Simplify.
	(do_all_inferior_continuations): Reimplement on top
	do_my_continuations.
	(discard_all_inferior_continuations): Simplify.
	(add_continuation): Simplify.
	(do_all_continuations_ptid): Simplify.
	(discard_all_continuations_thread_callback): Simplify.
	(add_intermediate_continuation): Simplify.
	(discard_all_intermediate_continuations_thread_callback):
	Simplify.

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

	* utils.c (struct continuation, add_continuation)
	(add_inferior_continuation)
	(do_all_inferior_continuations, discard_all_inferior_continuations)
	(restore_thread_cleanup, do_all_continuations_ptid)
	(do_all_continuations_thread_callback)
	(do_all_continuations_thread, do_all_continuations)
	(discard_all_continuations_thread_callback)
	(discard_all_continuations_thread, discard_all_continuations)
	(add_intermediate_continuation)
	(do_all_intermediate_continuations_thread_callback)
	(do_all_intermediate_continuations_thread)
	(do_all_intermediate_continuations)
	(discard_all_intermediate_continuations_thread_callback)
	(discard_all_intermediate_continuations_thread)
	(discard_all_intermediate_continuations): Move to ...
	* continuations.c: ... this new file, and adjust to no longer
	implement continuations on top of cleanups.
	* Makefile.in (SFILES): Add continuations.c.
	(COMMON_OBS): Add continuations.o.

2011-05-26  Pedro Alves  <pedro@codesourcery.com>

	* inferior.h (enum exec_direction_kind): Delete EXEC_ERROR.
	* infrun.c (show_exec_direction_func): Don't handle EXEC_ERROR.
	Internal error on invalid values.
	* reverse.c: Don't handle EXEC_ERROR.
	* mi/mi-main.c: Don't handle EXEC_ERROR.

2011-05-26  Pedro Alves  <pedro@codesourcery.com>

	* record.c: Include event-loop.h, inf-loop.h.
	(record_beneath_to_async): New global.
	(tmp_to_async): New global.
	(record_async_inferior_event_token): New global.
	(record_open_1): Don't error out if async is enabled.
	(record_open): Handle to_async.  Create an async event source in
	the event loop.
	(record_close): Delete the async event source.
	(record_resumed): New global.
	(record_execution_dir): New global.
	(record_resume, record_core_resume): Set them.  Register the
	target on the event loop.
	(record_wait): Rename to ...
	(record_wait_1): ... this.  Add more debug output.  Handle
	TARGET_WNOHANG, and the target beneath returning
	TARGET_WAITKIND_IGNORE.
	(record_wait): Reimplement on top of record_wait_1.
	(record_async_mask_value): New global.
	(record_async, record_async_mask, record_can_async_p)
	(record_is_async_p, record_execution_direction): New functions.
	(init_record_ops, init_record_core_ops): Install new methods.
	* infrun.c (fetch_inferior_event): Temporarily switch the global
	execution direction to the direction the target was going.
	(execution_direction): Change type to int.
	* target.c (default_execution_direction): New function.
	(update_current_target): Inherit and de_fault
	to_execution_direction.
	* target.h (struct target_ops) <to_execution_direction>: New
	field.
	(target_execution_direction): New macro.
	* inferior.h (execution_direction): Change type to int.

2011-05-26  Pedro Alves  <pedro@codesourcery.com>

	* infcall.c (call_function_by_hand): Don't allow calling functions
	in reverse execution mode.

2011-05-26  Pedro Alves  <pedro@codesourcery.com>

	* infcmd.c (finish_command): Allow async finish in reverse.

2011-05-26  Yao Qi  <yao@codesourcery.com>

	* gdb_thread_db.h: Delete.  Move to ...
	* common/gdb_thread_db.h: ... here.

2011-05-26  Pedro Alves  <pedro@codesourcery.com>

	* infcmd.c (finish_backward): Set a step-resume breakpoint at the
	function's entry point instead of a manually managed momentary
	breakpoint, and only ever issue one proceed call.
	* infrun.c (handle_inferior_event) <BPSTAT_WHAT_STEP_RESUME>: If
	doing a reverse-finish, switch to stepi mode, to do another step.
	(insert_step_resume_breakpoint_at_sal): Make public.
	(normal_stop): No need to save function value return registers if
	going reverse.
	* inferior.h (insert_step_resume_breakpoint_at_sal): Declare.

2011-05-26  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.h (enum bptype) <bp_hp_step_resume>: New.
	(enum bpstat_what_main_action): Move BPSTAT_WHAT_STEP_RESUME
	before BPSTAT_WHAT_STOP_SILENT.  Add BPSTAT_WHAT_HP_STEP_RESUME
	at the end.
	* breakpoint.c (update_breakpoints_after_exec): Also delete hp
	step-resume breakpoints.
	(print_it_typical): Handle bp_hp_step_resume.
	(bpstat_what): Ditto.
	(bptype_string): Ditto.
	(print_one_breakpoint_location): Ditto.
	(allocate_bp_location): Ditto.
	(mention): Ditto.
	(breakpoint_re_set_one): Ditto.
	* infrun.c (handle_inferior_event): Adjust.  Split
	BPSTAT_WHAT_STEP_RESUME handling in BPSTAT_WHAT_STEP_RESUME and
	BPSTAT_WHAT_HP_STEP_RESUME.
	(insert_step_resume_breakpoint_at_sal): Rename to ...
	(insert_step_resume_breakpoint_at_sal_1): ... this.  Add bptype
	parameter.  Handle it.
	(insert_step_resume_breakpoint_at_sal): Reimplement on top of
	insert_step_resume_breakpoint_at_sal_1.
	(insert_step_resume_breakpoint_at_frame): Rename to ...
	(insert_hp_step_resume_breakpoint_at_frame): ... this.  Adjust to
	set a high-priority step-resume breakpoint.
	(insert_step_resume_breakpoint_at_frame): Adjust comment.
	(insert_step_resume_breakpoint_at_caller): Ditto.

2011-05-26  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (iterate_over_related_breakpoints): New.
	(do_map_delete_breakpoint): New.
	(delete_command): Pass do_map_delete_breakpoint to
	map_breakpoint_numbers.
	(do_disable_breakpoint): New.
	(do_map_disable_breakpoint): Iterate over the breakpoint's related
	breakpoints.
	(do_enable_breakpoint): Rename to ...
	(enable_breakpoint_disp): ... this.
	(enable_breakpoint): Adjust.
	(do_enable_breakpoint): New.
	(enable_once_breakpoint): Delete.
	(do_map_enable_breakpoint): New.
	(do_map_enable_once_breakpoint): New.
	(enable_once_command, enable_delete_command)
	(delete_trace_command): Iterate over the breakpoint's related
	breakpoints.

2011-05-26  Pedro Alves  <pedro@codesourcery.com>

	* alpha-tdep.c (alpha_cannot_fetch_register): Don't return true
	for ALPHA_ZERO_REGNUM.
	(alpha_supply_int_regs): Explicitly supply zero as the value for
	ALPHA_ZERO_REGNUM in the register cache.
	* alpha-nat.c (fetch_osf_core_registers): Ditto.

2011-05-26  Yao Qi  <yao@codesourcery.com>

	* gdb/gdb_thread_db.h: Remove HAVE_UINTPTR_T.

2011-05-26  Tristan Gingold  <gingold@adacore.com>

	* symfile.h (struct dwarf2_section_names): New type.
	(struct dwarf2_debug_sections): New type.
	(dwarf2_has_info): Add parameter.
	* dwarf2read.c (dwarf2_elf_names): New variable.
	(INFO_SECTION, ABBREV_SECTION, LINE_SECTION, LOC_SECTION)
	(MACINFO_SECTION, STR_SECTION, RANGES_SECTION, TYPES_SECTION)
	(FRAME_SECTION, EH_FRAME_SECTION, GDB_INDEX_SECTION): Remove.
	(dwarf2_has_info): Add names parameter.  Pass names
	to dwarf2_locate_sections.
	(section_is_p): Rewrite using the names parameter.
	(dwarf2_locate_sections): Use section names from the names parameter.
	* coffread.c (coff_symfile_read): Adjust call to dwarf2_has_info.
	* elfread.c (read_psyms): Ditto.
	* machoread.c (macho_symfile_read): Ditto.

2011-05-25  Andreas Schwab  <schwab@redhat.com>

	PR gdb/8677
	* event-loop.c (handle_file_event): Don't handle POLLHUP as error.

2011-05-24  Keith Seitz  <keiths@redhat.com>

	PR breakpoint/12803
	* linespec.c (keep_name_info): Add handling for "volatile" keyword.
	(decode_compound): Unconditionally call	keep_name_info.

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

	* breakpoint.c (watchpoint_check): If the watchpoint went out of
	scope, clear its command list.
	(map_breakpoint_numbers): Don't walk the related breakpoints list
	of each breakpoint.

2011-05-24  Tom Tromey  <tromey@redhat.com>

	* MAINTAINERS: Move Jim Blandy to past maintainers.

2011-05-24  Tristan Gingold  <gingold@adacore.com>

	* symfile.h (enum dwarf2_section_enum): New type.
	(dwarf2_get_section_info): New prototype.
	* dwarf2read.c (dwarf2_get_section_info): Replace parameter
	section_name by sect.  Use a switch to select the info.
	* dwarf2-frame.c (warf2_get_section_info): Remove prototype.
	(dwarf2_build_frame_info): Adjust calls to dwarf2_get_section_info.

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

	* solib-svr4.c (svr4_solib_create_inferior_hook): Skip setting
	shared library event breakpoint if there's no execution.

2011-05-24  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* breakpont.c (remove_hw_watchpoints): Remove unused function.
	* breakpoint.h remove_hw_watchpoints(): Remove prototype.

2011-05-23  Tom Tromey  <tromey@redhat.com>

	* c-lang.c (evaluate_subexp_c): Use expect_type if it is not
	NULL.

2011-05-23  Doug Evans  <dje@google.com>

	* python/lib/gdb/printing.py (register_pretty_printer): Add missing
	entry for RuntimeError to doc string.

2011-05-23  Jerome Guitton  <guitton@adacore.com>

	* sparc-tdep.c (sparc_skip_stack_check): Recognize a new instruction
	sequence for probing loops.

2011-05-23  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (user_visible_resume_ptid): Fix typos in describing
	comment.

2011-05-21  Mark Kettenis  <kettenis@gnu.org>

	* sparc-nat.c (sparc_fetch_inferior_registers): Explicitly supply
	zero as the value for %g0 in the register cache.
	* sparc-tdep.c (sparc32_supply_gregset): Likewise.
	* sparc64-tdep.c (sparc64_supply_gregset): Likewise.

2011-05-20  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (proceed): Set previous_inferior_ptid here.
	(init_wait_for_inferior): Initialize previous_inferior_ptid from
	inferior_ptid, not null_ptid.
	(wait_for_inferior): Don't initialize previous_inferior_ptid here.
	(fetch_inferior_event): Nor here.

2011-05-20  Pedro Alves  <pedro@codesourcery.com>

	* inf-loop.c (inferior_event_handler): Only output a message if
	verbose.

2011-05-20  Luis Machado  <lgustavo@codesourcery.com>

	* MAINTAINERS: Update my e-mail address.

2011-05-20  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (proceed): Switch the inferior event loop to
	INF_EXEC_COMPLETE if the target refused to resume from a
	vfork/fork.

2011-05-20  Pedro Alves  <pedro@codesourcery.com>

	* infcmd.c: Include "inf-loop.h".
	(step_once): When stepping into an inline subroutine, pretend the
	target has run.  If the target can async, switch the inferior
	event loop to INF_EXEC_COMPLETE.
	* inferior.h (user_visible_resume_ptid): Declare.
	* infrun.c (user_visible_resume_ptid): New function, factored out
	from `resume'.
	(resume): Use it.
	* mi/mi-main.c (mi_execute_async_cli_command): Remove assertion
	that the current thread is running.  Merge async and sync
	branches.

2011-05-20  Pedro Alves  <pedro@codesourcery.com>

	* infcmd.c (step_1): Simplify synchronous case.

2011-05-20  Pedro Alves  <pedro@codesourcery.com>

	* tracepoint.c: Include exceptions.h.
	(TFILE_PID): Move higher in file.
	(tfile_open): Delay pushing the tfile target until we're assured
	the tfile header is present in the file.  Wrap reading the initial
	newline-terminated lines in TRY_CATCH.  Pop the target if the
	initial setup failed.  Add the tfile's thread immediately
	aftwards, before any non-essential setup.  Don't skip
	post_create_inferior if there are no traceframes present in the
	file.
	(tfile_close): Remove redundant check for null before xfree call.
	(tfile_thread_alive): New function.
	(init_tfile_ops): Register it as to_thread_alive callback.

2011-05-20  Pedro Alves  <pedro@codesourcery.com>

	* tracepoint.c (tfile_open): Delete #if 0'd code.

2011-05-20  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix -readnow for -gdwarf-4 unused type units.
	* dwarf2read.c (struct signatured_type): Remove the field offset.
	(create_signatured_type_table_from_index): Remove its initialization.
	(create_debug_types_hash_table): Likewise.  Initialize per_cu.offset
	instead.  Add a complaint call.
	(process_psymtab_comp_unit): Change assignment to gdb_assert.
	(process_type_comp_unit, lookup_die_type, dump_die_shallow)
	(lookup_signatured_type_at_offset, read_signatured_type)
	(write_one_signatured_type): Update the field for per_cu.

2011-05-19  Tom Tromey  <tromey@redhat.com>

	* python/py-inferior.c (python_inferior_exit): Use
	target_gdbarch.
	(python_on_resume): Likewise.

2011-05-19  Matt Rice  <ratmice@gmail.com>

        * breakpoint.c (bpstat_do_actions_1): Call prevent_dont_repeat.

2011-05-19  Hui Zhu  <teawater@gmail.com>

	* tracepoint.c (tfile_trace_find): Return directly when num is -1.

2011-05-19  Hui Zhu  <teawater@gmail.com>

	* xcoffread.c (read_xcoff_symtab): Initialize fcn_aux_saved.

2011-05-18  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (dwarf2_add_field): Constify.
	* value.c (value_static_field): Constify.
	* gdbtypes.h (struct main_type) <field.field_location.physname>:
	Now const.
	* ax-gdb.c (gen_static_field): Constify

2011-05-18  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* linux-nat.c (kill_callback): Use SIGKILL first.

2011-05-18  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (print_it_exception): Avoid use of sprintf.

2011-05-18  Tom Tromey  <tromey@redhat.com>

	* value.c (value_fn_field): Constify.
	* symtab.c (gdb_mangle_name): Constify.
	* stabsread.c (update_method_name_from_physname): Make 'physname'
	argument const.
	* p-typeprint.c (pascal_type_print_method_args): Make arguments
	const.  Use explicit fputc_filtered loop.
	(pascal_type_print_base): Constify.
	* p-lang.h (pascal_type_print_method_args): Update.
	* linespec.c (add_matching_methods): Constify.
	(add_constructors): Likewise.
	* jv-typeprint.c (java_type_print_base): Constify.
	* gdbtypes.h (struct cplus_struct_type)
	<fn_fieldlist.fn_field.physname>: Now const.
	* dwarf2read.c (compute_delayed_physnames): Constify.
	(dwarf2_add_member_fn): Likewise.
	* c-typeprint.c (c_type_print_base): Constify.  Use cleanups.

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

	* infrun.c (resume): Mention which is the current thread, and its
	current PC in debug output.
	(prepare_to_proceed): Mention the thread switching in debug
	output.

2011-05-18  Tom Tromey  <tromey@redhat.com>

	* linux-thread-db.c (try_thread_db_load_from_pdir_1): Fix absolute
	path check.  Use xmalloc and cleanups.
	(try_thread_db_load_from_dir): Use xmalloc and cleanups.

2011-05-17  Tom Tromey  <tromey@redhat.com>

	* cp-valprint.c (cp_print_value_fields): Catch errors from
	value_static_field.

2011-05-17  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (dwarf2_get_die_type): Call
	get_die_type_at_offset.
	* dwarf2expr.c (dwarf_get_base_type): Handle NULL return from
	get_base_type function.

2011-05-17  Tomas Martinec  <fyzmat@gmail.com>

	* infrun.c (handle_inferior_event) <handling deferred step>: Clear
	trap_expected.

2011-05-16  Doug Evans  <dje@google.com>

	* python/py-auto-load.c (source_section_scripts): Mention objfile
	name in warning.

2011-05-15  Doug Evans  <dje@google.com>

	* linux-thread-db.c (try_thread_db_load_from_pdir_1): New function.
	(try_thread_db_load_from_pdir): Call it.  If unable to find
	libthread_db in directory of libpthread, see if we're looking at
	the separate-debug-info copy.

	* python/py-autoload.c (print_script): Print "Missing" instead of
	"No" for missing scripts.
	(info_auto_load_scripts): Tweak "Loaded" column to fit "Missing".

2011-05-13  Doug Evans  <dje@google.com>

	* ui-file.c (stdio_file_write_async_safe): Add comment.

2011-05-14  Hui Zhu  <teawater@gmail.com>

	* ui-file.c (stdio_file_write_async_safe): Add empty check for build.

2011-05-13  Doug Evans  <dje@google.com>

	Support $pdir and $sdir in libthread-db-search-path.
	* NEWS: Mention $sdir,$pdir.
	* gdb_thread_db.h (LIBTHREAD_DB_SEARCH_PATH): Add $sdir:$pdir.
	* linux-thread-db.c (try_thread_db_load_from_pdir): New function.
	(try_thread_db_load_from_sdir): New function.
	(try_thread_db_load_from_dir): New function.
	(thread_db_load_search): Handle $pdir, $sdir.  Remove trying of
	system directories if search of libthread-db-search-path fails,
	that is now done via $sdir.
	(has_libpthread): New function.
	(thread_db_load): Remove search for libthread_db in directory of
	libpthread, that is now done via $pdir.

	* NEWS: Mention "info auto-load-scripts".
	* python/py-auto-load.c (struct auto_load_pspace_info): New member
	script_not_found_warning_printed.
	(init_loaded_scripts_info): Renamed from create_loaded_scripts_hash,
	all callers updated.  Initialize script_not_found_warning_printed.
	(get_auto_load_pspace_data_for_loading): New function.
	(maybe_add_script): New function.
	(source_section_scripts): Simplify.  Only print one warning regardless
	of the number of auto-load scripts not found.
	(clear_section_scripts): Clear script_not_found_warning_printed.
	(auto_load_objfile_script): Record script in hash table.
	(count_matching_scripts): New function.
	(maybe_print_script): Renamed from maybe_print_section_script, all
	callers updated.  Rewrite to use ui_out_*.
	(info_auto_load_scripts): Renamed from
	maintenance_print_section_scripts, all callers updated.
	(gdbpy_initialize_auto_load): "maintenance print section-scripts"
	renamed as "info auto-load-scripts".

2011-05-13  Tom Tromey  <tromey@redhat.com>

	* dwarf2expr.c (read_uleb128): Cast intermediate result.
	(read_sleb128): Likewise.

2011-05-13  Tom Tromey  <tromey@redhat.com>

	* dwarf2loc.c (disassemble_dwarf_expression): Fix instruction
	offset display.

2011-05-13  Doug Evans  <dje@google.com>

	* linux-nat.c (debug_linux_nat_async): Delete.
	Replace all references to use debug_linux_nat instead.
	(show_debug_linux_nat_async): Delete.
	(sigchld_handler): Call ui_file_write_async_safe instead of
	fprintf_unfiltered.
	(_initialize_linux_nat): Remove `set debug lin-lwp-async'.
	* ui-file.c (struct ui_file): New member to_write_async_safe.
	(null_file_write_async_safe): New function.
	(ui_file_write_async_safe): New function.
	(set_ui_file_write_async_safe): New function.
	(ui_file_new): Initialize to_write_async_safe.
	(stdio_file_write_async_safe): New function.
	(struct stdio_file): New member fd.
	(stdio_file_new): Initialize to_write_async_safe, fd.
	(stdio_file_read, stdio_file_isatty): New stdio->fd instead of calling
	fileno.
	* ui-file.h (ui_file_write_async_safe_ftype): New typedef.
	(set_ui_file_write_async_safe): Declare.
	(ui_file_write_async_safe): Declare.

2011-05-13  Tom Tromey  <tromey@redhat.com>

	* utils.c (do_value_free): New function.
	(make_cleanup_value_free): Likewise.
	* dwarf2loc.c (dwarf2_evaluate_loc_desc_full): Handle value
	freeing correctly.
	(dwarf2_loc_desc_needs_frame): Call
	make_cleanup_value_free_to_mark.
	* dwarf2expr.h (struct dwarf_expr_context) <mark>: Remove field.
	* dwarf2expr.c (free_dwarf_expr_context): Don't call
	value_free_to_mark.
	(new_dwarf_expr_context): Don't call value_mark.
	* dwarf2-frame.c (execute_stack_op): Call
	make_cleanup_value_free_to_mark.
	* defs.h (make_cleanup_value_free): Declare.

2011-05-13  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* mi/mi-main.c (mi_cmd_execute): Use cleanup from
	prepare_execute_command.
	* top.c (prepare_execute_command): Return cleanup.
	(execute_command): Use cleanup from prepare_execute_command.
	* top.h (prepare_execute_command): Change prototype to return
	cleanup.
	* defs.h (struct value): Add opaque declaration.
	(make_cleanup_value_free_to_mark): Add prototype.
	* utils.c (do_value_free_to_mark): New function.
	(make_cleanup_value_free_to_mark): Likewise.

2011-05-12  Tom Tromey  <tromey@redhat.com>

	* dwarf2expr.c (execute_stack_op) <DW_OP_shr>: Unconditionally
	cast left-hand-side to unsigned.

2011-05-12  Tom Tromey  <tromey@redhat.com>

	PR gdb/12617:
	* value.h (value_from_contents): Declare.
	* value.c (value_from_contents): New function.
	* dwarf2read.c (dwarf_stack_op_name): Add new values.
	(dwarf2_get_die_type): New function.
	* dwarf2loc.c (dwarf_expr_get_base_type): New function.
	(allocate_piece_closure): Acquire reference to values.
	(read_pieced_value): Update for value-based expressions.
	(write_pieced_value): Likewise.
	(free_pieced_value_closure): Call value_free as needed.
	(dwarf2_evaluate_loc_desc_full): Set get_base_type field.
	Update for value-based expressions.
	* dwarf2loc.h (dwarf2_get_die_type): Declare.
	* dwarf2expr.h (struct dwarf_stack_value) <value>: Change type.
	<get_base_type>: New field.
	(struct dwarf_expr_piece) <v.value>: Change type.
	<v.regno>: New field.
	(struct dwarf_expr_context) <mark>: New field.
	(dwarf_expr_piece, dwarf_expr_fetch): Update.
	(dwarf_expr_pop, dwarf_expr_push): Remove.
	(dwarf_expr_push_address): Declare.
	* dwarf2expr.c (dwarf_arch_cookie): New global.
	(struct dwarf_gdbarch_types): New.
	(dwarf_gdbarch_types_init, dwarf_expr_address_type): New
	functions.
	(dwarf_expr_push): Change type of 'value' argument.  Update.  Now
	static.
	(dwarf_expr_push_address): New function.
	(dwarf_expr_pop): Now static.
	(dwarf_expr_fetch): Change return type.
	(dwarf_require_integral): New function.
	(dwarf_expr_fetch): Simplify.
	(add_piece): Update.
	(base_types_equal_p, dwarf_get_base_type, get_unsigned_type): New
	functions.
	(execute_stack_op) <sign_ext>: Remove.
	Use values for DWARF stack.
	<DW_OP_GNU_const_type, DW_OP_GNU_deref_type,
	DW_OP_GNU_regval_type, DW_OP_GNU_convert, DW_OP_GNU_reinterpret>:
	New cases.
	(_initialize_dwarf2expr): New function.
	(add_piece): Update.
	(new_dwarf_expr_context): Set new field.
	(free_dwarf_expr_context): Call value_free_to_mark.
	* dwarf2-frame.c (no_base_type): New function.
	(execute_stack_op): Set get_base_type field.  Update.

2011-05-12  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (read_common_block): Fix formatting.

2011-05-12  Kwok Cheung Yeung  <kcy@codesourcery.com>

	* breakpoint.c (disable_breakpoint): Disable all locations
  	associated with a tracepoint on target if a trace experiment is
	running.
 	(disable_command): Disable a specific tracepoint location on target if
 	a trace	experiment is running.
 	(do_enable_breakpoint): Enable all locations associated with a
 	tracepoint on target if a trace experiment is running.
 	(enable_command) Enable a specific tracepoint location on target if a
 	trace experiment is running.
 	* target.c (update_current_target): Add INHERIT and de_fault clauses for
 	to_supports_enable_disable_tracepoint, to_enable_tracepoint and
	to_disable_tracepoint.
 	* target.h: Add declaration of struct bp_location.
 	(struct target_ops): Add new functions
	to_supports_enable_disable_tracepoint, to_enable_tracepoint and
 	to_disable_tracepoint to target operations.
	(target_supports_enable_disable_tracepoint): New macro.
 	(target_enable_tracepoint): New macro.
 	(target_disable_tracepoint): New macro.
 	* remote.c (struct remote_state): Add new field.
	(remote_enable_disable_tracepoint_feature): New.
	(remote_protocol_features): Add new entry.
	(remote_supports_enable_disable_tracepoint): New.
	(remote_enable_tracepoint): New.
 	(remote_disable_tracepoint): New.
 	(init_remote_ops): Add remote_enable_tracepoint,
	remote_disable_tracepoint and remote_supports_enable_disable_tracepoint
	to remote operations.
 	* tracepoint.c (start_tracing): Allow tracing to start without any
 	tracepoints enabled with just a warning if they can be re-enabled
	later.
 	* NEWS: Add news item for the new behaviour of the enable and disable
 	GDB commands when applied to tracepoints.
 	Add news items for the new remote packets QTEnable and QTDisable.

2011-05-11  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* config.in: Regenerate.
	* configure: Regenerate.
	* configure.ac <--with-system-readline> (for readline_echoing_p):
	Remove the test.
	* tui/tui-io.c (tui_old_readline_echoing_p): Rename to ...
	(tui_old_rl_echoing_p): ... here.
	(tui_setup_io): Rename extern declaration readline_echoing_p to
	_rl_echoing_p.  Adjust assignments for the both renames.

2011-05-11  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* symtab.c (lookup_symtab): Run cleanup before returning.

2011-05-11  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (handle_data_member_location): New function.
	(dwarf2_add_field): Use it.
	(read_common_block): Likewise.

2011-05-11  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Make addrs->SECTINDEX always defined.
	* symfile.c (relative_addr_info_to_section_offsets): Check for
	SECTINDEX -1, not for zero ADDR.
	(addrs_section_compar): Remove checking for invalid SECTINDEX.
	(addr_info_make_relative): Set SECTINDEX to -1 for unmatched entries.
	* symfile.h (struct section_addr_info) <sectindex>: Update the comment
	on its validity.

2011-05-10  Doug Evans  <dje@google.com>

	* linux-thread-db.c: Whitespace cleanup.
	(try_thread_db_load_1): Fix comment.

	* linux-thread-db.c (set_libthread_db_search_path): New function.
	(_initialize_thread_db): Add setter for libthread-db-search-path.

2011-05-09  Doug Evans  <dje@google.com>

	* NEWS: Mention --with-iconv-bin.
	* configure.ac: New option --with-iconv-bin.
	* configure: Regenerate.
	* config.in: Regenerate.
	* defs.h (relocate_gdb_directory): Declare.
	* main.c (relocate_gdb_directory): Renamed from relocate_directory,
	removed progname parameter, and exported.  All callers updated.
	* charset.c (find_charset_names): Use --with-iconv-bin if specified.

	* linux-nat.c (lin_lwp_attach_lwp): For !WIPSTOPPED case,
	adding missing call to restore_child_signals_mask.

2011-05-09  Pedro Alves  <pedro@codesourcery.com>

	* inferior.h (wait_for_inferior): Remove `thread_exec_as_sigtrap'
	parameter.
	* infrun.c (proceed, start_remote): Adjust.
	(wait_for_inferior): Remove `thread_exec_as_sigtrap' parameter,
	and adjust to not handle it.
	* solib-irix.c (irix_solib_create_inferior_hook): Adjust.
	* solib-osf.c (osf_solib_create_inferior_hook): Adjust.
	* solib-sunos.c (sunos_solib_create_inferior_hook): Adjust.
	* solib-svr4.c (svr4_solib_create_inferior_hook): Adjust.
	* windows-nat.c (do_initial_windows_stuff): Adjust.
	* infcmd.c (attach_command): Adjust.
	(notice_new_inferior): Adjust.

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

	* ppc-linux-tdep.c (ppu2spu_prev_register): Handle pseudo registers.
	(ppu2spu_unwind_register): Mark pseudo registers unavailable.
	* spu-tdep.c (op_selb): Use correct value.

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

	* spu-linux-nat.c (spu_symbol_file_add_from_memory): Add NULL
	"parent" parameter to symbol_file_add_from_bfd call.

2011-05-06  Sergio Durigan Junior  <sergiodj@linux.vnet.ibm.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>

	Implement support for PowerPC BookE masked watchpoints.
	* NEWS: Mention masked watchpoint support.  Create "Changed commands"
	section.
	* breakpoint.h (struct breakpoint_ops) <works_in_software_mode>: New
	method.  Initialize to NULL in all existing breakpoint_ops instances.
	(struct breakpoint) <hw_wp_mask>: New field.
	* breakpoint.c (is_masked_watchpoint): Add prototype.
	(update_watchpoint): Don't set b->val for masked watchpoints.  Call
	breakpoint's breakpoint_ops.works_in_software_mode if available.
	(watchpoints_triggered): Handle the case of a hardware masked
	watchpoint trigger.
	(watchpoint_check): Likewise.
	(works_in_software_mode_watchpoint): New function.
	(insert_masked_watchpoint, remove_masked_watchpoint)
	(resources_needed_masked_watchpoint)
	(works_in_software_mode_masked_watchpoint, print_it_masked_watchpoint)
	(print_one_detail_masked_watchpoint, print_mention_masked_watchpoint)
	(print_recreate_masked_watchpoint, is_masked_watchpoint): New
	functions.
	(masked_watchpoint_breakpoint_ops): New structure.
	(watch_command_1): Check for the existence of the `mask' parameter.
	Set b->ops according to the type of hardware watchpoint being created.
	* ppc-linux-nat.c (ppc_linux_insert_mask_watchpoint)
	(ppc_linux_remove_mask_watchpoint)
	(ppc_linux_masked_watch_num_registers): New functions.
	(_initialize_ppc_linux_nat): Initialize to_insert_mask_watchpoint,
	to_remove_mask_watchpoint and to_masked_watch_num_registers.
	* target.c (update_current_target): Mention to_insert_mask_watchpoint,
	to_remove_mask_watchpoint, and to_masked_watch_num_registers.
	(target_insert_mask_watchpoint, target_remove_mask_watchpoint)
	(target_masked_watch_num_registers): New functions.
	* target.h (struct target_ops) <to_insert_mask_watchpoint>,
	<to_remove_mask_watchpoint>, <to_masked_watch_num_registers>: New
	methods.
	(target_insert_mask_watchpoint, target_remove_mask_watchpoint)
	(target_masked_watch_num_registers): Add prototypes.

2011-05-06  Jan Kratochvil  <jan.kratochvil@redhat.com>

	PR 12573
	* dwarf2read.c (struct dwarf2_cu): New field has_loclist.
	(producer_is_gcc_ge_4_0): New function.
	(process_full_comp_unit): Set also symtab->locations_valid.  Move the
	symtab->language code.
	(var_decode_location): Set cu->has_loclist.
	* symtab.c (skip_prologue_sal): New variables saved_pc, force_skip and
	skip.  Intialize force_skip from locations_valid.  Move the prologue
	skipping code into two passes.
	* symtab.h (struct symtab): Make the primary field a bitfield.  New
	field locations_valid.

2011-05-06  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* c-exp.y (qualified_name): Call destructor_name_p with $1.type.
	(classify_inner_name): Call cp_lookup_nested_type with
	yylval.tsym.type.
	* cp-namespace.c (cp_lookup_nested_type): New variable
	saved_parent_type.  Call CHECK_TYPEDEF for parent_type.  Call
	type_name_no_tag_or_error with saved_parent_type.
	* dwarf2read.c (load_partial_dies): Read in any children of
	DW_TAG_typedef with complaint in such case.
	* gdbtypes.c (type_name_no_tag_or_error): New function.
	* gdbtypes.h (type_name_no_tag_or_error): New prototype.
	* valops.c (destructor_name_p): New comment for parameter type.  Remove
	type const.  Make dname and cp const.  Call type_name_no_tag_or_error.
	* value.h (destructor_name_p): Remove type const.

2011-05-06  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* symtab.c (compare_symbol_name): New function.
	(completion_list_add_name, expand_partial_symbol_name): Call it,
	remove the variable ncmp.
	(default_make_symbol_completion_list_break_on): Reduce SYM_TEXT_LEN,
	gdb_assert it.

2011-05-05  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	Demote to sw watchpoint only in update_watchpoint.
	* breakpoint.c (update_watchpoint): Change between software and
	hardware watchpoint for all kinds of watchpoints, not just
	read/write ones.  Determine b->exact value here instead of
	in watch_command_1.  Error out if there are not enough resources
	for a read or access hardware watchpoint.
	(watch_command_1): Remove logic of checking whether there are
	enough resources available, since update_watchpoint will do that
	work now.  Don't set b->exact here.  Catch exceptions thrown by
	update_watchpoint and delete the watchpoint.
	(can_use_hardware_watchpoint): Remove exact_watchpoints argument.
	Use target_exact_watchpoints instead.
	(delete_breakpoint): Notify observers only if deleted watchpoint
	has a breakpoint number assigned to it.

2011-05-05  Janis Johnson  <janisjo@codesourcery.com>

	* MAINTAINERS: Add myself as a write-after-approval maintainer.

2011-05-05  Jerome Guitton  <guitton@adacore.com>

	* i386-tdep.c (i386_in_stack_tramp_p, i386_stack_tramp_frame_sniffer):
	New functions.
	(i386_stack_tramp_frame_unwind): New static global.
	(i386_match_pattern): New function, extracted from i386_match_insn.
	(i386_match_insn): Use i386_match_pattern.
	(i386_match_insn_block): New function.
	(i386_tramp_chain_in_reg_insns)
	(i386_tramp_chain_on_stack_insns): New static variables.
	(i386_gdbarch_init): Add i386_stack_tramp_frame_unwind to list
	of unwinders.

2011-05-04  Joseph Myers  <joseph@codesourcery.com>

	* configure.host (xscale*): Don't handle target.
	* configure.tgt (thumb*-*-* | strongarm*-*-* | xscale-*-*): Don't
	handle targets.

2011-05-04  Yao Qi  <yao@codesourcery.com>

	* gdb_wait.h: remove WAITTYPE and WCOREDUMP.

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

        Revert:
	| 2011-03-07  Michael Snyder  <msnyder@vmware.com>
	| * elfread.c (elf_symtab_read): Stop memory leak.

2011-05-03  Pierre Muller  <muller@ics.u-strasbg.fr>

	* nto-tdep.c (nto_target): Replace deprecated call to
	cygwin_conv_to_posix_path functions by cygwin_conv_path calls.

2011-05-03  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix false GCC warning.
	* breakpoint.c (do_enable_breakpoint): Initialize orig_enable_state.

2011-05-03  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* breakpoint.c (update_watchpoint): Move code to change
	the enable state of breakpoint from here ...
	(do_enable_breakpoint): ... to here.

2011-04-26  Andrew Gontarek  <andrewg@cray.com>

	* valprint.c (val_print_array_elements): Fixed poor performance
	of printing very large arrays with repeat_count_threshold set
	to unlimited.  New comment.

2011-04-29  Tom Tromey  <tromey@redhat.com>

	* mi/mi-parse.c (mi_parse): Remove incorrect sizeof.
	(mi_parse): Likewise.
	* breakpoint.c (break_range_command): Use sizeof char*, not
	char**.
	(create_breakpoint): Likewise.
	(parse_breakpoint_sals): Likewise.

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

	* linux-nat.c (linux_child_remove_fork_catchpoint)
	(linux_child_remove_vfork_catchpoint)
	(linux_child_remove_exec_catchpoint): New functions.
	(linux_target_install_ops): Install them.

2011-04-29  Phil Muldoon  <pmuldoon@redhat.com>

	PR mi/12531

	* varobj.c (install_default_visualizer): Do not install a
	visualizer if the varobj is CPLUS_FAKE_CHILD.
	(construct_visualizer): Likewise.

2011-04-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* symtab.c (expand_partial_symbol_name): New variable NCMP.  Support
	case insensitive comparison.

2011-04-28  Ulrich Weigand  <ulrich.weigand@linaro.org>

	* infrun.c (proceed): Revert previous change.
	(resume): Instead, handle the case of signal delivery while stepping
	off a breakpoint location here, and only if software single-stepping
	is used.  Handle nested signals.

2011-04-28  Yao Qi  <yao@codesourcery.com>

	* arm-tdep.c (copy_unmodified): Rename to ...
	(arm_copy_unmodified): .. this.  New.
	(copy_preload): Move common part to ...
	(install_preload): .. this.  New.
	(arm_copy_preload): New.
	(copy_preload_reg): Move common part to ...
	(install_preload_reg): ... this.  New.
	(arm_copy_preload_reg): New.
	(copy_b_bl_blx): Move common part to ...
	(install_b_bl_blx): .. this.  New.
	(arm_copy_b_bl_blx): New.
	(copy_bx_blx_reg): Move common part to ...
	(install_bx_blx_reg): ... this. New.
	(arm_copy_bx_blx_reg): New.
	(copy_alu_reg): Move common part to ...
	(install_alu_reg): ... this.  New.
	(arm_copy_alu_reg): New.
	(copy_alu_shifted_reg): Move common part to ...
	(install_alu_shifted_reg): ... this.  New.
	(copy_ldr_str_ldrb_strb): Move common part to ...
	(install_ldr_str_ldrb_strb): ... this.  New.
	(arm_copy_ldr_str_ldrb_strb): New.
	(copy_copro_load_store): Move some common part to ...
	(install_copy_copro_load_store): ... this.  New.
	(arm_copy_copro_load_store): New.
	(copy_svc): Delete.
	(arm_copy_svc): Renamed from copy_svc.
	(copy_undef): Delete.
	(arm_copy_undef): Renamed from copy_undef.
	(decode_ext_reg_ld_st): Delete.
	(arm_decode_ext_reg_ld_st): Renamed from decode_ext_reg_ld_st.
	(decode_svc_copro): Delete.
	(arm_decode_svc_copro): Renamed from decode_svc_copro.
	(copy_copro_load_store, copy_alu_imm): update callers.
	(copy_extra_ld_st, copy_block_xfer): Likewise.
	(decode_misc_memhint_neon, decode_unconditional): Likewise.
	(decode_miscellaneous, decode_dp_misc): Likewise.
	(decode_ld_st_word_ubyte, decode_media): Likewise.
	(decode_b_bl_ldmstm, decode_ext_reg_ld_st): Likewise.
	(decode_svc_copro, decode_misc_memhint_neon): Likewise.
	(decode_unconditional, decode_miscellaneous): Likewise.
	(decode_media, decode_b_bl_ldmstm): Likewise.
	(arm_process_displaced_insn): Likewise..
	(decode_misc_memhint_neon): Delete.
	(arm_decode_misc_memhint_neon): Renamed from decode_misc_memhint_neon.
	(decode_miscellaneous): Delete.
	(arm_decode_miscellaneous): Renamed from decode_miscellaneous.
	(decode_dp_misc): Delete.
	(arm_decode_dp_misc): Renamed from decode_dp_misc.
	(decode_ld_st_word_ubyte): Delete.
	(arm_decode_ld_st_word_ubyte): Renamed from decode_ld_st_word_ubyte.
	(decode_media): Delete.
	(arm_decode_media): Renamed from decode_media.
	(decode_b_bl_ldmstm): Delete.
	(arm_decode_b_bl_ldmstm): Renamed from decode_b_bl_ldmstm.
	(decode_ext_reg_ld_st): Delete.
	(arm_decode_ext_reg_ld_st): Renamed from decode_ext_reg_ld_st.
	(decode_unconditional): Delete.
	(arm_decode_unconditional): Renamed from decode_unconditional.

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

	Case insensitive lookups implementation.
	* dwarf2read.c: Include ctype.h.
	(struct mapped_index): New field version.
	(mapped_index_string_hash): New parameter index_version.  New comment
	for it.  Call tolower appropriately.
	(find_slot_in_mapped_hash): New variable cmp, initialize it, use it.
	Choose the right index version for mapped_index_string_hash.
	(dwarf2_read_index): Support also the index version 5.  Initialize the
	new struct mapped_index field version.
	(hash_strtab_entry): Pass INT_MAX for the new parameter, explain why.
	(find_slot): Explain the version needs.  Pass INT_MAX for the new
	parameter.
	(write_psymtabs_to_index): Produce version 5.
	* minsyms.c (lookup_minimal_symbol): New variable cmp, initialize it,
	use it.  New comment for SYMBOL_MATCHES_SEARCH_NAME.
	* psymtab.c (lookup_partial_symbol): Find the
	SYMBOL_MATCHES_SEARCH_NAME start of the found block of matching
	entries.
	* symtab.c (lookup_symbol_in_language): Remove the case_sensitive_off
	NAME lowercasing.
	(search_symbols): Pass REG_ICASE to regcomp for case_sensitive_off.
	(completion_list_add_name): New variable ncmp, initialize it, use it.
	* symtab.h (SYMBOL_HASH_NEXT): Always call tolower.
	* utils.c (strcmp_iw): Support case_sensitive_off.
	(strcmp_iw_ordered): Sort in a way compatible with case_sensitive_off.
	New function comment part.  New variables saved_string1,
	saved_string2 and case_pass.  Add a proper second pass.

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

	Replace re_comp/re_exec by regcomp/regexec.
	* symtab.c (struct search_symbols_data): New fields preg, preg_p.
	(search_symbols_name_matches): Use them, use regexec.
	(search_symbols): New variable retval_chain, adjust the use of
	old_chain against it.  Replace re_comp by regcomp.  Use the new struct
	search_symbols_data fields, use regexec instead of re_exec.

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

	Format the code for the next patch.
	* dwarf2read.c (struct mapped_index): Include delimiting newlines.
	* utils.c (strcmp_iw_ordered): Reformat the code for the next patch.
	New variables c1 and c2.

2011-04-27  Ulrich Weigand  <ulrich.weigand@linaro.org>

	* infrun.c (proceed): Do not single-step into signal delivery
	when stepping off a breakpoint location.
	(insert_step_resume_breakpoint_at_frame): Move prototype earlier.
	(insert_step_resume_breakpoint_at_caller): Likewise.
	(insert_step_resume_breakpoint_at_sal): Likewise.
	(insert_longjmp_resume_breakpoint): Likewise.

2011-04-27  Yao Qi  <yao@codesourcery.com>

	* common/linux-ptrace.h: Remove include <sys/wait.h>.

2011-04-27  Joel Brobecker  <brobecker@adacore.com>

	* procfs.c (procfs_pass_signals): Fix advance declaration.

2011-04-27  Ulrich Weigand  <ulrich.weigand@linaro.org>

	* target.h (struct target_ops): Remove to_notice_signals;
	add to_pass_signals.
	(target_notice_signals): Remove.
	(target_pass_signals): Add prototype.
	* target.c (update_current_target): Remove to_notice_signals;
	mention to_pass_signals.
	(target_pass_signals): New function.
	(debug_to_notice_signals): Remove.
	(setup_target_debug): Do not install debug_to_notice_signals.

	* infrun.c (signal_pass): New global.
	(resume): Call target_pass_signals.
	(handle_inferior_event): Report all signals while stepping over
	non-steppable watchpoint.  Reset trap_expected to ensure breakpoints
	are re-inserted when stepping over a signal handler.
	(signal_cache_update): New function.
	(signal_stop_update): Call it.
	(signal_print_update): Likewise.
	(signal_pass_update): Likewise.
	(handle_command): Call signal_cache_update and target_pass_signals
	instead of target_notice_signals.
	(_initialize_infrun): Initialize signal_pass.

	* linux-nat.c (pass_mask): New global.
	(linux_nat_pass_signals): New function.
	(linux_nat_create_inferior): Report all signals initially.
	(linux_nat_attach): Likewise.
	(linux_nat_resume): Use pass_mask to decide whether to directly
	handle an inferior signal.
	(linux_nat_wait_1): Likewise.
	(linux_nat_add_target): Install to_pass_signals callback.

	* nto-procfs.c (notice_signals): Remove.
	(procfs_resume): Do not call notice_signals.
	(procfs_notice_signals): Remove.
	(procfs_pass_signals): New function.
	(init_procfs_ops): Install to_pass_signals callback instead of
	to_notice_signals callback.
	(_initialize_procfs): Report all signals initially.

	* procfs.c (procfs_notice_signals): Remove.
	(procfs_pass_signals): New function.
	(procfs_target): Install to_pass_signals callback instead of
	to_notice_signals callback.
	(register_gdb_signals): Remove.
	(procfs_debug_inferior): Report all signals initially.
	(procfs_init_inferior): Remove redundant register_gdb_signals call.

	* remote.c (remote_pass_signals): Add numsigs and pass_signals
	parameters; use them instead of calling signal_..._state routines.
	(remote_notice_signals): Remove.
	(remote_start_remote): Report all signals initially.
	(remote_resume): Do not call remote_pass_signals.
	(_initialize_remote): Install to_pass_signals callback instead of
	to_notice_signals callback.

2011-04-27  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (user_settable_breakpoint): Delete.
	(user_breakpoint_p): Remove check on user_settable_breakpoint.
	(delete_command): Check user_breakpoint_p instead of looking at
	the breakpoint's type.
	(disable_command): Ditto.
	(enable_command): Ditto.
	(delete_trace_command): Use user_breakpoint_p instead of looking
	at the breakpoint number directly.  When checking if there are
	user visible tracepoints, in order to know whether to ask the user
	for confirmation, check whether the breakpoint is actually a
	tracepoint.

2011-04-27  Vladimir Prus  <vladimir@codesourcery.com>

	* python/py-breakpoint.c (gdbpy_breakpoint_created): Fix
	compilation.

2011-04-27  Vladimir Prus  <vladimir@codesourcery.com>

	MI breakpoint notifications.

	* annotate.c (breakpoint_changed): Adjust parameter type.
	* breakpoint.c (set_breakpoint_condition): Adjust to change
	in breakpoint_modified type.
	(breakpoint_set_commands): Likewise.
	(do_map_commands_command): Likewise.
	(bpstat_check_breakpoint_conditions): Notify that breakpoint has
	changed after bumping hit count.
	(bpstat_stop_status): Likewise.
	(print_one_breakpoint_location): Don't wrap in tuple here.
	(print_one_breakpoint): Always print individual locations.
	For locations, use unnamed tuple.
	(disable_breakpoints_in_unloaded_shlib): Notify that breakpoint
	has changed.
	(create_catchpoint, create_syscall_event_catchpoint): Call
	breakpoint_created obsever.
	(mention): Don't call breakpoint_created observer.
	(create_breakpoint_sal): Call breakpoint_created observer.
	(create_breakpoint, watch_command_1): Likewise.
	(create_ada_exception_breakpoint): Likewise.
	(delete_breakpoint): Call breakpoint_deleted breakpoint.
	(locations_are_equal): New.
	(update_breakpoint_locations): If locations were changed, notify.
	(set_ignore_count, disable_breakpoint, do_enable_breakpoint):
	Call breakpoint_modified observer.

	* mi/mi-cmd-break.c (breakpoint_notify): Adjust.
	(mi_cmd_break_insert): Don't set observers for modify and delete.
	* mi/mi-interp.c (mi_suppress_breakpoint_notifications): New.
	(mi_breakpoint_created, mi_breakpoint_deleted)
	(mi_breakpoint_modified): New.
	(mi_interpreter_init): Hook the above.
	* mi/mi-main.c (mi_cmd_execute): Disable breakpoint notifications
	while -break-* commands are executing.
	* mi/mi-main.h (mi_suppress_breakpoint_notifications): New.
	* mi/mi-out.c (struct ui_out_data): New field original_buffer.
	(mi_redirect): New.
	(mi_ui_out_impl): Hook in mi_redirect.
	(mi_field_skip): True to the name, skip the field, don't output
	a field with an empty value.

	* python/py-breakpoint.c (gdbpy_breakpoint_created)
	(gdbpy_breakpoint_deleted): Adjust.
	* tui/tui-hooks.c (tui_event_create_breakpoint)
	(tui_event_delete_breakpoint, tui_event_modify_breakpoint): Adjust.

2011-04-26  Aleksandar Ristovski  <aristovski@qnx.com>

	* nto-procfs.c (procfs_insert_hw_watchpoint): Fix prototype.
	(procfs_remove_hw_watchpoint): Likewise.

2011-04-26  Michael Walle  <michael@walle.cc>

	* remote.c (remote_start_remote): Ack packet after sending the
	interrupt sequence.

2011-04-26  Yao Qi  <yao@codesourcery.com>

	* linux-nat.c: Move common macros to ...
	Include linux-ptrace.h.
	* common/linux-ptrace.h: ... here.  New.

2011-04-25  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* elfread.c (elf_symfile_read): Protect dwarf2_initialize_objfile by
	!objfile_has_partial_symbols.  New comment.
	* objfiles.c (objfile_has_partial_symbols): Call HAS_SYMBOLS if
	SYM_READ_PSYMBOLS is not present. Extend the comment.
	* symfile.h (struct sym_fns): Extend the sym_read_psymbols comment.

2011-04-25  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* defs.h (ENUM_BITFIELD): Remove.

2011-04-24  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Eli Zaretskii  <eliz@gnu.org>

	* NEWS: Document the new gdbserver --once option.

2011-04-21  Jie Zhang  <jzhang918@gmail.com>

	* MAINTAINERS: Update my email address.

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

	* gdb_wchar.h (USE_INTERMEDIATE_ENCODING_FUNCTION): New macro.
	(INTERMEDIATE_ENCODING): Change value to intermediate_encoding
	function call if __STDC_ISO_10646__ macro is defined.
	(intermediate_encoding): New prototype.
	* charset.c (your_gdb_wchar_t_is_bogus): New extern test variable
	to generate compile time error for unsupported gdb_wchar_t size.
	(ENDIAN_SUFFIX): New macro.
	(intermediate_encoding): New function.

2011-04-20  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* ada-lang.c (struct add_partial_datum): Update the comment for
	expand_partial_symbol_name.
	(ada_add_partial_symbol_completions): Rename to ...
	(ada_expand_partial_symbol_name): ... here, change return type, update
	function comment, call symbol_completion_match instead of
	symbol_completion_add.
	(ada_make_symbol_completion_list): Use now expand_partial_symbol_names
	and ada_expand_partial_symbol_name.
	* dwarf2read.c (dw2_expand_symtabs_matching): Support NULL
	FILE_MATCHER.
	(dw2_map_symbol_names): Remove.
	(dwarf2_gdb_index_functions): Unlist dw2_map_symbol_names.
	* psymtab.c (map_symbol_names_psymtab): Remove.
	(expand_symtabs_matching_via_partial): Support NULL FILE_MATCHER.
	Support KIND == ALL_DOMAIN.  Exchange the NAME_MATCHER and KIND check
	order.
	(psym_functions): Unlist map_symbol_names_psymtab.
	(map_partial_symbol_names): Rename to ...
	(expand_partial_symbol_names): ... here, change the FUN type, call
	expand_symtabs_matching with ALL_DOMAIN and NULL FILE_MATCHER now.
	* psymtab.h (map_partial_symbol_names): Rename to ...
	(expand_partial_symbol_names): ... here, change the FUN type.
	* symfile.h (struct quick_symbol_functions): Update the description of
	expand_symtabs_matching.  Remove map_symbol_names.
	* symtab.c (search_symbols): Add ALL_DOMAIN to the function comment.
	(struct add_name_data): Update the comment for
	expand_partial_symbol_name.
	(add_partial_symbol_name): Rename to ...
	(expand_partial_symbol_name): ... here.  Replace
	completion_list_add_name call by strncmp.
	(default_make_symbol_completion_list_break_on): Use now
	expand_partial_symbol_names and expand_partial_symbol_name.
	* symtab.h (enum search_domain): New element ALL_DOMAIN.

2011-04-20  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (save_gdb_index_command): Replace format
	documentation with a pointer to the manual.

2011-04-20  Pedro Alves  <pedro@codesourcery.com>

	* regcache.c: Include remote.h.
	(enum regcache_dump_what) <regcache_dump_remote>: New enum value.
	(regcache_dump): Handle regcache_dump_remote.
	(maintenance_print_remote_registers): New function.
	(_initialize_regcache): Install "maint print remote-registers"
	command.
	* remote.c (map_regcache_remote_table): New function, factored out
	from ...
	(init_remote_state): ... here.
	(remote_register_number_and_offset): New.
	* remote.h (remote_register_number_and_offset): Declare.

2011-04-20  Pedro Alves  <pedro@codesourcery.com>

	* regcache.c (get_thread_arch_regcache): If creating a regcache for
	null_ptid, assume and allow a NULL address space, instead of
	asking the target for the ptid's address space.
	* infrun.c (ptid_is_pid): Remove assertion.

2011-04-19  Tom Tromey  <tromey@redhat.com>

	* windows-tdep.c (windows_xfer_shared_library):
	* windows-nat.c (get_module_name, windows_make_so):
	* v850-tdep.c (v850_handle_pushm):
	* utils.c (null_cleanup, gdb_realpath):
	* ui-out.c (get_next_header):
	* tracepoint.c (clear_traceframe_info):
	* symtab.c (lookup_symtab):
	* serial.h (struct serial_ops):
	* mipsread.c (read_alphacoff_dynamic_symtab):
	* infcmd.c (print_return_value):
	* ia64-linux-tdep.c (ia64_linux_sigcontext_register_address):
	* f-exp.y (parse_number):
	* exceptions.c (catch_exceptions):
	* dummy-frame.c (dummy_frame_this_id):
	* defs.h (struct cleanup):
	* breakpoint.c (disable_breakpoints_in_unloaded_shlib):
	* arm-tdep.c (arm_push_dummy_call):
	* amd64-tdep.h (amd64_collect_xsave):
	* amd64-tdep.c (amd64_collect_xsave):
	* alpha-tdep.c (alpha_heuristic_frame_unwind_cache):
	* README (typing): Remove duplicate words.
	* cli/cli-decode.c (lookup_cmd_composition): Add comma.
	* infrun.c (siginfo_value_read): Fix typo.
	* solib-frv.c (frv_fdpic_find_global_pointer): Likewise.
	* top.c (source_line_number): Add comma.

2011-04-19  Marc Khouzam  <marc.khouzam@ericsson.com>

	* thread.c (any_live_thread_of_process): Prioritize threads
	that are not executing.
	* gdbthread.h (any_live_thread_of_process): Update comment
	as per above change.

2011-04-19  Andreas Schwab  <schwab@linux-m68k.org>

	* xcoffread.c (process_xcoff_symbol): Remove useless cast.
	(scan_xcoff_symtab): Likewise.

2011-04-19  Pierre Muller  <muller@ics.u-strasbg.fr>

	* xcoffread.c (process_xcoff_symbol): ARI fix: Avoid assignment
	inside if clause.

2011-04-19  Pierre Muller  <muller@ics.u-strasbg.fr>
	    Pedro Alves  <pedro@codesourcery.com>

	* xstormy16-tdep.c (xstormy16_push_dummy_call): Add local
	variables to simplify code and avoid == operator at end of
	line as this is against GNU coding standards.

2011-04-19  Pierre Muller  <muller@ics.u-strasbg.fr>

	* solib-svr4.c (svr4_keep_data_in_core): Rename local variable
	lm_name to name_lm to avoid conflict with lm_name function.

2011-04-19  Pierre Muller  <muller@ics.u-strasbg.fr>

	ARI fixes: Use only lowercase function name for static functions.
	* nto-tdep.c (LM_ADDR): Rename to...
	(lm_addr): New function name.
	(nto_relocate_section_addresses): Adapt to change above.
	* solib-sunos.c (LM_ADDR): Rename to...
	(lm_addr): New function name.
	(LM_NEXT): Rename to...
	(lm_next): New function name.
	(sunos_current_sos, sunos_relocate_section_addresses): Adapt to
	function name changes above.
	* solib-svr4.c (LM_ADDR_FROM_LINK_MAP): Rename to...
	(lm_addr_from_link_map): New function name.
	(HAS_LM_DYNAMIC_FROM_LINK_MAP): Rename to...
	(has_lm_dynamic_from_link_map): New function name.
	(LM_DYNAMIC_FROM_LINK_MAP): Rename to...
	(lm_dynamic_from_link_map): New function name.
	(LM_ADDR_CHECK): Rename to...
	(lm_addr_check): New function name.
	(LM_NEXT): Rename to...
	(lm_next): New function name.
	(LM_PREV): Rename to...
	(lm_prev): New function name.
	(LM_NAME): Rename to...
	(lm_name): New function name.
	(IGNORE_FIRST_LINK_MAP_ENTRY): Rename to...
	(ignore_first_link_map_entry): New function name.
	(svr4_keep_data_in_core): Adapt to function name changes above.
	(svr4_current_sos): Likewise.
	(enable_break): Likewise.
	(svr4_relocate_section_addresses): Likewise.

2011-04-19  Pierre Muller  <muller@ics.u-strasbg.fr>

	ARI cleanup.
	* xtensa-tdep.c (xtensa_register_type): Use xstrprintf instead of
	sprintf. Simplify code and avoid loosing memory.
	(xtensa_register_reggroup_p): Extract assignment out of IF clause.
	(call0_frame_cache): Remove && operator from end of line.

2011-04-17  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix libraries displacement if they change whether they were prelinked.
	* solib-svr4.c (LM_ADDR_CHECK): Set L_ADDR even if the DYNAMIC pointer
	does not match.  Comment why.

2011-04-17  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* corelow.c: Include wrapper.h.
	(core_open): Call now gdb_target_find_new_threads.
	* wrapper.c: Include target.h.
	(gdb_target_find_new_threads): New.
	* wrapper.h (gdb_target_find_new_threads): New declaration.

2011-04-17  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* linux-thread-db.c (find_new_threads_callback): Exit on zero TI_TID
	even if !TARGET_HAS_EXECUTION.

2011-04-17  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix convert_code_addr_to_desc_addr for ppc64 files after eu-strip.
	* elfread.c (elf_symfile_read): New variable synth_abfd, pass it to
	bfd_get_synthetic_symtab.
	* jit.c (jit_register_code): Pass NULL to the new parameter parent.
	* machoread.c (macho_add_oso_symfile): Pass main_objfile to the new
	parameter parent, remove the call to add_separate_debug_objfile.
	* solib.c (solib_read_symbols): Pass NULL to the new parameter parent.
	* symfile-mem.c (symbol_file_add_from_memory): Likewise.
	* symfile.c (symbol_file_add_with_addrs_or_offsets): New parameter
	parent, new comment for it, call add_separate_debug_objfile for it.
	(symbol_file_add_separate): Pass objfile as the parameter parent,
	remove the call to add_separate_debug_objfile.
	(symbol_file_add_from_bfd): New parameter parent, pass it.
	(symbol_file_add): Pass NULL to the new parameter parent.
	* symfile.h (symbol_file_add_from_bfd): New parameter parent.

2011-04-17  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* elfread.c (elf_symtab_read): Do not ignore .L symbols if they are
	BSF_SYNTHETIC.

2011-04-17  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix Python access to inlined frames.
	* python/py-frame.c (frapy_read_var): Find BLOCK using get_frame_block.
	* python/py-symbol.c (gdbpy_lookup_symbol): Likewise.

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

	* dwarf2read.c (add_index_entry): Use VEC_last, not VEC_length.

2011-04-15  Gary Benson  <gbenson@redhat.com>

	* MAINTAINERS: Add myself to write-after-approval section.

2011-04-14  Mike Frysinger  <vapier@gentoo.org>

	* remote-sim.c (sim_command_completer): New function.
	(_initialize_remote_sim): Set completer to sim_command_completer.

2011-04-13  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* breakpoint.c (print_exception_catchpoint): Rename to ...
	(print_it_exception_catchpoint): ... this.
	(gnu_v3_exception_catchpoint_ops): Update with new name
	for print_it_exception_catchpoint.

2011-04-13  Edjunior Machado  <emachado@linux.vnet.ibm.com>

	* MAINTAINERS: Add myself for write after approval privileges.

2011-04-13  Marek Polacek  <mpolacek@redhat.com>

	* MAINTAINERS: Add myself as a write-after-approval maintainer.

2011-04-13  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* breakpoint.c (watch_command_1): Remove colon from exp_string.

2011-04-13  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* breakpoint.c (save_breakpoints): Verify whether
	breakpoint_ops.print_recreate is defined before calling it.

2011-04-11  Gary Benson  <gbenson@redhat.com>

	Fix failure with --enable-maintainer-mode.
	* Makefile.in (aclocal_m4_deps): Updated gnulib dependencies.

2011-04-09  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup.
	* symtab.c (search_symbols): Reorder the KIND description in the
	function comment.  Remove the unused 4th element of types, types2,
	types3 and types4.  New gdb_assert on KIND.
	(symtab_symbol_info): Remove the unused 4th element of classnames.
	New gdb_assert on KIND.
	* symtab.h (enum search_domain): New warning in the enum comment.
	Assign numbers to the elements VARIABLES_DOMAIN, FUNCTIONS_DOMAIN and
	TYPES_DOMAIN.

2011-04-09  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix crash of gdb save-index on a STABS file.
	* dwarf2read.c (write_psymtabs_to_index): Return also on no
	PSYMTABS_ADDRMAP.

2011-04-09  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix DW_AT_accessibility compatibility with gcc-4.6+.
	* dwarf2read.c: Include ctype.h.
	(producer_is_gxx_lt_4_6, dwarf2_default_access_attribute): New
	functions.
	(dwarf2_add_field): Fix new_field->accessibility by calling
	dwarf2_default_access_attribute.  Restructure setting accessibility
	vs. virtuality.
	(dwarf2_add_member_fn): New variable accessibility.  Fix fnp
	is_private and is_protected by calling
	dwarf2_default_access_attribute.

2011-04-08  Kevin Buettner  <kevinb@redhat.com>

	* rx-tdep.c (rx_frame_unwind): Add default_frame_unwind_stop_reason
	to the initialization.

2011-04-08  Steve Ellcey  <sje@cup.hp.com>

	* Add default_frame_unwind_stop_reason value to libunwind_frame_unwind
	initalization.

2011-04-07  Pierre Muller  <muller@ics.u-strasbg.fr>

	Remove support for old Cygwin 1.5 versions.
	* remote-fileio.c: Remove macros used to emulate new cygwin_conv_path
	function on old Cygwin version.
	* windows-nat.c: Remove cygwin version check and always define
	__USEWIDE for Cygwin compilation.

2011-04-07  Yao Qi  <yao@codesourcery.com>

	* arm-linux-tdep.c (arm_linux_copy_svc): Remove parameters INSN
	and TO.
	* arm-tdep.c (cleanup_svc): Handle variable instruction size.
	(arm_copy_svc): Remove parameters INSN and TO.
	(decode_svc_copro): Update caller.
	* arm-tdep.h (struct displaced_step_closure): Remove parameters
	from function pointer `copy_svc_os'.

2011-04-07  Yao Qi  <yao@codesourcery.com>

	* arm-tdep.c (cleanup_branch): Set a correct return address in
	LR for ARM and Thumb.

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

	Code cleanup.
	* dictionary.c (dict_hash): Use SYMBOL_HASH_NEXT.
	* dwarf2read.c (mapped_index_string_hash): Refer to SYMBOL_HASH_NEXT
	in the function comment, a new note on values compatibility.
	* minsyms.c (msymbol_hash_iw, msymbol_hash): Use SYMBOL_HASH_NEXT.
	* symtab.h (SYMBOL_HASH_NEXT): New.

2011-04-06  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* ppc-linux-nat.c (check_condition): Add len output parameter.
	Set it based on the memory region referenced in the condition
	expression.  Update all callers.

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

	Fix crash regression on systems featuring .gdb_index.
	* objfiles.c (free_objfile): Move the
	forget_cached_source_info_for_objfile call earlier.  Comment it.
	Extend the comment for objfile_free_data.

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

	Fix regression of displaying the debug format.
	* buildsym.c (end_symtab): Set symtab's debugformat and producer from
	subfile.

2011-04-04  Tom Tromey  <tromey@redhat.com>

	* cli/cli-interp.c (struct captured_execute_command_args):
	Remove.
	(do_captured_execute_command): Remove.
	(safe_execute_command): Use TRY_CATCH.
	* cli/cli-script.c (struct wrapped_read_command_file_args):
	Remove.
	(wrapped_read_command_file): Remove.
	(script_from_file): Use TRY_CATCH.
	* exceptions.c (catch_exception): Remove.
	* exceptions.h (catch_exception): Remove.
	(deprecated_throw_reason): Update comment.
	* mi/mi-main.c (captured_mi_execute_command): Change 'data'
	argument to 'context'.
	(mi_execute_command): Use TRY_CATCH.
	* remote.c (struct start_remote_args): Remove.
	(remote_start_remote): Update; change arguments.
	(remote_open_1): Use TRY_CATCH.

2011-04-04  Tom Tromey  <tromey@redhat.com>

	* tracepoint.c (scope_info): Update.
	* symtab.c (decode_line_spec): Update.
	* python/python.c (gdbpy_decode_line): Update.
	* linespec.h (decode_line_1): Update.
	* linespec.c (decode_line_1): Remove 'not_found_ptr' argument.
	(decode_compound, find_method, symtab_from_filename)
	(decode_variable): Likewise.
	* cli/cli-cmds.c (edit_command): Update.
	(list_command): Update.
	* breakpoint.c (parse_breakpoint_sals): Remove 'not_found_ptr'
	argument.
	(create_breakpoint): Update.
	(until_break_command): Update.
	(addr_string_to_sals): Update.
	(decode_line_spec_1): Update.

2011-04-04  Tom Tromey  <tromey@redhat.com>

	* breakpoint.c (struct captured_parse_breakpoint_args): Remove.
	(do_captured_parse_breakpoint): Remove.
	(create_breakpoint): `e' is now volatile.  Remove `parse_args'.
	Use TRY_CATCH directly.

2011-04-04  Tom Tromey  <tromey@redhat.com>

	* symtab.h (free_symtab): Remove.
	(forget_cached_source_info_for_objfile): Declare.
	* symmisc.c (free_symtab): Remove.
	* source.c (forget_cached_source_info_for_objfile): New function.
	(forget_cached_source_info): Use it.
	* objfiles.c (free_objfile): Simplify check before calling
	clear_current_source_symtab_and_line.  Call
	forget_cached_source_info_for_objfile.

2011-04-04  Tom Tromey  <tromey@redhat.com>

	* mdebugread.c (psymtab_to_symtab_1): Copy linetable to obstack.
	(new_symtab): Don't set `free_code' on symtab.
	(new_linetable): Properly handle size==0.
	* symtab.h (struct symtab) <free_code, free_func>: Remove.
	* symmisc.c (free_symtab): Don't free the linetable.  Don't call
	free_func.
	* jv-lang.c (struct jv_per_objfile_data): New.
	(jv_per_objfile_free): Free the data.
	(get_dynamics_objfile): Allocate a jv_per_objfile_data.
	(get_java_class_symtab): Set the `dict' field on the
	jv_per_objfile_data.
	(free_class_block): Remove.
	* buildsym.c (end_symtab): Don't set `free_code' or `free_func' on
	the symtab.

2011-04-04  Tom Tromey  <tromey@redhat.com>

	* symfile.c (reread_symbols): Update.
	* objfiles.h (struct objfile) <cp_namespace_symtab>: Remove
	field.
	* objfiles.c (allocate_objfile): Update.
	* cp-support.h (cp_check_possible_namespace_symbols): Don't
	declare.
	* cp-namespace.c (lookup_symbol_file): Don't call
	lookup_possible_namespace_symbol.
	(initialize_namespace_symtab, get_possible_namespace_block)
	(free_namespace_block, cp_check_possible_namespace_symbols)
	(check_possible_namespace_symbols_loop)
	(check_one_possible_namespace_symbol)
	(lookup_possible_namespace_symbol): Remove.
	(maintenance_cplus_namespace): Replace with notice.
	(_initialize_cp_namespace): Deprecate `maint cplus namespace'.

2011-04-04  Tom Tromey  <tromey@redhat.com>

	* xcoffread.c (read_xcoff_symtab): Make `debugfmt' const.
	* symtab.h (struct symtab) <producer, debugformat>: Now const.
	* symmisc.c (free_symtab): Don't free debugformat.
	* buildsym.h (struct subfile) <producer, debugformat>: Now const.
	(record_debugformat, record_producer): Document.
	* buildsym.c (end_symtab): Don't save debugformat and producer
	names on obstack.
	(end_symtab): Don't free debugformat and producer fields.
	(record_debugformat): Don't call xstrdup.
	(record_producer): Likewise.

2011-04-04  Tom Tromey  <tromey@redhat.com>

	* source.c (find_source_lines): Remove LSEEK_NOT_LINEAR code.
	(source_line_charpos, source_charpos_line): Remove.

2011-04-04  Tom Tromey  <tromey@redhat.com>

	* symtab.h (domain_enum): Split in two...
	(enum search_domain): New.
	(search_symbols): Update.
	* symtab.c (print_symbol_info, symtab_symbol_info): Remove
	redundant declarations.
	(search_symbols): Change 'kind' argument to search_domain.
	Update.
	(print_symbol_info): Likewise.
	(symtab_symbol_info): Likewise.
	* symfile.h (struct quick_symbol_functions)
	<pre_expand_symtabs_matching>: Change type of 'kind' argument.
	<expand_symtabs_matching>: Likewise.
	* psymtab.c (pre_expand_symtabs_matching_psymtabs): Update.
	(expand_symtabs_matching_via_partial): Update.
	* dwarf2read.c (dw2_pre_expand_symtabs_matching): Update.
	(dw2_expand_symtabs_for_function): Update.
	* block.h: Moved anonymous enum...
	* defs.h (enum block_enum): ... here.  Now named.

2011-04-03  Joel Brobecker  <brobecker@adacore.com>

	GDB 7.3 branch created (branch timestamp: 2011-04-01 01:00 UTC)
	* version.in: Bump version to 7.3.50.20110403-cvs.

2011-04-03  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Create a new section for the next release branch.
	Rename the section of the current branch, now that it has
	been cut.

2011-04-01  Ulrich Weigand  <ulrich.weigand@linaro.org>

	* arm-tdep.c (arm_gdbarch_init): Enfore correct register number
	for "fpscr" in target description.

2011-04-01  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2read.c (find_slot_in_mapped_hash): New variable back_to,
	initialize it.  Delay HASH initialization.  Strip the part after open
	parenthesis for languages with qualifiers.  Call do_cleanups.

2011-04-01  Tom Tromey  <tromey@redhat.com>

	* utils.c (report_command_stats): Don't print `-' for negative
	number.

2011-04-01  Eric Botcazou  <ebotcazou@adacore.com>

	* ada-lang.c (ada_is_simple_array_type, ada_value_slice_from_ptr)
	(ada_value_slice, empty_array, to_fixed_array_type): Deal with
	typedefs.

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

	* breakpoint.h (bpdisp_text): Add declaration.
	* breakpoint.c (bpdisp_text): Make non-static.
	* ada-lang.c: #include "mi/mi-common.h".
	(print_it_exception): Rewrite to improve GDB/MI output.

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

	* arm-tdep.h (struct address_space): Add forward declaration.

2011-04-01  Ulrich Weigand  <ulrich.weigand@linaro.org>

	* arm-tdep.h (arm_insert_single_step_breakpoint): Add prototype.
	* arm-tdep.c (arm_override_mode): New global.
	(arm_pc_is_thumb): Respect arm_override_mode.  Remove single-step
	execution mode heuristics.
	(thumb_get_next_pc_raw): Remove INSERT_BKTP argument; always insert
	second single-step breakpoint if needed, using
	arm_insert_single_step_breakpoint.
	(arm_get_next_pc_raw): Remove INSERT_BKTP argument.  Only handle
	ARM execution mode, do not call thumb_get_next_pc_raw.
	(arm_get_next_pc): Encode execution mode in return value.  Call
	either arm_get_next_pc_raw or thumb_get_next_pc_raw.
	(arm_insert_single_step_breakpoint): New function.
	(arm_software_single_step): Call it.
	* arm-linux-tdep.c (arm_linux_sigreturn_return_addr): Add IS_THUMB
	argument to return execution mode of sigreturn target.
	(arm_linux_syscall_next_pc): Use it.
	(arm_linux_copy_svc): Update call.
	(arm_linux_software_single_step): Call
	arm_insert_single_step_breakpoint.

2011-03-31  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2read.c (dwarf2_read_index): Fix .gdb_index version number in
	the comment.

2011-03-31  Tom Tromey  <tromey@redhat.com>

	* varobj.c (update_dynamic_varobj_children): Properly handle
	errors from iterator.

2011-03-31  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2read.c (dwarf2_name): Initialize DEMANGLED.  Avoid demangling
	struct linkage name twice.

2011-03-31  Tom Tromey  <tromey@redhat.com>

	* python/py-prettyprint.c (print_stack_unless_memory_error): Add
	missing ">" to message.

2011-03-31  Tom Tromey  <tromey@redhat.com>

	* varobj.c (instantiate_pretty_printer): Remove duplicate
	'return'.

2011-03-31  Ulrich Weigand  <ulrich.weigand@linaro.org>

	* i386-tdep.c (i386_frame_prev_register): Unwind SP from memory
	if neither saved value nor register available (e.g. signal frame).

2011-03-31  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* macroexp.c (expand): Avoid uninitialized variable
	compiler warning.

2011-03-31  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* breakpoint.c (break_range_command): Fix typo in comment.

2011-03-31  Thiago Jung Bauermann  <bauerman@br.ibm.com>
	    Sergio Durigan Junior  <sergiodj@linux.vnet.ibm.com>

	Implement support for PowerPC BookE ranged breakpoints.
	* NEWS: Mention support for ranged breakpoints on embedded PowerPC.
	* breakpoint.h (struct bp_target_info) <length>: New member
	variable.
	(struct breakpoint_ops) <breakpoint_hit>: Take struct bp_location
	instead of struct breakpoint as argument, and also add ASPACE
	and BP_ADDR arguments.  Update all callers.
	(struct breakpoint_ops) <print_one_detail>: New method.
	(struct breakpoint) <addr_string_range_end>: New member variable.
	* breakpoint.c (breakpoint_location_address_match): Add function
	prototype.
	(insert_bp_location): Set bl->target_info.length.
	(breakpoint_here_p): Call breakpoint_location_address_match.
	(moribund_breakpoint_here_p): Likewise.
	(regular_breakpoint_inserted_here_p): Likewise.
	(breakpoint_thread_match): Likewise.
	(bpstat_stop_status): Likewise.
	(bpstat_check_location): Move call to
	breakpoint_ops.breakpoint_hit to the top.
	(print_one_breakpoint_location): Call
	breakpoint_ops.print_one_detail if available.
	(breakpoint_address_match_range): New function.
	(breakpoint_location_address_match): Likewise.
	(breakpoint_locations_match): Compare the length field of the
	locations too.
	(hw_breakpoint_used_count): Count resources used by all locations
	in a breakpoint, and use breakpoint_ops.resources_needed if
	available.
	(breakpoint_hit_ranged_breakpoint): New function.
	(resources_needed_ranged_breakpoint): Likewise.
	(print_it_ranged_breakpoint): Likewise.
	(print_one_ranged_breakpoint): Likewise.
	(print_one_detail_ranged_breakpoint): Likewise.
	(print_mention_ranged_breakpoint): Likewise.
	(print_recreate_ranged_breakpoint): Likewise.
	(ranged_breakpoint_ops): New structure.
	(find_breakpoint_range_end): New function.
	(break_range_command): Likewise.
	(delete_breakpoint): Free addr_string_range_end.
	(update_breakpoint_locations): Add SALS_END argument.  Update
	all callers.  Calculate breakpoint length if a non-zero SALS_END
	is given.  Call breakpoint_locations_match instead of
	breakpoint_address_match.
	(reset_breakpoint): Find SaL of the end of the range if B is a
	ranged breakpoint.
	(_initialize_breakpoint): Register break-range command.
	* defs.h (print_core_address): Add function prototype.
	* ppc-linux-nat.c (ppc_linux_ranged_break_num_registers): New
	function.
	(ppc_linux_insert_hw_breakpoint): Support ranged breakpoints.
	(ppc_linux_remove_hw_breakpoint): Likewise.
	(_initialize_ppc_linux_nat): Initialize
	to_ranged_break_num_registers.
	* target.c (update_current_target): Add comment about
	to_ranged_break_num_registers.
	(target_ranged_break_num_registers): New function.
	* target.h (struct target_ops) <to_ranged_break_num_registers>:
	New method.
	(target_ranged_break_num_registers): Add function prototype.
	* ui-out.c (ui_out_field_core_addr): Move address-printing logic to ...
	* utils.c (print_core_address): ... here.

2011-03-31  Ulrich Weigand  <uweigand@de.ibm.com>

	* breakpoint.c (addr_string_to_sals): Avoid uninitialized
	variable compiler warning.

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

	* breakpoint.c (breakpoint_re_set_one): Factor out breakpoint-resetting
	code from here ...
	(re_set_breakpoint): ... to here ...
	(addr_string_to_sals): ... and here.

2011-03-29  Pierre Muller  <muller@ics.u-strasbg.fr>

	* Makefile.in (SFILES): Add missing C sources.
	(HFILES_NO_SRCDIR): Remove gdbserver subdirectory headers.
	Add missing headers.

2011-03-29  Mike Frysinger  <vapier@gentoo.org>

	* .gitignore: New file.

2011-03-29  Mike Frysinger  <vapier@gentoo.org>

	* NEWS: Mention new cfi device simulation.

2011-03-29  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (fixup_partial_die): Handle linkage name on
	otherwise anonymous types.
	(dwarf2_name): Likewise.
	* valops.c (value_struct_elt_for_reference): Refine artificial
	type logic.  Call error if j==-1.

2011-03-29  Andreas Tobler  <andreast-list@fgznet.ch>

	Fix false GCC warning.
	* infcall.c (find_function_addr): Initialize funaddr.

2011-03-29  Pierre Muller  <muller@ics.u-strasbg.fr>

	Fix mingw compilation with --enable-targets=all.
	* remote-mips.c (gdb_usleep.h): Include header.
	(mips_enter_debug): Use gdb_usleep instead of sleep.

2011-03-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Support resolution of STT_GNU_IFUNC via breakpoints.
	* breakpoint.c (print_it_typical): Support bp_gnu_ifunc_resolver and
	bp_gnu_ifunc_resolver_return.
	(bpstat_what): Rename parameter to bs_head, new variable bs, adjust
	the loop.  Support bp_gnu_ifunc_resolver and
	bp_gnu_ifunc_resolver_return.  New comment after the loop.  New loop
	for bp_gnu_ifunc_resolver and bp_gnu_ifunc_resolver_return
	breakpoints.
	(bptype_string, print_one_breakpoint_location): Support
	bp_gnu_ifunc_resolver and bp_gnu_ifunc_resolver_return.
	(user_settable_breakpoint): Return true also for
	bp_gnu_ifunc_resolver.
	(allocate_bp_location): Support bp_gnu_ifunc_resolver and
	bp_gnu_ifunc_resolver_return.
	(set_breakpoint_location_function): New parameter explicit_loc,
	describe it.  Call find_pc_partial_function_gnu_ifunc with new
	variable IS_GNU_IFUNC and adjust the address for STT_GNU_IFUNC if
	EXPLICIT_LOC is not set.
	(set_raw_breakpoint): Set EXPLICIT_LOC for
	set_breakpoint_location_function.
	(clone_momentary_breakpoint): Use true for EXPLICIT_LOC of
	set_breakpoint_location_function.
	(mention): Support bp_gnu_ifunc_resolver and
	bp_gnu_ifunc_resolver_return.
	(add_location_to_breakpoint): Set EXPLICIT_LOC for
	set_breakpoint_location_function.
	(update_breakpoint_locations): Remove static.
	(breakpoint_re_set_one): Support bp_gnu_ifunc_resolver and
	bp_gnu_ifunc_resolver_return.
	* breakpoint.h (enum bptype): New fields bp_gnu_ifunc_resolver and
	bp_gnu_ifunc_resolver_return.
	(update_breakpoint_locations): New declaration.
	* elfread.c: Include gdbthread.h and regcache.h.
	(elf_gnu_ifunc_resolver_stop, elf_gnu_ifunc_resolver_return_stop): New
	functions.
	(elf_gnu_ifunc_fns): Install them.
	* minsyms.c (stub_gnu_ifunc_resolver_stop)
	(stub_gnu_ifunc_resolver_return_stop): New functions.
	(stub_gnu_ifunc_fns): Install them.
	* symtab.h (struct gnu_ifunc_fns): New fields gnu_ifunc_resolver_stop
	and gnu_ifunc_resolver_return_stop.
	(gnu_ifunc_resolver_stop, gnu_ifunc_resolver_return_stop): New.

2011-03-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	STT_GNU_IFUNC reader implementation.
	* elfread.c: Include gdbtypes.h, value.h and infcall.h.
	(SYMBOL_GOT_PLT_SUFFIX, elf_rel_plt_read)
	(elf_objfile_gnu_ifunc_cache_data, struct elf_gnu_ifunc_cache)
	(elf_gnu_ifunc_cache_hash, elf_gnu_ifunc_cache_eq)
	(elf_gnu_ifunc_record_cache, elf_gnu_ifunc_resolve_by_cache)
	(elf_gnu_ifunc_resolve_by_got, elf_gnu_ifunc_resolve_name)
	(elf_gnu_ifunc_resolve_addr): New.
	(elf_symfile_read): Call elf_rel_plt_read.
	(elf_gnu_ifunc_fns): New.
	(_initialize_elfread): Initialize elf_objfile_gnu_ifunc_cache_data.
	Install elf_gnu_ifunc_fns.
	* infcall.c (find_function_return_type): New function.
	(find_function_addr): Resolve TYPE_GNU_IFUNC functions, if possible.
	* minsyms.c (stub_gnu_ifunc_resolve_addr)
	(stub_gnu_ifunc_resolve_name): New functions.
	(stub_gnu_ifunc_fns, gnu_ifunc_fns_p): New variables.
	* symtab.h (struct gnu_ifunc_fns, gnu_ifunc_resolve_addr)
	(gnu_ifunc_resolve_name, gnu_ifunc_fns_p): New.

2011-03-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup for later STT_GNU_IFUNC support.
	* infcall.c (find_function_addr): Remove variable code, use explicit
	dereferences for it.  Move VALUE_TYPE initialization later.

2011-03-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	GDB find_pc_partial_function support for STT_GNU_IFUNC.
	* blockframe.c (cache_pc_function_is_gnu_ifunc): New variable.
	(clear_pc_function_cache): Clear it.
	(find_pc_partial_function): Rename to ...
	(find_pc_partial_function_gnu_ifunc): ... this function.  New
	parameter is_gnu_ifunc_p, describe it.  Set *IS_GNU_IFUNC_P.
	(find_pc_partial_function): New wrapper for this function.
	* symtab.h (find_pc_partial_function_gnu_ifunc): New declaration.

2011-03-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	GDB internal type support for STT_GNU_IFUNC.
	* elfread.c (record_minimal_symbol): Support mst_text_gnu_ifunc.
	(elf_symtab_read): Set mst_text_gnu_ifunc for
	BSF_GNU_INDIRECT_FUNCTION.
	* eval.c (evaluate_subexp_standard): Support TYPE_GNU_IFUNC.
	* gdbtypes.c (init_type): Support TYPE_FLAG_GNU_IFUNC,
	builtin_func_func, nodebug_text_gnu_ifunc_symbol and
	nodebug_got_plt_symbol.
	* gdbtypes.h (enum type_flag_value): New entry TYPE_FLAG_GNU_IFUNC.
	(TYPE_GNU_IFUNC): New.
	(struct main_type): New field flag_gnu_ifunc.
	(struct builtin_type): New field builtin_func_func.
	(struct objfile_type): New fields nodebug_text_gnu_ifunc_symbol and
	nodebug_got_plt_symbol.
	* minsyms.c (lookup_minimal_symbol_text): Support mst_text_gnu_ifunc.
	(in_gnu_ifunc_stub): New.
	(prim_record_minimal_symbol, find_solib_trampoline_target): Support
	mst_text_gnu_ifunc.
	* parse.c (write_exp_msymbol): New variable ifunc_msym.  Detect and
	support mst_text_gnu_ifunc.  Support mst_slot_got_plt.
	* solib-svr4.c (svr4_in_dynsym_resolve_code): Return true also for
	in_gnu_ifunc_stub.
	* symmisc.c (dump_msymbols): Support mst_text_gnu_ifunc.
	* symtab.c (search_symbols): Likewise.
	* symtab.h (enum minimal_symbol_type): New fields mst_text_gnu_ifunc
	and mst_slot_got_plt.
	(in_gnu_ifunc_stub): New declaration.

2011-03-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Support a ring of related breakpoints.
	* breakpoint.c (watchpoint_del_at_next_stop): New, move here code from
	other functions, add gdb_assert.
	(update_watchpoint, watchpoint_check): Add gdb_assert.  Use
	watchpoint_del_at_next_stop.
	(bpstat_check_watchpoint): Use watchpoint_del_at_next_stop.
	(bpstat_stop_status): Handle ring in related_breakpoint.
	(set_raw_breakpoint_without_location): Initialize ring in
	related_breakpoint.
	(delete_breakpoint): Handle ring in related_breakpoint, use
	watchpoint_del_at_next_stop.
	(map_breakpoint_numbers): Handle ring in related_breakpoint.

2011-03-28  Tom Tromey  <tromey@redhat.com>

	PR symtab/12441:
	* dwarf2read.c (prepare_one_comp_unit): Don't call set_cu_language
	with `language_minimal'.

2011-03-25  Ulrich Weigand  <ulrich.weigand@linaro.org>

	* arm-tdep.c (arm_elf_make_msymbol_special): Use ARM_SYM_BRANCH_TYPE
	instead of checking for STT_ARM_TFUNC symbol type.

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

	* linespec.c (symbol_found): Restore line-based result for
	non-LOC_LABEL symbols.

2011-03-25  Kai Tietz  <ktietz@redhat.com>

	* tui/tui-source.c (tui_set_source_content): Use filename_cmp
	instead of strcmp for comparison.
	(tui_source_is_displayed): Likewise.
	* tui/tui-winsource.c (tui_update_breakpoint_info): Likewise.

2011-03-24  Mark Wielaard  <mjw@redhat.com>

	* dwarf2read.c (lookup_signatured_type): Use DW_FORM_ref_sig8 in
	complaint.
	(skip_one_die): Use DW_FORM_ref_sig8, not DW_FORM_sig8.
	(find_partial_die_in_comp_unit): Likewise in comment.
	(read_attribute_value): Likewise.
	(lookup_die_type): Likewise.
	(dwarf_form_name): Likewise.
	(dump_die_shallow): Likewise.
	(follow_die_ref_or_sig): Likewise.

2011-03-24  Tom Tromey  <tromey@redhat.com>

	PR breakpoints/11816:
	* linespec.c (decode_line_1): Parse `function:label' linespecs.
	(decode_compound): Update.
	(find_function_symbol): New function.
	(decode_dollar): Update.
	(decode_label): Add 'function_symbol' parameter.  Handle
	function-relative labels.
	(decode_variable): Update.
	(symbol_found): Add 'function_symbol' parameter.  Use label's PC,
	not its line.  Set `special_display' and canonical name for
	labels.

2011-03-24  Tom Tromey  <tromey@redhat.com>

	* linespec.h (struct linespec_result) <special_display>: New
	field.
	* breakpoint.h (struct breakpoint) <display_canonical>: New
	field.
	* breakpoint.c (print_breakpoint_location): Respect
	display_canonical.
	(create_breakpoint_sal): Add 'display_canonical' parameter.
	(create_breakpoints_sal): Update.
	(create_breakpoint): Update.

2011-03-24  Tom Tromey  <tromey@redhat.com>

	* symtab.c (decode_line_spec): Update.
	* linespec.c (build_canonical_line_spec): Change type of
	'canonical'.
	(decode_line_2, decode_line_1, decode_objc, decode_compound)
	(find_method, decode_all_digits, decode_dollar, decode_label)
	(symbol_found): Likewise.
	(init_linespec_result): New function.
	* breakpoint.c (struct captured_parse_breakpoint_args)
	<canonical_p>: New field, replaces addr_string_p.
	(create_breakpoints_sal): Add 'canonical' parameter, replacing
	'addr_string'.
	(parse_breakpoint_sals): Likewise.
	(do_captured_parse_breakpoint): Update.
	(create_breakpoint): Use struct linespec_result.
	(until_break_command): Update.
	(breakpoint_re_set_one): Update.
	(decode_line_spec_1): Update.
	* linespec.h (struct linespec_result): New.
	(init_linespec_result): Declare.

2011-03-23  Pedro Alves  <pedro@codesourcery.com>

	* regcache.c (regcache_raw_read): If the target didn't supply a
	given raw register, mark it as unavailable.

2011-03-23  Kai Tietz  <ktietz@redhat.com>

	* breakpoint.c (clear_command): Use filename_cmp
	instead of strcmp for comparison.
	* buildsym.c (watch_main_source_file_lossage): Likewise.
	(patch_subfile_names): Use IS_DIR_SEPARATOR instead of
	checking just for slash.
	* dbxread.c (read_dbx_symtab): Use lbasename instead of
	strrchr and filename_cmp instead of strcmp for filenames.
	(add_old_header_file): Use filename_cmp
	instead of strcmp for comparison.
	* exec.c (exec_set_section_address): Likewise.
	* macrotab.c (macro_lookup_inclusion): Likewise.
	(macro_lookup_inclusion): Likewise.
	* elfread.c (_initialize_elfread): Likewise.
	(elfstab_offset_sections): Likewise.
	(elfstab_offset_sections): Use lbasename instead of
	strrchr.
	* mdebugread.c (parse_partial_symbols): Likewise.
	(arse_partial_symbols): Use filename_(n)cmp instead of
	str(n)cmp for comparison.
	* minsyms.c (lookup_minimal_symbol): Likewise.
	* psymtab.c (read_psymtabs_with_filename): Likewise.
	* solib.c (solib_read_symbols): Likewise.
	(reload_shared_libraries_1): Likewise.
	* symmisc.c (maintenance_print_symbols): Likewise.
	* symfile.c (separate_debug_file_exists): Likewise.
	(reread_symbols): Likewise.
	(find_separate_debug_file_by_debuglink): Likewise.
	* remote-fileio.c (remote_fileio_func_rename): Likewise.
	* source.c (add_path): Likewise.
	* symtab.c (filename_seen): Likewise.
	(file_matches): Likewise.
	(print_symbol_info): Likewise.
	(maybe_add_partial_symtab_filename): Likewise.
	(make_source_files_completion_list): Likewise.
	* xml-syscall.c (init_sysinfo): Likewise.
	* windows-nat.c (_initialize_check_for_gdb_ini): Use
	IS_DIR_SEPARATOR for checking for trailing path separator.

2011-03-22  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2expr.c (execute_stack_op): Handle DW_OP_GNU_entry_value.  New
	label abort_expression.
	* dwarf2loc.c (dwarf2_evaluate_loc_desc_full): Handle
	DWARF_VALUE_OPTIMIZED_OUT.

2011-03-22  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup.
	* c-typeprint.c (c_type_print_args): Change parameter show_artificial
	to linkage_name.  Invert its value.  Update the function comment.
	(c_type_print_varspec_suffix): Invert it at the caller.
	* dwarf2read.c (dwarf2_compute_name): Invert it at the caller.

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

	* infcmd.c (post_create_inferior): Ignore NOT_AVAILABLE_ERROR
	errors when reading the `stop_pc'.
	* printcmd.c (pc_prefix): Use get_frame_pc_if_available instead of
	get_frame_pc.

2011-03-22  Phil Muldoon  <pmuldoon@redhat.com>

	* NEWS: Document gdb.Write stream keyword.

2011-03-22  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Revert:
	2011-03-21  Jan Kratochvil  <jan.kratochvil@redhat.com>
	* dwarf2read.c (producer_is_gxx_lt_4_6): New function.
	(dwarf2_add_field): Fix new_field->accessibility for
	cu->header.version >= 3 while verifying also producer_is_gxx_lt_4_6.

2011-03-22  Phil Muldoon  <pmuldoon@redhat.com>

	PR python/12183

	* python/py-function.c (fnpy_call): Treat GdbErrors differently to
	other error classes.  Do not print stack trace.

2011-03-21  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2read.c (producer_is_gxx_lt_4_6): New function.
	(dwarf2_add_field): Fix new_field->accessibility for
	cu->header.version >= 3 while verifying also producer_is_gxx_lt_4_6.

2011-03-21  Ulrich Weigand  <ulrich.weigand@linaro.org>

	* arm-tdep.c (arm_analyze_prologue): Do not abort parsing when
	encountering a load via a non-SP register.

2011-03-21  Ulrich Weigand  <uweigand@de.ibm.com>

	* tramp-frame.c (tramp_frame_prepend_unwinder): Set stop_reason
	field in returned unwinder.

2012-03-21  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* ada-lang.c (replace_operator_with_call): Copy also GDBARCH.

2012-03-21  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (replace_operator_with_call): Use xzalloc instead
	of xmalloc.

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

	* frame.c (frame_unwind_register): Throw an error if unwinding the
	register failed.
	* get_prev_frame_1 (get_prev_frame_1): Ask the unwinder if there's
	an unwind stop reason.
	(frame_stop_reason_string): Handle UNWIND_UNAVAILABLE.
	* frame.h (enum unwind_stop_reason) <UNWIND_OUTERMOST,
	UNWIND_UNAVAILABLE>: New.
	* inline-frame.c (inline_frame_unwind): Install
	default_frame_unwind_stop_reason.
	* frame-unwind.c: Include "exceptions.h".
	(frame_unwind_find_by_frame): Swallow NOT_AVAILABLE_ERROR errors.
	(default_frame_unwind_stop_reason): New.
	* frame-unwind.h (frame_unwind_stop_reason_ftype): New typedef.
	(default_frame_unwind_stop_reason): Declare.
	(struct frame_unwind) <stop_reason>: New function pointer.

	* dummy-frame.c: Install default_frame_unwind_stop_reason.
	* dwarf2-frame.c: Include exceptions.h.
	(struct dwarf2_frame_cache) <unavailable_retaddr>: New field.
	(dwarf2_frame_cache): Swallow NOT_AVAILABLE_ERROR errors when
	computing the CFA.  If such an error was thrown, set
	unavailable_retaddr.
	(dwarf2_frame_unwind_stop_reason): New.
	(dwarf2_frame_this_id): Don't build a frame id if the CFA was
	unavailable.
	(dwarf2_frame_unwind): Install dwarf2_frame_unwind_stop_reason.
	(dwarf2_signal_frame_unwind): Ditto.

	* amd64-tdep.c: Include "exceptions.h".
	(struct amd64_frame_cache): New field "base_p".
	(amd64_init_frame_cache): Clear it.
	(amd64_frame_cache_1): New, factored out from amd64_frame_cache.
	Avoid reading registers with functions that throw if the register
	is not necessary to compute the frame base.
	(amd64_frame_cache): Reimplement wrapping amd64_frame_cache_1, and
	swallowing NOT_AVAILABLE_ERROR.
	(amd64_frame_unwind_stop_reason): New.
	(amd64_frame_this_id): Don't build a frame id if the frame base
	was unavailable.
	(amd64_frame_unwind): Install amd64_frame_unwind_stop_reason.
	(amd64_sigtramp_frame_cache): Swallow NOT_AVAILABLE_ERROR, and set
	base_p if the frame base was computable.
	(amd64_sigtramp_frame_unwind_stop_reason): New.
	(amd64_sigtramp_frame_this_id): Don't build a frame id if the
	frame base was unavailable.
	(amd64_sigtramp_frame_unwind): Install
	amd64_sigtramp_frame_unwind_stop_reason.
	(amd64_epilogue_frame_cache): Swallow NOT_AVAILABLE_ERROR, and set
	base_p if the frame base was computable.
	(amd64_epilogue_frame_unwind_stop_reason): New.
	(amd64_epilogue_frame_this_id): Don't build a frame id if the
	frame base was unavailable.
	(amd64_epilogue_frame_unwind): Install
	amd64_epilogue_frame_unwind_stop_reason.
	* i386-tdep.c: Include "exceptions.h".
	(struct i386_frame_cache): New field "base_p".
	(i386_init_frame_cache): Clear it.
	(i386_frame_cache_1): New, factored out from amd64_frame_cache.
	Avoid reading registers with functions that throw if the register
	is not necessary to compute the frame base.
	(i386_frame_cache): Reimplement wrapping amd64_frame_cache_1, and
	swallowing NOT_AVAILABLE_ERROR.
	(i386_frame_unwind_stop_reason): New.
	(i386_frame_this_id): Don't build a frame id if the frame base was
	unavailable.
	(i386_frame_prev_register): Handle unavailable SP.
	(i386_frame_unwind): Install i386_frame_unwind_stop_reason.
	(i386_epilogue_frame_cache): Swallow NOT_AVAILABLE_ERROR, and set
	base_p if the frame base was computable.
	(i386_epilogue_frame_unwind_stop_reason): New.
	(i386_epilogue_frame_this_id): Don't build a frame id if the frame
	base was unavailable.
	(i386_epilogue_frame_unwind): Install
	i386_epilogue_frame_unwind_stop_reason.
	(i386_sigtramp_frame_cache): Swallow NOT_AVAILABLE_ERROR, and set
	base_p if the frame base was computable.
	(i386_sigtramp_frame_unwind_stop_reason): New.
	(i386_sigtramp_frame_this_id): Don't build a frame id if the frame
	base was unavailable.
	(i386_sigtramp_frame_unwind): Install
	i386_sigtramp_frame_unwind_stop_reason.
	* sentinel-frame.c (sentinel_frame_prev_register): Use the value
	type's size, not the register's.
	(sentinel_frame_unwind): Install default_frame_unwind_stop_reason.

	* alpha-mdebug-tdep.c (alpha_mdebug_frame_unwind): Install
	default_frame_unwind_stop_reason.
	* alpha-tdep.c (alpha_sigtramp_frame_unwind)
	(alpha_heuristic_frame_unwind): Ditto.
	* amd64obsd-tdep.c (amd64obsd_trapframe_unwind): Ditto.
	* arm-tdep.c (arm_prologue_unwind, arm_stub_unwind): Ditto.
	* avr-tdep.c (avr_frame_unwind): Ditto.
	* cris-tdep.c (cris_sigtramp_frame_unwind, cris_frame_unwind):
	Ditto.
	* frv-linux-tdep.c (frv_linux_sigtramp_frame_unwind): Ditto.
	* frv-tdep.c (frv_frame_unwind): Ditto.
	* h8300-tdep.c (h8300_frame_unwind): Ditto.
	* hppa-hpux-tdep.c (hppa_hpux_sigtramp_frame_unwind): Ditto.
	* hppa-linux-tdep.c (hppa_linux_sigtramp_frame_unwind): Ditto.
	* hppa-tdep.c (hppa_frame_unwind, hppa_fallback_frame_unwind)
	(hppa_stub_frame_unwind): Ditto.
	* i386obsd-tdep.c (i386obsd_trapframe_unwind): Ditto.
	* ia64-tdep.c (ia64_frame_unwind, ia64_sigtramp_frame_unwind)
	(ia64_libunwind_frame_unwind)
	(ia64_libunwind_sigtramp_frame_unwind): Ditto.
	* iq2000-tdep.c (iq2000_frame_unwind): Ditto.
	* lm32-tdep.c (lm32_frame_unwind): Ditto.
	* m32c-tdep.c (m32c_unwind): Ditto.
	* m32r-linux-tdep.c (m32r_linux_sigtramp_frame_unwind): Ditto.
	* m32r-tdep.c (m32r_frame_unwind): Ditto.
	* m68hc11-tdep.c (m68hc11_frame_unwind): Ditto.
	* m68k-tdep.c (m68k_frame_unwind): Ditto.
	* m68klinux-tdep.c (m68k_linux_sigtramp_frame_unwind): Ditto.
	* m88k-tdep.c (m88k_frame_unwind): Ditto.
	* mep-tdep.c (mep_frame_unwind): Ditto.
	* microblaze-tdep.c (microblaze_frame_unwind): Ditto.
	* mips-tdep.c (mips_insn16_frame_unwind, mips_insn32_frame_unwind)
	(mips_stub_frame_unwind): Ditto.
	* mn10300-tdep.c (mn10300_frame_unwind): Ditto.
	* moxie-tdep.c (moxie_frame_unwind): Ditto.
	* mt-tdep.c (mt_frame_unwind): Ditto.
	* ppc-linux-tdep.c (ppu2spu_unwind): Ditto.
	* ppcobsd-tdep.c (ppcobsd_sigtramp_frame_unwind): Ditto.
	* rs6000-tdep.c (rs6000_frame_unwind): Ditto.
	* s390-tdep.c (s390_frame_unwind, s390_stub_frame_unwind)
	(s390_sigtramp_frame_unwind): Ditto.
	* score-tdep.c (score_prologue_unwind): Ditto.
	* sh-tdep.c (sh_frame_unwind): Ditto.
	* sh64-tdep.c (sh64_frame_unwind): Ditto.
	* sparc-sol2-tdep.c (sparc32_sol2_sigtramp_frame_unwind): Ditto.
	* sparc-tdep.c (sparc32_frame_unwind): Ditto.
	* sparc64-sol2-tdep.c (sparc64_sol2_sigtramp_frame_unwind): Ditto.
	* sparc64-tdep.c (sparc64_frame_unwind): Ditto.
	* sparc64fbsd-tdep.c (sparc64fbsd_sigtramp_frame_unwind): Ditto.
	* sparc64nbsd-tdep.c (sparc64nbsd_sigcontext_frame_unwind): Ditto.
	* sparc64obsd-tdep.c (sparc64obsd_frame_unwind)
	(sparc64obsd_trapframe_unwind): Ditto.
	* sparcnbsd-tdep.c (sparc32nbsd_sigcontext_frame_unwind): Ditto.
	* sparcobsd-tdep.c (sparc32obsd_sigtramp_frame_unwind): Ditto.
	* spu-tdep.c (spu_frame_unwind, spu2ppu_unwind): Ditto.
	* v850-tdep.c (v850_frame_unwind): Ditto.
	* vax-tdep.c (vax_frame_unwind): Ditto.
	* vaxobsd-tdep.c (vaxobsd_sigtramp_frame_unwind): Ditto.
	* xstormy16-tdep.c (frame_unwind xstormy16_frame_unwind): Ditto.
	* xtensa-tdep.c (xtensa_unwind): Ditto.

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

	* tui/tui-hooks.c (tui_selected_frame_level_changed_hook): Assume
	there's always a frame.  Use get_frame_pc_if_available instead of
	get_frame_pc, and if there's no PC available, don't look up a
	symtab.

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

	* stack.c (print_frame_local_vars, print_frame_arg_vars): Handle
	unavailable PC.

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

	* tracepoint.c (set_traceframe_context): Handle unavailable PC
	gracefully.

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

	* frame.h (frame_unwind_caller_pc_if_available): Declare.
	* frame.c (frame_unwind_caller_pc_if_available): New.
	* stack.c (frame_info): Handle unavailable PC.

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

	* frame.c (frame_unwind_pc): Rename to ...
	(frame_unwind_pc_if_available): ... this.  New `pc' output
	parameter.  Change return type to int.  Gracefully handle
	gdbarch_unwind_pc throwing NOT_AVAILABLE_ERROR.  Return 0 if that
	happened, or 1 otherwise.
	(frame_unwind_pc): Reimplement on top of
	frame_unwind_pc_if_available.
	(get_frame_func): Rename to ...
	(get_frame_func_if_available): New `pc' output parameter.  Change
	return type to int.  Gracefully handle the PC not being available.
	(get_frame_func): Reimplement on top of
	get_frame_func_if_available.
	(select_frame): Handle the PC being unavailable.
	(get_prev_frame): Handle the PC being unavailable.
	(get_frame_pc_if_available): New.
	(get_frame_address_in_block_if_available): New.
	(find_frame_sal): Handle the frame PC not being available.
	* frame.h (get_frame_pc_if_available): Declare.
	(get_frame_address_in_block_if_available): Declare.
	(get_frame_func_if_available): Declare.
	* stack.c (print_frame_info): Handle the PC being unavailable.
	(find_frame_funname): Ditto.
	(print_frame): Handle the PC being unavailable.
	(get_frame_language): Ditto.
	* blockframe.c (get_frame_block): Ditto.
	* macroscope.c (default_macro_scope): Ditto.
	* tui/tui-stack.c (tui_show_frame_info): Ditto.

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

	* dwarf2loc.c (dwarf2_evaluate_loc_desc): Catch
	NOT_AVAILABLE_ERROR when evaluating the location expression.

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

	* dwarf2loc.c (read_pieced_value): Handle get_frame_register_bytes
	returning that the register piece is unavailable/optimized out.
	(write_pieced_value): Handle get_frame_register_bytes returning
	that the register piece is unavailable/optimized out when doing a
	read-modify write of a bitfield.
	* findvar.c (value_from_register): Handle get_frame_register_bytes
	returning that the register piece is unavailable/optimized out.
	* frame.c (get_frame_register_bytes): New parameters `optimizedp'
	and `unavailablep'.  Throw error on bad debug info.  Use
	frame_register instead of frame_register_read, to fill in the new
	arguments.
	* frame.h (get_frame_register_bytes): New parameters `optimizedp'
	and `unavailablep'.
	* valops.c: (value_assign): Adjust, and handle
	get_frame_register_bytes failing.
	* spu-tdep.c: Include exceptions.h.
	(spu_software_single_step): Adjust, and handle
	get_frame_register_bytes failing.
	(spu_get_longjmp_target): Ditto.
	* gdbarch.sh (register_to_value): Change to return int.  New
	parameters `optimizedp' and `unavailablep'.
	* gdbarch.h, gdbarch.c: Regenerate.
	* i386-tdep.c (i386_register_to_value): Adjust to new
	gdbarch_register_to_value interface.
	* i387-tdep.c (i387_register_to_value): Ditto.
	* i387-tdep.h (i387_register_to_value): Ditto.
	* alpha-tdep.c (alpha_register_to_value): Ditto.
	* ia64-tdep.c (ia64_register_to_value): Ditto.
	* m68k-tdep.c (m68k_register_to_value): Ditto.
	* mips-tdep.c (mips_register_to_value): Ditto.
	* rs6000-tdep.c (rs6000_register_to_value): Ditto.

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

	* findvar.c (value_of_register): Mark the value as unavailable, if
	the register is unavailable.
	* frame.h (frame_register_unwind): New `unavailablep' parameter.
	(frame_register): New `unavailablep' parameter.
	(frame_register_read): Update comment.
	* frame.c (frame_register_unwind): New `unavailablep' parameter.
	Set it if the register is unavailable.  If the register is
	unavailable, clear the output buffer.
	(frame_register): New `unavailablep' parameter.  Pass it down.
	(frame_unwind_register): Adjust.
	(put_frame_register): Adjust.
	(frame_register_read): Adjust.  Also return false if the register
	is not available.
	(frame_register_unwind_location): Adjust.
	* sentinel-frame.c (sentinel_frame_prev_register): If the register
	is unavailable, mark the value accordingly.
	* stack.c (frame_info): Handle unavailable registers.

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

	* mi/mi-main.c (register_changed_p): Handle REG_UNAVAILABLE, and
	simplify, using regcache_cooked_read.

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

	* regcache.h (regcache_raw_read, regcache_raw_read_signed)
	(regcache_raw_read_unsigned, regcache_raw_read_signed)
	(regcache_raw_read_unsigned, regcache_raw_read_part)
	(regcache_cooked_read, regcache_cooked_read_signed)
	(regcache_cooked_read_unsigned, regcache_cooked_read_part)
	(regcache_cooked_read_ftype): Change return to enum
	register_status.
	* regcache.c: Include exceptions.h
	(regcache_save): Adjust to handle REG_UNAVAILABLE registers.
	(do_cooked_read): Change return to enum register_status.  Always
	forward to regcache_cooked_read.
	(regcache_raw_read): Change return to enum register_status.  If
	the register is not REG_VALID, memset the buffer.  Return the
	register's status.
	(regcache_raw_read_signed): Handle non-REG_VALID registers and
	return the register's status.
	(regcache_raw_read_unsigned): Ditto.
	(regcache_cooked_read): Change return to enum register_status.
	Assert that with read-only regcaches, the register's status must
	be known.  If the regcache is read-only, and the register is not
	REG_VALID, memset the buffer.  Return the register's status.
	(regcache_cooked_read_signed): Change return to enum
	register_status.  Handle non-REG_VALID registers and return the
	register's status.
	(regcache_cooked_read_unsigned): Change return to enum
	register_status.  Handle non-REG_VALID registers and return the
	register's status.
	(regcache_xfer_part, regcache_raw_read_part)
	(regcache_cooked_read_part): Change return to enum
	register_status.  Return the register's status.
	(regcache_read_pc): Throw NOT_AVAILABLE_ERROR if the register is
	unavailable.
	(regcache_dump): Handle unavailable cooked registers.
	* frame.c (do_frame_register_read): Adjust interface to match
	regcache_cooked_read_ftype.
	* gdbarch.sh (pseudo_register_read): Change return to enum
	register_status.
	* gdbarch.h, gdbarch.c: Regenerate.

	* i386-tdep.h (i386_pseudo_register_read): Change return to enum
	register_status.
	* i386-tdep.c (i386_pseudo_register_read): Change return to enum
	register_status.  If reading a raw register indicates the raw
	register is not valid, return the raw register's status,
	otherwise, return REG_VALID.
	* amd64-tdep.c (amd64_pseudo_register_read): Change return to enum
	register_status.  Handle non-REG_VALID raw registers and return
	the register's status.
	* arm-tdep.c (arm_neon_quad_read)
	(arm_pseudo_read): Change return to enum register_status.  Handle
	non-REG_VALID raw registers and return the register's status.
	* avr-tdep.c (avr_pseudo_register_read): Ditto.
	* frv-tdep.c (frv_pseudo_register_read): Ditto.
	* h8300-tdep.c (h8300_pseudo_register_read): Ditto.
	* hppa-tdep.c (hppa_pseudo_register_read): Ditto.
	* m32c-tdep.c (m32c_move_reg_t): Change return to enum
	register_status.
	(m32c_raw_read, m32c_raw_write, m32c_banked_read)
	(m32c_banked_write, m32c_sb_read, m32c_sb_write, m32c_part_read)
	(m32c_part_write, m32c_cat_read, m32c_cat_write)
	(m32c_r3r2r1r0_read, m32c_r3r2r1r0_write)
	(m32c_pseudo_register_read): Change return to enum
	register_status.  Adjust.
	* m68hc11-tdep.c (m68hc11_pseudo_register_read): Change return to
	enum register_status.  Return the register's status.
	* mep-tdep.c (mep_pseudo_cr32_read): Change return to enum
	register_status.  Return the register's status.
	(mep_pseudo_cr64_read, mep_pseudo_register_read): Ditto.
	* mips-tdep.c (mips_pseudo_register_read): Ditto.
	* mt-tdep.c (mt_pseudo_register_read): Ditto.
	* rs6000-tdep.c (move_ev_register_func): New typedef.
	(e500_move_ev_register): Use it.  Change return to enum
	register_status.  Return the register's status.
	(do_regcache_raw_read): New function.
	(do_regcache_raw_write): New function.
	(e500_pseudo_register_read): Change return to enum
	register_status.  Return the register's status.  Use
	do_regcache_raw_read.
	(e500_pseudo_register_write): Adjust.  Use do_regcache_raw_write.
	(dfp_pseudo_register_read): Change return to enum register_status.
	Return the register's status.
	(vsx_pseudo_register_read): Ditto.
	(efpr_pseudo_register_read): Ditto.
	(rs6000_pseudo_register_read): Ditto.
	* s390-tdep.c (s390_pseudo_register_read): Change return to enum
	register_status.  Return the register's status.
	* sh64-tdep.c (pseudo_register_read_portions): New function.
	(sh64_pseudo_register_read): Change return to enum
	register_status.  Use pseudo_register_read_portions.  Return the
	register's status.
	* ia64-tdep.c (ia64_pseudo_register_read): Change return to enum
	register_status.  Return the register's status.
	* sh-tdep.c (pseudo_register_read_portions): New function.
	(sh_pseudo_register_read): Change return to enum register_status.
	Use pseudo_register_read_portions.  Return the register's status.
	* sparc-tdep.c (sparc32_pseudo_register_read): Change return to
	enum register_status.  Return the register's status.
	* sparc64-tdep.c (sparc64_pseudo_register_read): Ditto.
	* spu-tdep.c (spu_pseudo_register_read_spu)
	(spu_pseudo_register_read): Ditto.
	* xtensa-tdep.c (xtensa_register_read_masked)
	(xtensa_pseudo_register_read): Ditto.
	* bfin-tdep.c (bfin_pseudo_register_read): Ditto.

2011-03-18  Pierre Muller  <muller@ics.u-strasbg.fr>

	* python/py-value.c (valpy_getitem): Fix formatting of error function
	call.

2011-03-18  Pierre Muller  <muller@ics.u-strasbg.fr>

	ARI fixes: Add missing internationalization markups throughout
	C source files.
	* darwin-nat-info.c: Ditto.
	* record.c: Ditto.
	* remote.c: Ditto.
	* mi/mi-main.c: Ditto.

2011-03-18  Pierre Muller  <muller@ics.u-strasbg.fr>

	ARI fixes: Add missing internationalization markups throughout
	yacc files.
	* c-exp.y: Ditto.
	* cp-name-parser.y: Ditto.
	* f-exp.y: Ditto.
	* m2-exp.y: Ditto.
	* objc-exp.y: Ditto.
	* p-exp.y: Ditto.

2011-03-18  Pierre Muller  <muller@ics.u-strasbg.fr>

	ARI fixes: Messages should have no trailing new lines.
	* darwin-nat.c (mach_check_error): Remove trailing new line from
	warning function call message.
	* record.c (bfdcore_read): Idem for error call.

2011-03-18  Pierre Muller  <muller@ics.u-strasbg.fr>

	* common/signals.c (target_signal_from_host): Add _ markup to error
	function call message.
	(target_signal_to_host): Add _ markup and remove trailing new line
	from warning call message.
	(target_signal_from_command): Add _ markup to error function call
	message.

2011-03-18  Phil Muldoon  <pmuldoon@redhat.com>

	PR python/12149

	* python/python.c (gdbpy_write): Accept a stream argument and
	operate to the appropriate stream.
	(gdbpy_flush): Likewise.
	(_initialize_python): Add stream constants.
	(finish_python_initialization): Add GdbOutputErrorFile class.

2011-03-18  Kwok Cheung Yeung  <kcy@codesourcery.com>

	* MAINTAINERS: Add myself as a write-after-approval maintainer.

2011-03-18  Kwok Cheung Yeung  <kcy@codesourcery.com>

	* amd64-tdep.c (amd64_relocate_instruction): Fix ordering of arguments
	to store_signed_integer.  Add debug message when relocating CALL
	instructions.  Fix formatting of debug message.
	* i386-tdep.c (i386_relocate_instruction): Ditto.

2011-03-17  Joel Brobecker  <brobecker@gnat.com>

	* target.h (struct target_ops): Remove to_lookup_symbol field.
	(target_lookup_symbol): Delete macro.
	* target.c (nosymbol, debug_to_lookup_symbol): Delete.
	(update_current_target, setup_target_debug): Remove handling
	of to_lookup_symbol target_ops field.
	* ada-tasks.c (get_known_tasks_addr): Remove use of
	target_lookup_symbol.
	* coffread.c (coff_symtab_read): Likewise.
	* dbxread.c (read_dbx_symtab): Ditto.

2011-03-17  Joel Brobecker  <brobecker@gnat.com>

	PR gdb/12116:
	* configure.ac: Add getthrds declaration check.
	* configure, config.in: Regenerate.
	* aix-thread.c (getthrds): Declare only if not already declared
	in procinfo.h.  More declaration out of get_signaled_thread to
	global scope.

2011-03-17  Phil Muldoon  <pmuldoon@redhat.com>

	* python/py-symtab.c: Populate symtab_object_methods,
	sal_object_methods.
	(stpy_is_valid): New function.
	(salpy_is_valid): Ditto.
	* python/py-symbol.c: Declare symbol_object_methods.  Populate.
	(sympy_is_valid): New function.
	* python/py-objfile.c: Declare objfile_object_methods.  Populate.
	(objfpy_is_valid): New function.
	* python/py-inferior.c: Populate inferior_object_methods.
	(infpy_is_valid): New function.
	* python/py-infthread.c: Populate thread_object_methods.
	(thpy_is_valid): New function.
	* python/py-block.c: Declare block_object_methods.  Populate.  Declare
	block_iterator_object_methods.  Populate.
	(blpy_is_valid): New function.
	(blpy_iter_is_valid): Ditto.

2011-03-16  Keith Seitz  <keiths@redhat.com>

	* linespec.c (find_methods): Canonicalize NAME before looking
	up the symbol.
	(name_end): New function.
	(keep_name_info): New function.
	(decode_line_1): Use keep_name_info.
	(decode_compound): Likewise.
	* cli/cli-utils.h (remove_trailing_whitespace): New function.
	* cli/cli-utils.c (remove_trailing_whitespace): Likewise.

	PR c++/12273
	* linespec.c (locate_first_half): Keep overload information, too.
	(decode_compound): Use a string to represent break characters
	to escape the loop.
	If P points to a break character, do not increment it.
	For C++ and Java, keep overload information and relevant keywords.
	If we cannot find a symbol, search the minimal symbols.

	PR c++/11734
	* linespec.c (decode_compound): Rename SAVED_ARG to
	THE_REAL_SAVED_ARG.
	Make a copy of THE_REAL_SAVED_ARG in SAVED_ARG and strip
	single-quotes.
	Pass a valid block to lookup_symbol.
	(lookup_prefix_sym): Likewise.
	(find_method): Construct search name based on SYM_CLASS instead
	of SAVED_ARG.
	* psymtab.c (lookup_partial_symbol): Add language parameter.
	(lookup_symbol_aux_psymtabs): Likewise.
	Don't assume that the psymtab we found was the right one. Search
	for the desired symbol in the symtab to be certain.
	(psymtab_search_name): New function.
	(lookup_partial_symbol): Use psymtab_search_name.
	Add language parameter.
	(read_symtabs_for_function): Add language parameter and pass to
	lookup_partial_symbol.
	(find_symbol_file_from_partial): Likewise.

2011-03-16  Paul Pluzhnikov  <ppluzhnikov@google.com>

	PR gdb/12528
	* dwarf2read.c (noop_record_line): New function.
	(dwarf_decode_lines): Ignore line tables for GCd functions.

2011-03-16  Pierre Muller  <muller@ics.u-strasbg.fr>

	Fix ARI warnings about new lines at the end of messages, which
	are unneeded as there is a new line added at the end of the message
	automatically.
	* darwin-nat.c (darwin_stop_inferior): Ditto.
	* dec-thread.c (dec_thread_get_ada_task_ptid): Ditto.
	* dfp.c (decimal_to_number): Ditto.
	* exec.c (print_section_info): Ditto.
	* i386-darwin-nat.c (darwin_set_sstep): Ditto.
	* osdata.c (get_osdata): Ditto.
	* record.c (bfdcore_write): Ditto.
	* remote-mips.c (mips_readchar): Ditto.
	* remote.c (read_ptid): Ditto.
	* ser-mingw.c (ser_windows_raw): Ditto.
	* tracepoint.c (add_local_symbols): Ditto.
	* windows-nat.c (fake_create_process): Ditto.

2011-03-16  Tom Tromey  <tromey@redhat.com>

	* tracepoint.c (stop_tracing): Don't declare.
	* event-top.c (after_char_processing_hook): Add `(void)'.

2011-03-16  Phil Muldoon  <pmuldoon@redhat.com>

	* NEWS: Add Parameter sub-classing description.

2011-03-16  Kai Tietz  <ktietz@redhat.com>

	* MAINTAINERS: Update my e-mail address.

2011-03-15  Andreas Tobler  <andreast@fgznet.ch>

	* MAINTAINERS: Add myself for write after approval privileges.

2011-03-15  Michael Snyder  <msnyder@vmware.com>

	* frame.c (find_frame_sal): Assert sym is not null.

	* dbxread.c (process_one_symbol): Assert 'name' is not null.

	* objc-lang.c (selectors_info): Check strchr for null result.

	* stabsread.c (define_symbol): Guard against bad stabstring input.

2011-03-15  Pierre Muller  <muller@ics.u-strasbg.fr>

	Remove trailing spaces and tabulations from pascal language
	support sources.
	p-exp.y: Ditto.
	p-lang.c: Ditto.
	p-lang.h: Ditto.
	p-valprint.c: Ditto.

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

	* dwarf2read.c (dwarf2_get_pc_bounds): Require HIGH strictly higher
	than LOW.  Comment it.
	(read_partial_die): Call complaint for inappropriate zero LOWPC or
	HIGHPC not strictly higher than LOWPC.

2011-03-15  Pierre Muller  <muller@ics.u-strasbg.fr>

	Fix formatting of function declarations returning a pointer in
	previous commit.
	* varobj.c (varobj_add_child): Ditto.
	* hppa-tdep.h (hppa_init_objfile_priv_data): Ditto.
	* inferior.h (get_displaced_step_closure_by_addr): Ditto.

2011-03-15  Ulrich Weigand  <uweigand@de.ibm.com>

	* ppc-sysv-tdep.c (ppc64_sysv_abi_push_dummy_call): Add support
	for the "generic" vector ABI used with GCC 4.3 and later.
	(ppc64_sysv_abi_return_value): Likewise.

2011-03-15  Ulrich Weigand  <uweigand@de.ibm.com>

	* infcall.c (call_function_by_hand): Function return value is
	always a non_lval, even when using struct_return.

2011-03-15  Pedro Alves  <pedro@codesourcery.com>

	* printcmd.c (ALL_DISPLAYS_SAFE): New.
	(map_display_numbers): New.
	(do_delete_display): New.
	(undisplay_command): Use map_display_numbers.
	(do_enable_disable_display): New.
	(enable_disable_display_command): New function.
	(enable_display): Delete.
	(enable_display_command): New.
	(disable_display_command): Reimplement.
	(_initialize_printcmd): Adjust "enable display" command to use
	`enable_display_command' as callback.

2011-03-14  Phil Muldoon  <pmuldoon@redhat.com>

	* NEWS: Add Python breakpoint 'stop' operation.

2011-03-14  Phil Muldoon  <pmuldoon@redhat.com>

	* NEWS: Delete duplicate entry. Fix typo.

2011-03-14  Pierre Muller  <muller@ics.u-strasbg.fr>

	Fix ARI warning about function names in first column.
	Put prototype declaration on same line as return type.
	* objc-exp.y: Ditto.
	* p-exp.y: Ditto.
	* python/py-stopevent.h: Ditto.
	For long function names, split parameters to
	allow function name on same line as return type.
	* solib-pa64.c: Ditto.
	* varobj.c: Ditto.
	* varobj.h: Ditto.
	For long function declaration, use single line.
	* hppa-tdep.h: Ditto.
	* inferior.h: Ditto.

2011-03-14  Phil Muldoon  <pmuldoon@redhat.com>

	* python/python.h: Declare gdbpy_should_stop and
	gdbpy_breakpoint_has_py_cond.
	* python/python.c: Add python.h to includes.  Remove python.h from
	HAVE_PYTHON definition
	(gdbpy_should_stop): New dummy function.
	(gdbpy_breakpoint_has_py_cond): New dummy function.
	* python/py-breakpoint.c (bppy_init): Rewrite to allow
	sub-classing capabilities.
	(gdbpy_should_stop): New function.
	(gdbpy_breakpoint_has_py_cond): New function.
	(local_setattro): New function.
	* breakpoint.c (condition_command): Add check for Python 'stop'
	operation.
	(bpstat_check_breakpoint_conditions): Execute Python 'stop'
	operation function as part of stop/continue tests.

2011-03-14  Tom Tromey  <tromey@redhat.com>

	PR gdb/12576:
	* dwarf2loc.c (dwarf_expr_dwarf_call): Remove 'return'.
	(needs_frame_dwarf_call): Likewise.

2011-03-14  Pierre Muller  <muller@ics.u-strasbg.fr>

	Fix ARI warning about functions without parameters that do not
	use (void).
	* breakpoint.c (all_tracepoints): Replace () by (void).
	* f-exp.y (match_string_literal): Ditto.
	(yylex): Ditto.
	* m2-exp.y (yylex): Ditto.
	* mep-tdep.c (current_me_module): Ditto.
	(current_options): Ditto.
	(current_cop_data_bus_width): Ditto.
	(current_cr_names): Ditto.
	(current_cr_is_float): Ditto.
	(current_ccr_names): Ditto.
	* objc-exp.y (yylex): Ditto.
	* p-exp.y (yylex): Ditto.
	* remote.c (send_interrupt_sequence): Ditto.
	* tracepoint.c (current_trace_status): Ditto.
	* python/py-evts.c (gdbpy_initialize_py_events): Ditto.
	* python/py-prettyprint.c (push_dummy_python_frame): Ditto.

2011-03-11  Michael Snyder  <msnyder@vmware.com>

	* cli/cli-decode.h (CMD_LIST_AMBIGUOUS): Define.
	* cli/cli-decode.c (lookup_cmd_1): Use CMD_LIST_AMBIGUOUS.
	(lookup_cmd): Test for CMD_LIST_AMBIGUOUS.
	* completer.c (complete_line_internal): Use CMD_LIST_AMBIGUOUS.
	* top.c (set_verbose): Use CMD_LIST_AMBIGUOUS.

	* event-loop-c (delete_async_signal_handler): Assert prev_ptr.
	(delete_async_event_handler): Ditto.

	* python/py-breakpoint.c (bppy_set_condition): Stop memory leak.

	* python/py-breakpoint.c (bppy_get_commands): Fix memory leak.

	* top.c (set_verbose): Assert showcmd was found.

2011-03-11  Maxim Grigoriev  <maxim2405@gmail.com>

	* xtensa-tdep.c (warning_once): Correct style issues.

2011-03-11  Yao Qi  <yao@codesourcery.com>

	* arm-tdep.c (copy_ldr_str_ldrb_strb): Remove redundant statements.

2011-03-11  Andreas Schwab  <schwab@redhat.com>

	* common/aclocal.m4: Remove.

2011-03-10  Maxim Grigoriev  <maxim2405@gmail.com>

	* xtensa-tdep.c (windowing_enabled): Remove inline attribute.
	(xtensa_write_register, xtensa_read_register): Likewise.
	(xtensa_hextochar): Removed.
	(xtensa_init_reggroups): Replace xtensa_hextochar () by explicit code.

2011-03-10  Maxim Grigoriev  <maxim2405@gmail.com>

	* xtensa-tdep.c (xtensa_c0reg_t): Update comments.
	(xtensa_call0_frame_cache_t): Update comments.  New fields added.
	(xtensa_alloc_frame_cache): Add initialization for new fields.
	(xtensa_frame_cache): Change the way how call0_frame_cache () is called.
	(warning_once): New function.
	(xtensa_insn_kind): New item c0opc_and.
	(call0_classify_opcode): Add the case for AND instruction.
	(call0_track_op): Change arguments.  New local variable litbase.
	Add the case to handle c0opc_and.  Update algorithms for c0opc_mov,
	c0opc_l32r, c0opc_s32i to take into account dynamic stack adjustments
	in the prologue.
	Add cases for c0opc_l32e, c0opc_s32e, c0opc_rfwo, c0opc_rfwu.
	(call0_analyze_prologue): Update the comments.  Change arguments.
	Add the variety of updates to handle extended prologues, which now can
	conduct dynamic stack adjustments.
	(call0_frame_cache): Likewise.
	(xtensa_skip_prologue): Update call0_analyze_prologue () function call.
	(xtensa_gdbarch_init): Initialize xtensa_session_once_reported.

2011-03-10  Michael Snyder  <msnyder@vmware.com>

	* tracepoint.c (cmd_qtv): Discard unused value 'packet'.
	(cmd_qtframe): Ditto.
	(cmd_qtbuffer): Ditto.
	(cmd_bigqtbuffer): Ditto.

2011-03-10  Tom Tromey  <tromey@redhat.com>

	* tracepoint.c (trace_actions_command): Update.
	* thread.c (thread_apply_command): Update.
	* reverse.c (delete_bookmark_command): Update.
	(bookmarks_info): Update.
	* printcmd.c (undisplay_command): Update.
	* memattr.c (mem_enable_command): Update.
	(mem_disable_command): Update.
	(mem_delete_command): Update.
	* inferior.c (detach_inferior_command): Update.
	(kill_inferior_command): Update.
	(remove_inferior_command): Update.
	* cli/cli-utils.h (struct get_number_or_range_state): New.
	(init_number_or_range): Declare.
	(get_number_or_range): Update.
	* cli/cli-utils.c (init_number_or_range): New function.
	(get_number_or_range): Change 'pp' parameter to 'state'.  Remove
	static variables.
	(number_is_in_list): Update.
	* breakpoint.h (get_tracepoint_by_number): Update.
	* breakpoint.c (map_breakpoint_numbers): Update for change to
	get_number_or_range.
	(find_location_by_number): Use get_number, not
	get_number_or_range.
	(trace_pass_set_count): New function.
	(trace_pass_command): Update for change to get_number_or_range.
	Rework loop logic.
	(get_tracepoint_by_number): Remove 'multi_p' parameter; add
	'state' parameter.

2011-03-10  Phil Muldoon  <pmuldoon@redhat.com>

	* python/py-param.c (add_setshow_generic): Add set/show callback
	parameters.  Register Python object context.
	(get_show_value): New function.
	(get_set_value): New function.
	(call_doc_function): New function.
	(get_doc_string): Move behind get_show_value/get_set_value.

2011-03-10  Andreas Tobler  <andreast-list@fgznet.ch>

	* fbsd-nat.c (fbsd_make_corefile_notes): Constify local `fname'.

2011-03-09  Maxim Grigoriev  <maxim2405@gmail.com>

	* xtensa-tdep.c (xtensa_read_register): Add comment.
	(xtensa_write_register): Likewise.
	(xtensa_hextochar): Add comment and update to match coding conventions.
	(xtensa_frame_cache, xtensa_return_value): Follow coding conventions.
	(execute_l32e, execute_s32e, execute_code): Update comments.
	(xtensa_exception_handler_t): Update to match coding conventions.
	(xtensa_insn_kind): Likewise.

2011-03-09  Michael Snyder  <msnyder@vmware.com>

	* mi-cmd-disas.c (mi_cmd_disassemble): Fix memory leak.

2011-03-09  Pedro Alves  <pedro@codesourcery.com>

	* nto-tdep.c (nto_find_and_open_solib): Constify local `base'.

2011-03-09  Tom Tromey  <tromey@redhat.com>

	* thread.c (restore_selected_frame): Handle frame_level == -1.
	(make_cleanup_restore_current_thread): Use
	get_selected_frame_if_set.
	* frame.h (get_selected_frame_if_set): Declare.
	* frame.c (get_selected_frame_if_set): New function.

2011-03-09  Pedro Alves  <pedro@codesourcery.com>

	* cli/cli-cmds.c (shell_escape): Use lbasename.
	* coffread.c (coff_start_symtab): Constify parameter.
	(complete_symtab): Constify `name' parameter.
	(coff_symtab_read): Constify `filestring' local.
	(coff_getfilename): Constify return and `result' local.
	Use lbasename.
	* fbsd-nat.c (fbsd_make_corefile_notes): Use lbasename.
	* linux-fork.c (info_checkpoints_command): Use lbasename.
	* linux-nat.c (linux_nat_make_corefile_notes): Use lbasename.
	* minsyms.c (lookup_minimal_symbol): Use lbasename.
	* nto-tdep.c (nto_find_and_open_solib): Use lbasename.
	* procfs.c (procfs_make_note_section): Use lbasename.
	* tui/tui-io.c (printable_part): Constity return and parameter.
	Use lbasename.
	(print_filename): Constify parameters, and local `s'.
	(tui_rl_display_match_list): Constify local `temp'.

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

	Revert:
	2011-03-08  Jan Kratochvil  <jan.kratochvil@redhat.com>
	Fix DWARF-3+ DW_AT_accessibility default assumption.
	* dwarf2read.c (dwarf2_add_field): Fix new_field->accessibility for
	cu->header.version >= 3.

2011-03-09  Yao Qi  <yao@codesourcery.com>

	* common/Makefile.in: Remove.
	* common/configure: Remove.
	* common/configure.ac: Remove.

2011-03-09  Yao Qi  <yao@codesourcery.com>

	Revert:
	2011-02-11  Yao Qi  <yao@codesourcery.com>

	* common/Makefile.in: Add copyright header.

	2011-02-11  Yao Qi  <yao@codesourcery.com>

	* Makefile.in: Remove signals.o from COMMON_OBS.  Link
	libcommon.a.
	* configure.ac: Add common to sub dir.
	* configure: Regenerate.

2011-03-08  Maxim Grigoriev  <maxim2405@gmail.com>

	* xtensa-tdep.c (call0_ret): New function.
	(xtensa_skip_prologue): Speed up analysis.

2011-03-08  Maxim Grigoriev  <maxim2405@gmail.com>

	* xtensa-tdep.c (xtensa_register_reggroup_p): Count in all registers
	while executing MI command -data-list-changed-registers.

2011-03-08  Maxim Grigoriev  <maxim2405@gmail.com>

	* xtensa-tdep.c (xtensa_read_register): New function.
	(xtensa_write_register): New function.
	(xtensa_find_register_by_name): New function.
	(xtensa_windowed_frame_cache): Update comments in type description.
	(xtensa_frame_cache): Likewise.
	(xtensa_window_interrupt_insn): New function.
	(xtensa_frame_cache): Add analysis for Xtensa Window Exception frames.
	(xtensa_insn_kind): Add new instructions.
	(rwx_special_register): New function.
	(call0_classify_opcode): Add new instructions to the analysis.
	(a0_saved, a7_saved, a11_saved): New variables.
	(a0_was_saved, a7_was_saved, a11_was_saved): New variables.
	(execute_l32e): New function.
	(execute_s32e): New function.
	(xtensa_exception_handler_t): New type.
	(execute_code): New function.
	(xtensa_window_interrupt_frame_cache): New function to conduct frame
	analysis for Xtensa Window Exception handlers.

2011-03-08  Maxim Grigoriev  <maxim2405@gmail.com>

	* xtensa-tdep.c (TX_PS): New.
	(windowing_enabled): Update to count for Call0 ABI.
	(xtensa_hextochar): New.
	(xtensa_init_reggroups): Make algorithm generic.
	(xtensa_frame_cache): Use TX_PS on Tiny Xtensa.

2011-03-08  Maxim Grigoriev  <maxim2405@gmail.com>

	* xtensa-tdep.h (XTENSA_MAX_COPROCESSOR): Update.

2011-03-08  Michael Snyder  <msnyder@vmware.com>

	* i386-tdep.c (i386_follow_jump): Check return value of
	target_read_memory.
	(i386_analyze_struct_return): Ditto.
	(i386_skip_probe): Ditto.
	(i386_match_insn): Ditto.
	(i386_skip_noop): Ditto.
	(i386_analyze_frame_setup): Ditto.
	(i386_analyze_register_saves): Ditto.
	(i386_skip_prologue): Ditto.
	(i386_skip_main_prologue): Ditto.

	* target.c (read_whatever_is_readable): Fix memory leak.

	* i386-tdep.c (i386_process_record): Document fall through.

2011-03-08  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix DWARF-3+ DW_AT_accessibility default assumption.
	* dwarf2read.c (dwarf2_add_field): Fix new_field->accessibility for
	cu->header.version >= 3.

2011-03-08  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (remote_check_symbols): Skip if the target has no
	execution.

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

	* target.c (read_whatever_is_readable): Reformat comment,
	with a minor typo fix. Minor reformatting of the code.

2011-03-08  Yao Qi  <yao@codesourcery.com>

	* arm-tdep.c: Remove prototype declaration displaced_in_arm_mode.
	(displaced_read_reg): Add `dsc' parameter, remove `from' parameter.
	Use cached result instead of calling displaced_in_arm_mode again.
	(branch_write_pc, alu_write_pc, load_write_pc): Add `dsc' parameter.
	(displaced_write_reg, copy_preload, copy_preload_reg): Callers update.
	(cleanup_copro_load_store, copy_copro_load_store): Likewise.
	(cleanup_branch, copy_bx_blx_reg, copy_alu_imm): Likewise.
	(cleanup_alu_reg, copy_alu_reg, cleanup_alu_shifted_reg): Likewise.
	(copy_alu_shifted_reg, cleanup_load, cleanup_store): Likewise.
	(copy_extra_ld_st, copy_ldr_str_ldrb_strb): Likewise.
	(cleanup_block_load_all, cleanup_block_store_pc): Likewise.
	(cleanup_block_load_pc, copy_block_xfer): Likewise.
	* arm-linux-tdep.c (arm_linux_copy_svc): Callers update.
	(arm_catch_kernel_helper_return): Likewise.
	* gdb/arm-tdep.h : Update function declarations.

2011-03-07  Michael Snyder  <msnyder@vmware.com>

	* dwarf2loc.c (indirect_pieced_value): Assert 'piece' not null.

	* ser-unix.c (hardwire_get_tty_state): Stop memory leak.

	* mi/mi-cmd-env.c (_initialize_mi_cmd_env): Free environment.

	* elfread.c (elf_symtab_read): Stop memory leak.

	* main.c (captured_main): Fix memory leak.

2011-03-07  Andreas Schwab  <schwab@linux-m68k.org>

	* ada-lang.c (compare_names): Call is_name_suffix with string1
	instead of string2.

2011-03-07  Tom Tromey  <tromey@redhat.com>

	* xcoffread.c (xcoff_sym_fns): Update.
	* symfile.h (struct sym_fns) <sym_read_psymbols>: New field.
	(enum symfile_add_flags) <SYMFILE_NO_READ>: New constant.
	* symfile.c (syms_from_objfile): Handle SYMFILE_NO_READ.
	(symbol_file_add_with_addrs_or_offsets): Likewise.
	(reread_symbols): Handle OBJF_PSYMTABS_READ.
	* somread.c (som_sym_fns): Update.
	* psymtab.h (require_partial_symbols): Declare.
	* psymtab.c (require_partial_symbols): New function.
	(ALL_OBJFILE_PSYMTABS_REQUIRED): New macro.
	(ALL_OBJFILE_PSYMTABS): Undef.
	(ALL_PSYMTABS): Move from psympriv.h.
	(lookup_partial_symtab, find_pc_sect_psymtab)
	(lookup_symbol_aux_psymtabs, relocate_psymtabs)
	(find_last_source_symtab_from_partial)
	(forget_cached_source_info_partial)
	(print_psymtab_stats_for_objfile, read_symtabs_for_function)
	(expand_partial_symbol_tables, read_psymtabs_with_filename)
	(map_symbol_names_psymtab, map_symbol_filenames_psymtab)
	(find_symbol_file_from_partial, map_matching_symbols_psymtab)
	(expand_symtabs_matching_via_partial, maintenance_info_psymtabs):
	Use ALL_OBJFILE_PSYMTABS_REQUIRED.
	* psympriv.h (ALL_PSYMTABS): Move to psymtab.c.
	* objfiles.h (OBJF_PSYMTABS_READ): New macro.
	* objfiles.c (objfile_has_partial_symbols): Handle lazily-read
	psymtabs.
	* mipsread.c (ecoff_sym_fns): Update.
	* machoread.c (macho_sym_fns): Update.
	* elfread.c (elf_symfile_read): Set up for lazy psymtab reading.
	(read_psyms): New function.
	(elf_sym_fns, elf_sym_fns_gdb_index): Update.
	(elf_sym_fns_lazy_psyms): New global.
	* dwarf2read.c (dwarf2_initialize_objfile): Don't call
	dwarf2_build_psymtabs.
	* dbxread.c (aout_sym_fns): Update.
	* coffread.c (coff_sym_fns): Update.

2011-03-07  Tom Tromey  <tromey@redhat.com>

	* infrun.c (print_exited_reason): Include inferior id and pid in
	message.

2011-03-07  Tom Tromey  <tromey@redhat.com>

	* target.h (struct target_ops) <to_has_execution>: Add ptid_t
	parameter.
	(target_has_execution_1): Update.
	(target_has_execution_current): Declare.
	(target_has_execution): Call target_has_execution_current.
	(default_child_has_execution): Update.
	* target.c (default_child_has_execution): Add 'the_ptid'
	parameter.
	(target_has_execution_1): Likewise.
	(target_has_execution_current): New function.
	(add_target): Update.
	(init_dummy_target): Update.
	* remote-m32r-sdi.c (m32r_has_execution): New function.
	(init_m32r_ops): Use it.
	* record.c (record_core_has_execution): Now static.  Add
	'the_ptid' parameter.
	* inferior.c (have_live_inferiors): Don't save current thread.
	Use target_has_execution_1.

2011-03-07  Yao Qi  <yao@codesourcery.com>

	* Makefile.in (aclocal_m4_deps): Remove gnulib/m4/memcmp.m4.

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

	* elfread.c (elf_symtab_read): Minor reformatting.

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

	* objc-lang.c (selectors_info): Minor reformatting.

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

	* ada-lang.c (compare_names): Add FALLTHROUGH comment.

2011-03-07  Joel Brobecker  <brobecker@adacore.com>
	    Michael Snyder  <msnyder@vmware.com>

	* ada-valprint.c (ada_val_print_array): Move the declaration of
	"byte_order" and "elttype" inside the block where these variables
	are actually used.  Remove some special handling for the case
	where "elttype" and "eltlen" are null.  Replace by a comment
	and a couple of assertion checks.

2011-03-05  Michael Snyder  <msnyder@vmware.com>

	* source.c (add_path): Replace semicolon at end of block.
	* dwarf2expr.c (execute_stack_op): Ditto.

2011-03-05  Mike Frysinger  <vapier@gentoo.org>

	* bfin-tdep.c: Include sim-regno.h and gdb/sim-bfin.h.
	* configure.tgt (bfin-*-*linux*): Define gdb_sim.
	(bfin-*-*): Likewise.

2011-03-05  Michael Snyder  <msnyder@vmware.com>

	* dwarf2expr.c (execute_stack_op): Delete superfluous semicolon.
	* mdebugread.c (parse_symbol): Ditto.
	* parse.c (parse_exp_in_context): Ditto.
	* source.c (add_path): Ditto.
	* utils.c (gnu_debuglink_crc32): Ditto.
	* varobj.c (variable_language): Ditto.

	* linux-tdep.c (linux_get_siginfo_type): Stop memory leak.

2011-03-04  Michael Snyder  <msnyder@vmware.com>

	* linux-fork.c (inferior_call_waitptid): Fix copy/paste error.

	* symfile.c (simple_overlay_update): Check for null return value
	from lookup_minimal_symbol.

	* xml-syscall.c (syscall_start_syscall): Assert name is non null.

2011-03-04  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* eval.c (parse_and_eval_address_1): Remove function.
	* linespec.c (decode_indirect): Call parse_to_comma_and_eval
	instead of parse_and_eval_address_1.
	* value.h (parse_and_eval_address_1): Remove prototype.

2011-03-04  Michael Snyder  <msnyder@vmware.com>

	* remote.c (putpkt_binary): Document that case stmt falls through.

2011-03-04  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* breakpointc (print_it_typical): Move NULL check from here...
	(print_bp_stop_message): ... to here.

2011-03-04  Michael Snyder  <msnyder@msnyder-server.eng.vmware.com>

	* breakpoint.c (enable_command): Use break instead of continue,
	and fill in a missing break.
	(disable_command): Ditto.

2011-03-04  Ulrich Weigand  <ulrich.weigand@linaro.org>

	* inflow.c (terminal_init_inferior_with_pgrp): Copy ttystate.
	(terminal_save_ours): Remove misleading comment.
	(inflow_inferior_data_cleanup): Free ttystate.
	(inflow_inferior_exit): Likewise.
	(copy_terminal_info): Copy ttystate.

	* serial.c (serial_copy_tty_state): New function.
	* serial.h (serial_copy_tty_state): Add prototype.
	(struct serial_ops): Add copy_tty_state callback.
	* ser-base.c (ser_base_copy_tty_state): New function.
	* ser-base.h (ser_base_copy_tty_state): Add prototype.
	* ser-go32.c (dos_copy_tty_state): New function.
	(dos_ops): Install copy_tty_state callback.
	* ser-mingw.c (_initialize_ser_windows): Likewise.
	* ser-pipe.c (_initialize_ser_pipe): Likewise.
	* ser-unix.c (hardwire_copy_tty_state): New function.
	(_initialize_ser_hardwire): Install it.

2011-03-04  Michael Snyder  <msnyder@vmware.com>

	* breakpoint.c (create_breakpoint): Add missing break statement.

	Reverting this patch:
	* infcall.c (call_function_by_hand): Add break statements for lint.

	Reverting this patch:
	* cli/cli-script.c (script_from_file): Add break for lint.

2011-03-04  Michael Snyder  <msnyder@vmware.com>

	* solib.c (reload_shared_libraries_1): Close memory leak.

2011-03-03  Tom Tromey  <tromey@redhat.com>

	PR gdb/12538:
	* dwarf2read.c (process_psymtab_comp_unit): Handle case where
	DW_STRING is NULL.

2011-03-03  Michael Snyder  <msnyder@vmware.com>

	* remote-fileio.c (remote_fileio_func_fstat): Initialize all
	fields of struct 'st' to zero.

	* tui/tui-winsource.c (tui_update_source_window_as_is): Initialize
	sal.pspace before calling set_current_source_symtab_and_line.

2011-03-03  Yao Qi  <yao@codesourcery.com>

	* Makefile.in (configure-common): Remove.  Let Makefile
	in dir common to rebuild itself.
	(common/Makefile): Likewise.

2011-03-03  Joel Brobecker  <brobecker@adacore.com>

	* utils.c (parse_escape): Add i18n markup in error message.

2011-03-03  Yao Qi  <yao@codesourcery.com>

	* gdb/arm-tdep.c (shifted_reg_val): Replace magic number 15 with
	ARM_PC_REGNUM.
	(thumb_get_next_pc_raw, arm_get_next_pc_raw): Likewise.
	(displaced_write_reg, displaced_read_reg): Likewise.
	(copy_ldr_str_ldrb_strb, cleanup_block_load_all): Likewise.
	(cleanup_block_load_pc, copy_block_xfer): Likewise.
	(cleanup_branch): Replace magic number 14 and 15 with
	ARM_LR_REGNUM and ARM_PC_REGNUM respectively.

2011-03-02  Michael Snyder  <msnyder@vmware.com>

	* maint.c (maintenance_do_deprecate): No need to check for NULL.

	* cli/cli-script.c (script_from_file): Add break for lint.

	* mdebugread.c (parse_partial_symbols): Fix indent.

	* target-descriptions.c (tdesc_gdb_type): No need to call
	xstrdup, callee saves a copy.

	* printcmd.c (print_scalar_formatted): Use strncpy for safety.

	* infcall.c (call_function_by_hand): Add break statements for lint.

	* utils.c (parse_escape): Escape the escape char.

	* python/py-inferior.c (build_inferior_list): Error out if
	PyList_Append fails.
	(gdbpy_inferiors): Error out if build_inferior_list fails.

	* linux-nat.c (linux_nat_xfer_partial): Preserve errno around
	a function call.

	* record.c (record_restore): Move printf to before error return.

2011-03-02  Yao Qi  <yao@codesourcery.com>

	* arm-tdep.h (struct displaced_step_closure): Add two new fields
	is_thumb and insn_size.
	* arm-tdep.c (displaced_read_reg): Adjust correct pipeline offset
	on both ARM and Thumb mode.
	(arm_process_displaced_insn): Set is_thumb and insn_size.
	(arm_displaced_init_closure): Handle both 16-bit and 32-bit.
	(arm_displaced_step_fixup): Likewise.

2011-03-01  Michael Snyder  <msnyder@vmware.com>

	* cli/cli-dump.c (dump_bfd_file): Check error return and warn.

	* jv-lang.c (evaluate_subexp_java): Conditional can't be true.

	* dwarf2read.c (dwarf2_compute_name): NAME cannot be null here.

	* cli/cli-dump.c (restore_binary_file): Validate ftell return value.

	* ada-lang.c (ada_make_symbol_completion_list): Replace malloc
	with xmalloc.

	* ada-lang.c (aggregate_assign_others): Rename inner scope variable
	which shadows function parameter.

	* tracepoint.c (create_tsv_from_upload): Superfluous call
	to xstrdup.  Callee already calls xstrdup.

	* linespec.c (decode_line_1): Remove unnecessary null check.

	* tracepoint.c (scope_info): Fix mem leak, remove underused
	variable.

	* python/py-prettyprint.c (apply_val_pretty_printer): Remove
	superfluous null check.

	* std-regs.c (value_of_builtin_frame_pc_reg): Frame can't be null.
	(value_of_builtin_frame_fp_reg): Ditto.

	* event-top.c (display_gdb_prompt): Remove superfluous null check.

	* python/py-prettyprint.c (apply_val_pretty_printer): VAL may
	be null.

	* linespec.c (decode_line_1): Check for null before dereference.

	* reverse.c (record_restore): Move null-check to before pointer
	dereference.

	* python/py-utils.c (gdbpy_obj_to_string): Delete unused variable.

	* objc-lang.c (selectors_info): Add explanitory comment.
	(classes_info): Ditto.

2011-03-01  Ulrich Weigand  <ulrich.weigand@linaro.org>

	* arm-linux-tdep.c (ARM_LDR_PC_SP_4): Add define.
	(arm_linux_restart_syscall_init): Handle both on-stack and in-kernel
	versions of the trampoline.  Handle Thumb vs. ARM addresses.
	(arm_kernel_linux_restart_syscall_tramp_frame): New global.
	(arm_linux_init_abi): Install it.
	* arm-tdep.c (arm_psr_thumb_bit): Make global.
	* arm-tdep.c (arm_psr_thumb_bit): Add prototype.

2011-02-28  Michael Snyder  <msnyder@vmware.com>

	* ui-out.c (ui_out_field_core_addr): Make local char buffer
	a little bigger, to avoid possibility of an overflow.

	* breakpoint.c (breakpoint_adjustment_warning): Make local char
	buffers a little bigger, to avoid possibility of an overflow.

	* coffread.c (coff_getfilename): Add check to avoid overflow.

	* objc-lang.c (selectors_info): Add a small safety margin to
	avoid overflow.
	(classes_info): Error out on too long REGEXP.

	* infrun.c (handle_inferior_event): Remove unused function call.

	* fork-child.c (fork_inferior): Remove ifdef'd code and
	unused variable.

	* linux-thread-db.c (attach_thread): Discard unused value.

	* linux-nat.c (linux_handle_extended_wait): Delete unused variable.

	* remote.c (remote_get_noisy_reply): Discard unused value.
	(remote_vcont_resume): Ditto.
	(remote_stop_ns): Ditto.

	* linespec.c (decode_objc): Delete unused variable.

	* tui/tui-regs.c (tui_register_format): Delete unused variable.

	* dwarf2read.c (add_partial_symbol): Discard unused values.
	(read_base_type): Delete unused variable.

	* dbxread.c (read_dbx_symtab): Discard unused value.

	* eval.c (evaluate_subexp_standard): Delete unused variable,
	and discard unused values.

	* infcmd.c (_initialize_infcmd): Discard unused values.

	* stabsread.c (rs6000_builtin_type): Missing break statement.

	* dbxread.c (process_one_symbol): Discard unused value.

	* coffread.c (coff_end_symtab): Delete unused variable.

	* dwarf2read.c (dw2_get_file_names): Discard unused value.
	(dwarf2_add_typedef): Delete unused variable.
	(read_namespace): Ditto.
	(dwarf_decode_macros): Ditto.

	* m2-lang.c (evaluate_subexp_modula2): Discard unused variable.

	* opencl-lang.c (evaluate_subexp_opencl): Discard unused value.

	* p-valprint.c (pascal_val_print): Discard unused value.

	* utils.c (nquery): Call va_end before return;
	(yquery): Ditto.
	(query): Ditto.

	* proc-service.c (ps_plog): Call va_end before return.

2011-02-28  Tom Tromey  <tromey@redhat.com>

	* python/python.c (gdbpy_value_cst): New global.
	(_initialize_python): Initialize it.
	* python/python-internal.h (gdbpy_value_cst): Declare.
	* python/py-value.c (convert_value_from_python): Use
	gdbpy_value_cst.

2011-02-28  Michael Snyder  <msnyder@vmware.com>

	* python/py-cmd.c (cmdpy_init): Fix memory leak.

	* breakpoint.c (catch_syscall_completer): Free malloced list.

	* jv-lang.c (java_primitive_type_from_name): Add missing break.

	* opencl-lang.c (lval_func_check_validity): Rename inner variables.
	(lval_func_check_synthetic_pointer): Ditto.
	(lval_func_free_closure): Fix use-after-free.

2011-02-28  Tom Tromey  <tromey@redhat.com>

	* psymtab.c (expand_partial_symbol_tables): Use
	ALL_OBJFILE_PSYMTABS.

2011-02-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* objc-lang.c (selectors_info): Error on too long REGEXP.

2011-02-28  Michael Snyder  <msnyder@vmware.com>

	* python/py-param.c (set_parameter_value): Add missing
	break statement.

	* linux-record.c (record_linux_system_call): Add missing
	break statement.

2011-02-28  Ulrich Weigand  <uweigand@de.ibm.com>

	* breakpoint.c (print_one_breakpoint_location): Remove unused
	argument PRINT_ADDRESS_BITS.  Update callers.
	(print_one_breakpoint): Likewise.

2011-02-28  Ulrich Weigand  <uweigand@de.ibm.com>

	* breakpoint.c (wrap_indent_at_field): New function.
	(print_breakpoint_location): Use it instead of WRAP_INDENT argument.
	Allocate ui_stream locally instead of using STB argument.
	(print_one_breakpoint_location): Update call.
	* ui-out.c (ui_out_query_field): New function.
	* ui-out.h (ui_out_query_field): Add prototype.

2011-02-28  Joel Brobecker  <brobecker@adacore.com>

	From Michael Snyder  <msnyder@vmware.com>
	* ada-exp.y (write_object_renaming): Add FALLTHROUGH comment.

2011-02-27  Michael Snyder  <msnyder@vmware.com>

	* objc-lang.c (selectors_info): Prevent string overrun.

	* tui/tui-stack.c (tui_get_function_from_frame): Fix off by one
	error in strncpy.

	* symtab.c (rbreak_command): Move variable 'file_name' to
	outer scope.

	* d-valprint.c (dynamic_array_type): Avoid shadowing a function
	param with a local variable of the same name.

2011-02-27  Michael Snyder  <msnyder@vmware.com>

	* value.c (value_from_history_ref): New function.
	* value.h (value_from_history_ref): Export.
	* cli/cli-utils.c (get_number_trailer): Use value_from_history_ref
	to parse value history references.
	* cli/cli-utils.h (get_number_trailer): Update comment.

2011-02-27  Michael Snyder  <msnyder@vmware.com>

	* inferior.c (detach_inferior_command): Use get_number_or_range.
	(kill_inferior_command): Ditto.
	(remove_inferior_command): Ditto.
	(initialize_inferiors): Make command names plural.
	Update help strings.

2011-02-27  Michael Snyder  <msnyder@vmware.com>

	* darwin-nat-info.c: Fix comment typo.
	* dwarf2expr.h: Ditto.
	* fbsd-nat.c: Ditto.
	* fbsd-nat.h: Ditto.
	* frame-unwind.h: Ditto.
	* frame.h: Ditto.
	* hppa-hpux-tdep.c: Ditto.
	* i386-linux-nat.c: Ditto.
	* linux-nat.c: Ditto.
	* nbsd-nat.c: Ditto.
	* nbsd-nat.h: Ditto.
	* ppc-linux-tdep.c: Ditto.
	* serial.c: Ditto.
	* ui-file.h: Ditto.
	* tui/tui-winsource.c: Ditto.

2011-02-26  Michael Snyder  <msnyder@vmware.com>

	* breakpoint.c (reattach_breakpoints): Avoid resource leak (ui_file).

	* maint.c (maintenance_do_deprecate): Plug a memory leak.

	* dwarf2loc.c (insert_bits): Avoid shadowing a function param
	with a local variable of the same name.

	* i387-tdep.c (i387_supply_fxsave): Avoid shadowing a function
	param with a local variable of the same name.
	(i387_supply_xsave): Ditto.

	* linux-low.c (linux_nat_xfer_osdata): Rename local variable so
	that it does not shadow a function parameter.

	* i386-nat.c (i386_length_and_rw_bits): Document that case
	statement is meant to fall through.

	* expprint.c (dump_subexp_body_standard): Document that case
	statement is meant to fall through.

	* amd64-linux-tdep.c (amd64_linux_syscall_record): Delete
	dead if statement.  Condition can't be false.

2011-02-25  Michael Snyder  <msnyder@vmware.com>

	* arm-tdep.c: Fix typos in comments.
	* bsd-uthread.c: Ditto.
	* completer.c: Ditto.
	* corelow.c: Ditto.
	* cp-namespace.c: Ditto.
	* cp-support.c: Ditto.
	* cris-tdep.c: Ditto.
	* dbxread.c: Ditto.
	* dwarf2read.c: Ditto.
	* frame.h: Ditto.
	* gdbtypes.h: Ditto.
	* inferior.h: Ditto.
	* mdebugread.c: Ditto.
	* mips-tdep.c: Ditto.
	* ppc-linux-nat.c: Ditto.
	* ppc-linux-tdep.c: Ditto.
	* printcmd.c: Ditto.
	* sol-thread.c: Ditto.
	* solib-frv.c: Ditto.
	* solist.h: Ditto.
	* sparc64-tdep.c: Ditto.
	* spu-tdep.c: Ditto.
	* stabsread.c: Ditto.
	* symfile.c: Ditto.
	* valops.c: Ditto.
	* varobj.c: Ditto.
	* vax-nat.c: Ditto.
	* python/py-block.c: Ditto.
	* python/py-symbol.c: Ditto.
	* python/py-symtab.c: Ditto.
	* python/py-value.c: Ditto.
	* tui/tui-win.c: Ditto.

2011-02-25  Michael Snyder  <msnyder@vmware.com>

	* inferior.c (print_inferior): Accept a string instead of an int
	for requested_inferiors, and use get_number_or_range to parse it.
	(info_inferiors_command): Pass args string to print_inferior.
	(initialize_inferiors): Change help string for info inferiors.
	* inferior.h (print_inferior): Export prototype change.

2011-02-25  Tom Tromey  <tromey@redhat.com>

	* common/ax.def (invalid2): Set to 0x31.

2011-02-25  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2loc.c (disassemble_dwarf_expression) <DW_OP_breg[0-9]+>: Use
	L and plongest.
	(disassemble_dwarf_expression) <DW_OP_bregx>: Drop variable offset,
	use L and plongest.
	(disassemble_dwarf_expression) <DW_OP_fbreg>: Use L and plongest.

2011-02-24  Michael Snyder  <msnyder@vmware.com>

	* Makefile.in (clean): Make clean should remove generated files
	observer.h and observer.inc.

2011-02-24  Joel Brobecker  <brobecker@adacore.com>

	Revert the following patch (not approved yet):
	2011-02-21  Hui Zhu  <teawater@gmail.com>
	* Makefile.in (HFILES_NO_SRCDIR): Add printcmd.h.
	* ax-gdb.c (gen_printf_expr_callback): New function.
	* ax-gdb.h (gen_printf_expr_callback): Forward declare.
	* ax-general.c (ax_memcpy): New function.
	(ax_print): Handle "printf".
	(ax_reqs): Ditto.
	* ax.h (ax_memcpy): Forward declare.
	* common/ax.def (invalid2): Removed.
	(printf): New entry.
	* printcmd.c (printcmd.h): New include.
	(string_printf): New function.
	(ui_printf): Removed.
	(printf_command): Remove static.  Call string_printf.
	(eval_command): Call string_printf.
	* printcmd.h: New file.
	* tracepoint.c (validate_actionline,
	encode_actions_1): handle printf_command.

2011-02-23  Tom Tromey  <tromey@redhat.com>

	* ax-general.c (ax_pick): Add missing newline.

2011-02-23  Michael Snyder  <msnyder@vmware.com>

	* breakpoint.c (breakpoint_1): Change first argument from an int
	to a char pointer, so that the function now accepts a list of
	breakpoints rather than just one.  Use new function
	'number_is_in_list' to implement.
	(breakpoints_info): Pass char * instead of int to breakpoint_1.
	(watchpoints_info): Ditto.
	(tracepoints_info): Ditto.
	(maintenance_info_breakpoints): Ditto.
	(_initialize_breakpoint): Update help strings to reflect the fact
	that these functions can now take more than one argument.
	* cli/cli-utils.c (number_is_in_list): New function.
	* cli/cli-utils.h (number_is_in_list): Export.

2011-02-23  Michael Snyder  <msnyder@vmware.com>

	* memattr.c (mem_enable_command): Use get_number_or_range.
	(mem_disable_command): Ditto.
	(mem_delete_command): Ditto.
	(_initialize_mem): Tweak usage message to reflect multiple
	arguments.

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

	Add gdb.lookup_global_symbol python function.
	* NEWS: Add entry.
	* python/py-symbol.c (gdbpy_lookup_global_symbol): New function.
	* python/python-internal.h (gdbpy_lookup_global_symbol): Declare it.
	* python/python.c (GdbMethods): Add entry for lookup_global_symbol.

2011-02-22  Tom Tromey  <tromey@redhat.com>

	* language.c (language_class_name_from_physname): Rename
	'curr_language' argument to 'lang'; use in body.

2011-02-22  Michael Snyder  <msnyder@vmware.com>

	* cli/cli-utils.c (number_is_in_list): Check for zero return.

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

	* frame-unwind.h: Fix comment to mention the this frame, not the
	next.

2011-02-22  Tom Tromey  <tromey@redhat.com>

	* symfile.c (auto_solib_limit): Remove.
	* symfile.h (auto_solib_limit): Remove.

2011-02-22  Joel Brobecker  <brobecker@adacore.com>

	* Makefile.in (INSTALLED_LIBS): Delete.  Update comment.

2011-02-21  Michael Snyder  <msnyder@vmware.com>

	* gdbthread.h (print_thread_info): Change prototype.
	* thread.c (print_thread_info): Accept char* instead of int for
	requested_threads argument.  Use new function number_is_in_list
	to determine which threads to list.
	(info_threads_command): Pass char* to print_thread_info.
	* cli/cli-utils.c (number_is_in_list): New function.
	* cli/cli-utils.h (number_is_in_list): Export.
	* mi/mi-main.c (mi_cmd_thread_info): Pass char* to
	print_thread_info.
	(print_one_inferior): Ditto.
	(mi_cmd_list_thread_groups): Ditto.

2011-02-21  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* common/Makefile.in (CFLAGS): New.
	(COMPILE): Add $(CFLAGS).

2011-02-21  Tom Tromey  <tromey@redhat.com>

	* breakpoint.c (catch_syscall_command_1): Fix typo.

2011-02-21  Tom Tromey  <tromey@redhat.com>

	* reverse.c: Include cli-utils.h.
	* printcmd.c: Include cli-utils.h.
	(string_printf): Use skip_spaces.
	* cli/cli-utils.h: New file.
	* cli/cli-utils.c: New file.
	* cli/cli-dump.h (skip_spaces): Move to cli-utils.h.
	* cli/cli-dump.c (skip_spaces): Move to cli-utils.c.
	* breakpoint.h (get_number, get_number_or_range): Move to
	cli-utils.h.
	* breakpoint.c: Include cli-utils.h.
	(get_number_trailer, get_number, get_number_or_range)
	(ep_skip_leading_whitespace): Move to cli-utils.c.
	(create_breakpoint_sal, find_condition_and_thread)
	(decode_static_tracepoint_spec, watch_command_1)
	(watch_maybe_just_location, ep_parse_optional_if_clause)
	(catch_fork_command_1, catch_exec_command_1)
	(catch_syscall_command_1): Use skip_spaces, skip_to_space.
	* Makefile.in (SUBDIR_CLI_OBS): Add cli-utils.o.
	(SUBDIR_CLI_SRCS): Add cli-utils.c.
	(HFILES_NO_SRCDIR): Add cli-utils.h.
	(cli-utils.o): New target.

2011-02-18  Pierre Muller  <muller@ics.u-strasbg.fr>

	* remote.c (remote_close): Reset INFERIOR_PTID to NULL_PTID
	before calling discard_all_inferiors.

2011-02-21  Ulrich Weigand  <uweigand@de.ibm.com>

	* opencl-lang.c (STRUCT_OCL_TYPE): Remove.
	(struct builtin_opencl_type): Remove.
	(builtin_opencl_type): Change return type to "struct type **".
	(lookup_opencl_vector_type): Update caller.
	(opencl_language_arch_info): Copy primitive type vector from gdbarch.
	(build_opencl_types): Install plain array of "struct type *"
	instead of "struct builtin_opencl_type".

2011-02-21  Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
	    Ulrich Weigand  <uweigand@de.ibm.com>

	* arm-linux-nat.c: Include "observer.h" and "gdbthread.h".
	(PTRACE_GETHBPREGS, PTRACE_SETHBPREGS): Define.
	(struct arm_linux_hwbp_cap): New type.
	(arm_linux_get_hwbp_cap): New function.
	(arm_linux_get_hw_breakpoint_count): Likewise.
	(arm_linux_get_hw_watchpoint_count): Likewise.
	(arm_linux_can_use_hw_breakpoint): Likewise.
	(arm_hwbp_type): New type.
	(arm_hwbp_control_t): Likewise.
	(struct arm_linux_hw_breakpoint): Likewise.
	(struct arm_linux_thread_points): Likewise.
	(arm_threads): New global variable.
	(arm_linux_find_breakpoints_by_tid): New function.
	(arm_hwbp_control_initialize): Likewise.
	(arm_hwbp_control_is_enabled): Likewise.
	(arm_hwbp_control_disable): Likewise.
	(arm_linux_hw_breakpoint_initialize): Likewise.
	(arm_linux_get_hwbp_type): Likewise.
	(arm_linux_hw_watchpoint_initialize): Likewise.
	(arm_linux_hw_breakpoint_equal): Likewise.
	(arm_linux_insert_hw_breakpoint1): Likewise.
	(arm_linux_remove_hw_breakpoint1): Likewise.
	(arm_linux_insert_hw_breakpoint): Likewise.
	(arm_linux_remove_hw_breakpoint): Likewise.
	(arm_linux_region_ok_for_hw_watchpoint): Likewise.
	(arm_linux_insert_watchpoint): Likewise.
	(arm_linux_remove_watchpoint): Likewise.
	(arm_linux_stopped_data_address): Likewise.
	(arm_linux_stopped_by_watchpoint): Likewise.
	(arm_linux_watchpoint_addr_within_range): Likewise.
	(arm_linux_new_thread): Likewise.
	(arm_linux_thread_exit): Likewise.
	(_initialize_arm_linux_nat): Install hardware breakpoint/watchpoint
	related target callbacks.  Register arm_linux_new_thread and
	arm_linux_thread_exit.
	* arm-tdep.h (arm_pc_is_thumb): Add prototype.
	* arm-tdep.c (arm_pc_is_thumb): Make global.
	(arm_gdbarch_init): Call set_gdbarch_have_nonsteppable_watchpoint.

2011-02-21  Ulrich Weigand  <uweigand@de.ibm.com>

	* breakpoint.c (update_watchpoint): Do not attempt to recreate
	per-frame locations while within a function epilogue.

2011-02-21  Pierre Muller  <muller@ics.u-strasbg.fr>

	* ser-mingw.c (ser_windows_close): Reformat comment to better conform
	to GNU coding standards.

2011-02-21  Pierre Muller  <muller@ics.u-strasbg.fr>

	Allow use of mingw native on Windows 95 OS.
	* ser-mingw.c (CancelIo): New macro for dynamically loaded DLL entry.
	(ser_windows_close): Only call CancelIo if function exists.
	(_initialize_ser_windows): Use LoadLirary/GetProcAddress
	to check for existence of CancelIo function in kernel32 DLL.

2011-02-21  Hui Zhu  <teawater@gmail.com>

	* Makefile.in (HFILES_NO_SRCDIR): Add printcmd.h.
	* ax-gdb.c (gen_printf_expr_callback): New function.
	* ax-gdb.h (gen_printf_expr_callback): Forward declare.
	* ax-general.c (ax_memcpy): New function.
	(ax_print): Handle "printf".
	(ax_reqs): Ditto.
	* ax.h (ax_memcpy): Forward declare.
	* common/ax.def (invalid2): Removed.
	(printf): New entry.
	* printcmd.c (printcmd.h): New include.
	(string_printf): New function.
	(ui_printf): Removed.
	(printf_command): Remove static.  Call string_printf.
	(eval_command): Call string_printf.
	* printcmd.h: New file.
	* tracepoint.c (validate_actionline,
	encode_actions_1): handle printf_command.

2011-02-19  Michael Snyder  <msnyder@vmware.com>

	* reverse.c (delete_one_bookmark): Argument is now bookmark
	id rather than pointer to bookmark struct.
	(delete_bookmark_command): Use get_number_or_range.
	(goto_bookmark_command): Parse with get_number instead of strtoul.
	(bookmark_1): New function.  Print info for one bookmark.
	(bookmarks_info): Use get_number_or_range and bookmark_1.

2011-02-18  Michael Snyder  <msnyder@vmware.com>

	* thread.c (info_threads_command): Re-implement using
	get_number_or_range.
	(thread_apply_command): Ditto.

2011-02-18  Tom Tromey  <tromey@redhat.com>

	* common/ax.def: New file.
	* ax.h (enum agent_op): Use ax.def.
	* ax-general.c (aop_map): Use ax.def.

2011-02-18  Tom Tromey  <tromey@redhat.com>

	* ax-general.c (aop_map): Add pick and rot.
	* dwarf2loc.c (compile_dwarf_to_ax) <DW_OP_over>: Reimplement.
	<DW_OP_rot>: Implement.
	* ax.h (enum agent_op) <aop_pick, aop_rot>: New constants.
	(ax_pick): Declare.
	* ax-general.c (ax_pick): New function.

2011-02-18  Tom Tromey  <tromey@redhat.com>

	* Makefile.in (HFILES_NO_SRCDIR): Don't mention ada-operator.inc.

2011-02-18  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Tom Tromey  <tromey@redhat.com>

	* cp-support.c (make_symbol_overload_list_namespace): Do not call
	make_symbol_overload_list_block with NULL BLOCK.
	* valarith.c (unop_user_defined_p): Resolve also TYPE_CODE_TYPEDEF.

2011-02-18  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (get_number_trailer): No longer accept a NULL PP.
	* breakpoint.h (get_number_or_range): Declare.
	* printcmd.c (ALL_DISPLAYS): Declare.
	(delete_display): Reimplement taking a display pointer.
	(undisplay_command): Accept a range of displays to delete, using
	get_number_or_range.

2011-02-18  Pierre Muller  <muller@ics.u-strasbg.fr>

	* c-valprint.c (c_val_print): Add embedded_offset to address
	for arrays of unspecified length.
	* p-valprint.c (pascal_val_print): Likewise.

2011-02-18  Yao Qi  <yao@codesourcery.com>

	* gdb/arm-tdep.c (arm_displaced_step_copy_insn): Move code to ...
	(arm_process_displaced_insn): .. here. Remove parameter INSN.
	(thumb_process_displaced_insn): New.
	* gdb/arm-linux-tdep.c (arm_linux_displaced_step_copy_insn): Update
	call to arm_process_displaced_insn.
	* gdb/arm-tdep.h : Update declaration of arm_process_displaced_insn.

2011-02-17  Tom Tromey  <tromey@redhat.com>

	* dwarf2loc.h (dwarf2_compile_expr_to_ax): Declare.
	* dwarf2loc.c (dwarf2_compile_expr_to_ax): Rename from
	compile_dwarf_to_ax.  No longer static.  Call
	dwarf2_compile_cfa_to_ax.
	(locexpr_tracepoint_var_ref): Update.
	(loclist_tracepoint_var_ref): Update.
	* dwarf2-frame.h (dwarf2_compile_cfa_to_ax): Declare.
	* dwarf2-frame.c (execute_cfa_program): Remove 'this_frame'
	argument; add 'gdbarch' and 'pc'.
	(dwarf2_compile_cfa_to_ax): New function.
	(dwarf2_frame_cache): Update.

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

	* ada-lang.c (ada_type_of_array): Fix the size of the array
	in the case of an unconstrained packed array.

2011-02-17  Yao Qi  <yao@codesourcery.com>

	* common/Makefile.in: Add more targets for make.

2011-02-16  Tom Tromey  <tromey@redhat.com>

	* dwarf2loc.c (unimplemented): Fix typo.

2011-02-16  Tom Tromey  <tromey@redhat.com>

	* dwarf2loc.c (unimplemented): Handle unnamed opcodes.
	(compile_dwarf_to_ax) <default>: Use unimplemented.
	<DW_OP_deref>: Update.
	(disassemble_dwarf_expression): Update.
	* dwarf2read.c (dwarf_stack_op_name): Remove 'def' argument.
	(decode_locdesc): Update.
	* dwarf2expr.h (dwarf_stack_op_name): Update.

2011-02-16  Tom Tromey  <tromey@redhat.com>

	* ax.h (struct aop_map) <name>: Now const.

2011-02-16  Tom Tromey  <tromey@redhat.com>

	* ax-gdb.c.c (gen_expr) <UNOP_MEMVAL>: Handle value kinds other
	than axs_rvalue.

2011-02-16  Yao Qi  <yao@codesourcery.com>

	* infrun.c (get_displaced_step_closure_by_addr): New.
	* inferior.h: Declare it.
	* arm-tdep.c: (arm_pc_is_thumb): Call
	get_displaced_step_closure_by_addr.  Adjust MEMADDR if it
	returns non-NULL.

2011-02-16  Pedro Alves  <pedro@codesourcery.com>
	    Jan Kratochvil  <jan.kratochvil@redhat.com>

	gdb/
	* tracepoint.c (memrange_sortmerge): Fix list A's end calculation.

2011-02-16  Pedro Alves  <pedro@codesourcery.com>
	    Jan Kratochvil  <jan.kratochvil@redhat.com>

	* value.c (value_contents_copy_raw): Extend describing comment.
	Assert that the destination contents we're overwriting are wholly
	available.
	(value_contents_copy): Extend describing comment.

2011-02-16  Pedro Alves  <pedro@codesourcery.com>
	    Jan Kratochvil  <jan.kratochvil@redhat.com>

	* value.c (value_available_contents_eq): Remove redundant local
	variables.  Fix available contents comparision.
	* value.h (value_available_contents_eq): Extend describing
	comment.

2011-02-16  Yao Qi  <yao@codesourcery.com>

	* thread.c (info_threads_command): Add missing i18n markup and remove
	trailing newline.

2011-02-15  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* breakpoint.c (longjmp_names): New variable.
	(struct breakpoint_objfile_data): New type.
	(breakpoint_objfile_key): New variable.
	(msym_not_found): New variable.
	(msym_not_found_p): New predicate.
	(get_breakpoint_objfile_data): New function.
	(create_overlay_event_breakpoint): Check per-objfile cache for
	symbols first.
	(create_longjmp_master_breakpoint): Likewise.
	(create_std_terminate_master_breakpoint): Likewise.
	(create_exception_master_breakpoint): Likewise.
	(_initialize_breakpoint): Register per-objfile data key.

2011-02-15  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* breakpoint.c ((create_overlay_event_breakpoint): Const-propagate
	parameter value.
	(create_longjmp_master_breakpoint): Loop over longjmp names.
	(create_std_terminate_master_breakpoint): Const-propagate parameter
	value.
	(update_breakpoints_after_exec): Adjust.
	(breakpoint_re_set): Adjust.

2011-02-15  Michael Snyder  <msnyder@vmware.com>

	* thread.c (info_threads_command): Process arg as thread id,
	or list of thread ids.
	(thread_find_command): New command.
	(_initialize_thread): Document argument for info threads.
	Document 'thread find' command.
	* NEWS: Document new command "thread find".

2011-02-15  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* Makefile.in (ACLOCAL_AMFLAGS): Add `-I ../config'.
	* aclocal.m4: Regenerated with aclocal-1.11.1.
	* common/configure: Regenerate with autoconf-2.64.

2011-02-15  Ken Werner  <ken.werner@de.ibm.com>

	* opencl-lang.c (build_opencl_types): Set the size of the built-in
	bool data type to a size of one byte.

2011-02-15  Pedro Alves  <pedro@codesourcery.com>
	    Jan Kratochvil  <jan.kratochvil@redhat.com>

	* target.c (memory_xfer_live_readonly_partial): Document where to
	look for interface description.

2011-02-15  Yao Qi  <yao@codesourcery.com>

	PR tdep/12352
	* arm-tdep.c (copy_ldr_str_ldrb_strb): Replace PC with SP in
	order to store PC value on stack instead of text section.

2011-02-15  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* rs6000-tdep.c (IS_EFP_PSEUDOREG): Use correct constant for
	the EFP register set size.
	(efpr_pseudo_register_read): Use regcache_raw_read_part to read
	data from the VMX register.
	(efpr_pseudo_register_write): Use regcache_raw_write_part to read
	and write data from/to the VMX register.

2011-02-14  Michael Snyder  <msnyder@vmware.com>

	* command.h (enum command_class): New class 'no_set_class', for
	"show" commands without a corresponding "set" command.
	* value.c (_initialize_values): Use 'no_set_class' for "show values".
	* copying.c (_initialize_copying): Ditto for "show copying" and
	"show warranty".
	* cli/cli-cmds.c (init_cli_cmds): Ditto for "show commands" and
	"show version".
	* cli/cli-setshow.c (cmd_show_list): Skip "show" commands for
	which there is no corresponding "set" command (eg. "show copying").

2011-02-14  Pedro Alves  <pedro@codesourcery.com>
	    Jan Kratochvil  <jan.kratochvil@redhat.com>

	* exec.c (section_table_available_memory): Change `len' parameter
	type to ULONGEST.
	* exec.h (section_table_available_memory): Ditto.
	* value.h (read_value_memory): Rename the `offset' parameter to
	`embedded_offset'.

2011-02-14  Pedro Alves  <pedro@codesourcery.com>
	    Jan Kratochvil  <jan.kratochvil@redhat.com>

	* memrange.c (compare_mem_ranges): Mention sort order in
	describing comment.
	(normalize_mem_ranges): Add comment.  Fix ra->length calculation.
	* tracepoint.c (traceframe_available_memory): Extend comment to
	mention what happens to RESULT when the target does not support
	the query.

2011-02-14  Pedro Alves  <pedro@codesourcery.com>
	    Jan Kratochvil  <jan.kratochvil@redhat.com>

	* value.c (mark_value_bytes_unavailable): Fix indexing the `bef'
	range.

2011-02-14  Pedro Alves  <pedro@codesourcery.com>

	* value.c (value_bits_valid, value_bits_synthetic_pointer):
	No longer handle NULL values.

2011-02-14  Pedro Alves  <pedro@codesourcery.com>

	* exceptions.h (NOT_AVAILABLE_ERROR): New error.
	* value.c: Include "exceptions.h".
	(require_available): Throw NOT_AVAILABLE_ERROR instead of a
	generic error.
	* cp-abi.c: Include gdb_assert.h.
	(baseclass_offset): Add `embedded_offset' and `val' parameters.
	Assert the method is implemented.  Wrap NOT_AVAILABLE_ERROR
	errors.
	* cp-abi.h (baseclass_offset): Add `embedded_offset' and `val'
	parameters.  No longer returns -1 on error.
	(struct cp_abi_ops) <baseclass_offset>: Add `embedded_offset' and
	`val' parameters.
	* cp-valprint.c: Include exceptions.h.
	(cp_print_value): Handle NOT_AVAILABLE_ERROR errors when fetching
	the baseclass_offset.  Handle unavailable base classes.  Use
	val_print_invalid_address.
	* p-valprint.c: Include exceptions.h.
	(pascal_object_print_value): Handle NOT_AVAILABLE_ERROR errors
	when fetching the baseclass_offset.  No longer expect
	baseclass_offset returning -1.  Handle unavailable base classes.
	Use val_print_invalid_address.
	* valops.c (dynamic_cast_check_1): Rename `contents' parameter to
	`valaddr' parameter, and change its type to gdb_byte pointer.  Add
	`embedded_offset' and `val' parameters.  Adjust.
	(dynamic_cast_check_2): Rename `contents' parameter to `valaddr'
	parameter, and change its type to gdb_byte pointer.  Add
	`embedded_offset' and `val' parameters.  Adjust.  No longer expect
	baseclass_offset returning -1.
	(value_dynamic_cast): Use value_contents_for_printing rather than
	value_contents.  Adjust.
	(search_struct_field): No longer expect baseclass_offset returning
	-1.
	(search_struct_method): If reading memory from the target is
	necessary, wrap it in a new value to pass to baseclass_offset.  No
	longer expect baseclass_offset returning -1.
	(find_method_list): No longer expect baseclass_offset returning
	-1.  Use value_contents_for_printing rather than value_contents.
	* valprint.c (val_print_invalid_address): New function.
	* valprint.h (val_print_invalid_address): Declare.
	* gdbtypes.c (is_unique_ancestor_worker): New `embedded_offset'
	and `val' parameters.  No longer expect baseclass_offset returning
	-1.  Adjust.
	* gnu-v2-abi.c: Include "exceptions.h".
	(gnuv2_baseclass_offset): Add `embedded_offset' and `val'
	parameters.  Handle unavailable memory.  Recurse through
	gnuv2_baseclass_offset directly, rather than through
	baseclass_offset.  No longer returns -1 on not found, instead
	throw an error.
	* gnu-v3-abi.c (gnuv3_baseclass_offset): Add `embedded_offset' and
	`val' parameters.  Adjust.

2011-02-14  Pedro Alves  <pedro@codesourcery.com>

	* tracepoint.c (memrange_sortmerge): Don't merge ranges that are
	almost but not quite adjacent.

2011-02-14  Pedro Alves  <pedro@codesourcery.com>

	* value.h (value_entirely_available): Declare.
	* value.c (value_entirely_available): New function.
	* c-valprint.c (c_value_print): Don't try fetching the pointer's
	real type if the pointer is unavailable.

2011-02-14  Pedro Alves  <pedro@codesourcery.com>

	* valops.c (value_repeat): Use read_value_memory instead of
	read_memory.

2011-02-14  Pedro Alves  <pedro@codesourcery.com>

	* value.h (value_contents_copy, value_contents_copy_raw): Declare.
	* value.c (value_contents_copy_raw, value_contents_copy): New
	functions.
	(value_primitive_field): Use value_contents_copy_raw instead of
	memcpy.
	* valops.c (value_fetch_lazy): Use value_contents_copy instead of
	memcpy.
	(value_array, value_slice): Ditto.
	* valarith.c (value_subscripted_rvalue): Use
	value_contents_copy_raw instead of memcpy.

2011-02-14  Pedro Alves  <pedro@codesourcery.com>

	<unavailable> references.

	* valops.c (get_value_at): Use value_from_contents_and_address,
	avoiding read_memory.

2011-02-14  Pedro Alves  <pedro@codesourcery.com>

	* c-valprint.c (c_val_print): Print a string with unavailable
	contents as an array.

2011-02-14  Pedro Alves  <pedro@codesourcery.com>

	* value.h (unpack_bits_as_long): Delete declaration.
	(unpack_value_bits_as_long): Declare.
	(unpack_value_field_as_long): Declare.
	(value_field_bitfield): Declare.
	* value.c (unpack_bits_as_long): Rename to...
	(unpack_value_bits_as_long_1): ... this.  Add embedded_offset and
	value parameters.  Return the extracted result in a new output
	parameter.  If the value contents are unavailable, return false,
	otherwise return true.
	(unpack_value_bits_as_long): New.
	(unpack_field_as_long): Rename to...
	(unpack_value_field_as_long_1): ... this.  Add embedded_offset and
	Add embedded_offset and value parameters.  Return the extracted
	result in a new output parameter. If the value contents are
	unavailable, return false, otherwise return true.
	(unpack_value_field_as_long): New.
	(unpack_field_as_long_1): New.
	(unpack_field_as_long): Reimplement as wrapper around
	unpack_value_field_as_long_1.
	(value_field_bitfield): New function.
	* valops.c (value_fetch_lazy): When fetching a bitfield, use
	unpack_value_bits_as_long.  Mark the value as unavailable, if it
	is unavailable.
	* jv-valprint.c (java_print_value_fields): Use
	value_field_bitfield.
	* p-valprint.c (pascal_object_print_value_fields): Use
	value_field_bitfield.
	* cp-valprint.c (cp_print_value_fields): Use value_field_bitfield.

2011-02-14  Pedro Alves  <pedro@codesourcery.com>

	* value.c (get_internalvar_integer): Also return the int value of
	TYPE_CODE_INT INTERNALVAR_VALUE values.
	(set_internalvar): Don't special case TYPE_CODE_INT.

2011-02-14  Pedro Alves  <pedro@codesourcery.com>

	* value.c (struct internalvar) <enum internalvar_kind>: Remove
	INTERNALVAR_POINTER.
	<pointer>: Delete.
	(value_of_internalvar): Remove INTERNALVAR_POINTER handling.
	(set_internalvar): Remove special TYPE_CODE_PTR handling.
	(preserve_one_internalvar): Remove INTERNALVAR_POINTER handling.

2011-02-14  Pedro Alves  <pedro@codesourcery.com>

	* value.h (value_available_contents_eq): Declare.
	* value.c (find_first_range_overlap): New function.
	(value_available_contents_eq): New function.
	* valprint.c (val_print_array_elements): Use
	value_available_contents_eq.
	* ada-valprint.c (val_print_packed_array_elements): Use
	value_available_contents_eq.
	* jv-valprint.c (java_value_print): Use
	value_available_contents_eq.

2011-02-14  Pedro Alves  <pedro@codesourcery.com>

	* target.c (target_read_live_memory): New function.
	(memory_xfer_live_readonly_partial): New.
	(memory_xfer_partial): If reading from a traceframe, fallback to
	reading unavailable read-only memory from read-only regions of
	live target memory.
	* tracepoint.c (disconnect_tracing): Adjust.
	(set_current_traceframe): New, factored out from
	set_traceframe_number.
	(set_traceframe_number): Reimplement to only change the traceframe
	number on the GDB side.
	(do_restore_current_traceframe_cleanup): Adjust.
	(make_cleanup_restore_traceframe_number): New.
	(cur_traceframe_number): New global.
	(tfile_open): Set cur_traceframe_number to no traceframe.
	(set_tfile_traceframe): New function.
	(tfile_trace_find): If looking up a traceframe using any method
	other than by number, make sure the current tfile traceframe
	matches gdb's current traceframe.  Update the current tfile
	traceframe if the lookup succeeded.
	(tfile_fetch_registers, tfile_xfer_partial)
	(tfile_get_trace_state_variable_value): Make sure the remote
	traceframe matches gdb's current traceframe.
	* remote.c (remote_traceframe_number): New global.
	(remote_open_1): Set it to -1.
	(set_remote_traceframe): New function.
	(remote_fetch_registers, remote_store_registers)
	(remote_xfer_memory, remote_xfer_partial)
	(remote_get_trace_state_variable_value): Make sure the remote
	traceframe matches gdb's current traceframe.
	(remote_trace_find): If looking up a traceframe using any method
	other than by number, make sure the current remote traceframe
	matches gdb's current traceframe.  Update the current remote
	traceframe if the lookup succeeded.
	* infrun.c (fetch_inferior_event): Adjust.
	* tracepoint.h (set_current_traceframe): Declare.
	(get_traceframe_number, set_traceframe_number): Add describing
	comments.

2011-02-14  Pedro Alves  <pedro@codesourcery.com>

	Mark pieces of values as unavailable if the corresponding memory
	is unavailable.

	* valops.c: Include tracepoint.h.
	(value_fetch_lazy): Use read_value_memory.
	(read_value_memory): New.
	* value.h (read_value_memory): Declare.
	* dwarf2loc.c (read_pieced_value): Use read_value_memory.
	* exec.c (section_table_available_memory): New function.
	* exec.h (section_table_available_memory): Declare.

2011-02-14  Pedro Alves  <pedro@codesourcery.com>

	* Makefile.in (SFILES): Add memrange.c.
	(HFILES_NO_SRCDIR): Add memrange.h.
	(COMMON_OBS): Add memrange.o.
	* memrange.c: New file.
	* memrange.h: New file.
	* tracepoint.c: Include memrange.h.
	(struct mem_range): Delete.
	(mem_range_s): Delete.
	(traceframe_available_memory): New function.
	* tracepoint.h (traceframe_available_memory): Declare.

2011-02-14  Pedro Alves  <pedro@codesourcery.com>

	* target.h (struct traceframe_info): Forward declare.
	(enum target_object): Add TARGET_OBJECT_TRACEFRAME_INFO.
	(struct target_ops) <to_traceframe_info>: New field.
	(target_traceframe_info): New.
	* target.c (update_current_target): Inherit and default
	to_traceframe_info.
	* remote.c (PACKET_qXfer_traceframe_info): New.
	(remote_protocol_features): Register qXfer:traceframe-info:read.
	(remote_xfer_partial): Handle TARGET_OBJECT_TRACEFRAME_INFO.
	(remote_traceframe_info): New.
	(init_remote_ops): Install it.
	(_initialize_remote): Install "set/show remote traceframe-info"
	commands.
	* tracepoint.h (parse_traceframe_info): Declare.
	* tracepoint.c (struct mem_range): New.
	(mem_range_s): New typedef.
	(struct traceframe_info): New.
	(traceframe_info): New global.
	(free_traceframe_info): New function.
	(clear_traceframe_info): New function.
	(start_tracing, tfind_1, set_traceframe_number): Clear traceframe
	info.
	(build_traceframe_info): New function.
	(tfile_traceframe_info): New function.
	(init_tfile_ops): Install tfile_traceframe_info.
	(traceframe_info_start_memory, free_result): New functions.
	(memory_attributes, traceframe_info_elements): New globals.
	(parse_traceframe_info, get_traceframe_info): New functions.
	* features/traceframe-info.dtd: New file.
	* Makefile.in (XMLFILES): Add traceframe-info.dtd.

2011-02-14  Pedro Alves  <pedro@codesourcery.com>

	Base support for <unavailable> value contents.

	* value.h (value_bytes_available): Declare.
	(mark_value_bytes_unavailable): Declare.
	* value.c (struct range): New struct.
	(range_s): New typedef.
	(ranges_overlap): New function.
	(range_lessthan): New function.
	(ranges_contain_p): New function.
	(struct value) <unavailable>: New field.
	(value_bytes_available): New function.
	(mark_value_bytes_unavailable): New function.
	(require_not_optimized_out): Constify parameter.
	(require_available): New function.
	(value_contents_all, value_contents): Require all bytes be
	available.
	(value_free): Free `unavailable'.
	(value_copy): Copy `unavailable'.
	* valprint.h (val_print_unavailable): Declare.
	* valprint.c (valprint_check_validity): Rename `offset' parameter
	to `embedded_offset'.  If printing a scalar, check whether the
	value chunk is available.
	(val_print_unavailable): New.
	(val_print_scalar_formatted): Check whether the value is
	available.
	* python/py-prettyprint.c (apply_val_pretty_printer): Refuse
	pretty-printing unavailable values.

2011-02-13  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix const/volatile qualifiers of C++ types, PR c++/12328.
	* c-typeprint.c (c_type_print_args): Update the function comment.  New
	variable param_type, initialize it.  Remove const/volatile qualifiers
	for language_cplus and !show_artificial.  Use param_type.

2011-02-13  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* symtab.c (find_pc_sect_line): New variable objfile, initialize it
	from S.  Iterate S using ALL_OBJFILE_SYMTABS.  Verify BV for each S.
	* symtab.h (struct symtab) <next>: Comment extension.

2011-02-12  Yao Qi  <yao@codesourcery.com>

	* Makefile.in (CLEANDIRS): Remove duplicated common dir.

2011-02-11  Yao Qi  <yao@codesourcery.com>

	* common/Makefile.in: Add copyright header.

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

	* infrun.c (proceed): Move switching out and in of tfind mode from
	here ...
	(fetch_inferior_event): ... to here.

2011-02-11  Yao Qi  <yao@codesourcery.com>

	* Makefile.in: Remove signals.o from COMMON_OBS.  Link
	libcommon.a.
	* configure.ac: Add common to sub dir.
	* configure: Regenerate.

2011-02-11  Yao Qi  <yao@codesourcery.com>

	Build libcommon.a.

	* common/Makefile.in: New.
	* common/configure.ac: New.
	* common/aclocal.m4: New.
	* common/configure: Generate.

2011-02-10  Pedro Alves  <pedro@codesourcery.com>

	* vec.h (VEC_block_remove): Place VEC_ASSERT_INFO on the right
	side of the parenthesis.

	Merge from GCC:
	2010-07-13  Jakub Jelinek  <jakub@redhat.com>
	* vec.h (VEC_block_remove): Fix comment.

2011-02-08  Michael Snyder  <msnyder@vmware.com>

	* linux-nat.c (linux_nat_filter_event): Fix typo in comment.

2011-02-08  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* i386-tdep.c (i386_process_record): Rename l suffixes to d suffixes
	in comments for pcmpgtd, pcmpeqd, psubd, paddd, pcmpgtd, pcmpeqd,
	psubd and paddd.

2011-02-08  Jan Kratochvil  <jan.kratochvil@redhat.com>

	PR 12361.
	* i386-tdep.c (i386_process_record) <0x660f3807>: Fix the comment to
	phsubsw.
	(i386_process_record) <lddqu>: Fix the opcode to 0xf20ff0.
	(i386_process_record) <0x0f3807>: Fix the comment to phsubsw.

2011-02-08  Ulrich Weigand  <uweigand@de.ibm.com>

	* dwarf2read.c (read_subroutine_type): Set special calling
	convention flag for functions compiled by IBM XL C for OpenCL.
	* ppc-sysv-tdep.c: Include "dwarf2.h"
	(ppc_sysv_abi_push_dummy_call): Implement IBM OpenCL vector types
	calling convention.
	(do_ppc_sysv_return_value): Add FUNC_TYPE argument.  Implement
	IBM OpenCL vector types calling convention.
	(ppc_sysv_abi_return_value): Pass through FUNC_TYPE.
	(ppc_sysv_abi_broken_return_value): Likewise.
	(ppc64_sysv_abi_push_dummy_call): Implement IBM OpenCL vector
	types calling convention.
	(ppc64_sysv_abi_return_value): Likewise.
	* spu-tdep.c: Include "dwarf2.h"
	(spu_return_value): Implement IBM OpenCL vector types calling
	convention.

2011-02-08  Ulrich Weigand  <uweigand@de.ibm.com>

	* ppc-sysv-tdep.c (ppc64_sysv_abi_push_dummy_call): Implement
	correct ABI for AltiVec vector arguments.

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

	* valprint.c (val_print): Extend comment.
	* ada-valprint.c (ada_valprint): Rewrite comment deferring
	interface explanation to val_print.
	(ada_val_print_array): Adjust comment to current interface.
	(print_field_values): Adjust comment to current interface.
	* c-valprint.c (c_val_print): Rewrite comment deferring interface
	explanation to val_print.
	* f-valprint.c (f_val_print): Ditto.
	* jv-valprint.c (java_val_print): Ditto.
	* m2-valprint.c (m2_val_print): Ditto.
	* p-valprint.c (pascal_val_print): Ditto.

2011-02-07  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* breakpoint.c (parse_breakpoint_sals): Fix description.

2011-02-04  Sami Wagiaalla  <swagiaal@redhat.com>
	    Oguz Kayral <oguzkayral@gmail.com>

	* python/py-inferior.c (python_on_normal_stop): New function.
	(python_on_resume): New function.
	(python_inferior_exit): New function.
	(gdbpy_initialize_inferior): Add normal_stop, target_resumed, and
	inferior_exit observers.
	* python/py-evtregistry.c: New file.
	* python/py-threadevent.c : New file.
	* python/py-event.c: New file.
	* python/py-evts.c: New file.
	* python/py-continueevent.c: New file.
	* python/py-bpevent.c: New file.
	* python/py-signalevent.c: New file.
	* python/py-exetiedevent.c: New file.
	* python/py-breakpoint.c (gdbpy_breakpoint_from_bpstats): New function.
	Move struct breakpoint_object from here...
	* python/python-internal.h: ... to here.
	* python/py-event.h: New file.
	* python/py-events.h: New file.
	* Makefile.in (SUBDIR_PYTHON_OBS): Add py-breakpointstopevent.o,
	py-continueevent.o, py-event.o, py-eventregistry.o, py-events.o,
	py-exitedevent.o, py-signalstopevent.o, and py-stopevent.o.
	(SUBDIR_PYTHON_SRCS): Add py-breakpointstopevent.c,
	py-continueevent.c, py-event.c, py-eventregistry.c, py-events.c,
	py-exitedevent.c, py-signalstopevent.c, and py-stopevent.c.
	Add build rules for all the above.

2011-02-04  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (dwarf2_section_empty_p): New function.
	(dwarf2_read_section): Use dwarf2_section_empty_p.
	(dwarf2_section_size): New function.
	(dwarf2_get_section_info): Unconditionally read section.
	(dwarf2_read_index): Use dwarf2_section_empty_p.
	(partial_read_comp_unit_head): Use dwarf2_section_size.
	(dwarf2_symbol_mark_computed): Likewise.

2011-02-04 David Daney <ddaney@caviumnetworks.com>

	* NEWS: Add item for "catch syscall" on mips*-linux* targets.

2011-02-04 David Daney <ddaney@caviumnetworks.com>

	* mips-linux-tdep.c: Include xml-syscall.h.
	(mips_linux_get_syscall_number): New function.
	(mips_linux_init_abi): Add calls to
	mips_linux_get_syscall_number() and set_xml_syscall_file_name().
	* data-directory/Makefile.in (SYSCALLS_FILES): Add
	mips-o32-linux.xml, mips-n32-linux.xml and mips-n64-linux.xml
	* syscalls/mips-n32-linux.xml: New file.
	* syscalls/mips-n64-linux.xml: New file.
	* syscalls/mips-o32-linux.xml: New file.

2011-02-04  Ulrich Weigand  <ulrich.weigand@linaro.org>

	* dwarf2read.c (dwarf2_ranges_read): Skip empty range entries.
	Complain about inverted range entries.
	(dwarf2_record_block_ranges): Likewise.

2011-02-04  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	Fix some typos.
	* breakpoint.c (update_watchpoint): Fix name of the
	update_global_location_list function.
	(print_one_breakpoint): Fix typo.
	(_initialize_breakpoint): Remove extra space in hbreak help
	string.
	* breakpoint.h (struct bp_location) <length>: Fix field
	description.

2011-02-04  Pedro Alves  <pedro@codesourcery.com>

	* regcache.c (registers_changed_ptid): Don't explictly always
	clear `current_regcache'.  Only clear current_thread_ptid and
	current_thread_arch when PTID matches.  Only reinit the frame
	cache if PTID matches the current inferior_ptid.  Move alloca(0)
	call to ...
	(registers_changed): ... here.

2011-02-03  Ulrich Weigand  <ulrich.weigand@linaro.org>

	* arm-tdep.c (arm_skip_stack_protector): Accept any symbol that
	starts with __stack_chk_guard as stack guard symbol.

2011-02-03  Andrew Burgess  <aburgess@broadcom.com>

	* disasm.c (compare_lines): Handle the end of sequence markers
	within the line table to better support disassembling over
	compilation unit boundaries.

2011-02-02  Ulrich Weigand  <ulrich.weigand@linaro.org>

	* arm-tdep.c (skip_prologue_function): Add GDBARCH and IS_THUMB
	arguments.  Skip in-prologue calls to glibc __aeabi_read_tp
	implementation even if no symbols are available.
	(thumb_analyze_prologue): Update call to skip_prologue_function.
	(arm_analyze_prologue): Likewise.

2011-02-02  Ulrich Weigand  <ulrich.weigand@linaro.org>

	* arm-tdep.c: Include "observer.h".
	(arm_prologue_this_id): Use frame PC if get_frame_func returns 0.
	(arm_exidx_data_key): New static variable.
	(struct arm_exidx_entry, arm_exidx_entry_s): New data types.
	(struct arm_exidx_data): Likewise.
	(arm_exidx_data_free): New function.
	(arm_compare_exidx_entries): Likewise.
	(arm_obj_section_from_vma): Likewise.
	(arm_exidx_new_objfile): Likewise.
	(arm_find_exidx_entry): Likewise.
	(arm_exidx_fill_cache): Likewise.
	(arm_exidx_unwind_sniffer): Likewise.
	(arm_exidx_unwind): New global variable.
	(arm_gdbarch_init): Append unwinder arm_exidx_unwind.
	(_initialize_arm_tdep): Attach arm_exidx_new_objfile to new_objfile
	observer.  Register arm_exidx_data_key as objfile data.

2011-02-02  Ulrich Weigand  <ulrich.weigand@linaro.org>

	* arm-tdep.c (arm_analyze_load_stack_chk_guard): Avoid build break
	due to accessing uninitialized variable.  Fix indentation.

2011-02-02  Pedro Alves  <pedro@codesourcery.com>

	* c-valprint.c (c_value_print): When doing virtual base pointer
	adjustment, create a new value with adjusted contents rather than
	changing the contents of the value being printed (and getting it
	wrong).

2011-02-02  Pedro Alves  <pedro@codesourcery.com>

	* xml-support.c (xml_find_attribute): New.
	(xinclude_start_include): Use it.
	* xml-support.h (xml_find_attribute): Declare.
	* memory-map.c (memory_map_start_memory)
	(memory_map_start_property): Use xml_find_attribute.
	* osdata.c (osdata_start_osdata, osdata_start_column): Use
	xml_find_attribute.
	* remote.c (start_thread): Use xml_find_attribute.
	* solib-target.c (library_list_start_segment)
	(library_list_start_section, library_list_start_library)
	(library_list_start_list): Use xml_find_attribute.
	* xml-tdesc.c (tdesc_start_target, tdesc_start_feature)
	(tdesc_start_union, tdesc_start_struct, tdesc_start_flags)
	(tdesc_start_field): Use xml_find_attribute.

2011-02-02  Ulrich Weigand  <uweigand@de.ibm.com>

	* opencl-lang.c (STRINGIFY): Rename to OCL_STRING.
	(BUILD_OCL_VTYPES): Update.

2011-02-02  Joel Brobecker  <brobecker@adacore.com>

	* configure.ac: Work around non-GNU sed limitation when computing
	python version number.
	* configure: Regenerate.

2011-02-01  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix debug printing of TYPE_INSTANCE.
	* expprint.c (print_subexp_standard) <TYPE_INSTANCE>: New.
	(dump_subexp_body_standard) <TYPE_INSTANCE>: New.

2011-02-01  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix debug printing of BINOP_IN, OP_OBJC_MSGCALL,
	OP_F77_UNDETERMINED_ARGLIST, OP_COMPLEX, OP_OBJC_SELECTOR, OP_NAME,
	OP_OBJC_NSSTRING, OP_F90_RANGE and OP_DECFLOAT.
	* ada-operator.inc: Rename the file to ...
	* ada-operator.def: ... here, wrap all the entries by macro OP.
	* expprint.c (op_name_standard): Remove all the entries.  Include
	"std-operator.def" instead.
	* expression.h (enum exp_opcode): Include "std-operator.def" and
	"ada-operator.def".  Move all the entries ...
	* std-operator.def: ... here, wrap all the entries by macro OP.

2011-01-31  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* breakpoint.h (remove_jit_event_breakpoints): New prototype.
	* breakpoint.c (remove_jit_event_breakpoints): New function.
	* jit.c (jit_descriptor_addr): Delete.
	(registering_code): Delete.
	(clear_int): Delete.
	(jit_inferior_data): New variable.
	(struct jit_inferior_data): New type.
	(get_jit_inferior_data): New function.
	(jit_inferior_data_cleanup): New function.
	(jit_read_descriptor): Adjust.
	(jit_register_code): Adjust.
	(jit_breakpoint_re_set_internal): New function; move code here ...
	(jit_inferior_init): ... from here.
	(jit_breakpoint_re_set): Adjust.
	(jit_reset_inferior_data_and_breakpoints): New function.
	(jit_inferior_created_observer): Adjust.
	(jit_inferior_exit_hook): Adjust.
	(jit_executable_changed_observer): New function.
	(jit_event_handler): Adjust.
	(_initialize_jit): Adjust.

2011-01-31  Michael Snyder  <msnyder@vmware.com>

	* m32r-tdep.c (m32r_gdbarch_init): Replace accidentally deleted
	line.

2011-01-31  Tom Tromey  <tromey@redhat.com>

	PR python/12216:
	* python/python.c (execute_gdb_command): Call
	prevent_dont_repeat.
	* top.c (suppress_dont_repeat): New global.
	(dont_repeat): Use it.
	(prevent_dont_repeat): New function.
	* command.h (prevent_dont_repeat): Declare.

2011-01-31  Tom Tromey  <tromey@redhat.com>

	* infcmd.c (finish_backward): Use breakpoint_set_silent.
	* python/py-breakpoint.c (bppy_set_silent): Use
	breakpoint_set_silent.
	(bppy_set_thread): Use breakpoint_set_thread.
	(bppy_set_task): Use breakpoint_set_task.
	* breakpoint.h (breakpoint_set_silent, breakpoint_set_thread)
	(breakpoint_set_task): Declare.
	(make_breakpoint_silent): Remove.
	* breakpoint.c (breakpoint_set_silent): New function.
	(breakpoint_set_thread): Likewise.
	(breakpoint_set_task): Likewise.
	(make_breakpoint_silent): Remove.

2011-01-31  Tom Tromey  <tromey@redhat.com>

	* breakpoint.h (user_breakpoint_p): Declare.
	* breakpoint.c (user_breakpoint_p): New function.
	(breakpoint_1): Use it.
	(save_breakpoints): Likewise.

2011-01-31  Joel Brobecker  <brobecker@adacore.com>

	* configure.ac: Add handling of Python distribution on Windows.
	* python-config.py: If the LIBS, SYSLIBS, LIBPL and/or LINKFORSHARED
	sysconfig variables are not defined, then do not use them.
	On Windows, if LIBPL is not defined, then use prefix + '/libs'
	instead.  On Windows, return all paths using forward-slashes
	rather than backslashes.

2011-01-31  Joel Brobecker  <brobecker@adacore.com>

	* configure.ac: Remove fallback behavior for building
	against Python.  Remove tweaking of Python include path.
	Add PYTHON_CPPFLAGS and PYTHON_LIBS substitution.
	(AC_TRY_LIBPYTHON):  Adjust program used in linking test.
	If link is successful, set PYTHON_CPPFLAGS and PYTHON_LIBS.
	Always restore CPPFLAGS and LIBS after linking test.
	* configure: Regenerated.
	* Makefile.in (INTERNAL_CPPFLAGS): Add @PYTHON_CPPFLAGS@.
	(INSTALLED_LIBS, CLIBS): Add @PYTHON_LIBS@.
	* python/python-internal.h: Adjust includes of Python .h files.

2011-01-31  Joel Brobecker  <brobecker@adacore.com>

	* tracepoint.c (traceframe_walk_blocks): Add missing i18n markup
	in error message.

2011-01-31  Joel Brobecker  <brobecker@adacore.com>

	* inflow.c (gdb_has_a_terminal): Fix typo in interactive_mode
	value test.

2011-01-31  Yao Qi  <yao@codesourcery.com>

	* arm-linux-nat.c: Update calls to regcache_register_status
	instead of regcache_valid_p.
	* aix-thread.c: Likewise.
	* i386gnu-nat.c: Likewise.

2011-01-29  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix crash.
	* valops.c (compare_parameters): Verify TYPE_NFIELDS before
	touching TYPE_FIELD_ARTIFICIAL.

2011-01-28  Richard Earnshaw  <rearnsha@arm.com>

	* MAINTAINERS: Move myself from Responsible Maintainers to Authorized
	Committers.

2011-01-28  Pedro Alves  <pedro@codesourcery.com>

	* tracepoint.c (tfile_xfer_partial): If there's no traceframe
	selected, don't try iterating over the traceframe's blocks.
	(tfile_has_stack): If there's no traceframe selected, then there's
	no stack.
	(tfile_has_registers): If there's no traceframe selected, then
	there's no registers.

2011-01-28  Pedro Alves  <pedro@codesourcery.com>

	* target.c (memory_xfer_partial): No need to restore shadows if we
	haven't read anything.

2011-01-28  Pedro Alves  <pedro@codesourcery.com>

	* mips-tdep.c (mips_print_register): Use get_frame_register_value
	and val_print_scalar_formatted.

2011-01-27  Pedro Alves  <pedro@codesourcery.com>

	* tracepoint.c (tfile_read): New.
	(tfile_open): Use it.
	(tfile_get_traceframe_address): Use it.
	(tfile_trace_find): Use it.
	(walk_blocks_callback_func): New typedef.
	(match_blocktype): New function.
	(traceframe_walk_blocks): New function.
	(traceframe_find_block_type): New function.
	(tfile_fetch_registers, tfile_xfer_partial)
	(tfile_get_trace_state_variable_value): Use
	traceframe_find_block_type and tfile_read.

2011-01-26  Kevin Buettner  <kevinb@redhat.com>

	* remote-mips.c: Add internationalization mark ups.  Remove
	trailing \n from already marked up strings.

2011-01-26  Tom Tromey  <tromey@redhat.com>

	* python/py-prettyprint.c (print_string_repr): Clear
	'addressprint' option when calling val_print_string.
	(print_children): Handle Val_pretty_default.  Clear 'addressprint'
	option when calling val_print_string.

2011-01-26  Tom Tromey  <tromey@redhat.com>

	* python/python.c (gdbpy_solib_name): Use gdb_py_longest and
	GDB_PY_LL_ARG.
	* python/python-internal.h (GDB_PY_LL_ARG, GDB_PY_LLU_ARG): New
	macros.
	(gdb_py_longest, gdb_py_ulongest): New typedefs.
	(gdb_py_long_from_longest, gdb_py_long_from_ulongest)
	(gdb_py_long_as_ulongest): New defines.
	(gdb_py_object_from_longest, gdb_py_object_from_ulongest)
	(gdb_py_int_as_long): Declare.
	* python/py-value.c (valpy_lazy_string): Use gdb_py_longest,
	GDB_PY_LL_ARG, gdb_py_object_from_longest.
	(valpy_long): Add comment.
	* python/py-utils.c (get_addr_from_python): Use
	gdb_py_long_as_ulongest.  Handle overflow properly.
	(gdb_py_object_from_longest): New function.
	(gdb_py_object_from_ulongest): Likewise.
	(gdb_py_int_as_long): Likewise.
	* python/py-type.c (typy_array): Use gdb_py_int_as_long.
	* python/py-symtab.c (salpy_get_pc): Use
	gdb_py_long_from_ulongest.
	(salpy_get_line): Use PyInt_FromLong.
	* python/py-param.c (set_parameter_value): Use
	gdb_py_int_as_long.
	* python/py-lazy-string.c (stpy_get_address): Use
	gdb_py_long_from_ulongest.
	* python/py-frame.c (frapy_pc): Use gdb_py_long_from_ulongest.
	* python/py-cmd.c (cmdpy_completer): Use gdb_py_int_as_long.
	* python/py-breakpoint.c (bppy_set_thread): Use
	gdb_py_int_as_long.
	(bppy_set_task): Likewise.
	(bppy_set_ignore_count): Likewise.
	(bppy_set_hit_count): Likewise.
	* python/py-block.c (blpy_get_start): Use
	gdb_py_object_from_ulongest.
	(blpy_get_end): Likewise.
	(gdbpy_block_for_pc): Use gdb_py_ulongest and GDB_PY_LLU_ARG.

2011-01-25  Mathieu Lacage  <mathieu.lacage@inria.fr>

	PR/symtab 11766:
	* gdb/objfiles.h (struct objfile) <addr_low>: New field.
	* gdb/solib.c (solib_read_symbols): Check for addr_low in
	equality test for objfile, initialize addr_low if needed.

2011-01-25  Pedro Alves  <pedro@codesourcery.com>

	* tui/tui-regs.c (tui_register_format): Remove dead code.

2011-01-25  Pedro Alves  <pedro@codesourcery.com>

	* printcmd.c (print_formatted): Use val_print_scalar_formatted
	instead of print_scalar_formatted.
	(print_scalar_formatted): Don't handle 's' format strings here,
	and add an assertion that we never see such format here.
	* valprint.h (val_print_scalar_formatted): Declare.
	* valprint.c (val_print_scalar_formatted): New.
	* c-valprint.c (c_val_print): Use val_print_scalar_formatted
	instead of print_scalar_formatted.
	* jv-valprint.c (java_val_print): Ditto.
	* p-valprint.c (pascal_val_print): Ditto.
	* ada-valprint.c (ada_val_print_1): Ditto.
	* f-valprint.c (f_val_print): Ditto.
	* infcmd.c (registers_info): Ditto.
	* m2-valprint.c (m2_val_print): Ditto.

2011-01-25  Pedro Alves  <pedro@codesourcery.com>

	* m2-valprint.c (print_unbounded_array): Pass
	value_contents_for_printing rather than value_contents, to
	m2_print_array_contents.  Also pass in the value.

2011-01-25  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2read.c (dwarf2_read_index, write_psymtabs_to_index)
	(save_gdb_index_command): Switch to .gdb_index version 4.

2011-01-25  Pedro Alves  <pedro@codesourcery.com>

	* mi/mi-main.c (get_register): Use get_frame_register_value rather
	than frame_register, and always pass a valid value to val_print.

2011-01-25  Pedro Alves  <pedro@codesourcery.com>

	Centralize printing "<optimized out>".

	* valprint.h (val_print_optimized_out): Declare.
	* cp-valprint.c (cp_print_value_fields): Use
	val_print_optimized_out.
	* jv-valprint.c (java_print_value_fields): Ditto.
	* p-valprint.c (pascal_object_print_value_fields): Ditto.
	* printcmd.c (print_formatted): Ditto.
	* valprint.c (valprint_check_validity): Ditto.
	(value_check_printable): Ditto.
	(val_print_optimized_out): New.

2011-01-25  Pedro Alves  <pedro@codesourcery.com>

	* infcmd.c (default_print_registers_info): Allocate values so to
	never pass a NULL value to val_print.

2011-01-25  Pedro Alves  <pedro@codesourcery.com>

	* cp-valprint.c (cp_print_value): Treat the 'skip' local as
	boolean.  Make sure to always pass a value that matches the
	contents buffer to callees.  Preserve `address' for following
	iterations.
	* value.c (value_contents_for_printing_const): New.
	(value_address): Constify value argument.
	* value.h (value_contents_for_printing_const): Declare.
	(value_address): Constify value argument.

2011-01-25  Pedro Alves  <pedro@codesourcery.com>

	* regcache.c (struct regcache_descr): Rename
	sizeof_raw_register_valid_p field to sizeof_raw_register_status,
	and sizeof_cooked_register_valid_p to
	sizeof_cooked_register_status.
	(init_regcache_descr): Adjust.
	(struct regcache): Rename register_valid_p field to
	register_status.
	(regcache_xmalloc_1, regcache_xfree, regcache_save)
	(do_cooked_read): Adjust.
	(regcache_valid_p): Rename to ...
	(regcache_register_status): ... this.  Adjust.
	(regcache_invalidate): Adjust.
	(regcache_raw_read, regcache_cooked_read, regcache_raw_write):
	Adjust.
	(regcache_raw_supply): Adjust.  If buf i NULL, mark the register
	as unavailable, not valid.
	(regcache_dump): Adjust.
	* regcache.h (enum register_status): New.
	(regcache_register_status): Declare.
	(regcache_invalidate): Delete declaration.
	* corelow.c (get_core_registers): Adjust.
	* tracepoint.c (tfile_fetch_registers): Adjust.
	* trad-frame.c (REG_VALUE): Rename to ...
	(TF_REG_VALUE): ... this.
	(REG_UNKNOWN): Rename to ...
	(TF_REG_UNKNOWN): ... this.
	(trad_frame_set_value, trad_frame_set_unknown): Adjust.
	* mi/mi-main.c (register_changed_p): Adjust.

2011-01-25  Pedro Alves  <pedro@codesourcery.com>

	* regcache.c (struct regcache_descr): Remove outdated comment.
	(init_regcache_descr): Remove sizeof_raw_register_valid_p
	overallocate hack.
	(regcache_xmalloc): Rename to ...
	(regcache_xmalloc_1): ... this.  Add `readonly_p' parameter.
	Allocate the regcache type accordingly.
	(regcache_xmalloc): New as wrapper around regcache_xmalloc_1.
	(regcache_xfree): Asser the source is also readonly.  Copy sizeof
	cooked registers, not raw.
	(regcache_dup_no_passthrough): Delete.
	(get_thread_arch_regcache): Use regcache_xmalloc_1.
	* h8300-tdep.c (h8300_push_dummy_call): Tweak comment to not
	mention obsolete write_register_bytes.
	* regcache.h (regcache_dup_no_passthrough): Delete declaration.

2011-01-25  Pedro Alves  <pedro@codesourcery.com>

	Stop remote_read_bytes from handling partial reads itself.

	* remote-fileio.c: Include target.h.
	(remote_fileio_write_bytes): Delete.
	(remote_fileio_func_open, remote_fileio_func_write)
	(remote_fileio_func_rename, remote_fileio_func_unlink): Use
	target_read_memory.
	(remote_fileio_func_stat): Use target_read_memory and
	target_write_memory.
	(remote_fileio_func_gettimeofday): Use target_write_memory.
	(remote_fileio_func_system): Use target_read_memory.
	* remote.c (remote_write_bytes): Make it static.
	(remote_read_bytes): Don't handle partial reads here.
	* remote.h (remote_read_bytes): Delete declaration.

2011-01-25  Pedro Alves  <pedro@codesourcery.com>

	Simplify XML parsing a bit.

	* xml-support.h (gdb_xml_parse_quick): Declare.
	* xml-support.c (gdb_xml_create_parser_and_cleanup_1): Renamed
	from gdb_xml_create_parser_and_cleanup, and added `old_chain'
	parameter.
	(gdb_xml_create_parser_and_cleanup): Reimplement on top of
	gdb_xml_create_parser_and_cleanup_1.
	(gdb_xml_parse_quick): New.
	* memory-map.c (parse_memory_map): Use gdb_xml_parse_quick.
	* osdata.c (osdata_parse): Ditto.
	* remote.c (remote_threads_info): Ditto.
	* solib-target.c (solib_target_parse_libraries): Ditto.
	* xml-syscall.c (syscall_parse_xml): Ditto.
	* xml-tdesc.c (tdesc_parse_xml): Ditto.

2011-01-24  Kevin Buettner  <kevinb@redhat.com>

	* configure.tgt (mips*-*-elf): New; just like mips*-*-*, but
	with remote-mips.o added to gdb_target_obs.
	* Makefile.in (ALL_TARGET_OBS): Add remote-mips.o.

2011-01-24  Pedro Alves  <pedro@codesourcery.com>

	* ada-valprint.c (val_print_packed_array_elements): Pass the
	correct struct value to val_print.
	(ada_val_print_1): Ditto.

2011-01-24  Pedro Alves  <pedro@codesourcery.com>

	Don't lose embedded_offset in printing routines throughout.

	* valprint.h (val_print_array_elements): Change prototype.
	* valprint.c (val_print_array_elements): Add `embedded_offset'
	parameter, and adjust to pass it down to val_print, while passing
	`valaddr' or `address' unmodified.  Take embedded_offset into
	account when checking repetitions.
	* c-valprint.c (c_val_print): Pass embedded_offset to
	val_print_array_elements instead of adjusting `valaddr' and
	`address'.
	* m2-valprint.c (m2_print_array_contents, m2_val_print): Pass
	embedded_offset to val_print_array_elements instead of adjusting
	`valaddr'.
	* p-lang.h (pascal_object_print_value_fields): Adjust prototype.
	* p-valprint.c (pascal_val_print): Pass embedded_offset to
	val_print_array_elements and pascal_object_print_value_fields
	instead of adjusting `valaddr'.
	(pascal_object_print_value_fields): Add `offset' parameter, and
	adjust to use it.
	(pascal_object_print_value): Add `offset' parameter, and adjust to
	use it.
	(pascal_object_print_static_field): Use
	value_contents_for_printing/value_embedded_offset, rather than
	value_contents.
	* ada-valprint.c (val_print_packed_array_elements): Add `offset'
	parameter, and adjust to use it.  Use
	value_contents_for_printing/value_embedded_offset, rather than
	value_contents.
	(ada_val_print): Rename `valaddr0' parameter to `valaddr'.
	(ada_val_print_array): Add `offset' parameter, and adjust to use
	it.
	(ada_val_print_1): Rename `valaddr0' parameter to `valaddr', and
	`embedded_offset' to `offset'.  Don't re-adjust `valaddr'.
	Instead work with offsets.  Use
	value_contents_for_printing/value_embedded_offset, rather than
	value_contents.  Change `defer_val_int' local type to CORE_ADDR,
	and use value_from_pointer to extract a target pointer, rather
	than value_from_longest.
	(print_variant_part): Add `offset' parameter.  Replace
	`outer_valaddr' parameter by a new `outer_offset' parameter.
	Don't re-adjust `valaddr'.  Instead pass down adjusted offsets.
	(ada_value_print): Use
	value_contents_for_printing/value_embedded_offset, rather than
	value_contents.
	(print_record): Add `offset' parameter, and adjust to pass it
	down.
	(print_field_values): Add `offset' parameter.  Replace
	`outer_valaddr' parameter by a new `outer_offset' parameter.
	Don't re-adjust `valaddr'.  Instead pass down adjusted offsets.
	Use value_contents_for_printing/value_embedded_offset, rather than
	value_contents.
	* d-valprint.c (dynamic_array_type): Use
	value_contents_for_printing/value_embedded_offset, rather than
	value_contents.
	* jv-valprint.c (java_print_value_fields): Add `offset' parameter.
	Don't re-adjust `valaddr'.  Instead pass down adjusted offsets.
	(java_print_value_fields): Take `offset' into account.  Don't
	re-adjust `valaddr'.  Instead pass down adjusted offsets.
	(java_val_print): Take `embedded_offset' into account.  Pass it to
	java_print_value_fields.
	* f-valprint.c (f77_print_array_1): Add `embedded_offset'
	parameter.  Don't re-adjust `valaddr' or `address'.  Instead pass
	down adjusted offsets.
	(f77_print_array): Add `embedded_offset' parameter.  Pass it down.
	(f_val_print): Take `embedded_offset' into account.

2011-01-21  Joel Brobecker  <brobecker@adacore.com>

	* inflow.c: Include "gdbcmd.h".
	(interactive_mode): New static global, moved here from top.c.
	(show_interactive_mode): New function, moved here from top.c.
	use gdb_has_a_terminal instead of input_from_terminal_p to
	determine the current mode.
	(gdb_has_a_terminal): Add handling of the "iteractive-mode"
	setting.
	(_initialize_inflow): Add the "set/show interactive-mode"
	commands.  Moved here from top.c, after having adjusted slightly
	the help text.
	* top.c (interactive_mode, show_interactive_mode): Delete, moved
	to inflow.c.
	(input_from_terminal_p): Remove handling of "interactive-mode"
	setting, moved to infow.c.
	(init_main): Remove creation of the "set/show interactive-mode"
	commands, moved to inflow.c.

2011-01-19  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Add entry for native ia64-hpux support.

2011-01-19  Tom Tromey  <tromey@redhat.com>

	PR mi/8618:
	* thread.c (free_thread): Free 'name'.
	(print_thread_info): Emit thread name.  Change CLI output.
	(thread_name_command): New function.
	(do_captured_thread_select): Emit newline.
	(_initialize_thread): Register 'thread name' command.
	* target.h (struct target_ops) <to_thread_name>: New field.
	(target_thread_name): New macro.
	* target.c (update_current_target): Handle to_thread_name.
	* python/py-infthread.c (thpy_get_name): New function.
	(thpy_set_name): Likewise.
	(thread_object_getset): Add "name".
	* linux-nat.c (linux_nat_thread_name): New function.
	(linux_nat_add_target): Set to_thread_name.
	* gdbthread.h (struct thread_info) <name>: New field.

2011-01-18  Joel Brobecker  <brobecker@adacore.com>

	* ada-valprint.c (ada_print_scalar): Remove unsigned char downcast.
	(ada_val_print_1): Likewise.

2011-01-18  Joel Brobecker  <brobecker@adacore.com>

	* rs6000-tdep.c (rs6000_skip_prologue): Make sure that the prologue
	upper limit address is not greater than the function end address
	when the upper limit could not be computed using the debugging
	info.

2011-01-17  Tom Tromey  <tromey@redhat.com>

	* cli/cli-cmds.c (apropos_command): Free the compiled regex.  Use
	get_regcomp_error.
	* utils.c: Include gdb_regex.h.
	(do_regfree_cleanup): New function.
	(make_regfree_cleanup): Likewise.
	(get_regcomp_error): Likewise.
	* gdb_regex.h (make_regfree_cleanup, get_regcomp_error): Declare.

2011-01-17  Tom Tromey  <tromey@redhat.com>

	* cli/cli-cmds.c (apropos_command): Fix formatting.  Don't call
	re_compile_fastmap.

2011-01-17  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-exp.y (intvar): New static variable, used to set CURRENT_TYPE
	for internal variables.
	(last_was_structop): New static variable.
	(COMPLETE): New token.
	(field_exp): New rule to group all '.' suffix handling.
	Add mark_struct_expression calls when approriate to be able
	to correctly find fields for completion.
	(yylex): Adapt to handle field completion and set INTVAR when
	required.

2011-01-14  Yao Qi  <yao@codesourcery.com>

	* arm-tdep.c (arm_register_reggroup_p): FPS register is in
	save_reggroup, restore_reggroup and all_reggroup.

2011-01-14  Joel Brobecker  <brobecker@adacore.com>

	* ada-valprint. (ada_printchar): Use the correct type length
	in call to ada_emit_char.
	* c-valprint.c (c_val_print): Remove cast in call to LA_PRINT_CHAR.

2011-01-14  Pierre Muller  <muller@ics.u-strasbg.fr>

	* solib-som.h (hpux_major_release): Declare variable here.
	* solib-som.c:  Remove <sys/utsname.h> header.
	(DEFAULT_HPUX_MAJOR_RELEASE): New macro.
	(hpux_major_release): Make global, change default value to
	DEFAULT_HPUX_MAJOR_RELEASE.
	(get_hpux_major_release): Simply return HPUX_MAJOR_RELEASE.
	* hppa-hpux-nat.c: Add <sys/utsname.h> include.
	Add "solib-som.h" header.
	(set_hpux_major_release): New function.
	(_initialize_hppa_hpux_nat): Call set_hpux_major_release.

2011-01-14  Mike Frysinger  <vapier@gentoo.org>

	* configure.tgt (*-*-uclinux*): Match more Linux os targets

2011-01-14  Joel Brobecker  <brobecker@adacore.com>

	* ia64-hpux-nat.c (ia64_hpux_fetch_register): Remove trailing
	new-line at end of warning message.
	(ia64_hpux_store_register): Remove trailing new-line at end of
	error message.
	* ia64-hpux-tdep.c: Rephrase comment.
	* solib-ia64-hpux.c (struct dld_info): Change type of field
	dld_flags from "long long" to ULONGEST.

2011-01-14  Pedro Alves  <pedro@codesourcery.com>

	* target.h (deprecated_child_ops): Delete declaration.
	* target.c (deprecated_child_ops): Delete definition.

2011-01-14  Pedro Alves  <pedro@codesourcery.com>

	* Makefile.in (hpux-thread.o): Delete rule.
	* configure.ac: Don't check for HPUX DCE threads support.
	* configure, config.in: Regenerate.
	* hppa-hpux-nat.c (child_suppress_run): Delete.
	(hppa_hpux_child_can_run): Delete.
	(_initialize_hppa_hpux_nat): Don't override to_can_run.
	* hpux-thread.c: Delete.

2011-01-13  Joel Brobecker  <brobecker@adacore.com>

	* hpux-thread.c (hpux_pid_to_str): Delete.

2011-01-13  Joel Brobecker  <brobecker@adacore.com>

	* ada-valprint.c (ada_emit_char): Remove strange code.
	Check that c is <= UCHAR_MAX before passing it to isascii.
	(char_at): Do not assume that TYPE_LEN is either 1 or 2.

2011-01-13  Joel Brobecker  <brobecker@adacore.com>

	* top.c (input_from_terminal_p): Restrict the use of interactive_mode
	to the case where instream is stdin.

2011-01-13  Joel Brobecker  <brobecker@adacore.com>

	* ia64-tdep.h (struct regcache): Forward declare.
	(struct ia64_infcall_ops): New struct type.
	(struct gdbarch_tdep): New fields "find_global_pointer_from_solib"
	and "infcall_ops".
	* ia64-tdep.c (ia64_find_global_pointer_from_dynamic_section):
	Renames ia64_find_global_pointer.
	(ia64_find_global_pointer, ia64_allocate_new_rse_frame)
	(ia64_store_argument_in_slot, ia64_set_function_addr: New function.
	(ia64_push_dummy_call): Adjust to use the new tdep ia64_infocall_ops
	methods.
	(ia64_infcall_ops): New static global constant.
	(ia64_gdbarch_init): Set tdep->infcall_ops.
	* ia64-hpux-nat.c (ia64_hpux_xfer_solib_got): New function.
	(ia64_hpux_xfer_partial): Add TARGET_OBJECT_HPUX_SOLIB_GOT handing.
	* ia64-hpux-tdep.c: Include "regcache.h", "gdbcore.h" and "inferior.h".
	(ia64_hpux_dummy_code): New static global constant.
	(ia64_hpux_push_dummy_code, ia64_hpux_allocate_new_rse_frame)
	(ia64_hpux_store_argument_in_slot, ia64_hpux_set_function_addr)
	(ia64_hpux_dummy_id, ia64_hpux_find_global_pointer_from_solib):
	New function.
	(ia64_hpux_infcall_ops): New static global constant.
	(ia64_hpux_init_abi): Install gdbarch and tdep methods needed
	for inferior function calls to work properly on ia64-hpux.

2011-01-13  Joel Brobecker  <brobecker@adacore.com>

	* target.h (enum target_object): Add TARGET_OBJECT_HPUX_UREGS.
	* ia64-tdep.h (struct frame_info): forward declaration.
	(struct gdbarch_tdep): Add field size_of_register_frame.
	* ia64-tdep.c (ia64_access_reg): Use tdep->size_of_register_frame
	to determine the size of the register frame.
	(ia64_size_of_register_frame): New function.
	(ia64_gdbarch_init): Set tdep->size_of_register_frame.
	* ia64-hpux-tdep.c: Include "target.h" and "frame.h".
	(IA64_HPUX_UREG_REASON): New macro.
	(ia64_hpux_stopped_in_syscall, ia64_hpux_size_of_register_frame):
	New functions.
	(ia64_hpux_init_abi): Set tdep->size_of_register_frame.
	* ia64-hpux-nat.c (ia64_hpux_xfer_uregs): New function.
	(ia64_hpux_xfer_partial): Add handling of TARGET_OBJECT_HPUX_UREGS
	objects.

2011-01-13  Joel Brobecker  <brobecker@adacore.com>

	Add support for ia64-hpux.
	* config/ia64/hpux.mh, ia64-hpux-nat.c, ia64-hpux-tdep.c,
	ia64-hpux-tdep.h, solib-ia64-hpux.c, solib-ia64-hpux.h: New files.

	* configure.host: Add handling for ia64-hpux hosts.  Add associated
	floatformats.
	* configure.tgt: Add handling for ia64-hpux targets.
	* Makefile.in (ALL_64_TARGET_OBS): Add ia64-hpux-tdep.o.
	(HFILES_NO_SRCDIR): Add ia64-hpux-tdep.h.
	(ALLDEPFILES): Add ia64-hpux-nat.c ia64-hpux-tdep.c.

2011-01-13  Joel Brobecker  <brobecker@adacore.com>

	[ttrace] Compute thread list immediately after attach.
	* inf_ttrace_attach (inf_ttrace_create_threads_after_attach):
	New subprogram.
	(inf_ttrace_attach): Use it.

2011-01-13  Joel Brobecker  <brobecker@adacore.com>

	* libunwind-frame.c (libunwind_frame_cache): Do not return NULL
	if we could not determine the frame's function address.  Instead,
	use the frame's PC, and then continue.

2011-01-13  Joel Brobecker  <brobecker@adacore.com>

	* libunwind-frame.c (__LITTLE_ENDIAN, __BIG_ENDIAN): Define if
	not already defined.

2011-01-13  Joel Brobecker  <brobecker@adacore.com>

	* ia64-tdep.c (ia64_struct_type_p): New function.
	(ia64_extract_return_value): Handle integral values that are
	less than 8 bytes long.
	(ia64_push_dummy_call): Likewise.

2011-01-13  Joel Brobecker  <brobecker@adacore.com>

	* ia64-tdep.c (floatformat_ia64_ext_little): Renames
	floatformat_ia64_ext.
	(floatformat_ia64_ext_big): New static const.
	(floatformats_ia64_ext): Set first entry to &floatformat_ia64_ext_big.

2011-01-12  Tom Tromey  <tromey@redhat.com>

	* mi/mi-symbol-cmds.c (mi_cmd_symbol_list_lines): Fix error
	messages.
	* mi/mi-main.c (mi_cmd_thread_select): Fix error messages.
	(mi_cmd_thread_list_ids): Likewise.
	(mi_cmd_data_list_changed_registers): Likewise.
	(mi_cmd_data_list_register_values): Likewise.
	(mi_cmd_data_write_register_values): Likewise.
	(mi_cmd_data_evaluate_expression): Likewise.
	(mi_cmd_data_read_memory): Likewise.
	(mi_cmd_data_read_memory_bytes): Likewise.
	(mi_cmd_data_write_memory): Likewise.
	(mi_cmd_enable_timings): Likewise.
	* mi/mi-interp.c (mi_cmd_interpreter_exec): Fix error messages.
	* mi/mi-cmd-var.c (mi_cmd_var_create): Fix error messages.
	(mi_cmd_var_delete): Likewise.
	(mi_cmd_var_set_format): Likewise.
	(mi_cmd_var_show_format): Likewise.
	(mi_cmd_var_info_num_children): Likewise.
	(mi_cmd_var_list_children): Likewise.
	(mi_cmd_var_info_type): Likewise.
	(mi_cmd_var_info_expression): Likewise.
	(mi_cmd_var_show_attributes): Likewise.
	(mi_cmd_var_assign): Likewise.
	(mi_cmd_var_update): Likewise.
	(mi_cmd_enable_pretty_printing): Likewise.
	(mi_cmd_var_set_update_range): Likewise.
	* mi/mi-cmd-target.c (mi_cmd_target_file_get): Fix error
	messages.
	(mi_cmd_target_file_put): Likewise.
	(mi_cmd_target_file_delete): Likewise.
	* mi/mi-cmd-stack.c (mi_cmd_stack_list_frames): Fix error
	messages.
	(mi_cmd_stack_info_depth): Likewise.
	(mi_cmd_stack_list_locals): Likewise.
	(mi_cmd_stack_list_args): Likewise.
	(mi_cmd_stack_select_frame): Likewise.
	(mi_cmd_stack_select_frame): Likewise.
	(mi_cmd_stack_info_frame): Likewise.
	* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_file): Fix error
	messages.
	(mi_cmd_file_list_exec_source_files): Likewise.
	* mi/mi-cmd-env.c (mi_cmd_env_pwd): Fix error messages.
	(mi_cmd_env_cd): Likewise.
	(mi_cmd_env_path): Likewise.
	(mi_cmd_env_dir): Likewise.
	(mi_cmd_inferior_tty_show): Likewise.
	* mi/mi-cmd-disas.c (mi_cmd_disassemble): Fix error messages.
	* mi/mi-cmd-break.c (mi_cmd_break_insert): Fix error messages.
	(mi_cmd_break_watch): Likewise.

2011-01-12  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* ppc-linux-nat.c (booke_cmp_hw_point): Fix whitespace.
	(ppc_linux_insert_hw_breakpoint): Likewise.
	(ppc_linux_remove_hw_breakpoint): Likewise.
	(ppc_linux_insert_watchpoint): Likewise.

2011-01-12  Andrew Burgess  <aburgess@broadcom.com>
	    Jan Kratochvil  <jan.kratochvil@redhat.com>

	PR fortran/11104 and DWARF unbound arrays detection.
	* dwarf2read.c (read_subrange_type): Set zero length on unspecified
	upper bound.  Set TYPE_HIGH_BOUND_UNDEFINED if not language_ada on
	unspecified upper bound.
	* eval.c (evaluate_subexp_standard) <multi_f77_subscript>: Remove
	variables array_size_array, tmp_type and offset_item.  New variable
	array.  Remove call to f77_get_upperbound.  New variables array_type
	and index.  Call value_subscripted_rvalue for each dimenasion.  Remove
	the final call to deprecated_set_value_type.

2011-01-12  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Make value allocations more lazy.
	* ada-lang.c (coerce_unspec_val_to_type): Use allocate_value_lazy
	instead of allocate_value and set_value_lazy when possible.
	* dwarf2loc.c (dwarf2_evaluate_loc_desc_full): Use allocate_value_lazy
	instead of allocate_value and set_value_lazy.
	* findvar.c (value_of_register_lazy): Likewise.
	(read_var_value): Remove V preallocation, call just check_typedef in
	advance.  Move allocate_value to LOC_CONST, LOC_LABEL,
	LOC_CONST_BYTES.  Use allocate_value_lazy in LOC_STATIC, LOC_ARG,
	LOC_REF_ARG, LOC_LOCAL, LOC_BLOCK.  Set ADDR instead of
	set_value_address and break in LOC_BLOCK.  Use allocate_value_lazy and
	remove lval_memory set in LOC_REGPARM_ADDR.  Use allocate_value_lazy
	in LOC_UNRESOLVED and LOC_OPTIMIZED_OUT.  Add setting lval_memory at
	the end, remove set_value_lazy there.
	* valarith.c (value_subscripted_rvalue): Use allocate_value_lazy
	instead of allocate_value and set_value_lazy when possible.
	* valops.c (value_fetch_lazy): Do nop for value_optimized_out VAL.
	* value.c (allocate_computed_value): Use allocate_value_lazy instead
	of allocate_value and set_value_lazy.
	(value_from_contents_and_address): Use allocate_value_lazy instead of
	allocate_value and set_value_lazy when possible.

2011-01-12  Andrew Burgess  <aburgess@broadcom.com>

	* disasm.c (dump_insns): Support dumping opcodes for MI.
	* mi/mi-cmd-disas.c (mi_cmd_disassemble): Allow mode to control
	dumping of instruction opcodes.

2011-01-09  Robert Millan  <rmh@gnu.org>  (tiny change)

	* configure.tgt: Detect GNU/kFreeBSD and set `gdb_osabi'
	appropiately.

2011-01-11  Tom Tromey  <tromey@redhat.com>

	* thread.c (do_captured_thread_select): Emit newline before
	printing frame.

2011-01-11  Michael Snyder  <msnyder@vmware.com>

	* s390-tdep.c: Comment cleanup, mostly periods and spaces.
	* score-tdep.c: Ditto.
	* score-tdep.h: Ditto.
	* ser-base.c: Ditto.
	* ser-go32.c: Ditto.
	* serial.c: Ditto.
	* serial.h: Ditto.
	* ser-mingw.c: Ditto.
	* ser-pipe.c: Ditto.
	* ser-tcp.c: Ditto.
	* ser-unix.c: Ditto.
	* sh64-tdep.c: Ditto.
	* shnbsd-nat.c: Ditto.
	* sh-tdep.c: Ditto.
	* sh-tdep.h: Ditto.
	* solib.c: Ditto.
	* solib-darwin.c: Ditto.
	* solib-frv.c: Ditto.
	* solib.h: Ditto.
	* solib-irix.c: Ditto.
	* solib-osf.c: Ditto.
	* solib-pa64.c: Ditto.
	* solib-som.c: Ditto.
	* solib-spu.c: Ditto.
	* solib-sunos.c: Ditto.
	* solib-svr4.c: Ditto.
	* solist.h: Ditto.
	* sol-thread.c: Ditto.
	* somread.c: Ditto.
	* source.c: Ditto.
	* source.h: Ditto.
	* sparc64-linux-tdep.c: Ditto.
	* sparc64-tdep.c: Ditto.
	* sparc-linux-nat.c: Ditto.
	* sparc-linux-tdep.c: Ditto.
	* sparc-sol2-nat.c: Ditto.
	* sparc-sol2-tdep.c: Ditto.
	* sparc-tdep.c: Ditto.
	* sparc-tdep.h: Ditto.
	* spu-tdep.c: Ditto.
	* stabsread.c: Ditto.
	* stabsread.h: Ditto.
	* stack.c: Ditto.
	* symfile.c: Ditto.
	* symfile.h: Ditto.
	* symmisc.c: Ditto.
	* symtab.c: Ditto.
	* symtab.h: Ditto.
	* target.c: Ditto.
	* target-descriptions.c: Ditto.
	* target-descriptions.h: Ditto.
	* target.h: Ditto.
	* target-memory.c: Ditto.
	* terminal.h: Ditto.
	* thread.c: Ditto.
	* top.c: Ditto.
	* tracepoint.c: Ditto.
	* tracepoint.h: Ditto.
	* trad-frame.h: Ditto.
	* typeprint.c: Ditto.

2011-01-11  Michael Snyder  <msnyder@vmware.com>

	* ui-file.c: Comment cleanup, mostly periods and spaces.
	* ui-file.h: Ditto.
	* ui-out.c: Ditto.
	* ui-out.h: Ditto.
	* utils.c: Ditto.
	* v850-tdep.c: Ditto.
	* valarith.c: Ditto.
	* valops.c: Ditto.
	* valprint.c: Ditto.
	* valprint.h: Ditto.
	* value.c: Ditto.
	* value.h: Ditto.
	* varobj.c: Ditto.
	* varobj.h: Ditto.
	* vax-tdep.c: Ditto.
	* vec.c: Ditto.
	* vec.h: Ditto.
	* version.h: Ditto.
	* windows-nat.c: Ditto.
	* windows-tdep.c: Ditto.
	* xcoffread.c: Ditto.
	* xcoffsolib.c: Ditto.
	* xml-support.c: Ditto.
	* xstormy16-tdep.c: Ditto.
	* xtensa-tdep.c: Ditto.
	* xtensa-tdep.h: Ditto.

2011-01-11  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* breakpoint.c (resources_needed_watchpoint): Fix indentation.
	* gdbtypes.c (is_scalar_type_recursive): Fix formatting.

2011-01-11  Sergio Durigan Junior  <sergiodj@linux.vnet.ibm.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>

	Implement support for PowerPC BookE ranged watchpoints.
	* breakpoint.h
	(struct breakpoint_ops) <resources_needed>: New method.
	Initialize to NULL in all existing breakpoint_ops instances.
	(struct breakpoint) <exact>: New field.
	(target_exact_watchpoints): Declare external global.
	* breakpoint.c (target_exact_watchpoints): New global flag.
	(update_watchpoint): Set b->type to bp_hardware_watchpoint and
	b->enable_state to bp_enabled before calling
	hw_watchpoint_used_count.
	(hw_watchpoint_used_count): Iterate over all bp_locations in a
	watchpoint.  Call breakpoint's breakpoint_ops.resources_needed
	if available.
	(insert_watchpoint, remove_watchpoint): Use fixed length of 1 byte
	if the watchpoint is exact.
	(resources_needed_watchpoint): New function.
	(watchpoint_breakpoint_ops): Add resources_needed_watchpoint.
	(watch_command_1): Set b->exact if the user asked for an exact
	watchpoint and one can be set.
	(can_use_hardware_watchpoint): Add exact_watchpoints argument.
	Pass fixed length of 1 to target_region_ok_for_hw_watchpoint if
	the user asks for an exact watchpoint and one can be set.  Return
	number of needed debug registers to watch the expression.
	* gdbtypes.c (is_scalar_type): New function, based on
	valprint.c:scalar_type_p.
	(is_scalar_type_recursive): New function.
	* gdbtypes.h (is_scalar_type_recursive): Declare.
	* ppc-linux-nat.c (ppc_linux_region_ok_for_hw_watchpoint): Always
	handle regions when ranged watchpoints are available.
	(create_watchpoint_request): New function.
	(ppc_linux_insert_watchpoint, ppc_linux_remove_watchpoint): Use
	create_watchpoint_request.
	* rs6000-tdep.c (show_powerpc_exact_watchpoints): New function.
	(_initialize_rs6000_tdep): Add `exact-watchpoints' boolean to the
	`set powerpc' and `show powerpc' commands.
	* target.h (struct target_ops) <to_region_ok_for_hw_watchpoint>:
	Mention documentation comment in the target macro.
	(target_region_ok_for_hw_watchpoint): Document return value.

2011-01-11  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* breakpoint.c (update_watchpoint): Decide on using a software or
	hardware watchpoint after the bp_locations are created.

2010-01-11  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	Convert hardware watchpoints to use breakpoint_ops.
	* breakpoint.h (breakpoint_ops) <insert>: Rename to...
	<insert_location>: ... this.  Return int instead of void.
	Accept pointer to struct bp_location instead of pointer to
	struct breakpoint.  Adapt all implementations.
	(breakpoint_ops) <remove>: Rename to...
	<remove_location>: ... this.  Accept pointer to struct bp_location
	instead of pointer to struct breakpoint.  Adapt all implementations.
	* breakpoint.c (insert_catchpoint): Delete function.
	(insert_bp_location): Call the watchpoint or catchpoint's
	breakpoint_ops.insert method.
	(remove_breakpoint_1): Call the watchpoint or catchpoint's
	breakpoint_ops.remove method.
	(insert_watchpoint, remove_watchpoint): New functions.
	(watchpoint_breakpoint_ops): New structure.
	(watch_command_1): Initialize the OPS field.
	* inf-child.c (inf_child_insert_fork_catchpoint)
	(inf_child_remove_fork_catchpoint, inf_child_insert_vfork_catchpoint)
	(inf_child_remove_vfork_catchpoint, inf_child_insert_exec_catchpoint)
	(inf_child_remove_exec_catchpoint, inf_child_set_syscall_catchpoint):
	Delete functions.
	(inf_child_target): Remove initialization of to_insert_fork_catchpoint,
	to_remove_fork_catchpoint, to_insert_vfork_catchpoint,
	to_remove_vfork_catchpoint, to_insert_exec_catchpoint,
	to_remove_exec_catchpoint and to_set_syscall_catchpoint.
	* target.c (update_current_target): Change default implementation of
	to_insert_fork_catchpoint, to_remove_fork_catchpoint,
	to_insert_vfork_catchpoint, to_remove_vfork_catchpoint,
	to_insert_exec_catchpoint, to_remove_exec_catchpoint and
	to_set_syscall_catchpoint to return_one.
	(debug_to_insert_fork_catchpoint, debug_to_insert_vfork_catchpoint)
	(debug_to_insert_exec_catchpoint): Report return value.
	* target.h (to_insert_fork_catchpoint, to_insert_vfork_catchpoint)
	(to_insert_exec_catchpoint): Change declaration to return int instead
	of void.

2011-01-11  Michael Snyder  <msnyder@vmware.com>

	* arm-tdep.c: Internationalization.
	* c-lang.c: Ditto.
	* charset.c: Ditto.
	* fork-child.c: Ditto.
	* nto-procfs.c: Ditto.
	* ppc-sysv-tdep.c: Ditto.
	* procfs.c: Ditto.
	* remote-mips.c: Ditto.
	* remote.c: Ditto.
	* rs6000-nat.c: Ditto.
	* rs6000-tdep.c: Ditto.
	* target.c: Ditto.
	* valops.c: Ditto.
	* value.c: Ditto.
	* xml-support.c: Ditto.
	* mi/mi-cmd-break.c: Ditto.
	* mi/mi-cmd-var.c: Ditto.
	* mi/mi-interp.c: Ditto.
	* mi/mi-main.c: Ditto.

2011-01-11  Andrew Burgess  <aburgess@broadcom.com>

	* remote-sim.c (gdbsim_store_register): Update API to
	sim_store_register to check more error conditions.

2011-01-10  Michael Snyder  <msnyder@vmware.com>

	* nto-procfs.c: Comment cleanup, mostly periods and spaces.
	* nto-tdep.c: Ditto.
	* nto-tdep.h: Ditto.
	* objc-exp.y: Ditto.
	* objc-lang.c: Ditto.
	* objfiles.c: Ditto.
	* objfiles.h: Ditto.
	* observer.c: Ditto.
	* opencl-lang.c: Ditto.
	* osabi.c: Ditto.
	* parse.c: Ditto.
	* parser-defs.h: Ditto.
	* p-exp.y: Ditto.
	* p-lang.c: Ditto.
	* posix-hdep.c: Ditto.
	* ppcbug-rom.c: Ditto.
	* ppc-linux-nat.c: Ditto.
	* ppc-linux-tdep.c: Ditto.
	* ppc-linux-tdep.h: Ditto.
	* ppcnbsd-tdep.c: Ditto.
	* ppcobsd-tdep.c: Ditto.
	* ppcobsd-tdep.h: Ditto.
	* ppc-sysv-tdep.c: Ditto.
	* ppc-tdep.h: Ditto.
	* printcmd.c: Ditto.
	* proc-abi.c: Ditto.
	* proc-flags.c: Ditto.
	* procfs.c: Ditto.
	* proc-utils.h: Ditto.
	* progspace.h: Ditto.
	* prologue-value.c: Ditto.
	* prologue-value.h: Ditto.
	* psympriv.h: Ditto.
	* psymtab.c: Ditto.
	* p-typeprint.c: Ditto.
	* p-valprint.c: Ditto.
	* ravenscar-sparc-thread.c: Ditto.
	* ravenscar-thread.c: Ditto.
	* ravenscar-thread.h: Ditto.
	* record.c: Ditto.
	* regcache.c: Ditto.
	* regcache.h: Ditto.
	* remote.c: Ditto.
	* remote-fileio.c: Ditto.
	* remote-fileio.h: Ditto.
	* remote.h: Ditto.
	* remote-m32r-sdi.c: Ditto.
	* remote-mips.c: Ditto.
	* remote-sim.c: Ditto.
	* rs6000-aix-tdep.c: Ditto.
	* rs6000-nat.c: Ditto.
	* rs6000-tdep.c: Ditto.

2011-01-10  Michael Snyder  <msnyder@vmware.com>

	* charset.c (validate): Internationalization.
	* coffread.c (read_one_sym): Ditto.
	* dwarf2read.c (dwarf2_attach_fields_to_type): Ditto.
	* h8300-tdep.c (H8300_extract_return_value): Ditto.
	* inflow.c (new_tty): Ditto.
	* iq2000-tdep.c (iq2000_breakpoint_from_pc): Ditto.
	* m32c-tdep.c (m32c_return_value): Ditto.
	* mep-tdep.c (mep_store_return_value): Ditto.
	* score-tdep.c (score7_fetch_insn): Ditto.
	* ser-mingw.c (pipe_windows_open): Ditto.
	* sh64-tdep.c (sh64_extract_return_value): Ditto.
	* spu-tdep.c (spu_register_type): Ditto.
	* tracepoint.c (trace_find_command): Ditto.
	* valarith.c (value_pos): Ditto.

2011-01-10  Joel Brobecker  <brobecker@adacore.com>

	* ada-valprint.c (printstr): Minor comment reformatting.

2011-01-08  Michael Snyder  <msnyder@vmware.com>

	* m32r-rom.c (m32r_upload_command): Fix up ARI warnings for _
	markup.

2011-01-08  Michael Snyder  <msnyder@vmware.com>

	* h8300-tdep.c: Comment cleanup, mostly periods and spaces.
	* hppa-hpux-tdep.c: Ditto.
	* hppa-linux-nat.c: Ditto.
	* hppa-linux-tdep.c: Ditto.
	* hppanbsd-tdep.c: Ditto.
	* hppa-tdep.c: Ditto.
	* hppa-tdep.h: Ditto.
	* hpux-thread.c: Ditto.
	* i386-cygwin-tdep.c: Ditto.
	* i386-darwin-nat.c: Ditto.
	* i386gnu-nat.c: Ditto.
	* i386-linux-nat.c: Ditto.
	* i386-linux-tdep.c: Ditto.
	* i386-nat.c: Ditto.
	* i386-nat.h: Ditto.
	* i386nbsd-tdep.c: Ditto.
	* i386-sol2-nat.c: Ditto.
	* i386-stub.c: Ditto.
	* i386-tdep.c: Ditto.
	* i386-tdep.h: Ditto.
	* i387-tdep.c: Ditto.
	* ia64-linux-nat.c: Ditto.
	* ia64-linux-tdep.c: Ditto.
	* ia64-tdep.c: Ditto.
	* infcall.c: Ditto.
	* infcall.h: Ditto.
	* infcmd.c: Ditto.
	* inferior.c: Ditto.
	* inferior.h: Ditto.
	* infloop.c: Ditto.
	* inflow.c: Ditto.
	* infrun.c: Ditto.
	* interps.c: Ditto.
	* interps.h: Ditto.
	* iq2000-tdep.c: Ditto.
	* irix5-nat.c: Ditto.
	* jit.c: Ditto.
	* jit.h: Ditto.
	* jv-exp.y: Ditto.
	* jv-lang.c: Ditto.
	* jv-lang.h: Ditto.
	* jv-typeprint.c: Ditto.
	* jv-valprint.c: Ditto.
	* language.c: Ditto.
	* language.h: Ditto.
	* linespec.c: Ditto.
	* linux-fork.c: Ditto.
	* linux-nat.c: Ditto.
	* linux-thread-db.c: Ditto.
	* lm32-tdep.c: Ditto.

2011-01-08  Michael Snyder  <msnyder@vmware.com>

	* m2-exp.y: Comment cleanup, mostly periods and spaces.
	* m2-lang.c: Ditto.
	* m2-typeprint.c: Ditto.
	* m2-valprint.c: Ditto.
	* m32c-tdep.c: Ditto.
	* m32r-linux-nat.c: Ditto.
	* m32r-rom.c: Ditto.
	* m32r-tdep.c: Ditto.
	* m32r-tdep.h: Ditto.
	* m68hc11-tdep.c: Ditto.
	* m58klinux-nat.c: Ditto.
	* m68k-tdep.c: Ditto.
	* m88k-tdep.c: Ditto.
	* m88k-tdep.h: Ditto.
	* machoread.c: Ditto.
	* macrocmd.c: Ditto.
	* macroexp.c: Ditto.
	* macrotab.c: Ditto.
	* main.c: Ditto.
	* maint.c: Ditto.
	* mdebugread.c: Ditto.
	* mdebugread.h: Ditto.
	* memattr.c: Ditto.
	* memattr.h: Ditto.
	* memory-map.h: Ditto.
	* mep-tdep.c: Ditto.
	* microblaze-rom.c: Ditto.
	* microblaze-tdep.c: Ditto.
	* minsyms.c: Ditto.
	* mips-irix-tdep.c: Ditto.
	* mips-linux-nat.c: Ditto.
	* mips-linux-tdep.c: Ditto.
	* mips-linux-tdep.h: Ditto.
	* mipsnbsd-nat.c: Ditto.
	* mipsnbsd-tdep.c: Ditto.
	* mipsread.c: Ditto.
	* mips-tdep.c: Ditto.
	* mips-tdep.h: Ditto.
	* mn10300-linux-tdep.c: Ditto.
	* mn10300-tdep.c: Ditto.
	* mn10300-tdep.h: Ditto.
	* monitor.c: Ditto.
	* monitor.h: Ditto.
	* moxie-tdep.c: Ditto.
	* moxie-tdep.h: Ditto.
	* mt-tdep.c: Ditto.

2011-01-08  Mike Frysinger  <vapier@gentoo.org>

	* bfin-tdep.h (BFIN_A0_DOT_W_REGNUM): Fix typo in name.

2011-01-08  Robert Millan  <rmh@gnu.org>

	* fbsd-nat.c (fbsd_find_memory_regions): Fix typo.

2011-01-07  Michael Snyder  <msnyder@vmware.com>

	* charset.c (_initialize_charset): Fix typo in string.

2011-01-07  Michael Snyder  <msnyder@vmware.com>

	* mi/mi-cmd-disas.c (mi_cmd_disassemble): Mark up error message
	for i18n.
	* tui/tui-layout.c (tui_set_layout_for_display_command):
	Split line so that operator goes to beginning of line.
	* tui/tui-winsource.c (tui_horizontal_source_scroll): Move
	assignment out of if statement.

2011-01-07  Michael Snyder  <msnyder@vmware.com>

	* ada-lang.c: Comment cleanup, mostly periods and spaces.
	* ada-lang.h: Ditto.
	* ada-tasks.c: Ditto.
	* ada-valprint.c: Ditto.
	* aix-threads.c: Ditto.
	* alpha-linux-nat.c: Ditto.
	* alpha-linux-tdep.c: Ditto.
	* alpha-mdebug-tdep.c: Ditto.
	* alpha-nat.c: Ditto.
	* alpha-osf1-tdep.c: Ditto.
	* alpha-tdep.c: Ditto.
	* alphabsd-nat.c: Ditto.
	* alphabsd-tdep.c: Ditto.
	* amd64-darwin-tdep.c: Ditto.
	* amd64-linux-nat.c: Ditto.
	* amd64-linux-tdep.c: Ditto.
	* amd64-sol2-tdep.c: Ditto.
	* amd64-tdep.c: Ditto.
	* amd64-fbsd-tdep.c: Ditto.
	* amd64-nbsd-tdep.c: Ditto.
	* amd64-obsd-tdep.c: Ditto.
	* amd64-linux-nat.c: Ditto.
	* amd64-linux-tdep.c: Ditto.
	* arm-tdep.c: Ditto.
	* arm-tdep.h: Ditto.
	* armnbsd-nat.c: Ditto.
	* avr-tdep.c: Ditto.
	* bfin-tdep.c: Ditto.
	* bsd-kvm.c: Ditto.
	* c-typeprintc: Ditto.
	* c-valprint.c: Ditto.
	* coff-pe-read.h: Ditto.
	* coffreead.c: Ditto.
	* cris-tdep.c: Ditto.
	* d-lang.c: Ditto.
	* darwin-nat-info.c: Ditto.
	* darwin-nat.c: Ditto.
	* dbug-rom.c: Ditto.
	* dbxread.c: Ditto.
	* dcache.c: Ditto.
	* dcache.h: Ditto.
	* dec-thread.c: Ditto.
	* defs.h: Ditto.
	* demangle.c: Ditto.
	* dicos-tdep.c: Ditto.
	* dictionary.c: Ditto.
	* dictionary.h: Ditto.
	* dink32-rom.c: Ditto.
	* disasm.c: Ditto.
	* doublest.c: Ditto.
	* dsrec.c: Ditto.
	* dummy-frame.c: Ditto.
	* dwarf2-frame.c: Ditto.
	* dwarf2expr.c: Ditto.
	* dwarf2loc.c: Ditto.
	* dwarf2read.c: Ditto.
	* elfread.c: Ditto.
	* environ.c: Ditto.
	* eval.c: Ditto.
	* event-top.h: Ditto.
	* exceptions.c: Ditto.
	* exceptions.h: Ditto.
	* exec.c: Ditto.
	* expprint.c: Ditto.
	* expression.h: Ditto.
	* f-exp.y: Ditto.
	* f-lang.c: Ditto.
	* f-lang.h: Ditto.
	* f-typeprint.c: Ditto.
	* f-valprint.c: Ditto.
	* fbsd-nat.c: Ditto.
	* findvar.c: Ditto.
	* fork-child.c: Ditto.
	* frame.c: Ditto.
	* frame.h: Ditto.
	* frv-linux-tdep.c: Ditto.
	* frv-tdep.c: Ditto.
	* gcore.c: Ditto.
	* gdb-stabs.h: Ditto.
	* gdb_assert.h: Ditto.
	* gdb_string.h: Ditto.
	* gdb_thread_db.h: Ditto.
	* gdb_wait.h: Ditto.
	* gdbarch.sh: Ditto.
	* gdbcore.h: Ditto.
	* gdbthread.h: Ditto.
	* gdbtypes.c: Ditto.
	* gdbtypes.h: Ditto.
	* gnu-nat.c: Ditto.
	* gnu-nat.h: Ditto.
	* gnu-v2-abi.c: Ditto.
	* gnu-v3-abi.c: Ditto.
	* go32-nat.c: Ditto.
	* gdbarch.c: Regenerate.
	* gdbarch.h: Regenerate.

2011-01-07  Michael Snyder  <msnyder@vmware.com>

	* ax-gdb.c: Adjust some long output strings.
	* breakpoint.c: Ditto.
	* charset.c: Ditto.
	* cp-abi.c: Ditto.
	* infcall.c: Ditto.
	* infrun.c: Ditto.
	* linux-nat.c: Ditto.
	* solib-pa64.c: Ditto.
	* solib-som.c: Ditto.

2011-01-06  Tom Tromey  <tromey@redhat.com>

	PR python/12367:
	* NEWS: Add item.
	* python/python.c (GdbMethods): Add "newest_frame" method.
	* python/python-internal.h (gdbpy_newest_frame): Declare.
	* python/py-frame.c (gdbpy_newest_frame): New function.

2010-01-06  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* jit.h (struct jit_code_entry): use ULONGEST for symfile_size.
	* jit.c (jit_debug): New variable.
	(show_jit_debug): New function.
	(struct target_buffer): Use ULONGEST.
	(bfd_open_from_target_memory): Likewise.
	(jit_register_code, jit_inferior_init): Add debug output.
	(_initialize_jit): Register "debug jit" command.

2011-01-06  Tom Tromey  <tromey@redhat.com>

	* frame.h (enum frame_type) <INLINE_FRAME>: Fix comment.
	* python/py-frame.c (gdbpy_initialize_frames): Add INLINE_FRAME
	and ARCH_FRAME.

2011-01-06  Tom Tromey  <tromey@redhat.com>

	* python/py-frame.c (frapy_block): Use get_frame_block.

2011-01-06  Joel Brobecker  <brobecker@adacore.com>

	Do not stop on SIGPRIO signals by default
	* infrun.c (_initialize_infrun): Unset signal_stop and
	signal_print for TARGET_SIGNAL_PRIO.

2011-01-06  Joel Brobecker  <brobecker@adacore.com>

	* ada-tasks.c: Fix style violation in comment.

2011-01-06  Joel Brobecker  <brobecker@adacore.com>

	* linespec.c (decode_compound, find_method): Remove trailing \n
	at end of error string.
	* solib-irix.c (irix_current_sos): Likewise.
	* varobj.c (uninstall_variable): Likewise.

2011-01-06  Joel Brobecker  <brobecker@adacore.com>

	* copyright.py: New script.
	* copyright.sh (byhand): Add *.ads, *.adb, *.gpr and *.inc.
	Launch emacs without exec'ing. Call copyright.py afterwards.

2011-01-05  Michael Snyder  <msnyder@vmware.com>

	* addrmap.c: Shorten lines of >= 80 columns.
	* arch-utils.c: Ditto.
	* arch-utils.h: Ditto.
	* ax-gdb.c: Ditto.
	* ax-general.c: Ditto.
	* bcache.c: Ditto.
	* blockframe.c: Ditto.
	* breakpoint.c: Ditto.
	* buildsym.c: Ditto.
	* c-lang.c: Ditto.
	* c-typeprint.c: Ditto.
	* charset.c: Ditto.
	* coffread.c: Ditto.
	* command.h: Ditto.
	* corelow.c: Ditto.
	* cp-abi.c: Ditto.
	* cp-namespace.c: Ditto.
	* cp-support.c: Ditto.
	* dbug-rom.c: Ditto.
	* dbxread.c: Ditto.
	* defs.h: Ditto.
	* dfp.c: Ditto.
	* dfp.h: Ditto.
	* dictionary.c: Ditto.
	* disasm.c: Ditto.
	* doublest.c: Ditto.
	* dwarf2-frame.c: Ditto.
	* dwarf2expr.c: Ditto.
	* dwarf2loc.c: Ditto.
	* dwarf2read.c: Ditto.
	* elfread.c: Ditto.
	* eval.c: Ditto.
	* event-loop.c: Ditto.
	* event-loop.h: Ditto.
	* exceptions.h: Ditto.
	* exec.c: Ditto.
	* expprint.c: Ditto.
	* expression.h: Ditto.
	* f-lang.c: Ditto.
	* f-valprint.c: Ditto.
	* findcmd.c: Ditto.
	* frame-base.c: Ditto.
	* frame-unwind.c: Ditto.
	* frame-unwind.h: Ditto.
	* frame.c: Ditto.
	* frame.h: Ditto.
	* gcore.c: Ditto.
	* gdb-stabs.h: Ditto.
	* gdb_assert.h: Ditto.
	* gdb_dirent.h: Ditto.
	* gdb_obstack.h: Ditto.
	* gdbcore.h: Ditto.
	* gdbtypes.c: Ditto.
	* gdbtypes.h: Ditto.
	* inf-ttrace.c: Ditto.
	* infcall.c: Ditto.
	* infcmd.c: Ditto.
	* inflow.c: Ditto.
	* infrun.c: Ditto.
	* inline-frame.h: Ditto.
	* language.c: Ditto.
	* language.h: Ditto.
	* libunwind-frame.c: Ditto.
	* libunwind-frame.h: Ditto.
	* linespec.c: Ditto.
	* linux-nat.c: Ditto.
	* linux-nat.h: Ditto.
	* linux-thread-db.c: Ditto.
	* machoread.c: Ditto.
	* macroexp.c: Ditto.
	* macrotab.c: Ditto.
	* main.c: Ditto.
	* maint.c: Ditto.
	* mdebugread.c: Ditto.
	* memattr.c: Ditto.
	* minsyms.c: Ditto.
	* monitor.c: Ditto.
	* monitor.h: Ditto.
	* objfiles.c: Ditto.
	* objfiles.h: Ditto.
	* osabi.c: Ditto.
	* p-typeprint.c: Ditto.
	* p-valprint.c: Ditto.
	* parse.c: Ditto.
	* printcmd.c: Ditto.
	* proc-events.c: Ditto.
	* procfs.c: Ditto.
	* progspace.c: Ditto.
	* progspace.h: Ditto.
	* psympriv.h: Ditto.
	* psymtab.c: Ditto.
	* record.c: Ditto.
	* regcache.c: Ditto.
	* regcache.h: Ditto.
	* remote-fileio.c: Ditto.
	* remote.c: Ditto.
	* ser-mingw.c: Ditto.
	* ser-tcp.c: Ditto.
	* ser-unix.c: Ditto.
	* serial.c: Ditto.
	* serial.h: Ditto.
	* solib-frv.c: Ditto.
	* solib-irix.c: Ditto.
	* solib-osf.c: Ditto.
	* solib-pa64.c: Ditto.
	* solib-som.c: Ditto.
	* solib-sunos.c: Ditto.
	* solib-svr4.c: Ditto.
	* solib-target.c: Ditto.
	* solib.c: Ditto.
	* somread.c: Ditto.
	* source.c: Ditto.
	* stabsread.c: Ditto.
	* stabsread.c: Ditto.
	* stack.c: Ditto.
	* stack.h: Ditto.
	* symfile-mem.c: Ditto.
	* symfile.c: Ditto.
	* symfile.h: Ditto.
	* symmisc.c: Ditto.
	* symtab.c: Ditto.
	* symtab.h: Ditto.
	* target-descriptions.c: Ditto.
	* target-memory.c: Ditto.
	* target.c: Ditto.
	* target.h: Ditto.
	* terminal.h: Ditto.
	* thread.c: Ditto.
	* top.c: Ditto.
	* tracepoint.c: Ditto.
	* tracepoint.h: Ditto.
	* ui-file.c: Ditto.
	* ui-file.h: Ditto.
	* ui-out.h: Ditto.
	* user-regs.c: Ditto.
	* user-regs.h: Ditto.
	* utils.c: Ditto.
	* valarith.c: Ditto.
	* valops.c: Ditto.
	* valprint.c: Ditto.
	* valprint.h: Ditto.
	* value.c: Ditto.
	* varobj.c: Ditto.
	* varobj.h: Ditto.
	* vec.h: Ditto.
	* xcoffread.c: Ditto.
	* xcoffsolib.c: Ditto.
	* xcoffsolib.h: Ditto.
	* xml-syscall.c: Ditto.
	* xml-tdesc.c: Ditto.

2011-01-05  Michael Snyder  <msnyder@vmware.com>

	* cli/cli-cmds.c: Shorten lines of >= 80 columns.
	* cli/cli-decode.c: Ditto.
	* cli/cli-dump.c: Ditto.
	* cli/cli-logging.c: Ditto.
	* cli/cli-script.c: Ditto.
	* cli/cli-setshow.c: Ditto.
	* common/signals.c: Ditto.
	* mi/mi-cmd-break.c: Ditto.
	* mi/mi-cmd-disas.c: Ditto.
	* mi/mi-cmd-stack.c: Ditto.
	* mi/mi-cmd-var.c: Ditto.
	* mi/mi-cmds.c: Ditto.
	* mi/mi-common.h: Ditto.
	* mi/mi-console.c: Ditto.
	* mi/mi-interp.c: Ditto.
	* mi/mi-main.c: Ditto.
	* osf-share/cma_attr.c: Ditto.
	* osf-share/cma_deb_core.h: Ditto.
	* osf-share/cma_debug_client.h: Ditto.
	* osf-share/cma_handle.h: Ditto.
	* osf-share/cma_mutex.h: Ditto.
	* osf-share/cma_stack_int.h: Ditto.
	* osf-share/cma_tcb_defs.h: Ditto.
	* python/py-auto-load.c: Ditto.
	* python/py-breakpoint.c: Ditto.
	* python/py-cmd.c: Ditto.
	* python/py-frame.c: Ditto.
	* python/py-objfile.c: Ditto.
	* python/py-param.c: Ditto.
	* python/py-progspace.c: Ditto.
	* python/py-symbol.c: Ditto.
	* python/py-value.c: Ditto.
	* python/python-internal.h: Ditto.
	* python/python.c: Ditto.
	* tui/tui-data.c: Ditto.
	* tui/tui-disasm.c: Ditto.
	* tui/tui-hooks.c: Ditto.
	* tui/tui-io.c: Ditto.
	* tui/tui-layout.c: Ditto.
	* tui/tui-regs.c: Ditto.
	* tui/tui-source.c: Ditto.
	* tui/tui-stack.c: Ditto.
	* tui/tui-win.c: Ditto.
	* tui/tui-windata.c: Ditto.
	* tui/tui-winsource.c: Ditto.

2011-01-05  Joel Brobecker  <brobecker@adacore.com>

	* configure.ac, gdb.1: Copyright year update.

2011-01-03  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* frame.c (get_prev_frame_1) <UNWIND_INNER_ID>: New variables
	this_pc_in_block, morestack_msym and morestack_name.  Check for
	"__morestack" minimal symbol there.

2011-01-03  Joel Brobecker  <brobecker@adacore.com>

	* symfile.c (find_sym_fns): Add call to dont_repeat.

2011-01-01  Joel Brobecker  <brobecker@adacore.com>

	Copyright year update in most files (performed by copyright.sh).

2011-01-01  Joel Brobecker  <brobecker@adacore.com>

	* top.c (print_gdb_version): Update copyright year in version output.

For older changes see ChangeLog-2010.

Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
coding: utf-8
End:
