2010-12-17  Kevin Buettner  <kevinb@redhat.com>

	* mips-tdep.c (make_mips16_addr): New function.
	(mips_elf_make_msymbol_special): Don't set the low bit in the
	symbol's address.
	(mips_read_pc, mips_unwind_pc, mips_addr_bits_remove): Strip bit
	indicating mips16 address, if present.
	(mips_write_pc): Set bit indicating mips16 address when in a mips16
	function.
	(mips_eabi_push_dummy_call, mips_o64_push_dummy_call): Likewise,
	but for each function pointer argument to inferior function call.

2010-12-17  Tom Tromey  <tromey@redhat.com>

	* psympriv.h (struct partial_symtab) <readin>: Move field
	earlier.

2010-12-16  Kevin Buettner  <kevinb@redhat.com>

	* mips-tdep.c (mips_convert_register_float_case_p)
	(mips_convert_register_gpreg_case_p): New functions.
	(mips_convert_register_p): Invoke new functions above.
	(mips_register_to_value): Add case for fetching value shorter
	than 64 bits from a 64-bit register.
	(mips_value_to_register): Add case for storing value shorter
	than 64 bits into a 64-bit register.

2010-12-16  Joel Borggrén-Franck  <joel.borggren.franck@gmail.com>

	* python/py-value.c (value_object_type) <tp_flags>: Add
	Py_TPFLAGS_BASETYPE.

2010-12-16  Mike Frysinger  <vapier@gentoo.org>

	* NEWS: Mention new sim --map-info flag.

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

	* dwarf2read.c (_initialize_dwarf2_read): Fix help text of
	"save gdb-index" command.

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

	* infrun.c (save_infcall_control_state): Handle the
	exception-resume breakpoint.
	(restore_infcall_control_state): Likewise.
	(discard_infcall_control_state): Likewise.

2010-12-15  Kevin Buettner  <kevinb@redhat.com>

	* mips-tdep.c (mips_pseudo_register_write): Sign extend 32-bit
	cooked values that are being transferred to 64-bit raw registers.
	(mips_pseudo_register_read): Revise to preserve symmetry with
	mips_pseudo_register_write().

2010-12-15  Greg Watson  <g.watson@computer.org>

	* f-exp.y (yylex): Check entire token against keywords.

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

	Rename "maint set python auto-load" to "set auto-load-scripts".
	* NEWS: Mention it.
	* python/py-auto-load.c (auto_load_scripts): Renamed from
	gdbpy_auto_load.
	(load_auto_scripts_for_objfile): Update.
	(gdbpy_initialize_auto_load): Rename "maint set python auto-load" to
	"set auto-load-scripts".

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

	* mips-tdep.c (mips_eabi_push_dummy_call): Place signed, rather
	than unsigned, values in registers.

2010-12-14  Ken Werner  <ken.werner@de.ibm.com>

	* valops.c (value_one): Use get_array_bounds to compute the number
	of array elements instead of dividing the length of the array by the
	length of the element types.
	* valarith.c (value_complement, value_neg): Likewise.

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

	* irix5-nat.c: Replace fp_r, fp_regs and fp_scr by __fp_r, __fp_regs
	and __fp_scr respectively throughout.
	* configure.ac: Compile with -Dsiginfo=__siginfo if building with
	Python using GCC on IRIX.
	* configure: Regenerate.

2010-12-13  Kevin Buettner  <kevinb@redhat.com>

	* solib-svr4.c (enable_break): Don't attempt to place breakpoints,
	when attaching, on the names in bkpt_names: _start, __start, and
	main.

2010-12-12  Stan Shebs  <stan@codesourcery.com>

	* value.c (value_of_internalvar): Add case for trace state
	variables.

2010-12-12  Doug Evans  <dje@google.com>

	* dwarf2read.c (dwarf2_per_objfile): New member quick_file_names_table.
	(dwarf2_per_cu_quick_data): Move definition down to "quick functions"
	section.  Delete members lines full_names.  Rename read_lines to
	no_file_data.
	(quick_file_names): New struct.
	(hash_file_name_entry, eq_file_name_entry): New functions.
	(delete_file_name_entry, create_quick_file_names_table): New functions.
	(dwarf2_read_index): Initialize quick_file_names_table.
	(dw2_get_file_names): Renamed from dw2_require_line_header.
	Return pointer to quick_file_names entry.  All callers updated.
	(dw2_get_real_path): Renamed from dw2_require_full_path.
	Replace per_cu arg with pointer to quick_file_names entry.
	All callers updated.
	(dw2_free_cached_file_names): New function.
	(dw2_forget_cached_source_info): Call it (via htab_traverse_noresize).
	(dwarf2_initialize_objfile): Initialize quick_file_names_table in
	the OBJF_READNOW case.
	(dwarf2_free_objfile): Rewrite freeing of quick file names tables.

2010-12-12  Mark Kettenis  <kettenis@gnu.org>

	* mips64obsd-tdep.c (floatformats_mips64_quad): New define.
	(mips64obsd_init_abi): Set long_double_bit and long_double_format.

2010-12-12  Mark Kettenis  <kettenis@gnu.org>

	* sparc-tdep.c: Fix typo in comment.

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

	* dwarf2read.c: Whitespace cleanup, plus comment additions.
	No code changes.

2010-12-10  Tom Tromey  <tromey@redhat.com>

	* NEWS: Document exception-handling change.

2010-12-09  Marc Khouzam  <marc.khouzam@ericsson.com>

	* mi/mi-parse.c (mi_parse): Wrong error message.

2010-12-09  Doug Evans  <dje@google.com>

	* symfile.h (quick_symbol_functions): Clarify usage of
	map_symbol_filenames.

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

	* mi/mi-parse.h (mi_parse): Update.
	* mi/mi-parse.c (mi_parse_cleanup): New function.
	(mi_parse): Add 'token' argument.  Throw exception on error.
	* mi/mi-main.c (mi_print_exception): New function.
	(mi_execute_command): Use mi_print_exception.  Catch exceptions
	from mi_parse.

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

	PR c++/9593:
	* thread.c (clear_thread_inferior_resources): Call
	delete_longjmp_breakpoint.
	* infrun.c (handle_inferior_event): Handle exception breakpoints.
	(handle_inferior_event): Likewise.
	(insert_exception_resume_breakpoint): New function.
	(check_exception_resume): Likewise.
	* inferior.h (delete_longjmp_breakpoint_cleanup): Declare.
	* infcmd.c (delete_longjmp_breakpoint_cleanup): No longer static.
	(step_1): Set thread's initiating frame.
	(until_next_continuation): New function.
	(until_next_command): Support exception breakpoints.
	(finish_command_continuation): Delete longjmp breakpoint.
	(finish_forward): Support exception breakpoints.
	* gdbthread.h (struct thread_info) <initiating_frame>: New field.
	* breakpoint.h (enum bptype) <bp_exception, bp_exception_resume,
	bp_exception_master>: New constants.
	(struct bpstat_what) <is_longjmp>: New field.
	(set_longjmp_breakpoint): Update.
	* breakpoint.c (create_exception_master_breakpoint): New function.
	(update_breakpoints_after_exec): Handle bp_exception_master.  Call
	create_exception_master_breakpoint.
	(print_it_typical): Handle bp_exception_master, bp_exception.
	(bpstat_stop_status): Handle bp_exception_master.
	(bpstat_what): Handle bp_exception_master, bp_exception,
	bp_exception_resume.
	(bptype_string): Likewise.
	(print_one_breakpoint_location): Likewise.
	(allocate_bp_location): Likewise.
	(set_longjmp_breakpoint): Handle exception breakpoints.  Change
	interface.
	(delete_longjmp_breakpoint): Handle exception breakpoints.
	(mention): Likewise.
	(struct until_break_command_continuation_args) <thread_num>: New
	field.
	(until_break_command_continuation): Call
	delete_longjmp_breakpoint.
	(until_break_command): Support exception breakpoints.
	(delete_command): Likewise.
	(breakpoint_re_set_one): Likewise.
	(breakpoint_re_set): Likewise.

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

	* gdbtypes.h (TYPE_IS_OPAQUE): Reformat.

	* gdbtypes.c (check_typedef): Tweak comment.

	PR symtab/12302
	* dwarf2read.c (struct psymtab_cu_index_map): New struct.
	(hash_psymtab_cu_index, eq_psymtab_cu_index): New functions.
	(struct addrmap_index_data): New struct.
	(add_address_entry): Remove arg `pst', new args `start', `end'.
	(add_address_entry_worker, write_address_map): New functions.
	(write_psymtabs_to_index): Address table generation moved to
	write_address_map.  Build a table mapping psymtab to CU index
	to pass to it.

	* dwarf2read.c (write_psymtabs_to_index): When stat fails, pass file
	name to perror.

	* symfile.h (quick_symbol_functions): Clarify usage of
	expand_symtabs_with_filename.
	* dwarf2read.c (dw2_expand_symtabs_with_filename): Only iterate over
	comp units, ignore type units.

	* dwarf2read.c (dw2_expand_symtabs_with_filename): Use FILENAME_CMP.

2010-12-07  Doug Evans  <dje@google.com>

	* dwarf2read.c (dw2_lookup_symtab): Remove duplicate call to
	gdb_realpath.

	PR python/12227
	* NEWS: Mention -data-directory.
	* main.c (captured_main): Recognize -data-directory.

2010-12-06  Marc Khouzam  <marc.khouzam@ericsson.com>

	* mi/mi-parse.c (mi_parse): Missing else.

2010-12-04  Masaki Muranaka  <monaka@monami-software.com>

	* configure.tgt: Accept microblaze*-*-linux* for linux target
	and microblaze*-*-* for  as target.

2010-12-02  Keith Seitz  <keiths@redhat.com>

	* linespec.c (find_method): Move name canonicalization outside
	the loop.
	Be paranoid and use a cleanup.

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

	* dwarf2read.c (save_gdb_index_command): Add comment.

2010-12-01  Ulrich Weigand  <uweigand@de.ibm.com>

	* valops.c (value_assign): Returned value is never lazy.  If a
	C++ class type is returned, fix incorrect enclosing type / embedded
	offset.  If internal variable is returned, allocate new internalvar
	value using value_of_internalvar.

	* NEWS: Document changes in behavior of "print x = 0" and similar
	expressions.

2010-11-29  Doug Evans  <dje@google.com>

	* python/lib/gdb/printing.py (register_pretty_printer): Change
	printer-name:subprinter-name to printer-name;subprinter-name.
	* python/lib/gdb/command/pretty_printers.py (parse_printer_regexps):
	Ditto.
	(InfoPrettyPrinter, EnablePrettyPrinter, DisablePrettyPrinter): Ditto.

2010-11-29  Tom Tromey  <tromey@redhat.com>

	* opencl-lang.c (lval_func_check_synthetic_pointer): New
	function.
	* value.h (struct lval_funcs) <indirect, check_synthetic_pointer>:
	New fields.
	(value_bits_synthetic_pointer): Declare.
	* value.c (value_bits_synthetic_pointer): New function.
	* valprint.c (valprint_check_validity): Handle synthetic
	pointers.
	* valops.c (value_ind): Use new 'indirect' lval_funcs method.
	* valarith.c (value_ptradd): Use set_value_component_location.
	* p-valprint.c (pascal_object_print_value_fields): Handle
	synthetic pointers.
	* jv-valprint.c (java_print_value_fields): Handle synthetic
	pointers.
	* dwarf2read.c (dwarf_stack_op_name): Add
	DW_OP_GNU_implicit_pointer.
	(dwarf2_fetch_die_location_block): Add get_frame_pc, baton
	arguments.  Handle location lists.
	(fill_in_loclist_baton): New function.
	(dwarf2_symbol_mark_computed): Use it.
	* dwarf2loc.h (dwarf2_find_location_expression): Declare.
	(dwarf2_fetch_die_location_block): Add get_frame_pc, baton
	arguments.
	* dwarf2loc.c (dwarf2_find_location_expression): Rename from
	find_location_expression.  No longer static.  Update all callers.
	(dwarf_expr_frame_pc): New function.
	(per_cu_dwarf_call): Add get_frame_pc, baton arguments.  Update
	all callers.
	(struct piece_closure) <per_cu>: New field.
	(allocate_piece_closure): Add per_cu argument.
	(read_pieced_value): Handle DWARF_VALUE_IMPLICIT_POINTER.
	(check_pieced_value_bits): Remove validity argument, add check_for
	argument.  Handle DWARF_VALUE_IMPLICIT_POINTER.
	(check_pieced_value_validity, check_pieced_value_invalid):
	Update.
	(check_pieced_synthetic_pointer): New function.
	(get_frame_address_in_block_wrapper): New function.
	(indirect_pieced_value): New function.
	(pieced_value_funcs): Update.
	(invalid_synthetic_pointer): New function.
	(dwarf2_evaluate_loc_desc_full): Rename from
	dwarf2_evaluate_loc_desc.  Add byte_offset argument.
	(dwarf2_evaluate_loc_desc): Rewrite.
	(dwarf2_loc_desc_needs_frame): Set new field on context.
	(get_ax_pc): New function.
	(disassemble_dwarf_expression): Handle
	DW_OP_GNU_implicit_pointer.
	* dwarf2expr.h (enum dwarf_value_location)
	<DWARF_VALUE_IMPLICIT_POINTER>: New constant.
	(struct dwarf_expr_context) <get_frame_pc>: New field.
	(struct dwarf_expr_piece) <v.ptr>: New field.
	* dwarf2expr.c (add_piece): Handle DWARF_VALUE_IMPLICIT_POINTER.
	(execute_stack_op): Handle DW_OP_GNU_implicit_pointer.
	* dwarf2-frame.c (no_get_frame_pc): New function.
	(execute_stack_op): Set new field on context.
	* cp-valprint.c (cp_print_value_fields): Handle synthetic
	pointers.

2010-11-29  Phil Muldoon  <pmuldoon@redhat.com>

        PR python/12199

	* python/py-breakpoint.c (bppy_delete_breakpoint): New function.

2010-11-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix step_resume_breakpoint unsaved during an infcall.
	* gdbthread.h (struct thread_control_state): Move here field
	step_resume_breakpoint ...
	(struct thread_info): ... from here.
	* infrun.c (save_infcall_control_state): Reset
	control.step_resume_breakpoint to NULL.
	(restore_infcall_control_state, discard_infcall_control_state): Delete
	control.step_resume_breakpoint.
	* arm-linux-tdep.c, infrun.c, thread.c: Update all the references to
	the moved field.

2010-11-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Rename and move inferior_thread_state and inferior_status.
	* gdbthread.h (struct thread_control_state): New struct, move fields
	step_range_start, step_range_end, step_frame_id, step_stack_frame_id,
	trap_expected, proceed_to_finish, in_infcall, step_over_calls,
	stop_step and stop_bpstat here from struct thread_info.
	(struct thread_suspend_state): New struct, move field stop_signal here
	from struct thread_info.
	(struct thread_info): Move the fields above from this struct.
	* inferior.h: Move the inferior_thread_state and inferior_status
	declarations comment to their definitions at infrun.c.
	(struct inferior_control_state): New struct, move field stop_soon from
	struct inferior here.
	(struct inferior_suspend_state): New empty struct.
	(struct inferior): New fields control and suspend.  Move out field
	stop_soon.
	* infrun.c (struct inferior_thread_state): Rename to ...
	(infcall_suspend_state): ... here.  Replace field stop_signal by
	fields thread_suspend and inferior_suspend.
	(save_inferior_thread_state): Rename to ...
	(save_infcall_suspend_state): ... here.  New variable inf.  Update the
	code for new fields.
	(restore_inferior_thread_state): Rename to ...
	(restore_infcall_suspend_state): ... here.  New variable inf.  Update
	the code for new fields.
	(do_restore_inferior_thread_state_cleanup): Rename to ...
	(do_restore_infcall_suspend_state_cleanup): ... here.
	(make_cleanup_restore_inferior_thread_state): Rename to ...
	(make_cleanup_restore_infcall_suspend_state): ... here.
	(discard_inferior_thread_state): Rename to ...
	(discard_infcall_suspend_state): ... here.
	(get_inferior_thread_state_regcache): Rename to ...
	(get_infcall_suspend_state_regcache): ... here.
	(struct inferior_status): Rename to ...
	(struct infcall_control_state): ... here.  Replace fields
	step_range_start, step_range_end, step_frame_id, step_stack_frame_id,
	trap_expected, proceed_to_finish, in_infcall, step_over_calls,
	stop_step, stop_bpstat and stop_soon by fields thread_control and
	inferior_control.
	(save_inferior_status): Rename to ...
	(save_infcall_control_state): ... here.  Update the code for new
	fields.
	(restore_inferior_status): Rename to ...
	(restore_infcall_control_state): ... here.  Update the code for new
	fields.
	(do_restore_inferior_status_cleanup): Rename to ...
	(do_restore_infcall_control_state_cleanup): ... here.
	(make_cleanup_restore_inferior_status): Rename to ...
	(make_cleanup_restore_infcall_control_state): ... here.
	(discard_inferior_status): Rename to ...
	(discard_infcall_control_state): ... here.
	* alpha-tdep.c, breakpoint.c, dummy-frame.c, dummy-frame.h,
	exceptions.c, fbsd-nat.c, gdbthread.h, infcall.c, infcmd.c,
	inferior.c, inferior.h, infrun.c, linux-nat.c, mi/mi-interp.c,
	mips-tdep.c, procfs.c, solib-irix.c, solib-osf.c, solib-spu.c,
	solib-sunos.c, solib-svr4.c, thread.c, windows-nat.c: Update all the
	references to the moved fields and renamed functions.

2010-11-26  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* infcall.c (struct inferior_thread_state) <siginfo_gdbarch>: Fix up
	the comment.
	(save_inferior_thread_state): Reset tp->stop_signal.

2010-11-26  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* infcall.c (call_function_by_hand): Remove variable
	caller_state_cleanup.

2010-11-25  Marc Khouzam  <marc.khouzam@ericsson.com>

	PR breakpoints/12217

	* breakpoint.c (is_marker_spec): Check for NULL.

2010-11-25  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.h: No longer include python.h or python-internal.h.
	(struct breakpoint_object): Forward declare.
	* defs.h (PyObject) [!HAVE_PYTHON]: Don't define.
	* varobj.c (PyObject) [!HAVE_PYTHON]: Define.
	* python/py-breakpoint.c (build_bp_list): Cast py_bp_object to
	PyObject pointer.
	(gdbpy_breakpoint_created): Remove casts around py_bp_object
	accesses.

2010-11-24  Joel Brobecker  <brobecker@adacore.com>

	* rs6000-tdep.c (bfd_uses_spe_extensions): Use bfd_elf_get_obj_attr_int
	only if HAVE_ELF is defined.

2010-11-24  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup.
	* infrun.c (struct inferior_status) <stepping_over_breakpoint>
	(save_inferior_status) <stepping_over_breakpoint>
	(restore_inferior_status) <stepping_over_breakpoint>: Rename to
	trap_expected.
	(struct inferior_status) <step_resume_break_address>: Remove.

2010-11-24  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup.
	* infrun.c (struct inferior_status, save_inferior_status)
	(restore_inferior_status): Group and reorder the fields, comment their
	groups.

2010-11-24  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup.
	* dictionary.c
	(struct dict_vector) <iter_match_first, iter_match_next>
	(iter_match_first_hashed, iter_match_next_hashed)
	(iter_match_first_linear, iter_match_next_linear)
	(dict_iter_match_first, dict_iter_match_next, iter_match_first_hashed)
	(iter_match_next_hashed, iter_match_first_linear)
	(iter_match_next_linear): Use symbol_compare_ftype.
	* dictionary.h: Include symfile.h.
	(dict_iter_match_first, dict_iter_match_next): Use
	symbol_compare_ftype.
	* dwarf2read.c (dw2_map_matching_symbols): Likewise.
	* psymtab.c (match_partial_symbol, match_partial_symbol, map_block)
	(map_matching_symbols_psymtab): Likewise.
	* symfile.h (symbol_compare_ftype): New typedef.
	(struct quick_symbol_functions) <map_matching_symbols): Use
	symbol_compare_ftype.

2010-11-23  Tom Tromey  <tromey@redhat.com>

	* configure: Rebuild.
	* configure.ac (READLINE_TEXI_INCFLAG): New subst.

2010-11-19  Tom Tromey  <tromey@redhat.com>

	* Makefile.in (SUBDIRS): Add doc.
	* configure: Rebuild.
	* configure.ac: Don't configure in doc.  Create doc/Makefile.

2010-11-23  Phil Muldoon  <pmuldoon@redhat.com>

        PR python/12212

	* python/py-inferior.c (find_thread_object): Check if PIDGET
	returns 0.

010-11-22  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_template_to_fixed_record_type_1): Delete bit_incr.

2010-11-22  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_to_fixed_type): Expand function documentation.
	Return the original type if the main type portions match rather
	than when the type themselves match.

2010-11-22  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_template_to_fixed_record_type_1):
	For dynamic fields, check the field size against the maximum
	object size.

2010-11-22  Joel Brobecker  <brobecker@adacore.com>

	* mips-irix-tdep.c (mips_irix_n32_stack_tramp_frame_init): New
	function.
	(mips_irix_n32_stack_tramp_frame): New static global.
	(mips_irix_init_abi): Add mips_irix_n32_stack_tramp_frame to
	list of unwinder.

2010-11-22  Jerome Guitton  <guitton@adacore.com>

	* ada-tasks.c (get_tcb_types_info): Use C lookups to get
	ATCB symbols.

2010-11-22  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_check_typedef): Call ada_check_typedef only
	if type1 is a typedef.

2010-11-22  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.h (ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS): Add
	"_finalizer" to the list.

2010-11-22  Joel Brobecker  <brobecker@adacore.com>

	* symfile.c: Remove all "#if 0"/"#endif" blocks.

2010-11-22  Joel Brobecker  <brobecker@adacore.com>

	* symfile.c: Add missing second space after period in various comments.

2010-11-22  Joel Brobecker  <brobecker@adacore.com>

	* ada-typeprint.c (print_array_type): Fix formatting in comment.
	(print_selected_record_field_types): Fix formatting in function
	documentation.

2010-11-22  Joel Brobecker  <brobecker@adacore.com>

	* ravenscar-thread.c (_initialize_ravenscar): Fix copy/paste typo
	in name of "show ravenscar" prefix command name.

2010-11-22  Joel Brobecker  <brobecker@adacore.com>

	* ravenscar-thread.c (show_ravenscar_task_switching_command):
	Add missing '\n' in output.

2010-11-22  Joel Brobecker  <brobecker@adacore.com>

	* ravenscar-thread.c (running_thread_name): Change value.
	(read_thread_id): Remove advance declaration.
	(get_running_thread_msymbol): New function.
	(has_ravenscar_runtime): Use get_running_thread_msymbol to
	compute msym_running_thread.
	(get_running_thread_id): Renames read_thread_id. Slight modifications
	to not take any argument anymore, using get_running_thread_msymbol
	to determine which symbol to use instead.
	(ravenscar_running_thread): Use get_running_thread_id instead of
	read_thread_id.

2010-11-22  Joel Brobecker  <brobecker@adacore.com>

	* ravenscar-sparc-thread.c (supply_register_at_address):
	Fix passing of buf in call to regcache_raw_supply.

2010-11-22  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2read.c (dwarf2_read_index): Ignore higher .gdb_index versions.

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

	* Makefile.in (.PRECIOUS): Reference ada-lex.c.

2010-11-19  Keith Seitz  <keiths@redhat.com>

	* data-directory/Makefile.in (SYSCALLS_INSTALL_DIR):
	Remove extraneous '/' after $(DESTDIR).
	(PYTHON_INSTALL_DIR): Likewise.

2010-11-19  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix stale memory references.
	* elfread.c (elf_symfile_read): Replace xmalloc by bfd_alloc, drop
	xfree, new comment.

2010-11-19  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Tom Tromey  <tromey@redhat.com>

	* Makefile.in (.y.c): Directly create $@ from YLWRAP.
	(.PHONY): Remove for .y outputs.

2010-11-19  Will Drewry  <wad@google.com>
	    Tavis Ormandy  <taviso@google.com>
	    Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2read.c (decode_locdesc): Enforce location description stack
	boundaries.

2010-11-18  Pierre Muller  <muller@ics.u-strasbg.fr>

	* arm-tdep.c (arm_in_function_epilogue_p): Fix code when "MOV SP"
	instruction is found.

2010-11-17  Tom Tromey  <tromey@redhat.com>

	* value.c (value_entirely_optimized_out): Check the
	'check_any_valid' field.

2010-11-16  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* ada-lang.c (modify_general_field): Remove.
	(make_array_descriptor): Replace all modify_general_field calls by
	modify_field.
	* value.c (modify_field): Update comment.  New variable bytesize.
	Normalize BITPOS.  Initialize BYTESIZE, use it.

2010-11-16  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2read.c (dw2_forget_cached_source_info): Clear the FULL_NAMES
	elements after xfree.

2010-11-16  Tom Tromey  <tromey@redhat.com>

	* gdb-add-index.sh: Really remove.

2010-11-16  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup.
	* dwarf2read.c (alloc_one_comp_unit): Rename prototype to ...
	(init_one_comp_unit): ... this one.
	(prepare_one_comp_unit): New prototype.
	(dw2_require_line_header, process_psymtab_comp_unit): Use
	init_one_comp_unit.
	(process_psymtab_comp_unit): Use prepare_one_comp_unit.
	(load_partial_comp_unit): Remove variable attr.  Use
	init_one_comp_unit with xmalloc.  Use prepare_one_comp_unit.
	(load_full_comp_unit): Use init_one_comp_unit with xmalloc.  Use
	prepare_one_comp_unit.
	(read_signatured_type): Remove variable attr.  Use init_one_comp_unit.
	Use prepare_one_comp_unit.
	(alloc_one_comp_unit): Rename to ...
	(init_one_comp_unit): ... here and remove there calloc, new parameter
	cu.
	(prepare_one_comp_unit): New function.

2010-11-14  Pierre Muller  <muller@ics.u-strasbg.fr>

	* arm-tdep.c (arm_in_function_epilogue_p): Fix code to avoid
	possible used of uninitialized variable.

2010-11-12  Nathan Froyd  <froydnj@codesourcery.com>

	* rs6000-tdep.c (bfd_uses_spe_extensions): New function.
	(rs6000_gdbarch_init): Call it.

2010-11-12  Nathan Froyd  <froydnj@codesourcery.com>

	* rs6000-tdep.c (gdb_print_insn_powerpc): Disassemble e500
	instructions if debugging an E500 binary.

2010-11-12  Tom Tromey  <tromey@redhat.com>

	* varobj.c (value_get_print_value): Rearrange.  Pass stream to
	apply_varobj_pretty_printer.
	* c-lang.c: Include exceptions.h.
	(c_get_string): Throw MEMORY_ERROR when appropriate.
	* python/py-prettyprint.c (enum string_repr_result): New.
	(print_stack_unless_memory_error): New function.
	(print_string_repr): Change return type.  Use
	print_stack_unless_memory_error.
	(print_children): Use print_stack_unless_memory_error.
	(apply_val_pretty_printer): Update.  Don't print children if
	string representation threw an exception.
	(apply_varobj_pretty_printer): Add 'stream' argument.  Use
	print_stack_unless_memory_error.
	* python/python.c (gdbpy_gdb_error, gdbpy_gdb_memory_error): New
	globals.
	(_initialize_python): Initialize them.
	* python/python-internal.h (GDB_PY_HANDLE_EXCEPTION): Use
	gdbpy_convert_exception.
	(GDB_PY_SET_HANDLE_EXCEPTION): Likewise.
	(gdbpy_gdb_error, gdbpy_gdb_memory_error): Declare.
	(gdbpy_convert_exception): Declare.
	(apply_varobj_pretty_printer): Update.
	* python/py-utils.c (gdbpy_convert_exception): New function.

2010-11-12  Marc Khouzam  <marc.khouzam@ericsson.com>

	* mi/mi-main.c (mi_cmd_target_detach): Accept new
	thread-group id format.

2010-11-12  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* spu-tdep.c (spu_catch_start): Fix compilation error typo.

2010-11-11  Phil Muldoon  <pmuldoon@redhat.com>

	* python/py-breakpoint.c (BPPY_REQUIRE_VALID): Check if bp is
	NULL.
	(BPPY_SET_REQUIRE_VALID): Ditto.
	(bpnum_is_valid): Delete function.
	(bppy_get_visibility): New function.
	(bppy_new): Parse for, and validate internal keyword.  Pass
	internal keyword to breakpoint or watchpoint functions.
	(build_bp_list): New function.
	(gdbpy_breakpoints): Rewrite.  Use build_bp_list and
	iterate_over_breakpoints.
	(gdbpy_breakpoint_created): Rewrite.  Do not store breakpoints in a
	look-aside vector.
	(gdbpy_breakpoint_deleted): Rewrite, defer breakpoint management
	to internal breakpoint chain.

	* breakpoint.c (set_breakpoint_number): New function.
	(breakpoint_1): Check if breakpoint number is more than zero.
	(set_raw_breakpoint_without_location): Set py_bp_object to NULL.
	(create_breakpoint_sal): Take a new parameter called internal.
	Call set_breakpoint_number with internal parameter.  Do not
	mention internal breakpoints.  All callers updated.
	(create_breakpoint): Ditto.
	(create_breakpoints_sal): Ditto.
	(watch_command_1): Ditto.
	(watch_command_wrapper): Take a new parameter called internal.
	All callers updated.
	(rwatch_command_wrapper): Ditto.
	(awatch_command_wrapper): Ditto.
	(save_breakpoints): Update breakpoint save condition check.
	(iterate_over_breakpoints): New function.
	* breakpoint.h: Add conditional python includes.  Add py_bp_object
	and comment to struct breakpoint.  Update all callers.
	* defs.h: Add PyObject definition for GDB builds without Python.

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

	* python/lib/gdb/command/pretty_printers.py
	(do_enable_pretty_printer_1): Handle printer.subprinters is None.

	* value.c (set_value_enclosing_type): Renamed from
	value_change_enclosing_type.  All callers updated.
	* value.h (set_value_enclosing_type): Update.
	* valops.c (value_full_object): Always return a copy if we need to
	make changes to the input value.

2010-11-09  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (watch_command_1): Get a pointer of the lazy
	version of the expression's value, even if reading the value from
	memory fails.  When creating a -location watchpoint, get the
	value's address from the lazy value pointer.

2010-11-07  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* infrun.c (restore_inferior_thread_state): Use
	discard_inferior_thread_state to free the data.
	(discard_inferior_thread_state): xfree also siginfo_data.

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

	Make gdb.parameter("directories") work.
	New command "set directories".
	* NEWS: Document them.
	* source.c (set_directories_command): New function.
	(show_directories_1): Renamed from show_directories.
	All callers updated.
	(show_directories_command): New function.
	(_initialize_source): Install "directories" as a set/show
	variable instead of just a show command.

2010-11-05  Ken Werner  <ken.werner@de.ibm.com>

	* NEWS: Mention OpenCL C language support.
	* Makefile.in (SFILES): Add opencl-lang.c.
	(COMMON_OBS): Add opencl-lang.o.
	* opencl-lang.c: New File
	* defs.h (enum language): Add language_opencl.
	* dwarf2read.c (read_file_scope): Handle DW_AT_producer for the
	IBM XL C OpenCL compiler.
	* c-lang.h: Include "parser-defs.h".
	(evaluate_subexp_c): Declare.
	* c-lang.c (evaluate_subexp_c): Remove the static qualifier.
	(c_op_print_tab): Add declaration.
	* eval.c (binop_promote): Handle language_opencl.
	* c-exp.y: Lookup the primitive types instead of referring to the
	builtins.

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

	Fix configure --enable-plugins --without-python.
	* configure.ac (for ELF support in BFD) <"$plugins" = "yes">: New.
	* configure: Regenerate.

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

	* solib.c (solib_read_symbols): Call exception_fprintf even without
	FROM_TTY.  Print also so->so_name.

2010-11-04  Sami Wagiaalla  <swagiaal@redhat.com>

	* gdbtypes.h (struct rank): Created subrank.
	* gdbtypes.c: Initialized subrank for all
	'BADNESS' constants.
	(distance_to_ancestor): New function.
	(is_ancestor): Use distance_to_ancestor.
	(is_public_ancestor): Ditto.
	(sum_ranks): Handle subrank.
	(compare_ranks): Ditto.
	(rank_one_type): Subrank base conversions.

2010-11-04  Sami Wagiaalla  <swagiaal@redhat.com>

	* gdbtypes.h: Create struct rank.
	Convert all 'BADNESS' macros to const struct rank declarations.
	(sum_ranks): New function.
	(compare_ranks): New function.
	* valops.c (find_oload_champ): Updated.
	(classify_oload_match): Use compare_ranks.
	Improved comments.
	(compare_parameters): Use compare_ranks.
	* gdbtypes.c: Initialize 'BADNESS' constants.
	(sum_ranks): New function.
	(compare_ranks): New function.
	(compare_badness): Use compare_ranks.
	(rank_function): Use global constants instead of literals.
	(rank_one_type): Ditto.
	Return struct rank.
	Use sum_ranks.

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

	* python/py-prettyprint.c (find_pretty_printer_from_gdb): Fix comment.
	(find_pretty_printer): Fix comments.

2010-11-04  Hui Zhu  <teawater@gmail.com>

	* tracepoint.c (remote_trace_set_readonly_regions): Change lma to vma.

2010-11-03  Joel Brobecker  <brobecker@adacore.com>

	* ada-valprint.c (ada_val_print_array): Move variables `eltlen'
	and `len' declaration and computation inside block where they
	are being used.

2010-11-03  Joel Brobecker  <brobecker@adacore.com>

	* valprint.c (val_print_array_elements): Put back handling of
	empty arrays.

2010-11-03  Ken Werner  <ken.werner@de.ibm.com>

	* dwarf2read.c (read_array_type): Read the DW_AT_byte_size from the
	DIE and set the length of the type.
	* gdbtypes.h (get_array_bounds): Move here from valprint.h.
	* gdbtypes.c (get_array_bounds): Move here from valprint.c and
	return 0 if the corresponding bounds of the type are undefined.
	* valprint.h (get_array_bounds): Move declaration to gdbtypes.h.
	* valprint.c (get_array_bounds): Move implementation to gdbtypes.c.
	(val_print_array_elements): Use get_array_bounds to compute the number
	of array elements instead of dividing the length of the array by the
	length of the element types.
	* valarith.c (vector_binop): Likewise.
	* valops.c (value_cast): Likewise.
	* c-valprint.c (c_val_print): Likewise.
	* c-typeprint.c (c_type_print_varspec_suffix): Likewise.

2010-11-03  Ken Werner  <ken.werner@de.ibm.com>

	* valarith.c (value_pos, value_neg, value_complement): Handle
	vector types.
	* valops.c (value_one): Likewise.

2010-11-03  Ken Werner  <ken.werner@de.ibm.com>

	* value.h (value_non_lval): Declare.
	* value.c (value_non_lval): New function.
	* eval.c (evaluate_subexp_standard) <UNOP_POSTINCREMENT,
	UNOP_POSTDECREMENT>: Call value_non_lval to ensure to return a
	non-lvalue.

2010-11-02  Doug Evans  <dje@google.com>

	New python module gdb.printing, and new commands info pretty-printer,
	enable pretty-printer, disable pretty-printer.
	* NEWS: Mention them.
	* data-directory/Makefile.in (PYTHON_FILES): Add gdb/printing.py,
	gdb/command/__init__.py, gdb/command/pretty_printers.py.
	* python/lib/gdb/__init__.py: Install pretty-printer commands.
	* python/lib/gdb/printing.py: New file.
	* python/lib/gdb/command/__init__.py: New file.
	* python/lib/gdb/command/pretty_printers.py: New file.

2010-11-02  Tom Tromey  <tromey@redhat.com>

	* NEWS: Mention Guile removal.
	* defs.h (enum language) <language_scm>: Remove.
	* Makefile.in (SFILES): Remove scm-exp.c, scm-lang.c,
	scm-valprint.c.
	(HFILES_NO_SRCDIR): Remove scm-lang.h, scm-tags.h.
	(COMMON_OBS): Remove scm-exp.o, scm-lang.o, scm-valprint.o.
	* scm-exp.c, scm-lang.c, scm-valprint.c, scm-lang.h, scm-tags.h:
	Remove.

2010-11-02  Doug Evans  <dje@google.com>

	* top.c: #include "python/python.h".
	(gdb_init): Add a comment regarding initialize_all_files.
	Call finish_python_initialization at the end.
	* python/python.h (finish_python_initialization): Declare.
	* python/python.c (finish_python_initialization): New function.
	(_initialize_python): Move python-implemented initialization there
	and call it.
	(GdbMethods): Use #ifdef HAVE_PYTHON for consistency.

2010-11-02  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Revert:
	2010-10-17  Jan Kratochvil  <jan.kratochvil@redhat.com>
		    Pedro Alves  <pedro@codesourcery.com>
	* gdbthread.h (currently_stepping): New declaration.
	* infrun.c (currently_stepping): Remove the forward declaration.
	(currently_stepping): Make it global.
	* linux-nat.c (resume_callback) <lp->stopped && lp->status == 0>: New
	variables tp and step, initialized them.  Pass STEP to to_resume.
	Print also possibly "PTRACE_SINGLESTEP" if STEP.  Initialize LP->STEP.
	* remote.c (currently_stepping_callback): New.
	(remote_vcont_resume)
	<ptid_equal (ptid, minus_one_ptid) || ptid_is_pid (ptid)>:
	New variable tp.  Call currently_stepping_callback and step such
	thread.

2010-11-01  Hui Zhu  <teawater@gmail.com>

	* tracepoint.c (tfile_xfer_partial): Change lma to vma.

2010-10-28  Hui Zhu  <teawater@gmail.com>

	* tracepoint.c (trace_save): Change utp->actions to
	utp->step_actions.

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

	* (_FILE_OFFSET_BITS): Fix typo in comment.

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

	* python/python-internal.h (_FILE_OFFSET_BITS): Undefine.
	(PyEval_InitThreads): Remove duplicate. Define as nothing.
	(PyEval_ReleaseLock): Define as nothing.

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

	* dwarf2read.c (psymtab_include_file_name): Replace call to strcmp
	by call to FILENAME_CMP.

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

	* dictionary.c (dict_hash): Move assignment out of if condition.

2010-10-22  Jie Zhang  <jie@codesourcery.com>

	* Makefile.in (install): Remove dependency of install-only and
	recursively invoke make for install-only.
	* data-directory/Makefile.in: Add FLAGS_TO_PASS variable.
	(install): Pass FLAGS_TO_PASS when recursively make install-only.

2010-10-20  Hui Zhu  <teawater@gmail.com>

	* tracepoint.c (tfile_get_traceframe_address): Call
	extract_signed_integer.
	(tfile_trace_find): Call extract_signed_integer and
	extract_unsigned_integer.  Change data_size to unsigned int.
	(tfile_fetch_registers): Call extract_unsigned_integer.
	(tfile_xfer_partial): Ditto.
	(tfile_get_trace_state_variable_value): Call
	extract_signed_integer and extract_unsigned_integer.

2010-10-20  Vladimir Prus  <vladimir@codesourcery.com>

	* remote.c (remote_get_threadlist): If we got empty
	response, bail out immediately, and don't emit any
	warnings.

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

	* arm-tdep.c (thumb_get_next_pc_raw): Handle Thumb-16 encoding
	for "mov pc, REG" as well.
	(thumb_instruction_changes_pc): Likewise.

2010-10-19  Sami Wagiaalla  <swagiaal@redhat.com>

	 PR C++/11500:
	* valarith.c (value_x_unop): Handle STRUCTOP_PTR.
	* eval.c (evaluate_subexp_standard): Check for overload of
	'operator->'.
	* valarith.c (value_x_binop): Throw NOT_FOUND_ERROR.
	(value_x_unop): Ditto.
	* valops.c: Include "exceptions.h".
	(find_overload_match): Throw NOT_FOUND_ERROR.
	(value_struct_elt): Ditto.

2010-10-19  Tom Tromey  <tromey@redhat.com>

	* python/py-cmd.c (cmdpy_function): Unreference exception state.

2010-10-19  Sami Wagiaalla  <swagiaal@redhat.com>

	* gdbtypes.h: Introduce BOOL_PTR_CONVERSION_BADNESS.
	* gdbtypes.c (rank_one_type): Use BOOL_PTR_CONVERSION_BADNESS
	for conversion.
	Make all other conversions illegal.

2010-10-18  Doug Evans  <dje@google.com>

	* c-typeprint.c (c_type_print_base, case TYPE_CODE_TYPEDEF): Verify
	assumptions of when this case happens.  Print "<unnamed typedef>".

2010-10-18  Tom Tromey  <tromey@redhat.com>

	* valprint.c (val_print_string): Pass 'encoding' to
	LA_PRINT_STRING.

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

	Fix the `stopped language detection' testcase for gcc-4.5.
	* dwarf2read.c (read_partial_die): Set also LANGUAGE_OF_MAIN.
	* symfile.c (set_initial_language): Move variable filename to a more
	inner block.  Prefer LANGUAGE_OF_MAIN.
	* symtab.c (language_of_main): New variable.
	(set_main_name): Always reset LANGUAGE_OF_MAIN.
	* symtab.h (language_of_main): New declaration.

2010-10-17  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Pedro Alves  <pedro@codesourcery.com>

	* gdbthread.h (currently_stepping): New declaration.
	* infrun.c (currently_stepping): Remove the forward declaration.
	(currently_stepping): Make it global.
	* linux-nat.c (resume_callback) <lp->stopped && lp->status == 0>: New
	variables tp and step, initialized them.  Pass STEP to to_resume.
	Print also possibly "PTRACE_SINGLESTEP" if STEP.  Initialize LP->STEP.
	* remote.c (currently_stepping_callback): New.
	(remote_vcont_resume)
	<ptid_equal (ptid, minus_one_ptid) || ptid_is_pid (ptid)>:
	New variable tp.  Call currently_stepping_callback and step such
	thread.

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

	* infrun.c (follow_exec): Replace symbol_file_add_main by
	symbol_file_add with SYMFILE_DEFER_BP_RESET, set_initial_language and
	breakpoint_re_set.
	* m32r-rom.c (m32r_load, m32r_upload_command): Use parameter 0 for
	clear_symtab_users.
	* objfiles.c (free_all_objfiles): Likewise.
	* remote-m32r-sdi.c (m32r_load): Likewise.
	* solib-som.c (som_solib_create_inferior_hook): Likewise.
	* symfile.c (new_symfile_objfile): New comment for add_flags.  Call
	clear_symtab_users with ADD_FLAGS.
	(reread_symbols): Use parameter 0 for clear_symtab_users.
	(clear_symtab_users): New parameter add_flags.  Do not call
	breakpoint_re_set if SYMFILE_DEFER_BP_RESET.
	(clear_symtab_users_cleanup): Use parameter 0 for clear_symtab_users.
	* symtab.h (clear_symtab_users): New parameter add_flags.

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

	Fix GCC false warning.
	* varobj.c (value_get_print_value) <str_addr>: Initialize it.

2010-10-16  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-typeprint.c (pascal_type_print_method_args): Fix problem in
	display of type of method arguments.

2010-10-15  Tom Tromey  <tromey@redhat.com>

	PR python/11948:
	* varobj.c (value_get_print_value): Use val_print_string to print
	lazy strings.
	* python/py-prettyprint.c (print_string_repr): Use
	val_print_string to print lazy strings.  Fix cleanup logic.
	(print_children): Likewise.
	* python/python-internal.h (gdbpy_extract_lazy_string): Update.
	* python/py-lazy-string.c (gdbpy_extract_lazy_string): Rewrite.
	Change return type to 'void', add 'addr' argument.
	* value.h (val_print_string): Update.
	* valprint.c (val_print_string): Add 'encoding' argument.
	* printcmd.c (print_formatted): Update.
	* p-valprint.c (pascal_val_print): Update.
	* m2-valprint.c (print_unpacked_pointer): Update.
	(m2_print_array_contents): Likewise.
	* jv-valprint.c (java_value_print): Update.
	* f-valprint.c (f_val_print): Update.
	* c-valprint.c (c_val_print): Update.
	* auxv.c (fprint_target_auxv): Update.

2010-10-15  Doug Evans  <dje@google.com>
	    Jan Kratochvil  <jan.kratochvil@redhat.com>

	PR exp/12117
	* gdbtypes.c (check_typedef): Clean up function comment.
	Keep track of instance flags as we strip typedefs and create a new
	type to preserve them if necessary.
	* gdbtypes.h (type) <instance_flags>: Extend the comment.

2010-10-15  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-lang.c (is_pascal_string_type): Use TYPE_FIELD_NAME accessor.

2010-10-14  Sami Wagiaalla  <swagiaal@redhat.com>

	* gdbtypes.h: Create BASE_PTR_CONVERSION_BADNESS.
	* gdbtypes.c (rank_one_type): Move type comparison code out of here
	to...
	(types_equal): ...here. And changed it as follows:
	Outside of typedefs type must be of the same TYPE_CODE.
	When compairing two pointers or references they are equal if their
	targets are equal.
	Correct pointer conversions.

2010-10-14  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-lang.c (is_pascal_string_type): Avoid crashes on structures
	having fields without names.

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

	* language.h (LA_PRINT_ARRAY_INDEX): Fix argument name.

2010-10-13  Doug Evans  <dje@google.com>

	New python module gdb.types.
	* NEWS: Document it.
	* data-directory/Makefile.in (PYTHON_FILES): Add gdb/types.py.
	* python/lib/gdb/types.py: New file.

	* c-typeprint.c: Whitespace cleanup.
	(cp_type_print_method_args): Remove unnecessary forward decl.
	(cp_type_print_derivation_info): Ditto.
	(c_type_print_varspec_prefix): Mark as static at definition.
	(c_type_print_modifier): Fix arg descriptions.

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

	* python/py-breakpoint.c (bppy_set_condition): New comment.
	* python/py-cmd.c (cmdpy_function): Call also gdbpy_print_stack for
	failed PyUnicode_Decode.
	(cmdpy_completer): Skip element for failed
	python_string_to_host_string.
	(cmdpy_init): Return -1 on failed python_string_to_host_string.
	* python/py-frame.c (frapy_read_var): Extend the function comment.
	* python/py-function.c (fnpy_init): Return -1 on failed
	python_string_to_host_string.
	* python/py-inferior.c (infpy_read_memory, infpy_write_memory): Extend
	the function comment.
	(infpy_search_memory): Extend the function comment.  Remove the
	PyErr_SetString call on already set error state.
	* python/py-param.c (set_parameter_value): Extend the function
	comment.  Return -1 on failed python_string_to_host_string, twice.
	(set_attr): Extend the function comment.
	(compute_enum_values): Extend the function comment.  New variable
	back_to.  Protect self->enumeration by BACK_TO cleanups.  Return 0 on
	failed python_string_to_host_string.
	(get_doc_string): Call gdbpy_print_stack on failed
	python_string_to_host_string.
	(parmpy_init): Extend the function comment.
	* python/py-prettyprint.c (pretty_print_one_value): Likewise.
	(gdbpy_get_display_hint, print_children): Call gdbpy_print_stack on
	failed python_string_to_host_string.
	* python/py-value.c (valpy_new, valpy_getitem, valpy_call)
	(valpy_binop, valpy_richcompare): Extend the function comment.
	* python/python.c
	(struct python_env) <error_type, error_value, error_traceback>: New
	fields.
	(restore_python_env): Handle PyErr_Occurred.  Call PyErr_Restore.
	(ensure_python_env): Call PyErr_Fetch.
	* varobj.c (update_dynamic_varobj_children): Call gdbpy_print_stack on
	failed convert_value_from_python.
	(value_get_print_value): Call gdbpy_print_stack on failed
	python_string_to_target_python_string.

2010-10-12  Tom Tromey  <tromey@redhat.com>

	* python/py-prettyprint.c (search_pp_list): Fix error checking.

2010-10-12  Sami Wagiaalla  <swagiaal@redhat.com>

	* gdbtypes.c (do_is_ancestor): New function.
	(is_ancestor): Use do_is_ancestor.
	(is_public_ancestor): Use do_is_ancestor.

2010-10-12  Pierre Muller  <muller@ics.u-strasbg.fr>

	* ser-go32.c (struct dos_ops): Add missing fdopen field.

2010-10-12  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>

	* arm-tdep.c (arm_mode_strings): Add NULL entry at end of array.

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

	* c-typeprint.c (c_type_print_modifier): Add note that this prints
	the address space id too.

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

	Fix attaching to re-prelinked executables on ppc64.
	* solib-svr4.c (svr4_exec_displacement): New variable plt2_asect,
	initialize it, try to adjust FILESZ field by it.

2010-10-08  Daniel Jacobowitz  <dan@codesourcery.com>

	* tracepoint.c (merge_uploaded_trace_state_variables): Only print
	messages if info_verbose.

2010-10-08  Ken Werner  <ken.werner@de.ibm.com>

	* valops.c (value_cast): Handle vector types.
	* valarith.c (value_binop): Widen scalar to vector if appropriate.

2010-10-08  Ulrich Weigand  <uweigand@de.ibm.com>

	* arm-tdep.c (thumb_expand_immediate): New function.
	(thumb_instruction_changes_pc): Likewise.
	(thumb2_instruction_changes_pc): Likewise.
	(thumb_analyze_prologue): Handle 32-bit Thumb instructions during
	prologue parsing.  Improved support for optimized code.
	(thumb_scan_prologue): Do not reply on line-number information,
	use same heuristics as arm_scan_prologue insead.
	(skip_prologue_function): Accept functions
	"__tls_get_addr" and "__aeabi_read_tp".

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

	* arm-tdep.c (thumb_in_function_epilogue_p)
	(arm_in_function_epilogue_p): New.
	(arm_gdbarch_init): Install arm_in_function_epilogue_p as
	gdbarch_in_function_epilogue_p callback.

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

	* cc-with-index.sh (output_file): Default to a.out.

	* dwarf2read.c (mapped_index): Rename member index_table to
	symbol_table and index_table_slots to symbol_table_slots.
	All uses updated.
	(create_symbol_hash_table): Renamed from create_index_table.
	All callers updated.
	(add_indices_to_cpool): Rename arg index_table to symbol_hash_table.
	(write_hash_table): Rename local index_table to symbol_hash_table.

	* addrmap.h (addrmap_foreach_fn): New typedef.
	(addrmap_foreach): Declare.
	* addrmap.c (struct addrmap_funcs): New member foreach.
	(addrmap_foreach): New function.
	(addrmap_fixed_foreach): New function.
	(addrmap_fixed_funcs): Update.
	(struct mutable_foreach_data): New struct.
	(addrmap_mutable_foreach_worker): New function.
	(addrmap_mutable_foreach): New function.
	(addrmap_mutable_funcs): Update.

2010-10-07  Paul Hilfinger  <hilfinger@adacore.com>

	* dictionary.c (dict_hash): Revert to msymbol_hash_iw in
	more cases.

2010-10-07  Paul Hilfinger  <hilfinger@adacore.com>

        * ada-lang.c (full_match): Declare.
        (ada_match_name): Rename to match_name (we should avoid prefixing static
        symbols with "ada_").
        (match_name): New name for ada_match_name.
        (struct ada_psym_data): Remove and replace with...
        (struct match_data): User data for map_matching_symbols.
        (ada_add_psyms): Remove.
        (aux_add_nonlocal_symbols): New function, used as callback for
        map_matching_symbols.
        (compare_names): Ordering function adopted from strcmp_iw for Ada-encoded
        symbols.
        (ada_add_non_local_symbols): Rename to add_nonlocal_symbols.
        (add_nonlocal_symbols): Renamed from ada_add_non_local_symbols.
        Rework to use map_matching_symbols instead of map_ada_symtabs.
        (ada_lookup_symbol_list): Use add_nonlocal_symbols.
        * psymtab.c: Include dependency on dictionary.h.
        (match_partial_symbol): New function.
        (ada_lookup_partial_symbol): Remove.
        (map_block): New function, auxiliary to map_matching_symbols_psymtab.
        (map_matching_symbols_psymtab): New function.
        (psym_functions): Replace map_ada_symtabs with map_matching_symbols_psymtab.
        * symfile.h: Replace map_ada_symtabs definition with map_matching_symbols.

2010-10-06  Paul Hilfinger  <hilfinger@adacore.com>

	* ada-lang.c (ada_match_name): Use new API for wild_match.
	(wild_match): Change API to be consistent with that of strcmp_iw;
	return 0 for a match, and switch operand order.
	(full_match): New function.
	(ada_add_block_symbols): Use dict_iter_match_{first,next} for
	matching to allow use of hashing.
	* dictionary.c (struct dict_vector): Generalize iter_name_first,
	iter_name_next ot iter_match_first, iter_match_next.
	(iter_name_first_hashed): Replace with iter_match_first_hashed.
	(iter_name_next_hashed): Replace with iter_match_next_hashed.
	(iter_name_first_linear): Replace with iter_match_first_linear.
	(iter_name_next_linear): Replace with iter_match_next_linear.
	(dict_iter_name_first): Re-implement to use dict_iter_match_first.
	(dict_iter_name_next): Re-implement to use dict_iter_match_next.
	(dict_iter_match_first): New function.
	(dict_iter_match_next): New function.
	(dict_hash): New function.
	* dictionary.h (dict_iter_match_first, dict_iter_match_next): Declare.
	* psymtab.c (ada_lookup_partial_symbol): Use new wild_match API.

2010-10-06  Doug Evans  <dje@google.com>

	* data-directory/Makefile.in: Remove @host_makefile_frag@, @frags@.

2010-10-06  Ken Werner  <ken.werner@de.ibm.com>

	* dwarf2read.c (read_tag_const_type): Handle const arrays.

2010-10-06  Doug Evans  <dje@google.com>

	* Makefile.in (REQUIRED_SUBDIRS): New var.
	(subdir_do): Verify required subdir Makefiles exist.

	Create subdir data-directory.
	* Makefile.in (XML_SYSCALL_DIR, XML_SYSCALL_FILES): Moved to
	data-directory/Makefile.in.
	(SUBDIRS): Add data-directory.
	(all): Remove xml-syscall-copy dependency.
	(xml-syscall-copy): Moved to data-directory/Makefile.in as
	stamp-syscalls.
	(xml-syscall-install): Moved to data-directory/Makefile.in as
	install-syscalls.
	(install-only): Remove xml-syscall-install dependency.
	(all-data-directory): New rule.
	(data-directory/Makefile): New rule.
	* configure.ac (AC_OUTPUT): Add data-directory/Makefile.
	* configure: Regenerate.
	* data-directory/Makefile.in: New file.
	* python/lib/gdb/__init__.py: New file.

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

	Fix ARI warnings in advance_wild_match.
	* ada-lang.c (advance_wild_match): Delete local variable t2.
	Adjust code accordingly.  Minor reformatting.

2010-10-06  Ken Werner  <ken.werner@de.ibm.com>

	* gdbtypes.h (struct main_type): Remove flag_nottext.
	(enum type_flag_value): Remove TYPE_FLAG_NOTTEXT.
	(enum type_instance_flag_value): Add TYPE_INSTANCE_FLAG_NOTTEXT.
	(TYPE_NOTTEXT): Use TYPE_INSTANCE_FLAG_NOTTEXT instead of flag_nottext.
	* gdbtypes.c (make_vector_type): Use TYPE_INSTANCE_FLAG_NOTTEXT instead
	of TYPE_FLAG_NOTTEXT.
	(init_type): Remove the initialization of the flag_nottext field.
	(gdbtypes_post_init): Use TYPE_INSTANCE_FLAG_NOTTEXT instead of
	TYPE_FLAG_NOTTEXT.
	* c-valprint.c (c_val_print): Remove TYPE_VECTOR check.

2010-10-04  Doug Evans  <dje@google.com>

	* cc-with-index.sh: New file.

	* dwarf2read.c (dw2_do_instantiate_symtab): Insert blank line after
	function comment.
	(dw2_instantiate_symtab, dw2_get_cu, extract_cu_value): Ditto.
	(create_cus_from_index, create_addrmap_from_index): Ditto.
	(mapped_index_string_hash, find_slot_in_mapped_hash): Ditto.
	(dw2_setup, dw2_require_line_header, dw2_require_full_path): Ditto.
	(dw2_do_expand_symtabs_matching): Ditto.
	(eq_strtab_entry, create_strtab, add_string): Ditto.
	(hash_strtab_entry): Ditto.
	(hash_symtab_entry, eq_symtab_entry, delete_symtab_entry): Ditto.
	(create_index_table, create_mapped_symtab, find_slot): Ditto.
	(hash_expand, add_index_entry, add_indices_to_cpool): Ditto.
	(write_hash_table, add_address_entry, write_psymbols): Ditto.
	(write_obstack, unlink_if_set, write_one_signatured_type): Ditto.
	(write_psymtabs_to_index): Ditto.

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

	* ada-lang.c: #include "value.h".
	(ensure_lval): Delete advance declaration.  Remove gdbarch and sp
	arguments.  Implement using value_allocate_space_in_inferior
	instead of allocating memory from the stack.
	(make_array_descriptor): Remove gdbarch and sp parameters.  Update
	calls to ensure_lval.
	(ada_convert_actual): Remove gdbarch and sp parameters.  Update
	calls to make_array_descriptor and ensure_lval.
	* ada-lang.h (ada_convert_actual): Update declaration.
	* infcall.c (value_arg_coerce): Update call to ada_convert_actual.

2010-10-04  Doug Evans  <dje@google.com>

	* python/python.c (_initialize_python): Define new function
	GdbSetPythonDirectory in python.  Use it to update sys.path and
	gdb.__path__.

2010-10-03  Paul Hilfinger  <hilfinger@adacore.com>

        * gdb/ada-typeprint.c (print_selected_record_field_types): New function,
        incorporating and generalizing print_record_field_types.
        (print_record_field_types): Change return value and update comment.
        Re-implement using print_selected_record_field_types.
        (print_choices): Print "=>" here.
        Handle case of unencoded variant branch.
        (print_variant_clauses): Reformat comment.
        Special-case unencoded variant branch.

2010-10-03  Paul Hilfinger  <hilfinger@adacore.com>

        * ada-lang.c (wild_match): Reimplement.
        Change API to eliminate unused length argument, reverse arguments and
        make 0 the 'true' return value.
        (advance_wild_match): New auxiliary function for wild_match to improve
        readability.
        (ada_match_name, ada_add_block_symbols): Use new API for wild_match.
        * psymtab.c (ada_lookup_partial_symbol, map_ada_symtabs): Use new
        API for wild_match.
        * symfile.h (map_ada_symtabs): Modify declaration to use new API for
        wild_match.
        * dwarf2read.c (dw2_map_ada_symtabs): Ditto.

2010-10-01  Doug Evans  <dje@google.com>

	* dwarf2read.c (_initialize_dwarf2_read): Add usage info to help text
	for `save gdb-index' command.

2010-10-01  Tom Tromey  <tromey@redhat.com>

	* symfile.h (allocate_symtab): Update.
	* symfile.c (allocate_symtab): Make 'filename' const.
	* psymtab.c (add_psymbol_to_bcache): Make 'name' const.
	(add_psymbol_to_list): Likewise.
	* psympriv.h (struct partial_symtab) <filename, dirname>: Now
	const.
	(add_psymbol_to_list): Update.
	* mdebugread.c (new_symtab): Make 'name' const.
	(psymtab_to_symtab_1): Make 'filename' const.
	* elfread.c (elfstab_offset_sections): Update.
	* dwarf2read.c (dwarf_decode_lines): Make 'comp_dir' const.
	(dwarf2_start_subfile): Make 'dirname' and 'comp_dir' const.
	(psymtab_include_file_name): Update.
	* dbxread.c (find_stab_function_addr): Make 'filename' const.
	* buildsym.h (start_subfile): Update.
	* buildsym.c (start_subfile): Make arguments const.

2010-09-30  Ali Lakhia  <lakhia@alumni.utexas.net>

	* fork-child.c (breakup_args): Fix crash if shell forking is
	disabled at compile time.

2010-10-01  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (desc_bounds): Add handling of the case where
	the P_BOUNDS field is a pointer to a stub.
	(desc_data_target_type): Same for P_ARRAY field.
	(ada_check_typedef): Strip the typedef layers from the type
	found by ada_find_any_type.

2010-10-01  Joel Brobecker  <brobecker@adacore.com>

	* sparc-tdep.c (sparc32_frame_align): New function.
	(sparc32_gdbarch_init): Set the frame_align gdbarch method.
	* sparc64-tdep.c (sparc64_frame_align): New function.
	(sparc64_gdbarch_init): Set the frame_align gdbarch method.

2010-09-30  H.J. Lu  <hongjiu.lu@intel.com>

	* defs.h (MAX_REGISTER_SIZE): Set to 64.

2010-09-30  Tom Tromey  <tromey@redhat.com>

	* symfile.h (struct sym_fns) <next>: Remove.
	(add_symtab_fns): Update.
	* symfile.c (sym_fns_ptr): New typedef.
	(symtab_fns): Now a VEC.
	(add_symtab_fns): Update.  Change argument type.
	(find_sym_fns): Update.  Change return type.
	(get_symfile_segment_data): Update.
	* objfiles.h (struct objfile) <sf>: Now const.
	* somread.c (som_sym_fns): Now const.  Update.
	* xcoffread.c (xcoff_sym_fns): Now const.  Update.
	* mipsread.c (ecoff_sym_fns): Now const.  Update.
	* machoread.c (macho_sym_fns): Now const.  Update.
	* elfread.c (elf_sym_fns): Now const.  Update.
	(elf_sym_fns_gdb_index): Likewise.
	* dbxread.c (aout_sym_fns): Now const.  Update.
	* coffread.c (coff_sym_fns): Now const.  Update.

2010-09-30  Tom Tromey  <tromey@redhat.com>

	* value.c (value_primitive_field): Take 'offset' into account for
	packed field.

2010-09-30  Tom Tromey  <tromey@redhat.com>

	* completer.c (count_struct_fields): Handle anonymous structs and
	unions.
	(add_struct_fields): Likewise.

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

	Fix printing parameters of inlined functions.
	* ada-lang.c (is_known_support_routine)
	(ada_unhandled_exception_name_addr_from_raise): Provide NULL parameter
	for find_frame_funname.
	* python/py-frame.c (frapy_name): Likewise.
	* stack.c (find_frame_funname): New parameter funcp.  Update the
	function comment.  Fill it in.
	(print_frame): New variable func.  Initialize it by
	find_frame_funname.  Print arguments only if FUNC is not NULL.  Use
	FUNC as the parameter of print_args_stub.
	* stack.h (find_frame_funname): New parameter funcp.  Remove the
	function declaration comment.

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

	PR corefiles/12071.
	* inferior.c (have_live_inferiors): New variables old_chain, inf and
	tp.  Iterate INFERIOR_LIST and call target_has_execution.

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

	Fix GDB crash on inferior calls with self-referencing classes.
	* gnu-v3-abi.c (gnuv3_pass_by_reference): Do not call itself on static
	member fields.

2010-09-29  Doug Evans  <dje@google.com>

	Workaround for gcc/45682.
	* dwarf2read.c (partial_die_info): New fields fixup_called,
	linkage_name.
	(guess_partial_die_structure_name): Renamed from guess_structure_name.
	Move definition next to use.  Use linkage_name to determine if class
	is in a namespace.  All callers updated.
	(fixup_partial_die): Return early if already called.
	Set fixup_called when done.
	(guess_full_die_structure_name): New function.
	(determine_prefix): Call it for class/struct/union dies if c++ and
	.debug_types section is present and parent is DW_TAG_compile_unit.

2010-09-28  Joel Brobecker  <brobecker@adacore.com>

	* configure.tgt (sparc-*-*): Set gdb_sim to ../sim/erc32/libsim.a.
        (sparc-*-rtems*): Delete. Now redundant with sparc-*-*.

2010-09-28  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Announce Ravenscar Profile support.

2010-09-28  Joel Brobecker  <brobecker@adacore.com>
	    Jerome Guitton  <guitton@adacore.com>

	* ravenscar-thread.c, ravenscar-thread.h, ravenscar-sparc-thread.c:
	New files.
	* configure.tgt (sparc-*-*): Add ravenscar-thread.o and
	ravenscar-sparc-thread.o to gdb_target_obs.

2010-09-28  Joel Brobecker  <brobecker@adacore.com>

	* ada-tasks.c (iterate_over_live_ada_tasks): New function.
	* ada-lang.h (iterate_over_live_ada_tasks): Declare.

2010-09-27  Pierre Muller  <muller@ics.u-strasbg.fr>

	* amd64-windows-tdep.c (amd64_skip_main_prologue): New function.
	(amd64_windows_init_abi): Register amd64_skip_main_prologue as gdbarch
	skip_main_prologue method.

2010-09-27  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (dwarf2_read_index): Only allow version 3.
	(write_psymbols): Add 'psyms_seen' and 'is_static' arguments.
	Only emit a given psymbol once.
	(struct signatured_type_index_data) <psyms_seen>: New field.
	(write_one_signatured_type): Update.
	(cleanup_htab): New function.
	(write_psymtabs_to_index): Update.  Create psyms_seen hash.  Bump
	version to 3.
	(save_gdb_index_command): Update index documentation.

2010-09-27  Tom Tromey  <tromey@redhat.com>

	* bcache.c (expand_hash_table): Use hash_function, not hash.

2010-09-27  Tom Tromey  <tromey@redhat.com>

	* gdb_wchar.h: Change minimum libiconv to 0x108.

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

	Fix lost siginfo_t for inferior calls.
	* infrun.c
	(struct inferior_thread_state) <siginfo_gdbarch, siginfo_data>: New.
	(save_inferior_thread_state): New variables regcache, gdbarch and
	siginfo_data.  Initialize SIGINFO_DATA if gdbarch_get_siginfo_type_p.
	Move INF_STATE allocation later, pre-clear it.  Initialize REGISTERS
	using REGCACHE.
	(restore_inferior_thread_state): New variables regcache and gdbarch.
	Restore SIGINFO_DATA for matching GDBARCH.  Restore REGISTERS using
	REGCACHE.  Free also SIGINFO_DATA.

2010-09-24  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (dw2_expand_symtabs_matching): Add missing
	MAYBE_SWAPs.
	(dw2_map_symbol_names): Likewise.

2010-09-24  Sami Wagiaalla  <swagiaal@redhat.com>

	* valops.c (find_oload_champ_namespace_loop): replace incorrect
	discard_cleanups do_cleanups.

2010-09-24  Pedro Alves  <pedro@codesourcery.com>

	PR gdb/11842

	* amd64-linux-nat.c (compat_siginfo_from_siginfo)
	(siginfo_from_compat_siginfo): Also copy si_pid and si_uid when
	si_code is < 0.  Check for si_code == SI_TIMER before checking for
	si_code < 0.

2010-09-24  Pedro Alves  <pedro@codesourcery.com>

	* objfiles.h (ALL_OBJSECTIONS): Handle breaks in the inner loop.

2010-09-22  Joel Brobecker  <brobecker@adacore.com>

	* ada-tasks.c (read_atcb): Do not compute the task ptid when
	debugging a core file.

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

	Code cleanup.
	* objfiles.c (allocate_objfile) <objfile->name != NULL>: Remove.
	(free_objfile) <objfile->name != NULL>: Remove the conditional around
	xfree.
	* objfiles.h (struct objfile) <name>: New comment it is never NULL.
	* python/py-auto-load.c (auto_load_new_objfile) <!objfile->name>:
	Remove.
	* python/py-objfile.c (objfpy_get_filename) <obj->objfile->name>
	Remove the conditional.
	* python/py-progspace.c (pspy_get_filename) <objfile->name>: Likewise.

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

	* main.c: Include objfiles.h.
	(captured_main): New variable objfile.  Call
	load_auto_scripts_for_objfile for ALL_OBJFILES.

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

	* dwarf2read.c (die_needs_namespace) <DW_TAG_variable>: Add also
	DW_TAG_constant.

2010-09-22  Joel Brobecker  <brobecker@adacore.com>

	* dwarf2read.c (scan_partial_symbols): Add handling of
	DW_TAG_constant DIEs.
	(add_partial_symbol, load_partial_dies, new_symbol): Likewise.

2010-09-22  Joel Brobecker  <brobecker@adacore.com>

	* configure.ac: Add support for --enable-gdbserver.
	* configure: Regenerate.

2010-09-22  Sami Wagiaalla  <swagiaal@redhat.com>

	PR C++/12028
	* valops.c (find_oload_champ_namespace_loop): removed incorrect
	'old_cleanups' reassignment.

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

	* charset.c (wchar_iterate) <EILSEQ>: Return any possibly converted
	characters.

2010-09-16  Phil Muldoon  <pmuldoon@redhat.com>

	PR mi/11407
	* mi/mi-cmd-stack.c (list_args_or_locals): Catch exceptions from
	read_var_value and common_val_print and print a warning.

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

	* MAINTAINERS (GLOBAL MAINTAINERS) <Jan Kratochvil>: Move the entry to
	keep the list in alphabetical order.  Use longer e-mail address.

2010-09-15  Tom Tromey  <tromey@redhat.com>

	* MAINTAINERS (GLOBAL MAINTAINERS): Add Jan Kratochvil.

2010-09-15  Tom Tromey  <tromey@redhat.com>

	* charset.c (iconv_open): New define.
	(iconv): Likewise.
	(iconv_close): Likewise.
	(phony_iconv_open): Add "phony_" prefix.
	(phony_iconv_close): Likewise.
	(phony_iconv): Likewise.
	* gdb_wchar.h: Check _LIBICONV_VERSION, __STDC_ISO_10646__.
	Change how INTERMEDIATE_ENCODING is defined.

2010-09-15  Doug Evans  <dje@google.com>

	* dwarf2read.c (struct die_info): Fix comment.

2010-09-15  Alan Modra  <amodra@gmail.com>

	PR 4606
	* gcore.c (gcore_create_callback): Clear SEC_HAS_CONTENTS rather
	than setting SEC_NEVER_LOAD on sections that need not be copied.

2010-09-14  Tom Tromey  <tromey@redhat.com>

	* psympriv.h (add_psymbol_to_list, init_psymbol_list)
	(start_psymtab_common, allocate_psymtab, discard_psymtab):
	Declare.
	* symfile.h (extend_psymbol_list): Remove.
	(add_psymbol_to_list, init_psymbol_list, start_psymtab_common)
	(allocate_psymtab, discard_psymtab): Move to psympriv.h.
	* psymtab.c (extend_psymbol_list): Move earlier.  Now static.

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

	* dwarf2read.c (dw2_map_ada_symtabs): Remove the internal_error.
	Update the comment.

2010-09-14  Tom Tromey  <tromey@redhat.com>

	PR symtab/8399:
	* dwarf2loc.c (locexpr_describe_location_piece): Don't call error
	for unrecognized frame base expression.

2010-09-14  Tom Tromey  <tromey@redhat.com>

	PR exp/11803:
	* value.c (value_static_field): Use value_of_variable.

2010-09-14  Pierre Muller  <muller@ics.u-strasbg.fr>

	* m32r-rom.c: Replace winsock.h with winsock2.h header.
	* remote-m32r-sdi.c: Replace winsock.h by winsock2.h.

2010-09-13  Sami Wagiaalla  <swagiaal@redhat.com>

	PR symtab/11992:
	* c-exp.y (classify_name): Check is_a_member_of_this before returning
	UNKNOWN_CPP_NAME.

2010-09-13  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Add x86-lynxos to the list of platforms supported by
	gdbserver.

2010-09-13  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Announce GDBserver support for version 5.x of ppc-lynxos.

2010-09-13  Tom Tromey  <tromey@redhat.com>

	* Makefile.in (HFILES_NO_SRCDIR): Add progspace.h.

2010-09-13  H.J. Lu  <hongjiu.lu@intel.com>

	* i386-tdep.c (i386_ymm_type): Set type name to
	builtin_type_vec256i.

2010-09-12  Michael Snyder  <msnyder@vmware.com>

	* i386-tdep.c (i386_gdbarch_init): Fix typo in comments.

2010-09-12  H.J. Lu  <hongjiu.lu@intel.com>

	* i386-tdep.c (i386_gdbarch_init): Fix typo in comments.

2010-09-11  H.J. Lu  <hongjiu.lu@intel.com>

	* amd64-tdep.c (amd64_register_name): Removed.
	(amd64_init_abi): Don't call set_gdbarch_register_name.

	* i386-tdep.c (i386_ymmh_regnum_p): Make it static.

	* i386-tdep.h (i386_ymmh_regnum_p): Removed.

2010-09-11  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Paul Bolle  <pebolle@tiscali.nl>

	Redirect also uiout and stdtarg{,err} in execute_command_to_string.
	* cli-logging.c (struct saved_output_files) <targerr>: New.
	(set_logging_redirect, pop_output_files, handle_redirections):
	Redirect also gdb_stdtargerr.
	* defs.h (struct ui_out, make_cleanup_ui_out_redirect_pop): New
	declarations.
	* event-top.c (gdb_setup_readline, gdb_disable_readline): Redirect
	also gdb_stdtargerr.
	* top.c (execute_command_to_string): Move make_cleanup_ui_file_delete
	to the top.  Redirect also gdb_stdlog, gdb_stdtarg and gdb_stdtargerr.
	Use ui_out_redirect, register make_cleanup_ui_out_redirect_pop.
	* tui/tui-io.c (tui_setup_io): Redirect also gdb_stdtargerr.
	* utils.c (do_ui_out_redirect_pop, make_cleanup_ui_out_redirect_pop):
	New functions.

2010-09-10  Pierre Muller  <muller@ics.u-strasbg.fr>

	* hppa-tdep.c (unwind_command): Use host_address_to_string function
	to display a host address.
	* monitor.c (monitor_read_memory): Likewise.
	* xtensa-tdep.c (xtensa_push_dummy_call): Likewise.

2010-09-10  Pierre Muller  <muller@ics.u-strasbg.fr>

	* coffread.c (struct coff_symbol): Change c_value type from `long' to
	`CORE_ADDRESS' as it might contain target addresses.

2010-09-10  Pierre Muller  <muller@ics.u-strasbg.fr>

	* alpha-mdebug-tdep.c (find_proc_desc): Use SYMBOL_VALUE_BYTES macro
	before cast to pointer to avoid warning.

2010-09-09  Kevin Buettner  <kevinb@redhat.com>

	* v850-tdep.c (v850_gdbarch_init): Change the v850's `char'
	type to be signed.

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

	* dwarf2read.c (fixup_partial_die): Do not set dummy name for
	anonymous class partial DIEs.

2010-09-08  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (dwarf2_compute_name): Check that the first
	argument is a pointer.

2010-09-08  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (read_func_scope, read_structure_type)
	(read_common_block): Check for a NULL return from new_symbol.

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

	* dwarf2read.c (dwarf2_read_index): Return on no SEC_HAS_CONTENTS.

2010-09-08  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (read_structure_type): Move processing of
	fields and member functions from here...
	(process_structure_scope): ... to here.

2010-09-08  Daniel Jacobowitz  <dan@codesourcery.com>

	* gnu-v3-abi.c (gnuv3_print_method_ptr): Do not use
	the domain type.
	(gnuv3_make_method_ptr): Likewise.

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

	* breakpoint.c (create_breakpoint): Add missing _().

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

	* dwarf2-frame.h (dwarf2_frame_build_info): Delete, unused.

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

	Revert:
	2010-09-01  Tom Tromey  <tromey@redhat.com>
	* dwarf2read.c, gdbtypes.c, psymtab.c, symfile.h, symtab.c,
	symtab.h: Revert earlier change.

2010-09-09  Sami Wagiaalla  <swagiaal@redhat.com>

	* psymtab.c (add_psymbol_to_bcache): Initialize
	obj_section.
	memset psymbol.ginfo.value to 0.

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

	* infrun.c (resume): Extend comment on ignoring single-step
	requests on vfork parents waiting for a vfork-done.

2010-09-06  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Pedro Alves  <pedro@codesourcery.com>

	* corelow.c (core_open): Use target_signal_from_host if CORE_GDBARCH
	is NULL.
	* fork-child.c (startup_inferior) <resume_signal>: Use enum
	target_signal type.
	* linux-nat.c (linux_nat_resume): Use target_signal_to_host before
	calling strsignal.  Use enum target_signal type for saved_signo.
	(linux_handle_extended_wait) <signo>: Use enum target_signal type.
	(linux_nat_wait_1): Use enum target_signal type for signo.  Use
	target_signal_to_host before calling strsignal.
	* remote-m32r-sdi.c (m32r_wait, m32r_detach): Replace 0 by
	TARGET_SIGNAL_0.

2010-09-06  Pedro Alves  <pedro@codesourcery.com>
	    Jan Kratochvil  <jan.kratochvil@redhat.com>

	* common/signals.c (ANY): Remove.
	(SET): No longer use ANY.

2010-09-06  Yao Qi  <yao@codesourcery.com>

	* infrunc(resume): When inferior is waiting_for_vfork_done,
	clear step and don't use displaced stepping.

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

	* breakpoint.c (can_use_hardware_watchpoint): Handle the first
	value specially.

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

	Code cleanup - split print_stop_reason.
	* infrun.c (enum inferior_stop_reason): Remove.
	(print_stop_reason): Remove by splitting into ...
	(print_exited_reason, print_signal_exited_reason)
	(print_no_history_reason, print_signal_received_reason)
	(print_end_stepping_range_reason): ... these new functions.  Update
	the preceding comment.
	(handle_inferior_event): Change the calls to print_exited_reason,
	print_signal_exited_reason, print_no_history_reason,
	print_signal_received_reason, print_end_stepping_range_reason.
	(handle_step_into_function, handle_step_into_function_backward):
	Change the calls to print_end_stepping_range_reason.

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

	* breakpoint.c (save_breakpoints): Use RETURN_MASK_ALL.
	* cli-out.c: Include vec.h.
	(cli_field_fmt, cli_spaces, cli_text, cli_message, cli_flush): New
	variable stream, initialize it, use it.
	(cli_redirect): New function comment.  Replace the stream and
	original_stream fields by the new streams field.  Remove the
	original_stream != NULL conditional, assert error on NULL instead.
	(out_field_fmt, field_separator): New variable stream, initialize it, use it.
	(cli_out_data_ctor): Assert non-NULL stream.  Replace the stream and
	original_stream fields by the new streams field.
	(cli_out_set_stream): Replace the stream field by the new streams
	field.
	* cli-out.h: Include vec.h.
	(ui_filep): New typedef, call DEF_VEC_P for it.
	(struct cli_ui_out_data): Replace the stream and original_stream
	fields by the new streams field.
	* cli/cli-logging.c (set_logging_redirect): Call ui_out_redirect with
	NULL first.  Extend the comment.
	(handle_redirections): Call ui_out_redirect with output.
	* python/py-breakpoint.c (bppy_get_commands): Move ui_out_redirect
	calls outside of the TRY_CATCH block.

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

	GDB 7.2 released.

2010-09-02  Joel Brobecker  <brobecker@adacore.com>

	Back out the following change:
	| 2010-06-29  Hui Zhu  <teawater@gmail.com>
	| * record.c (set_record_pic_cmdlist,
	| show_record_pic_cmdlist): New variables.
	| (set_record_pic_command,
	| show_record_pic_command): New functions.
	| (record_pic_function, record_pic_line, record_pic_enum,
	| set_record_pic_type, record_pic_hide_nofunction,
	| record_pic_hide_nosource, record_pic_hide_same): New variables.
	| (record_pic_fputs): New function.
	| (function_list, node_list, edge_list): New struct.
	| (function_list, node_list, edge_list): New variables.
	| (record_pic_cleanups, record_pic_node,
	| record_pic_edge, cmd_record_pic): New functions.
	| (_initialize_record): Add new commands for record pic.

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

	* config.in, configure: Regenerated.
	* configure.ac: Check for waitpid.
	* ser-pipe.c (pipe_close): Wait for the program to exit.

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

	* cli/cli-logging.c: Include gdb_assert.h.
	(set_logging_overwrite): New function.
	(logging_redirect): New comment.
	(logging_no_redirect_file, set_logging_redirect)
	(pop_output_files) <logging_no_redirect_file>: New.
	(handle_redirections) <!logging_redirect>: New variable
	no_redirect_file.  Remove file autoclose for tee_file_new.  No longer
	discard cleanup for the close of former OUTPUT.  Set
	LOGGING_NO_REDIRECT_FILE.
	(handle_redirections) <logging_redirect>: gdb_assert
	LOGGING_NO_REDIRECT_FILE.
	(show_logging_command) <logging_redirect handling>: Adjust messages
	for SAVED_FILENAME not NULL.
	(_initialize_cli_logging): Install set_logging_overwrite and
	set_logging_redirect.

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

	* iq2000-tdep.c (iq2000_scan_prologue): Initialize SAL.END.

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

	* Makefile.in (GDB_WARN_CFLAGS_NO_FORMAT): Convert it to the no- form.
	(monitor.o): Replace $(INTERNAL_WARN_CFLAGS) by $(INTERNAL_CFLAGS) and
	add $(GDB_WARN_CFLAGS_NO_FORMAT).
	(printcmd.o): Replace $(INTERNAL_CFLAGS_BASE) by $(INTERNAL_CFLAGS).

2010-09-02  Yao Qi  <yao@codesourcery.com>

	* linux-nat.c (status_to_str): Use WTERMSIG to extract the signal
	number from a WIFSIGNALED status.

2010-09-01  Tom Tromey  <tromey@redhat.com>

	* symtab.h (lookup_type_symbol): Declare.
	* symtab.c (lookup_symbol_in_language_full): Rename from
	lookup_symbol_in_language.  Add 'for_type' argument.
	(lookup_symbol_in_language): New function.
	(lookup_type_symbol): Likewise.
	(lookup_symbol_aux): Add 'for_type' argument.
	(match_symbol_aux): New function.
	(lookup_symbol_aux_symtabs): Use expand_one_symtab_matching.
	(match_transparent_type): New function.
	(basic_lookup_transparent_type): Use expand_one_symtab_matching.
	* symfile.h (struct quick_symbol_functions)
	<pre_expand_symtabs_matching>: Remove.
	<expand_one_symtab_matching>: New field.
	* psymtab.c (expand_one_symtab_matching_psymtabs): New function.
	(pre_expand_symtabs_matching_psymtabs): Remove.
	(psym_functions): Update.
	* gdbtypes.c (lookup_typename): Use lookup_type_symbol.
	* dwarf2read.c (dw2_lookup_symbol): Update comment.
	(dw2_pre_expand_symtabs_matching): Remove.
	(dw2_expand_one_symtab_matching): New function.
	(dwarf2_gdb_index_functions): Update.

2010-09-01  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Add entry announcing GDBserver support on powerpc-lynxos.

2010-09-01  Marc Khouzam  <marc.khouzam@ericsson.com>

	* mi/mi-main.c (mi_cmd_list_target_features): Add `reverse'
	as a feature reported by -list-target-features.

2010-09-01  Joel Brobecker  <brobecker@adacore.com>

	* features/Makefile (WHICH): Add rs6000/powerpc-32.
	(powerpc-32.o, powerpc-32.c): New rules.
	(clean): Also remove powerpc-32.c.
	* regformats/rs6000/powerpc-32.dat: Generate.

2010-08-31  Sami Wagiaalla  <swagiaal@redhat.com>

	* symfile.c (reread_symbols): Use psymbol_bcache_free, and
	psymbol_bcache_init.
	* psymtab.h (psymbol_bcache_init): New function prototype.
	(psymbol_bcache_free): New function prototype.
	(psymbol_bcache_get_bcache): New function prototype.
	* psymtab.c (psymbol_bcache_init): New function.
	(psymbol_bcache_free): New function.
	(psymbol_bcache_full): New function.
	(psymbol_bcache_get_bcache): New function.
	(add_psymbol_to_bcache): use psymbol_bcache_full.
	* objfiles.h (psymbol_cache): Change type of psymbol_cache to
	psymbol_bcache.
	* symmisc.c (print_symbol_bcache_statistics): Updated.
	(print_objfile_statistics): Updated.
	* objfiles.c (allocate_objfile): Use psymbol_bcache_init to initialize
	psymbol_cache.
	(free_objfile): Use psymbol_bcache_free.

2010-08-31  Tom Tromey  <tromey@redhat.com>

	PR c++/11961:
	* dwarf2read.c (new_symbol_full) <DW_TAG_template_type_param>:
	Don't set TYPE_NAME on the type.

2010-08-31  Michael Snyder  <msnyder@msnyder-server.eng.vmware.com>

	* infrun.c (set_exec_direction_func): Error out if target does not
	support reverse execution.

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

	Make linux_get_siginfo_type `type *' unique.
	* linux-tdep.c (linux_gdbarch_data_handle, struct linux_gdbarch_data)
	(init_linux_gdbarch_data, get_linux_gdbarch_data): New.
	(linux_get_siginfo_type): New variable linux_gdbarch_data.  Initialize
	it.  Use linux_gdbarch_data->siginfo_type as a persistent storage.
	(_initialize_linux_tdep): New.

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

	Code cleanup.
	* defs.h (find_memory_region_ftype): New typedef.
	(exec_set_find_memory_regions): Use it.
	* exec.c (exec_set_find_memory_regions): Use find_memory_region_ftype.
	* fbsd-nat.c (fbsd_find_memory_regions): Likewise.
	* gcore.c (objfile_find_memory_regions): Likewise.
	* gnu-nat.c (gnu_find_memory_regions): Likewise.
	* linux-nat.c (linux_nat_find_memory_regions): Likewise.
	* procfs.c (iterate_over_mappings_cb_ftype): Remove.
	(iterate_over_mappings): Rename iterate_over_mappings_cb_ftype to
	find_memory_region_ftype.
	(insert_dbx_link_bpt_in_region): Likewise.
	(iterate_over_mappings): Likewise.  Drop the comment part about the
	function prototype.
	(find_memory_regions_callback): Use find_memory_region_ftype.
	(proc_find_memory_regions): Likewise.
	(info_mappings_callback): Rename iterate_over_mappings_cb_ftype to
	find_memory_region_ftype.
	* target.c (dummy_find_memory_regions): Use find_memory_region_ftype.
	* target.h (struct target_ops) <to_find_memory_regions>: Likewise.

2010-08-31  Sami Wagiaalla  <swagiaal@redhat.com>

	* psymtab.c (add_psymbol_to_bcache): Remove 'static' from
	'static partial_symbol psymbol'.
	(psymbol_hash): New function.
	(psymbol_compare): New function.
	* bcache.c (hash_continue): New.
	(hash): Use hash_continue.
	* bcache.c: Add hash_function and compare_function
	pointers to bcache struct.
	(bcache_full): Use bcache->hash_function, and
	bcache->compare_function.
	(bcache_compare): New function.
	(bcache_xmalloc): Take hash_function and
	compare_function arguments and initialize the
	bcach's pointers.
	Updated comment.
	* objfiles.c (allocate_objfile): Updated.
	* symfile.c (reread_symbols): Updated.
	* python/py-type.c (typy_richcompare): Updated.

2010-08-30  Andre Poenitz  <andre.poenitz@nokia.com>
	    Tom Tromey  <tromey@redhat.com>

	PR python/11792:
	* python/py-value.c (valpy_get_dynamic_type): New function.
	(value_object_getset): Add "dynamic_type".
	(valpy_get_type): Fail on error.

2010-08-30  Yao Qi  <yao@codesourcery.com>

	* arm-linux-tdep.c (arm_linux_sigreturn_return_addr): New.
	(arm_linux_syscall_next_pc): New.
	(arm_linux_copy_svc): Use arm_linux_sigreturn_return_addr instead. 
	(arm_linux_init_abi): Initialize syscall_next_pc.
	* arm-tdep.c (thumb_get_next_pc_raw):  Get next pc of SWI in Thumb mode.
	(arm_get_next_pc_raw): Get next pc of SWI in ARM mode.
	* arm-tdep.h (struct gdbarch_tdep): Add a function pointer syscall_next_pc. 
	Declare arm_frame_is_thumb.

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

	Code cleanup.
	* breakpoint.c (bpstat_alloc): Remove unused prototype.
	(bpstat_alloc): Change parameters cbs to bs_link_pointer.  Adjust the
	code.
	(bpstat_stop_status): Change root_bs into bs_head and bs_link.  Adjust
	calls of bpstat_alloc.  Remove explicit bs chain termination.

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

	Code cleanup.
	* linux-nat.c (pull_pid_from_list): Rename status to statusp.
	(my_waitpid): Likewise.

2010-08-27  Doug Evans  <dje@google.com>

	* dwarf2read.c (dw2_require_line_header): Read from .debug_types
	as appropriate.

2010-08-27  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (dwarf2_attach_fields_to_type): Don't set
	TYPE_FIELD_IGNORE_BITS.

2010-08-27  Doug Evans  <dje@google.com>

	* dwarf2read.c (dwarf2_per_objfile_free): Reorganize buffers to match
	the order they're defined in.  munmap .debug_types buffer.

2010-08-26  Doug Evans  <dje@google.com>

	* dwarf2read.c (dw2_require_full_path): Rename parameter cu to per_cu.
	(dw2_forget_cached_source_info): Rename local cu to per_cu.
	(dw2_lookup_symtab, dw2_do_expand_symtabs_matching): Ditto.
	(dw2_print_stats, dw2_expand_all_symtabs): Ditto.
	(dw2_expand_symtabs_with_filename, dw2_find_symbol_file): Ditto.
	(dw2_find_symbol_file, dw2_expand_symtabs_matching): Ditto.
	(dw2_map_symbol_filenames, dwarf2_initialize_objfile): Ditto.
	(dwarf2_free_objfile, write_one_signatured_type): Ditto.
	(write_psymtabs_to_index): Ditto.

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

	* NEWS: Mention libthread_db debugging with core files.

2010-08-26  Doug Evans  <dje@google.com>

	* dwarf2read.c (dwarf2_build_include_psymtabs): Remove unnecessary
	forward decl.  Pass pst->dirname to dwarf_decode_lines.
	(psymtab_include_file_name): New function.
	(dwarf_decode_lines): Call it.  Update comments.

2010-08-25  Pedro Alves  <pedro@codesourcery.com>

	* dwarf2read.c (inherit_abstract_dies): Handle origin die's
	compilation unit being different from target die's.

2010-08-24  Doug Evans  <dje@google.com>

	PR symtab/11942
	* dwarf2read.c (dwarf2_per_objfile): New members debug_info_type_hash,
	debug_types_type_hash.
	(dwarf2_cu, dwarf2_per_cu_data): Delete member type_hash.
	All uses updated.
	(lookup_die_type): Renamed from tag_type_to_tag.  First look in
	appropriate type_hash table.  All callers updated.
	(allocate_signatured_type_table): Renamed from
	allocate_signatured_type_hash_table.  All callers updated.
	(create_signatured_type_table_from_index): Renamed from
	create_signatured_type_hash_from_index.  All callers updated.
	(read_die_type): Add comment.  Move actual reading to ...
	(read_die_type_1): ... here.  New function.
	(follow_die_ref_or_sig): Tweak comment.
	(set_die_type): Rewrite to use appropriate choice of
	debug_info_type_hash or debug_types_type_hash.
	(get_die_type_at_offset): New function.
	(get_die_type): Call it.

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

	* python/py-type.c (typy_richcompare): Initialize worklist.

2010-08-24  Daniel Jacobowitz  <dan@codesourcery.com>
	    Kazu Hirata  <kazu@codesourcery.com>
	    Jonathan Larmour  <jifl@eCosCentric.com>

	* arm-tdep.c: Include features/arm-with-m.c.
	(arm_psr_thumb_bit): New.  Update all uses of CPSR_T to
	call this function.
	(arm_pc_is_thumb): Add a gdbarch argument.  Update all callers.
	Check is_m after force-mode.
	(arm_gdbarch_init): Check the binary before the target description.
	Add check for M profile attribute.  If we have an M-profile device,
	but no target register description, use arm-with-m.  Recognize the
	new org.gnu.gdb.arm.m-profile feature and its xpsr register.
	(_initialize_arm_tdep): Call initialize_tdesc_arm_with_m.
	* arm-tdep.h (XPSR_T): Define.
	(struct gdbarch_tdep): Add is_m member.
	* features/arm-m-profile.xml, features/arm-with-m.c,
	features/arm-with-m.xml: New files.

2010-08-23  Doug Evans  <dje@google.com>

	* dwarf2read.c (read_structure_type): Add comment.
	(read_enumeration_type): Add comment.
	(process_enumeration_scope): Move definition of some locals
	closer to their use.
	(read_namespace_type): Add comment.
	(set_die_type): Fix typo in comment.

2010-08-23  Tom Tromey  <tromey@redhat.com>

	PR python/11145:
	* python/py-value.c: Include expression.h.
	(valpy_do_cast): New function.
	(valpy_cast): Use it.
	(valpy_dynamic_cast): New function.
	(valpy_reinterpret_cast): Likewise.
	(value_object_methods): Add dynamic_cast, reinterpret_cast.

2010-08-23  Tom Tromey  <tromey@redhat.com>

	PR python/11391:
	* python/py-value.c (valpy_nonzero): Don't throw error for other
	Value types.

2010-08-23  Tom Tromey  <tromey@redhat.com>

	PR python/10676:
	* python/py-type.c: Include bcache.h, vec.h.
	(struct type_equality_entry): New.
	(compare_strings): New function.
	(check_types_equal): Likewise.
	(check_types_worklist): Likewise.
	(typy_richcompare): Likewise.
	(type_object_type): Set tp_richcompare field.

2010-08-23  Tom Tromey  <tromey@redhat.com>

	PR python/10953:
	* python/py-type.c (typy_fields): Call check_typedef.
	(typy_template_argument): Add TRY_CATCH.

2010-08-23  Tom Tromey  <tromey@redhat.com>

	PR python/11915:
	* python/py-type.c (typy_array): New function.
	(type_object_methods): Add "array".

2010-08-20  Pedro Alves  <pedro@codesourcery.com>

	* python/python.c: Include "serial.h".
	(gdbpy_event_fds): Change type to `struct serial *' a array from
	int array.
	(gdbpy_run_events): Change parameters.  Use serial_readchar in
	place of read.
	(gdbpy_post_event): Use serial_write in place of write.
	(gdbpy_initialize_events): Use serial_pipe instead of pipe, and
	serial_async in place of add_file_handler.

2010-08-20  Pedro Alves  <pedro@codesourcery.com>

	* serial.h (gdb_pipe, serial_pipe): Declare.
	* serial.c (serial_interface_lookup): Take a const char pointer.
	(serial_fdopen): Rename to ...
	(serial_fdopen_ops): ... this.  Add an OPS parameter and use it.
	Call the OPS' fdopen function if there is one.
	(serial_fdopen): Rewrite as wrapper to serial_fdopen_ops.
	(serial_pipe): New.
	(struct serial_ops) <fdopen>: New field.

	* ser-mingw.c (free_pipe_state):
	(free_pipe_state): Close output on non-pex pipes.
	(pipe_windows_fdopen): New.
	(gdb_pipe): New.
	(_initialize_ser_windows): Register pipe_windows_fdopen.
	* ser-go32.c (gdb_pipe): New.
	* ser-pipe.c (pipe_close): Close file descriptor even if there's
	no state pointer.
	(pipe_ops): Delete.
	(gdb_pipe): New.

2010-08-20  Keith Seitz  <keiths@redhat.com>

	PR symtab/11465:
	* dwarf2read.c (struct delayed_method_info): New struct.
	(struct dwarf2_cu): Add vector method_list.
	(scan_partial_symbols): Count methods for union, class, structure,
	and interface types.
	(add_to_method_list): New function.
	(free_delayed_list): New function.
	(compute_delayed_physnames): New function.
	(process_full_comp_unit): Make a cleanup for the CU's delayed
	physname list, compute the delayed physnames, and free the
	the list.
	(dwarf2_add_member_fn): For C++ and Java, delay the computation
	of the physname until after the CU is read.

	* dwarf2read.c (read_structure_type): Check if the current
	DIE's type was already completed after dwarf2_full_name
	was called.

2010-08-19  Stan Shebs  <stan@codesourcery.com>

	* NEWS: Mention some additional changes.

2010-08-19  Tom Tromey  <tromey@redhat.com>

	* Makefile.in (install-python): Add DESTDIR.

2010-08-19  Doug Evans  <dje@google.com>

	PR exp/11926
	* parser-defs.h (parse_float, parse_c_float): Declare.
	* parse.c (parse_float, parse_c_float): New function.
	* c-exp.y (parse_number): Call parse_c_float.
	* objc-exp.y (parse_number): Ditto.
	* p-exp.y (parse_number): Ditto.  Use ANSI/ISO-style definition.
	* jv-exp.y (parse_number): Call parse_float, fix suffix handling.

2010-08-19  Joel Brobecker  <brobecker@adacore.com>

	* psymtab.c (map_symbol_filenames_psymtab): Call FUN with
	the arguments in the correct order.
	* symtab.c (maybe_add_partial_symtab_filename): Declare
	the arguments in the correct order.

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

	* varobj.c (varobj_create): Replace variable old_fi with old_id,
	initialize it by null_frame_id, wrap its usage by get_frame_id,
	frame_id_p and frame_find_by_id.

2010-08-18  Tom Tromey  <tromey@redhat.com>

	PR python/11900:
	* configure: Rebuild.
	* configure.ac: Add install-python to CONFIG_INSTALL.
	* Makefile.in (install-python): New.

2010-08-18  Doug Evans  <dje@google.com>

	* gdb_assert.h (gdb_assert_not_reached): New macro.
	(gdb_assert_fail): Fix typo in comment.
	* avr-tdep.c (avr_return_value): Use gdb_assert_not_reached instead of
	gdb_assert (0).
	* darwin-nat.c (darwin_check_new_threads): Ditto.
	* dwarf2read.c (dwarf2_get_section_info): Ditto.
	(munmap_section_buffer): Ditto.
	* m32c-tdep.c (make_types): Ditto.
	(m32c_decode_srcdest4, m32c_decode_sd23, m32c_frame_base): Ditto.
	* macroexp.c (get_character_constant): Ditto.
	(get_string_literal): Ditto.
	* mep-tdep.c (mep_pseudo_cr_size): Ditto.
	(mep_pseudo_cr_index, mep_register_type): Ditto.
	(mep_pseudo_register_read, mep_pseudo_register_write): Ditto.
	(mep_get_insn, mep_analyze_prologue): Ditto.
	* objfiles.c (qsort_cmp): Ditto.
	* prologue-value.c (pv_is_identical): Ditto.
	* record.c (record_get_loc): Ditto.
	* value.c (value_static_field): Ditto.
	* xtensa-tdep.c (call0_track_op): Ditto.

2010-08-18  Tom Tromey  <tromey@redhat.com>

	PR symtab/11919:
	* gdbtypes.c (lookup_struct_elt_type): Clean up error emission.
	* parse.c (parse_field_expression): Use RETURN_MASK_ERROR.  Move
	name-copying lower.  Document exception behavior.
	* completer.c (expression_completer): Catch exceptions from
	parse_field_expression.

2010-08-18  Pedro Alves  <pedro@codesourcery.com>

	PR corefile/8210

	* linux-thread-db.c (add_thread_db_info): Skip glibc/BZ5983
	workaround on core files.
	(try_thread_db_load_1): Don't try enabling thread event reporting
	on core files.
	(thread_db_load): Allow thread_db on core files.
	(attach_thread): Don't check thread signals on core files, nor try
	really attaching to the thread, nor enabling thread event event
	reporting.
	(thread_db_detach): Don't try disabing thread event reporting or
	removing thread event breakpoints when debugging a core file.
	(find_new_threads_callback): Don't try enabling thread event
	reporting on core files.
	(thread_db_find_new_threads_2): Don't look for a stopped lwp when
	debugging a core file.
	(thread_db_find_new_threads): Don't update thread
	cores (processors) when debugging a core (dump).

2010-08-18  Pedro Alves  <pedro@codesourcery.com>

	PR corefile/8210

	* corelow.c (add_to_thread_list): Don't use
	gdbarch_core_reg_section_encodes_pid.  Use bfd_core_file_pid.
	(get_core_register_section): Don't use
	gdbarch_core_reg_section_encodes_pid.

	* gdbarch.sh (core_reg_section_encodes_pid): Delete.
	* gdbarch.h, gdbarch.c: Regenerate.
	* amd64-sol2-tdep.c (amd64_sol2_init_abi): Don't set
	gdbarch_core_reg_section_encodes_pid.
	* i386-sol2-tdep.c (i386_sol2_init_abi): Ditto.
	* sparc-sol2-tdep.c (sparc32_sol2_init_abi): Ditto.
	* sparc64-sol2-tdep.c (sparc64_sol2_init_abi): Ditto.

2010-08-18  Yao Qi  <yao@codesourcery.com>

	* MAINTAINERS : Add myself under Write After Approval.

2010-08-17  Tom Tromey  <tromey@redhat.com>

	* NEWS: Mention template parameter support.

2010-08-17  Pedro Alves  <pedro@codesourcery.com>

	PR breakpoints/11371

	* breakpoint.c (decref_bp_location): Assert the reference count is
	sane.

2010-08-17  Pedro Alves  <pedro@codesourcery.com>

	PR breakpoints/11371

	* breakpoint.c (breakpoint_init_inferior): Decrement the
	location's reference count instead of deleting right away.
	(bpstat_free): Decrement the location's reference count.  Make
	static.
	(bpstat_copy): Increment the location's reference count.
	(bpstat_find_breakpoint): Adjust.
	(bpstat_num): Adjust.
	(print_it_typical): Adjust.  Use the breakpoint pointer in the
	bpstat instead of the location's owner.
	(bpstat_alloc): Remove const qualifier from the 'bl' parameter.
	Adjust to record the location's owner in the bpstat.
	(watchpoint_check): Use the breakpoint pointer in the bpstat
	instead of the location's owner.
	(bpstat_check_breakpoint_conditions): Don't handle
	bp_watchpoint_scope here.  Use the breakpoint pointer in the
	bpstat instead of the location's owner.
	(bpstat_stop_status): Defer inferior function calls to after
	building the bpstat list.  Handle bp_watchpoint_scope here.  Use
	the breakpoint pointer in the bpstat instead of the location's
	owner.
	(bpstat_what): Use the breakpoint pointer in the bpstat instead of
	the location's owner.
	(free_bp_location): Don't walk bpstats clearing locations.
	(incref_bp_location): New.
	(decref_bp_location): New.
	(breakpoint_auto_delete): Use the breakpoint pointer in the bpstat
	instead of the location's owner.
	(update_global_location_list): Clear the location's owner, and
	decrement the location's reference count instead of deleting it
	right away.
	(breakpoint_retire_moribund): Decrement the location's reference
	count instead of deleting it right away.
	(bpstat_remove_bp_location): Delete.
	(bpstat_remove_breakpoint): New.
	(bpstat_remove_bp_location_callback): Delete.
	(bpstat_remove_breakpoint_callback): New.
	(delete_breakpoint): Iterate over all threads' stop_bpstat's
	clearing references to the breakpoint that is being deleted.

	* breakpoint.h (struct bp_location) <refc>: New field.
	<owner>: Update comments.
	(bpstat_free): Delete declaration.
	(struct bpstats): Change the type of the breakpoint_at field to
	struct breakpoint point, from struct bp_location pointer.  Add new
	field bp_location_at.

2010-08-16  Tom Tromey  <tromey@redhat.com>

	* NEWS: Fix typo.

2010-08-16  Tom Tromey  <tromey@redhat.com>

	* NEWS: Mention watch -location.

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

	* breakpoint.c (update_watchpoint): Add source empty line.  Prefer
	EXP_STRING_REPARSE to EXP_STRING.
	(watch_command_1): Set also EXP_STRING_REPARSE.
	(delete_breakpoint): Free also EXP_STRING_REPARSE.
	* breakpoint.h (struct breakpoint): New field exp_string_reparse.
	Update comment for exp_string.

2010-08-16  Tom Tromey  <tromey@redhat.com>

	* value.c (release_value): Clear 'next' pointer.
	* breakpoint.c (watch_command_1): Add 'just_location' argument.
	(watch_command_wrapper): Update.
	(watch_maybe_just_location): New function.
	(watch_command): Update.
	(rwatch_command_wrapper): Update.
	(rwatch_command): Update.
	(awatch_command_wrapper): Update.
	(awatch_command): Update.
	(check_for_argument): New function.
	(_initialize_breakpoint): Update help text.

2010-08-14  Ulrich Weigand  <uweigand@de.ibm.com>

	* arm-tdep.c (arm_push_dummy_call): Handle pointers to
	typedef'ed function types correctly.

2010-08-13  Tom Tromey  <tromey@redhat.com>

	* python/python-internal.h (gdbpy_get_hook_function): Don't
	declare.

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

	* cli/cli-logging.c (logging_overwrite, logging_redirect): Make them
	static.

2010-08-13  Ken Werner  <ken.werner@de.ibm.com>

	* python/python.c (gdbpy_solib_name): Remove the const qualifier of
	the format strings to be compatible with Python 2.4.

2010-08-13  Vladimir Prus  <vladimir@codesourcery.com>

	Easier and more stubborn MI memory read commands.

	* mi/mi-cmds.c (mi_cmds): Register data-read-memory-bytes
	and data-write-memory-bytes.
	* mi/mi-cmds.h (mi_cmd_data_read_memory_bytes)
	(mi_cmd_data_write_memory_bytes): New.
	* mi/mi-main.c (mi_cmd_data_read_memory): Use regular target_read.
	(mi_cmd_data_read_memory_bytes, mi_cmd_data_write_memory_bytes):
	New.
	(mi_cmd_list_features): Add "data-read-memory-bytes" feature.
	* target.c (target_read_until_error): Remove.
	(read_whatever_is_readable, free_memory_read_result_vector)
	(read_memory_robust): New.
	* target.h (target_read_until_error): Remove.
	(struct memory_read_result, free_memory_read_result_vector)
	(read_memory_robust): New.

2010-08-13  Hui Zhu  <teawater@gmail.com>

	* dwarf2read.c (load_partial_comp_unit): Initialize free_cu_cleanup.
	(read_comp_unit): Initialize back_to.

2010-08-12  Daniel Jacobowitz  <dan@codesourcery.com>
	    Pedro Alves  <pedro@codesourcery.com>

	* dwarf2read.c: Include "c-lang.h" and "valprint.h".
	(struct dwarf2_per_objfile) <reading_partial_symbols>: New field.
	(struct partial_die_info) <has_template_arguments>: New field.
	<num_attrs>: Change type to unsigned char.
	<building_fullname>: New field.
	(dwarf2_build_psymtabs_hard): Set reading_partial_symbols.  Only
	allocate a CU if we don't have one already.  Add a cleanup for the
	CU.
	(partial_die_full_name): Handle template arguments not in
	DW_AT_name.
	(dwarf2_psymtab_to_symtab): Clear reading_partial_symbols.
	(load_full_comp_unit): Only allocate a CU if we don't have one
	already.
	(do_ui_file_peek_last): New.
	(dwarf2_compute_name): Handle template parameters not in
	DW_AT_name.
	(read_comp_unit): Read and free abbrevs if not read yet.
	(load_partial_dies): Handle template arguments not in DW_AT_name.
	(find_partial_die): If we have a CU, but no a partial dies yet,
	also read in the CU.
	(dwarf2_const_value_attr): New, abstracted out from
	dwarf2_const_value.
	(dwarf2_const_value, dwarf2_const_value_data): Adjust to use
	dwarf2_const_value_attr.
	(determine_prefix): Detect and break loops created by RCVT's debug
	info.
	(maybe_queue_comp_unit): Bail out early if reading partial
	symbols.
	(follow_die_offset): Load full CU if we have no dies.
	* dwarf2loc.c (dwarf2_evaluate_loc_desc): Make public.
	* dwarf2loc.h (dwarf2_evaluate_loc_desc): Declare.

2010-08-11  Tom Tromey  <tromey@redhat.com>
	    Phil Muldoon  <pmuldoon@redhat.com>

	* python/python.c (gdbpy_run_events): New function.
	(gdbpy_post_event): Likewise.
	(gdbpy_initialize_events): Likewise.
	(_initialize_python): Call gdbpy_initialize_events.

2010-08-11  Ken Werner  <ken.werner@de.ibm.com>

	* gdb/valarith.c (vector_binop): New function.
	(scalar_binop): Likewise.
	(value_binop): Call scalar_binop or vector_binop depending on the types.
	* gdb/eval.c (ptrmath_type_p): Return 0 in case of TYPE_VECTOR.
	(evaluate_subexp_with_coercion): Add vector check to not convert vectors
	to pointers.
	* gdb/value.c (coerce_array): Add vector check to not coerce vectors.

2010-08-11  Brad Roberts  <braddr@puremagic.com>

	* d-lang.c (extract_identifiers): Handle multiple digits.

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

	Code cleanup.
	* dummy-frame.c (dummy_frame_unwinder): Remove its static qualifier.
	Rename to dummy_frame_unwind.
	(dummy_frame_unwind): Remove.
	* dummy-frame.h (dummy_frame_unwind): Reference directly the struct.
	* frame-unwind.c (frame_unwind_init): Use address of
	dummy_frame_unwind and inline_frame_unwind.
	* frame.c (create_sentinel_frame): Use address of
	sentinel_frame_unwind.
	* inline-frame.c (inline_frame_unwinder): Rename to
	inline_frame_unwind.
	(inline_frame_unwind): Remove.
	* inline-frame.h (inline_frame_unwind): Reference directly the struct.
	* sentinel-frame.c (sentinel_frame_unwinder): Rename to
	sentinel_frame_unwind.
	(sentinel_frame_unwind): Remove.
	* sentinel-frame.h (sentinel_frame_unwind): Reference directly the
	struct.

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

	Code cleanup.
	* frame-unwind.c (frame_unwind_find_by_frame): Remove the return type
	and returned value.  New comment from frame-unwind.h.
	* frame-unwind.h (frame_unwind_find_by_frame): Remove the return type.
	Extend the comment.
	* frame.c (get_frame_id, frame_unwind_register_value)
	(create_new_frame, get_prev_frame_1, frame_unwinder_is)
	(get_frame_type, frame_unwind_arch): Do not use the return value of
	frame_unwind_find_by_frame.

2010-08-11  Phil Muldoon  <pmuldoon@redhat.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>
	    Tom Tromey  <tromey@redhat.com>

	* python/python.c (gdbpy_solib_address):  New function.
	(gdbpy_decode_line): Likewise.

2010-08-10  Tom Tromey  <tromey@redhat.com>

	Revert gdb-add-index addition:
	* Makefile.in (install-only): Don't install gdb-add-index.
	* gdb-add-index.sh: Remove.

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

	* remote-sim.c (gdbsim_xfer_inferior_memory): Replace
	`target_has_execution' check with `to_has_memory' check.
	(gdbsim_has_all_memory, gdbsim_has_memory): New functions.
	(init_gdbsym_ops): Initialize relevant fields of `gdbsim_ops'
	with `gdbsim_has_all_memory' and `gdbsim_has_memory'.

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

	* remote-sim.c (program_loaded, gdbsim_desc, remote_sim_ptid)
	(resume_siggnal, resume_step): Move these static globals...
	(struct sim_inferior_data): ...into this new struct.
	(sim_inferior_data_key, next_pid, sim_argv, gdbsim_is_open):
	New static globals.
	(gdb_callback, callbacks_initialized): Move these globals to
	a point earlier in the file.
	(check_for_duplicate_sim_descriptor, get_sim_inferior_data)
	(get_sim_inferior_data_by_ptid, sim_inferior_data_cleanup)
	(gdbsim_close_inferior, gdbsim_resume_inferior)
	(gdbsim_stop_inferior): New functions.
	(SIM_INSTANCE_NOT_NEEDED, SIM_INSTANCE_NEEDED, INITIAL_PID):
	New constants.
	(gdbsim_fetch_register, gdbsim_store_register, gdbsim_load)
	(gdbsim_create_inferior, gdbsim_open, gdbsim_close, gdbsim_resume)
	(gdbsim_stop, gdbsim_cntrl_c, gdbsim_wait)
	(gdbsim_xfer_inferior_memory, gdbsim_files_info)
	(gdbsim_mourn_inferior, simulator_command, gdbsim_thread_alive,
	(gdbsim_pid_to_str): Invoke `get_sim_inferior_data' to set
	new local variable `sim_data' in each of these functions.  Use
	`sim_data' to reference former globals `program_loaded',
	`gdbsim_desc', `remote_sim_ptid', `resume_siggnal', and
	`resume_step'.
	(gdbsim_open): Remove local variable `argv'.  Put results of call
	to `gdb_buildargv' in `sim_argv' rather than in `argv'.  Don't
	make a cleanup for it.  Free it though when a sim instance cannot
	be obtained.
	(gdbsim_close): Free sim_argv and null it out as appropriate.
	Close sim instances in all inferiors.
	(gdbsim_cntrl_c): Stop all inferiors.
	(gdbsim_wait): 
	(_initialize_remote_sim): Initialize `sim_inferior_data_key'.

2010-08-09  Sami Wagiaalla  <swagiaal@redhat.com>

	* dwarf2read.c (new_symbol): Add symbol to variable list at end of
	function after symbol construction is complete.
	Do the same for template symbol addition to template_symbols list.

2010-08-09  Sami Wagiaalla  <swagiaal@redhat.com>

	* symtab.c (symbol_get_demangled_name): Remove assertion and
	return NULL when language_specific.cplus_specific is not initialized.
	* stabsread.c (define_symbol): Set the name before calling
	cp_scan_for_anonymous_namespaces.

2010-08-09  Sami Wagiaalla  <swagiaal@redhat.com>

	* symtab.h: Renamed SYMBOL_INIT_LANGUAGE_SPECIFIC to
	SYMBOL_SET_LANGUAGE.
	(symbol_init_language_specific): Renamed to symbol_set_language.
	* symtab.c (symbol_init_language_specific): Removed redundant check
	for language_cplus.
	Renamed to symbol_set_language.
	* stabsread.c (define_symbol): Updated.
	(read_enum_type): Updated
	* psymtab.c (add_psymbol_to_bcache): Updated.
	* minsyms.c (install_minimal_symbols): Updated.
	* coffread.c (process_coff_symbol): SYMBOL_SET_LANGUAGE instead of
	SYMBOL_LANGUAGE to set the language.
	* minsyms.c (prim_record_minimal_symbol_full): Ditto.
	* mdebugread.c (new_symbol): Ditto.
	* cp-namespace.c (check_one_possible_namespace_symbol): Ditto.
	* dwarf2read.c (new_symbol_full): Ditto.
	* jv-lang.c (add_class_symbol): Ditto.

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

	* defs.h (make_cleanup_restore_uinteger, make_cleanup_restore_ui_file)
	(make_cleanup_restore_page_info)
	(set_batch_flag_and_make_cleanup_restore_page_info): New declarations.
	* gdbcmd.h (execute_command_to_string): New declaration.
	* python/python.c (struct restore_ui_file_closure, restore_ui_file)
	(make_cleanup_restore_ui_file): Move to utils.c
	(execute_gdb_command) <to_string>: Move ...
	* top.c (execute_command_to_string): ... here.  Call
	set_batch_flag_and_make_cleanup_restore_page_info.
	* utils.c (make_cleanup_restore_integer): New source file blank line.
	(make_cleanup_restore_uinteger): New.
	(struct restore_ui_file_closure, do_restore_ui_file)
	(make_cleanup_restore_ui_file): Move here from python/python.c.
	(init_page_info) <batch_flag>
	(do_restore_page_info_cleanup, make_cleanup_restore_page_info)
	(set_batch_flag_and_make_cleanup_restore_page_info): New.

2010-08-06  Maciej W. Rozycki  <macro@codesourcery.com>

	* thread.c (add_thread_silent): Use null_ptid instead of
	minus_one_ptid while getting rid of stale inferior_ptid.

2010-08-06  Corinna Vinschen  <vinschen@redhat.com>

	* dwarf2-frame.c (struct dwarf2_cie): Add ptr_size member.
	Throughout, call read_encoded_value with ptr_size rather than addr_size.
	(decode_frame_entry_1): Remove redundant setting of
	addr_size.  Call gdbarch_dwarf2_addr_size rather than gdbarch_ptr_bit
	to determine addr_size in Dwarf versions < 4.  Set ptr_size dependent
	on examined frame section.  Add comment to explain why.
	* gdbarch.sh (dwarf2_addr_size): Define as variable.  Add lengthy
	comment to explain usage.
	* gdbarch.c: Regenerate.
	* gdbarch.h: Regenerate.

	* xstormy16-tdep.c (xstormy16_gdbarch_init): Set dwarf2_addr_size to 4.

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

	Code cleanup.
	* varobj.c (varobj_create): Move variables fi, old_fi and block to
	a more inner block.

2010-08-05  Pedro Alves  <pedro@codesourcery.com>

	* configure.tgt (alpha*-*-linux*, am33_2.0*-*-linux*, frv-*-*)
	(hppa*-*-linux*, ia64-*-linux*, m32r*-*-linux*, m68*-*-linux*)
	(microblaze*-linux-*, mips*-*-linux*, sh*-*-linux*)
	(sparc-*-linux*, sparc64-*-linux*, xtensa*-*-linux*): Add
	linux-tdep.o to gdb_target_obs.

2010-08-05  Marc Khouzam  <marc.khouzam@ericsson.com>

	* mi/mi-main.c (mi_cmd_remove_inferior): Properly access first
	argument.

2010-08-05  Hui Zhu  <teawater@gmail.com>

	* mips-linux-tdep.c(regset.h): New include.
	(mips_supply_gregset_wrapper, mips_fill_gregset_wrapper,
	mips_supply_fpregset_wrapper, mips_fill_fpregset_wrapper,
	mips64_supply_gregset_wrapper, mips64_fill_gregset_wrapper,
	mips64_supply_fpregset_wrapper, mips64_fill_fpregset_wrapper,
	mips_linux_regset_from_core_section): New functions.
	(fetch_core_registers, regset_core_fns): Deleted.
	(mips_linux_init_abi): Add mips_linux_regset_from_core_section.
	Deleted regset_core_fns.
	* mips-tdep.c(mips_gdbarch_init): Initialize tdep->gregset,
	tdep->gregset64, tdep->fpregset and tdep->fpregset64.
	* mips-tdep.h(gdbarch_tdep): Add gregset, gregset64, fpregset
	and fpregset64.

2010-08-04  Pedro Alves  <pedro@codesourcery.com>

	* s390-tdep.c: Include linux-tdep.h.
	(s390_gdbarch_init): Call linux_init_abi.

2010-08-04  Pedro Alves  <pedro@codesourcery.com>

	* corelow.c (core_pid_to_str): Default to using normal_pid_to_str
	instead of printing "Thread" here.
	* linux-tdep.c: Include inferior.h.
	(linux_core_pid_to_str): New.
	(linux_init_abi): New.
	* linux-tdep.h (linux_init_abi): Declare.
	* alpha-linux-tdep.c: Include linux-tdep.h.
	(alpha_linux_init_abi): Call linux_init_abi.
	* amd64-linux-tdep.c (amd64_linux_init_abi): Call linux_init_abi.
	* arm-linux-tdep.c (arm_linux_init_abi): Call linux_init_abi.
	* frv-linux-tdep.c: Include linux-tdep.h
	(frv_linux_init_abi): Call linux_init_abi.
	* hppa-linux-tdep.c: Include linux-tdep.h
	(hppa_linux_init_abi): Call linux_init_abi.
	* i386-linux-tdep.c (i386_linux_init_abi): Call linux_init_abi.
	* ia64-linux-tdep.c: Include linux-tdep.h.
	(ia64_linux_init_abi): Call linux_init_abi.
	* m32r-linux-tdep.c: Include linux-tdep.h.
	(m32r_linux_init_abi): Call linux_init_abi.
	* m68klinux-tdep.c: Include linux-tdep.h.
	(m68k_linux_init_abi): Call linux_init_abi.
	* microblaze-linux-tdep.c: Include linux-tdep.h.
	(microblaze_linux_init_abi): Call linux_init_abi.
	* mips-linux-tdep.c: Include linux-tdep.h.
	(mips_linux_init_abi): Call linux_init_abi.
	* mn10300-linux-tdep.c: Include linux-tdep.h.
	(am33_linux_init_osabi): Call linux_init_abi.  Rename the
	'gdbinfo' parameter to 'info'.
	* ppc-linux-tdep.c: Include linux-tdep.h.
	(ppc_linux_init_abi): Call linux_init_abi.
	* sh-linux-tdep.c: Include linux-tdep.h.
	(sh_linux_init_abi): Call linux_init_abi.
	* sparc-linux-tdep.c: Include linux-tdep.h.
	(sparc32_linux_init_abi): Call linux_init_abi.
	* sparc64-linux-tdep.c: Include linux-tdep.h.
	(sparc64_linux_init_abi): Call linux_init_abi.
	* xtensa-linux-tdep.c: Include linux-tdep.h.
	(xtensa_linux_init_abi): Call linux_init_abi.
	* i386-cygwin-tdep.c (i386_windows_core_pid_to_str): New.
	(i386_cygwin_init_abi): Install it as gdbarch_core_pid_to_str
	callback.

2010-08-03  Doug Evans  <dje@google.com>

	* breakpoint.c (bpdisp_text): Constify bpdisps.
	* solib-svr4.c (solib_break_names): Constify.
	(bkpt_names, main_name_list): Constify.
	(match_main): Constify soname arg.
	(bfd_lookup_symbol): Remove unnecessary forward decl.
	Constify symname arg.
	(enable_break): Constify bkpt_namep.
	* symtab.c (search_symbols): Constify types, types2, types3, types4.
	(symtab_symbol_info): Constify classnames.

2010-08-03  Phil Muldoon  <pmuldoon@redhat.com>

	* NEWS: Document Python value inferior function calls.

2010-08-02  Doug Evans  <dje@google.com>

	* dwarf2read.c (dwarf_attr_name): Add DW_AT_GNU_odr_signature.

2010-07-31  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* linux-thread-db.c (libthread_db_debug): New variable.
	(thread_db_find_new_threads_silently): Control verbosity with it.
	(try_thread_db_load_1, try_thread_db_load): Likewise.
	(find_new_threads_once): Likewise.
	(_initialize_thread_db): Set/show it.

2010-07-31  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* common/signals.c (signals): Move the content to signals.def.
	Include it.  Remove the INDENT comments.

2010-07-30  Tom Tromey  <tromey@redhat.com>

	* Makefile.in (install-only): Install gdb-add-index.
	* gdb-add-index.sh: New file.

2010-07-31  Renquan Cheng  <crq@gcc.gnu.org>

	* MAINTAINERS: Add myself for write after approval privileges.

2010-07-30  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* symfile.c (addr_section_name): New function.
	(addrs_section_compar): Use it.
	(addr_info_make_relative): Use it.  Move variable sect_name into a more
	inner block.  Make ".dynbss" and ".sdynbss" checks more strict.

2010-07-30  Tom Tromey  <tromey@redhat.com>

	* configure: Rebuild.
	* configure.ac: Add missing case for Python 2.7.

2010-07-29  DJ Delorie  <dj@redhat.com>

	* rx-tdep.c (rx_analyze_prologue): Don't require branches to have
	conditions.

2010-07-29  Pedro Alves  <pedro@codesourcery.com>

	* PROBLEMS: Remove mention of all problems.

2010-07-28  Pedro Alves  <pedro@codesourcery.com>

	PR build/11848
	* configure.ac: Check for wresize.
	* configure, config.in: Regenerate.
	* tui/tui-win.c (make_visible_with_new_height): Wrap wresize call
	with HAVE_WRESIZE.

2010-07-28  Tom Tromey  <tromey@redhat.com>

	PR python/11060:
	* python/py-type.c (typy_legacy_template_argument): New function,
	extracted from typy_template_argument.
	(typy_template_argument): Use TYPE_TEMPLATE_ARGUMENT.  Return a
	value when needed.

2010-07-28  Oleg Nesterov  <oleg@redhat.com>

	* remote.c (readchar): Call pop_target in case of SERIAL_ERROR.

2010-07-27  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (dwarf2_const_value_data): Never sign extend.

2010-07-28  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (read_subroutine_type): Improve THIS detection,
	handling DW_AT_object_pointer, and workaround GCC PR 43053.

2010-07-28  Tom Tromey  <tromey@redhat.com>

	* Makefile.in (HFILES_NO_SRCDIR): Remove link-warning.h.

2010-07-28  Joel Brobecker  <brobecker@adacore.com>

	* remote.c (remote_download_tracepoint): Add missing gettext markup.
	* tracepoint.c (parse_static_tracepoint_marker_definition): Likewise.

2010-07-28  Joel Brobecker  <brobecker@adacore.com>

	* breakpoint.c (breakpoint_re_set_one): Move call to set_language
	down, just before the block that parse the breakpoint addr_string.

2010-07-28  Tom Tromey  <tromey@redhat.com>

	PR c++/9946:
	* symfile.c (reread_symbols): Clear template_symbols.
	* symtab.h (struct symbol) <is_cplus_template_function>: New
	field.
	(SYMBOL_IS_CPLUS_TEMPLATE_FUNCTION): New macro.
	(struct template_symbol): New.
	* symtab.c (lookup_symbol_aux_local): Use
	cp_lookup_symbol_imports_or_template.
	* objfiles.h (struct objfile) <template_symbols>: New field.
	* objfiles.c (relocate_one_symbol): New function.
	(objfile_relocate1): Use it.  Relocate isolated symbols.
	* gdbtypes.h (struct cplus_struct_type) <n_template_arguments,
	template_arguments>: New fields.
	(TYPE_N_TEMPLATE_ARGUMENTS): New macro.
	(TYPE_TEMPLATE_ARGUMENTS): Likewise.
	(TYPE_TEMPLATE_ARGUMENT): Likewise.
	(lookup_typename): Update.
	* gdbtypes.c (lookup_typename): Constify "block" argument.
	* dwarf2read.c: Include vec.h.
	(symbolp): New typedef.
	(read_func_scope): Read template arguments.  Allocate a
	template_symbol when needed.
	(read_structure_type): Read template arguments.
	(new_symbol_full): New function, from new_symbol.  Handle
	DW_TAG_template_type_param and DW_TAG_template_value_param.
	(new_symbol): Rewrite as wrapper.
	* cp-support.h (cp_lookup_symbol_imports_or_template): Declare.
	* cp-namespace.c: Include language.h.
	(search_symbol_list): New function.
	(cp_lookup_symbol_imports_or_template): Likewise.

2010-07-28  Balazs Kezes  <rlblaster@gmail.com>

	* tui/tui-win.c (make_visible_with_new_height): Resize and move
	the command window to the new size and position.

2010-07-28  Balazs Kezes  <rlblaster@gmail.com>

	* tui/tui-win.c (tui_resize_all): Update the locator's origin's
	coordinates.

2010-07-28  Balazs Kezes  <rlblaster@gmail.com>

	* tui/tui-io.c (tui_handle_resize_during_io): Call tui_resize_all
	after a detecting a resize.
	* tui/tui-win.c (tui_resize_all): Remove tui_set_win_resized_to
	call.

2010-07-28  Pedro Alves  <pedro@codesourcery.com>

	* configure.ac: Check for resize_term.
	* configure, config.in: Regenerate.

2010-07-27  Joel Brobecker  <brobecker@adacore.com>

	* MAINTAINERS (Write After Approval): Reorder a couple of entries.

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

	* dwarf2read.c (read_string): Rename to ...
	(read_direct_string): ... this.
	(skip_one_die, read_attribute_value, dwarf_decode_line_header)
	(dwarf_decode_lines, dwarf_decode_macros): Adjust.

2010-07-27  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* linux-nat.c (linux_nat_lp_status_is_event): New function.
	(count_events_callback, select_event_lwp_callback)
	(cancel_breakpoints_callback, linux_nat_wait_1): Use it.

2010-07-27  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* ia64-linux-nat.c (ia64_linux_status_is_event): New function.
	(_initialize_ia64_linux_nat): Install it.
	* linux-nat.c (sigtrap_is_event, linux_nat_status_is_event)
	(linux_nat_set_status_is_event): New.
	(stop_wait_callback, count_events_callback, select_event_lwp_callback)
	cancel_breakpoints_callback, linux_nat_filter_event)
	(linux_nat_wait_1): Use linux_nat_status_is_event.
	* linux-nat.h (linux_nat_set_status_is_event): New prototype.

2010-07-27  Tom Tromey  <tromey@redhat.com>

	* NEWS: Mention labels, .gdb_index.

2010-07-28  CHENG Renquan  <rqcheng@smu.edu.sg>

	* cli/cli-cmds.c (disassemble_command): Add support of disassemble
	"start,+length" form of arguments.
	* NEWS: Add "Changed commands" (disassemble) section for "Changes
	since GDB 7.1"; and merge two separated paragraphs of disassemble
	description in "Changes in GDB 7.0".

2010-07-27  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* top.c (input_from_terminal_p): Return 0 on BATCH_FLAG.
	* utils.c (defaulted_query): Do not explicitly check for BATCH_FLAG.
	(fputs_maybe_filtered): Do not do filtering also on
	! INPUT_FROM_TERMINAL_P.

2010-07-27  Joel Brobecker  <brobecker@adacore.com>

	* dwarf2read.c (dw2_find_pc_sect_symtab): Remove trailing newline
	in warning message.

2010-07-27  Phil Muldoon  <pmuldoon@redhat.com>

	* python/py-value.c (valpy_call): New Function.

2010-07-27  Ken Werner  <ken.werner@de.ibm.com>

	* dwarf2read.c (dwarf2_read_index): Initialize the types_list and
	types_list_elements variables.

2010-07-26  Tom Tromey  <tromey@redhat.com>

	* dwarf2loc.c (locexpr_describe_location_piece): Also recognize
	TLS with DW_OP_const4u or DW_OP_const8u.

2010-07-26  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* ppc-linux-nat.c (store_vsx_register): Use PTRACE_GETVSXREGS to get
	VSX registers contents.

2010-07-26  Jerome Guitton  <guitton@adacore.com>

	* dwarf2read.c (add_partial_symbol): Do not add a global variable if
	its adress is null. Add comment to explain why.
	(new_symbol): Ditto.

2010-07-25  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* linux-nat.c (linux_nat_do_thread_registers): Convert STOP_SIGNAL to
	the host signal first.

2010-07-23  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (struct dwarf2_per_objfile) <n_type_comp_units,
	type_comp_units>: New fields.
	(dw2_get_cu): New function.
	(create_cus_from_index): Remove unused argument.
	(create_signatured_type_hash_from_index): New function.
	(create_addrmap_from_index): Update.
	(dwarf2_read_index): Handle version 2.
	(dw2_find_last_source_symtab, dw2_forget_cached_source_info)
	(dw2_lookup_symtab, dw2_do_expand_symtabs_matching)
	(dw2_print_stats, dw2_expand_all_symtabs)
	(dw2_expand_symtabs_with_filename, dw2_find_symbol_file)
	(dw2_expand_symtabs_matching, dw2_map_symbol_filenames): Update.
	(dwarf2_initialize_objfile): Call create_debug_types_hash_table.
	(allocate_signatured_type_hash_table): New function.
	(add_signatured_type_cu_to_list): Likewise.
	(create_debug_types_hash_table): Use them.  Set type_comp_units.
	(read_signatured_type): Ensure section data is available.
	(add_address_entry): Don't record empty ranges.
	(struct signatured_type_index_data): New.
	(write_one_signatured_type): New function.
	(write_psymtabs_to_index): Write type CUs.
	(save_gdb_index_command): Update comment.
	(process_type_comp_unit): Move inititalization of
	from_debug_types...
	(create_debug_types_hash_table): ... here.

2010-07-23  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* gdb_gcore.sh (tmpfile): Remove the variable, its initialization,
	cleanup and generating of gdb script to it.
	(gdb): Use redirection from /dev/null.  Use --nx.  Turn off pagination
	and terminal size.  Convert $tmpfile to a series of -ex-es.

2010-07-23  Keith Seitz  <keiths@redhat.com>

	* symtab.c (basic_lookup_transparent_type): Call pre-expand
	hook for STATIC_BLOCK types, too.

2010-07-23  Keith Seitz  <keiths@redhat.com>

	* dwarf2read.c: Remove unused typedef dwarf2_cu_per_cu_data_ptr
	and vector definition.

2010-07-23  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* linux-nat.c (cancel_breakpoint): Remove unused forward declaration.

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

	* dwarf2read.c: Include completer.h.
	(save_gdb_index_command): Use matching usage command name.
	(_initialize_dwarf2_read): New variable c, initialize it by add_cmd.
	Set filename_completer for it.

2010-07-22  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (create_debug_types_hash_table): Set objfile on
	type signature's per-CU data.

2010-07-22  Pedro Alves  <pedro@codesourcery.com>

	* NEWS: Mention target reported shared libraries support by
	default.

2010-07-21  Pedro Alves  <pedro@codesourcery.com>

	PR symtab/11827

	Revert:
	2010-05-21  Pierre Muller  <muller@ics.u-strasbg.fr>
	* dwarf2read.c (process_die): Also allow DW_TAG_const_type
	and DW_TAG_volatile_type.
	(new_symbol): Likewise.

2010-07-21  Sami Wagiaalla  <swagiaal@redhat.com>

	* eval.c (evaluate_subexp_standard): Disabled evaluation of C++
	function symbols before overload resolution.

2010-07-21  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (bptype_string): New, abstracted out from
	print_one_breakpoint_location.
	(print_one_breakpoint_location): Adjust.
	(breakpoint_1): Adjust the type column width dynamically.

2010-07-20  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* symfile.c (find_separate_debug_file_by_debuglink): Remove
	a gdb_assert call, new comment.

2010-07-20  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* linux-nat.c (linux_handle_extended_wait): Handle case when
	event == PTRACE_EVENT_CLONE && stopping && WSTOPSIG (status) != SIGSTOP.

2010-07-20  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup.
	* linux-nat.c (linux_nat_wait_1): Reset STATUS after calling
	linux_nat_wait_1.  Use always LP->STATUS afterwards.

2010-07-20  Hui Zhu  <teawater@gmail.com>

	* inf-ptrace.c (inf_ptrace_create_inferior): Initialize back_to.
	(inf_ptrace_attach): Ditto.

2010-07-19  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Make core files the process_stratum.
	* corefile.c (core_target): New variable.
	(core_file_command): Remove variable t, use core_target.
	* corelow.c (core_ops): Make it static.
	(init_core_ops): Change to process_stratum.  Initialize CORE_TARGET.
	* defs.h (make_cleanup_unpush_target): New prototype.
	* gdbarch.h: Regenerate.
	* gdbarch.sh (core_pid_to_str): Remove core_stratum from its comment.
	* gdbcore.h (core_target): New declaration.
	* inf-ptrace.c (inf_ptrace_create_inferior, inf_ptrace_attach): New
	variables ops_already_pushed and back_to.  Use push_target,
	make_cleanup_unpush_target and discard_cleanups calls.
	* record.c (record_open): Replace core_stratum by a core_bfd check.
	* target.c (target_is_pushed): New function.
	(find_core_target): Remove.
	* target.h (enum strata) <core_stratum>: Remove.
	(target_is_pushed): New declaration.
	(find_core_target): Remove declaration.
	* tracepoint.c (init_tfile_ops) <to_stratum>: Remove comment.
	* utils.c (do_unpush_target, make_cleanup_unpush_target): New functions.

2010-07-19  Hui Zhu  <teawater@gmail.com>

	* breakpoint.c (single_step_breakpoints_inserted): New
	function.
	* breakpoint.h (single_step_breakpoints_inserted): Extern.
	* infrun.c (maybe_software_singlestep): Add check code.
	* record.c (record_resume): Add code for software single step.
	(record_wait): Ditto.

2010-07-18  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* linux-nat.c (linux_handle_extended_wait): Move variable new_lp into
	a more inner block.  Remove its unused declaration initializer.

2010-07-16  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* NEWS: Mention support for the new ptrace interface and hardware
	accelerated watchpoint conditions on powerpc-linux.

2010-07-16  Ozkan Sezer  <sezeroz@gmail.com>

	* target.c (debug_to_insert_breakpoint): Instead of casting to unsigned
	long and %ld, use core_addr_to_string() and %s to print CORE_ADDR vars
	and host_address_to_string() and %s for pointers.
	(debug_to_remove_breakpoint): Likewise.
	(debug_to_region_ok_for_hw_watchpoint): Likewise.
	(debug_to_can_accel_watchpoint_condition): Likewise.
	(debug_to_stopped_data_address): Likewise.
	(debug_to_watchpoint_addr_within_range): Likewise.
	(debug_to_insert_hw_breakpoint): Likewise.
	(debug_to_remove_hw_breakpoint): Likewise.
	(debug_to_insert_watchpoint): Likewise.
	(debug_to_remove_watchpoint): Likewise.

2010-07-16  Sami Wagiaalla  <swagiaal@redhat.com>

	* symtab.h (symbol_set_demangled_name): Now takes an optional objfile*
	argument.
	(cplus_specific): New struct.
	* symtab.c (symbol_set_demangled_name): Updated.
	Use cplus_specific for cplus symbols.
	(symbol_get_demangled_name): Retrive the name from the cplus_specific
	struct for cplus symbols.
	(symbol_init_language_specific): Set cplus_specific for cplus symbols.
	(symbol_set_names): Pass objfile to symbol_set_demangled_name.
	* symtab.c (symbol_init_cplus_specific): New function.

2010-07-16  Sami Wagiaalla  <swagiaal@redhat.com>

	* symtab.h (symbol_set_demangled_name): New function.
	(symbol_get_demangled_name): New function.
	* symtab.c (symbol_set_demangled_name): New function.
	(symbol_get_demangled_name): New function.
	(symbol_init_language_specific): Use demangled_name setter and getter.
	(symbol_set_names): Ditto.
	(symbol_natural_name): Ditto.
	(symbol_demangled_name): Ditto.
	* dwarf2read.c (new_symbol): Ditto.

2010-07-16  Sami Wagiaalla  <swagiaal@redhat.com>

	* symtab.h: Renamed cplus_specific to mangled_lang.
	* symtab.c (symbol_init_language_specific): Updated.
	(symbol_set_names): Updated.
	(symbol_natural_name): Updated.
	(symbol_demangled_name): Updated.
	* ada-lang.c (ada_decode_symbol): Updated.
	* dwarf2read.c (new_symbol): Updated.

2010-07-14  Ken Werner  <ken.werner@de.ibm.com>

	* valops.c (value_assign): Do not call to value_coerce_to_target.
	(value_must_coerce_to_target): Return 0 in case of TYPE_VECTOR.

2010-07-14  Ken Werner  <ken.werner@de.ibm.com>

	* MAINTAINERS: Add myself for write after approval privileges.

2010-07-13  Emmanuel Thomé  <Emmanuel.Thome@gmail.com>

	* c-valprint.c (c_val_print): Add embedded_offset to address in
	call to val_print_array_elements.

2010-07-13  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (dwarf2_read_index): Correctly set 'total_size'.

2010-07-13  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (dwarf2_per_cu_text_offset): Fix reference to
	objfile.

2010-07-13  Tom Tromey  <tromey@redhat.com>

	* symfile.c (set_initial_language): Update.
	(deduce_language_from_filename): Argument type now const.
	* symtab.h (find_main_filename): Update.
	(deduce_language_from_filename): Update.
	* symtab.c (find_main_filename): Make result const.
	* dwarf2read.c (dw2_find_symbol_file): Change return type.
	* psymtab.c (find_symbol_file_from_partial): Change return type.
	* symfile.h (struct quick_symbol_functions) <find_symbol_file>:
	Make result const.

2010-07-13  Tom Tromey  <tromey@redhat.com>

	* breakpoint.c (save_cmdlist): No longer static.
	* gdbcmd.h (save_cmdlist): Declare.
	* symfile.c (symbol_file_add_with_addrs_or_offsets): Set
	OBJF_READNOW on objfile if readnow_symbol_files.
	* elfread.c (elf_symfile_read): Use dwarf2_initialize_objfile.
	(elf_sym_fns_gdb_index): New global.
	* dwarf2read.c: Include exceptions.h.
	(offset_type): New.
	(struct mapped_index): New.
	(dwarf2_per_cu_data_ptr): New typedef.
	(struct dwarf2_per_objfile) <using_index, index_table, gdb_index>:
	New fields.
	(GDB_INDEX_SECTION): New define.
	(struct dwarf2_per_cu_quick_data): New.
	(struct dwarf2_per_cu_data) <objfile>: New field.
	<psymtab>: Removed.
	<v>: New field.
	(byte_swap): New function.
	(MAYBE_SWAP): New macro.
	(INDEX_SUFFIX): New macro.
	(dw2_do_instantiate_symtab): New function.
	(dw2_instantiate_symtab): Likewise.
	(create_cus_from_index): Likewise.
	(create_addrmap_from_index): Likewise.
	(mapped_index_string_hash): Likewise.
	(find_slot_in_mapped_hash): Likewise.
	(dwarf2_read_index): Likewise.
	(dw2_setup): Likewise.
	(dw2_require_line_header): Likewise.
	(dw2_require_full_path): Likewise.
	(dw2_find_last_source_symtab): Likewise.
	(dw2_forget_cached_source_info): Likewise.
	(dw2_lookup_symtab): Likewise.
	(dw2_lookup_symbol): Likewise.
	(dw2_do_expand_symtabs_matching): Likewise.
	(dw2_pre_expand_symtabs_matching): Likewise.
	(dw2_print_stats): Likewise.
	(dw2_dump): Likewise.
	(dw2_relocate): Likewise.
	(dw2_expand_symtabs_for_function): Likewise.
	(dw2_expand_all_symtabs): Likewise.
	(dw2_expand_symtabs_with_filename): Likewise.
	(dw2_find_symbol_file): Likewise.
	(dw2_map_ada_symtabs): Likewise.
	(dw2_expand_symtabs_matching): Likewise.
	(dw2_find_pc_sect_symtab): Likewise.
	(dw2_map_symbol_names): Likewise.
	(dw2_map_symbol_filenames): Likewise.
	(dw2_has_symbols): Likewise.
	(dwarf2_gdb_index_functions): New global.
	(dwarf2_initialize_objfile): New function.
	(process_psymtab_comp_unit): Update.
	(add_partial_subprogram): Likewise.
	(dwarf2_psymtab_to_symtab): Likewise.
	(psymtab_to_symtab_1): Use dw2_do_instantiate_symtab.
	(process_full_comp_unit): Update.
	(find_file_and_directory): New function.
	(read_file_scope): Use find_file_and_directory.
	(dwarf2_per_cu_objfile): Update.
	(dwarf2_per_cu_addr_size): Update.
	(dwarf2_per_cu_offset_size): Update.
	(dwarf2_free_objfile): Free the index, if needed.
	(dwarf2_per_objfile_free): Unmap the index, if needed.
	(struct strtab_entry): New.
	(hash_strtab_entry): New function.
	(eq_strtab_entry): Likewise.
	(create_strtab): Likewise.
	(add_string): Likewise.
	(struct symtab_index_entry): New.
	(struct mapped_symtab): New.
	(hash_symtab_entry): New function.
	(eq_symtab_entry): Likewise.
	(delete_symtab_entry): Likewise.
	(create_index_table): Likewise.
	(create_mapped_symtab): Likewise.
	(cleanup_mapped_symtab): Likewise.
	(find_slot): Likewise.
	(hash_expand): Likewise.
	(add_index_entry): Likewise.
	(add_indices_to_cpool): Likewise.
	(write_hash_table): Likewise.
	(add_address_entry): Likewise.
	(write_psymbols): Likewise.
	(write_obstack): Likewise.
	(unlink_if_set): Likewise.
	(write_psymtabs_to_index): Likewise.
	(save_gdb_index_command): Likewise.
	(_initialize_dwarf2_read): Install "save gdb-index"
	command.
	(create_all_comp_units): Initialize 'objfile' field of CU.
	(dwarf2_locate_sections): Check for .gdb_index.
	* psymtab.h (dwarf2_gdb_index_functions): Declare.
	* symfile.h (dwarf2_initialize_objfile): Declare.

2010-07-13  Tom Tromey  <tromey@redhat.com>

	* symtab.c (lookup_symbol_aux_symtabs): Call pre-expand hook.
	(basic_lookup_transparent_type): Likewise.
	* symfile.h (struct quick_symbol_functions)
	<pre_expand_symtabs_matching>: New field.
	* psymtab.c (pre_expand_symtabs_matching_psymtabs): New function.
	(psym_functions): Update.

2010-07-13  Tom Tromey  <tromey@redhat.com>

	PR breakpoints/8357:
	* symtab.h (domain_enum_tag) <LABEL_DOMAIN>: Update comment.
	* linespec.c (decode_line_1): Update comment.  Call decode_label.
	(decode_label): New function.
	(symbol_found): Handle LOC_LABEL.
	* dwarf2read.c (new_symbol) <DW_TAG_label>: Set symbol's type and
	domain.  Call add_symbol_to_list.

2010-07-13  Tom Tromey  <tromey@redhat.com>

	* dwarf2loc.h (dwarf2_per_cu_text_offset): Declare.
	* dwarf2loc.c (find_location_expression): Use
	dwarf2_per_cu_text_offset.
	(dwarf2_evaluate_loc_desc): Likewise.
	(dwarf2_loc_desc_needs_frame): Likewise.
	(compile_dwarf_to_ax): Likewise.
	(loclist_describe_location): Likewise.
	* dwarf2read.c (dwarf2_per_cu_text_offset): New function.
	(dwarf2_per_cu_objfile): Update comment.

2010-07-12  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2read.c (read_subrange_type): Call read_subrange_type.
	* p-lang.c (pascal_printstr): Likewise.

2010-07-09  Tom Tromey  <tromey@redhat.com>

	* python/py-prettyprint.c (gdbpy_get_display_hint): Don't use
	'hint' if it is NULL.

2010-07-09  Hui Zhu  <teawater@gmail.com>

	* source.c (print_source_lines_base): Add check for noprint.

2010-07-08  Joel Brobecker  <brobecker@adacore.com>

	* python/python-config.py: Resync with Python 2.7 version of this
	script.

2010-07-08  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Fix typo in section name (s/GDB 7.1/GDB 7.2).

2010-07-07  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.

2010-07-07  Joel Brobecker  <brobecker@adacore.com>

	GDB 7.2 branch created (branch timestamp: 2010-07-07 17:00 UTC)
	* version.in: Bump version to 7.2.50.20100707-cvs.

2010-07-07  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (dwarf2_const_value) <DW_form_addr>: Create a
	LOC_COMPUTED symbol.
	* dwarf2loc.c (dwarf2_evaluate_loc_desc): Set new field.
	(dwarf2_loc_desc_needs_frame): Likewise.
	(compile_dwarf_to_ax) <DW_OP_addr>: Use offset.
	* dwarf2expr.h (struct dwarf_expr_context) <offset>: New field.
	* dwarf2expr.c (execute_stack_op) <DW_OP_addr>: Use offset.
	* dwarf2-frame.c (execute_stack_op): Set 'offset' field.  Add
	'offset' argument.
	(struct dwarf2_frame_cache) <text_offset>: New field.
	(dwarf2_frame_cache): Set new field.
	(dwarf2_frame_prev_register): Update.
	(dwarf2_frame_sniffer): Update.
	(dwarf2_frame_base_sniffer): Update.
	(dwarf2_frame_find_fde): Add 'out_offset' argument.

2010-07-07  Sergio Durigan Junior  <sergiodj@linux.vnet.ibm.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>

	Support for hw accelerated condition watchpoints in booke powerpc.

	* breakpoint.c (fetch_watchpoint_value): Rename to fetch_subexp_value
	and move to eval.c.  Change callers.
	(insert_bp_location): Pass watchpoint condition in
	target_insert_watchpoint.
	(remove_breakpoint_1) Pass watchpoint condition in
	target_remove_watchpoint.
	(watchpoint_locations_match): Call
	target_can_accel_watchpoint_condition.
	* eval.c: Include wrapper.h.
	(fetch_subexp_value): Moved from breakpoint.c.
	* ppc-linux-nat.c (ppc_linux_region_ok_for_hw_watchpoint):
	Formatting fix.
	(can_use_watchpoint_cond_accel): New function.
	(calculate_dvc): Likewise.
	(num_memory_accesses): Likewise.
	(check_condition): Likewise.
	(ppc_linux_can_accel_watchpoint_condition): Likewise
	(ppc_linux_insert_watchpoint): Call can_use_watchpoint_cond_accel,
	check_condition and calculate_dvc.
	(ppc_linux_remove_watchpoint): Likewise.
	(_initialize_ppc_linux_nat): Set to_can_accel_watchpoint_condition to
	ppc_linux_can_accel_watchpoint_condition
	* target.c (debug_to_insert_watchpoint): Add argument for watchpoint
	condition.
	(debug_to_remove_watchpoint): Likewise.
	(debug_to_can_accel_watchpoint_condition): New function.
	(update_current_target): Set to_can_accel_watchpoint_condition.
	(setup_target_debug): Set to_can_accel_watchpoint_condition.
	* target.h: Add opaque declaration for struct expression.
	(struct target_ops) <to_insert_watchpoint>,
	<to_remove_watchpoint>: Add new arguments to pass the watchpoint
	<to_can_accel_watchpoint_condition>: New member.
	condition.  Update all callers and implementations.
	(target_can_accel_watchpoint_condition): New macro.
	* value.c (free_value_chain): New function.
	* value.h (fetch_subexp_value): New prototype.
	(free_value_chain): Likewise.

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

	* linux-nat.c (linux_nat_do_thread_registers): Use section size
	from gdbarch_core_regset_sections also for .reg if present.

	* amd64-linux-tdep.c (amd64_linux_regset_sections): Fix incorrect
	section size for .reg.
	* ppc-linux-tdep.c (ppc_linux_vsx_regset_sections): Likewise.
	(ppc_linux_vmx_regset_sections): Likewise.
	(ppc_linux_fp_regset_sections): Likewise.
	(ppc64_linux_vsx_regset_sections): New variable.
	(ppc64_linux_vmx_regset_sections): Likewise.
	(ppc64_linux_fp_regset_sections): Likewise.
	(ppc_linux_init_abi): Install core_regset_section lists appropriate
	for current word size.

2010-07-06  Joel Brobecker  <brobecker@adacore.com>

	* server.c (myresume): Make static.

2010-07-06  Tom Tromey  <tromey@redhat.com>

	* configure, config.in: Rebuild.
	* configure.ac (HAVE_LIBPYTHON2_7): New define.
	* python/python-internal.h: Handle HAVE_LIBPYTHON2_7.

2010-07-06  Andreas Schwab  <schwab@linux-m68k.org>

	* breakpoint.c (_initialize_breakpoint): Add "cl" as alias for
	"clear".

2010-07-06  Ken Werner  <ken.werner@de.ibm.com>

	* gdbtypes.h (floatformats_ieee_half): Add declaration.
	* gdbtypes.c (floatformats_ieee_half): New variable.
	* doublest.c (floatformat_from_length): Set format to
	gdbarch_half_format if length matches.
	* gdbarch.sh (half_bit): New architecture method.
	(half_format): Likewise.
	* gdbarch.h: Regenerate.
	* gdbarch.c: Likewise.

2010-07-05  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Joel Brobecker  <brobecker@adacore.com>

	Fix re-run of PIE executable, PR shlibs/11776.
	* solib-svr4.c (svr4_relocate_main_executable) <symfile_objfile>: Remove
	the part of pre-set SYMFILE_OBJFILE->SECTION_OFFSETS.

2010-07-05  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Joel Brobecker  <brobecker@adacore.com>

	* auxv.c (memory_xfer_auxv): Update attach comment.
	* solib-svr4.c (svr4_special_symbol_handling): Remove the call to
	svr4_relocate_main_executable.
	(svr4_solib_create_inferior_hook): Make the call to
	svr4_relocate_main_executable unconditional.

2010-07-05  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Joel Brobecker  <brobecker@adacore.com>

	* auxv.c (ld_so_xfer_auxv): Do not error on failed read of data_address.

2010-07-05  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Joel Brobecker  <brobecker@adacore.com>

	Fix attaching to PIEs prelinked on the disk after the process was
	started.
	* solib-svr4.c (svr4_exec_displacement): New variable arch_size.
	Verify it against bfd_get_arch_size.  Try to match arbitrary
	displacement for the phdrs comparison.

2010-07-02  Tom Tromey  <tromey@redhat.com>

	PR exp/11780:
	* libunwind-frame.c (libunwind_frame_prev_register): Don't set
	value as optimized-out.

2010-07-02  Ulrich Weigand  <uweigand@de.ibm.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* breakpoint.c (can_use_hardware_watchpoint): Answer "what does this
	represent?" question in comment.  Change comment to a proper sentence.

2010-07-02  Ken Werner  <ken.werner@de.ibm.com>

	* c-valprint.c (c_val_print): Fix printing of character vectors.

2010-07-02  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* spu-tdep.c (spu_catch_start): Adjust the caller of changed
	create_breakpoint prototype.

2010-07-01  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (BREAK_ARGS_HELP, _initialize_breakpoint): Clarify
	usefulness suggestion of multiple breakpoints at same location.

2010-07-01  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (BREAK_ARGS_HELP): Add missing `the'.

2010-07-01  Pedro Alves  <pedro@codesourcery.com>

	* dwarf2loc.c (locexpr_tracepoint_var_ref)
	(loclist_tracepoint_var_ref): Handle optimized out values.

2010-07-01  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (update_watchpoint, _initialize_breakpoint): Remove
	unnecessary space in string.
	* filesystem.c (_initialize_filesystem): Ditto.
	* frame.c (_initialize_frame): Ditto.
	* infcmd.c (step_once): Ditto.
	* infrun.c (_initialize_infrun): Ditto.
	* linux-nat.c (linux_child_follow_fork): Ditto.
	* maint.c (maintenance_deprecate): Ditto.
	* memattr.c (_initialize_mem): Ditto.
	* mips-tdep.c (_initialize_mips_tdep): Ditto.
	* monitor.c (monitor_open): Ditto.
	* procfs.c (procfs_xfer_memory): Ditto.
	* reverse.c (bookmarks_info): Ditto.
	* sh64-tdep.c (sh64_show_media_regs, sh64_show_compact_regs): Ditto.
	* stack.c (_initialize_stack): Ditto.
	* tracepoint.c (_initialize_tracepoint): Ditto.
	* xtensa-tdep.c (xtensa_supply_gregset,
	xtensa_regset_from_core_section): Ditto.

2010-07-01  Tom Tromey  <tromey@redhat.com>

	* value.h (struct lval_funcs) <check_any_valid>: Rename from
	check_all_valid.
	* value.c (value_entirely_optimized_out): Invert result.  Update
	for new function name.

2010-07-01  Pedro Alves  <pedro@codesourcery.com>

	Static tracepoints support.

	* NEWS: Mention new support for static tracepoints.
	(New packets): Mention qTfSTM, qTsSTM, qTSTMat and
	qXfer:statictrace:read.
	(New features in the GDB remote stub, GDBserver): Mention static
	tracepoints support using an UST based backend.
	(New commands): Mention "info static-tracepoint-markers" and
	"strace".
	* breakpoint.c (is_marker_spec): New.
	(is_tracepoint): Handle static tracepoints.
	(validate_commands_for_breakpoint): Static tracepoints can't do
	while-stepping.
	(static_tracepoints_here): New.
	(bpstat_what): Handle static tracepoints.
	(print_one_breakpoint_location, allocate_bp_location, mention):
	Ditto.
	(create_breakpoint_sal): Ditto.
	(decode_static_tracepoint_spec): New.
	(create_breakpoint): Replace `hardwareflag', and `traceflag' with
	`type_wanted'.  Adjust.  Handle static tracepoint marker
	locations.
	(break_command_1): Adjust.
	(update_static_tracepoint): New.
	(update_breakpoint_locations): Handle static tracepoints.
	(breakpoint_re_set_one): Handle static tracepoint marker
	locations.
	(disable_command, enable_command): Handle static tracepoints.
	(trace_command, ftrace_command): Adjust.
	(strace_command): New.
	(create_tracepoint_from_upload): Adjust.
	(save_breakpoints): Handle static tracepoints.
	(_initialize_breakpoint): Install the "strace" command.
	* breakpoint.h (enum bptype): New bp_static_tracepoint type.
	(struct breakpoint): New fields static_trace_marker_id and
	static_trace_marker_id_idx.
	(breakpoints_here_p): Declare.
	(create_breakpoint): Adjust.
	(static_tracepoints_here): Declare.
	* remote.c (struct remote_state) <static_tracepoints>: New field.
	(PACKET_qXfer_statictrace_read, PACKET_StaticTracepoints): New.
	(remote_static_tracepoint_marker_at): New.
	(remote_static_tracepoint_markers_by_strid): New.
	(remote_static_tracepoint_feature): New.
	(remote_disconnected_tracing_feature): Handle "StaticTracepoints".
	(remote_xfer_partial): Handle TARGET_OBJECT_STATIC_TRACE_DATA.
	(remote_supports_static_tracepoints): New.
	(remote_download_tracepoint): Download static tracepoints.
	(init_remote_ops): Install remote_static_tracepoint_marker_at and
	remote_static_tracepoint_markers_by_strid.
	(_initialize_remote): Install set|show remote static-tracepoints,
	and set|show remote read-sdata-object commands.
	* target.c (update_current_target): Inherit and default
	to_static_tracepoint_marker_at, and
	to_static_tracepoint_markers_by_strid.
	* target.h (static_tracepoint_marker): Forward declare.
	(enum target_object): New object TARGET_OBJECT_STATIC_TRACE_DATA.
	(static_tracepoint_marker_p): New typedef.
	(DEF_VEC_P(static_tracepoint_marker_p)): New VEC type.
	(struct target_ops): New fields to_static_tracepoint_marker_at and
	to_static_tracepoint_markers_by_strid.
	(target_static_tracepoint_marker_at)
	(target_static_tracepoint_markers_by_strid): New.
	* tracepoint.c: Include source.h.
	(validate_actionline): Handle $_sdata.
	(struct collection_list): New field strace_data.
	(add_static_trace_data): New.
	(clear_collection_list): Clear strace_data.
	(stringify_collection_list): Account for a possible static trace
	data collection.
	(encode_actions_1): Encode an $_sdata collection.
	(parse_tracepoint_definition): Handle static tracepoints.
	(parse_static_tracepoint_marker_definition): New.
	(release_static_tracepoint_marker): New.
	(print_one_static_tracepoint_marker): New.
	(info_static_tracepoint_markers_command): New.
	(sdata_make_value): New.
	(_initialize_tracepoint): Create the $_sdata convenience variable.
	Add the "info static-tracepoint-markers" command.
	Mention $_sdata in the "collect" command's help output.
	* tracepoint.h (struct static_tracepoint_marker): New.
	(parse_static_tracepoint_marker_definition)
	(release_static_tracepoint_marker): Declare.
	* mi/mi-cmd-break.c (mi_cmd_break_insert): Adjust.
	* python/py-breakpoint.c (bppy_new): Adjust.

2010-06-30  Joel Brobecker  <brobecker@adacore.com>

	* python/python-internal.h (_XOPEN_SOURCE): Undefine before
	including Python.h.

2010-06-29  Doug Evans  <dje@google.com>

	PR gdb/11702
	* dwarf2read.c (dwarf2_add_field): Only create a symbol if
	DW_AT_external is present.

	PR gdb/11702
	* NEWS: Add entry.
	* dwarf2read.c (dwarf2_add_field): If DW_AT_const_value is present,
	create a symbol for the field and record the value.
	(new_symbol): Handle DW_TAG_member.
	* gdbtypes.c (field_is_static): Remove FIXME.
	* symtab.c (search_symbols): When searching for VARIABLES_DOMAIN,
	only ignore LOC_CONST symbols that are enums.

	* dwarf2read.c: Remove trailing whitespace.

	Delete FIELD_LOC_KIND_DWARF_BLOCK, unused.
	* gdbtypes.h (enum field_loc_kind): Delete FIELD_LOC_KIND_DWARF_BLOCK.
	(struct main_type, field loc): Delete dwarf_block.
	(FIELD_DWARF_BLOCK): Delete.
	(SET_FIELD_DWARF_BLOCK): Delete.
	(TYPE_FIELD_DWARF_BLOCK): Delete.
	* gdb-gdb.py (StructMainTypePrettyPrinter.struct_field_location_img):
	Update.

2010-06-29  Hui Zhu  <teawater@gmail.com>

	* record.c (set_record_pic_cmdlist,
	show_record_pic_cmdlist): New variables.
	(set_record_pic_command,
	show_record_pic_command): New functions.
	(record_pic_function, record_pic_line, record_pic_enum,
	set_record_pic_type, record_pic_hide_nofunction,
	record_pic_hide_nosource, record_pic_hide_same): New variables.
	(record_pic_fputs): New function.
	(function_list, node_list, edge_list): New struct.
	(function_list, node_list, edge_list): New variables.
	(record_pic_cleanups, record_pic_node,
	record_pic_edge, cmd_record_pic): New functions.
	(_initialize_record): Add new commands for record pic.

2010-06-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2read.c (read_structure_type) <fi.typedef_field_list>: Call
	ALLOCATE_CPLUS_STRUCT_TYPE.

2010-06-28  Phil Muldoon  <pmuldoon@redhat.com>
	    Tom Tromey  <tromey@redhat.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* value.c (pack_unsigned_long): New function.
	(value_from_ulongest): New function.
	* value.h (value_from_ulongest): Declare.
	* python/python.c (_initialize_python): Call
	gdbpy_initialize_thread and gdbpy_initialize_inferior.
	* python/python-internal.h: Define thread_object.
	(gdbpy_inferiors, gdbpy_selected_thread)
	(frame_info_to_frame_object, create_thread_object)
	(find_thread_object, find_inferior_object)
	(gdbpy_initialize_thread, gdbpy_initialize_inferiors)
	(gdbpy_is_value_object, get_addr_from_python): Declare.
	* python/py-value.c (builtin_type_upylong): Define.
	(convert_value_from_python): Add logic for ulongest.
	(gdbpy_is_value_object): New function.
	* python/py-utils.c (get_addr_from_python): New function.
	* python/py-frame.c (frame_info_to_frame_object): Return a PyObject.
	(gdbpy_selected_frame): Use PyObject over frame_info.
	* Makefile.in (SUBDIR_PYTHON_OBS): Add py-inferior and
	py-infthread.
	(SUBDIR_PYTHON_SRCS): Likewise.
	(py-inferior.o): New Rule.
	(py-infthread.o): New Rule.
	* python/py-inferior.c: New File.
	* python/py-infthread.c: New File.

2010-06-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* c-typeprint.c (c_type_print_base): For no fields check include also
	TYPE_TYPEDEF_FIELD_COUNT.  Print new typedefs section.
	* dwarf2read.c (struct typedef_field_list)
	(struct field_info) <typedef_field_list, typedef_field_list_count>: New.
	(dwarf2_add_typedef): New.
	(read_structure_type): Call dwarf2_add_typedef for DW_TAG_typedef.
	Copy also FI.TYPEDEF_FIELD_LIST.
	* gdbtypes.h (struct typedef_field)
	(struct cplus_struct_type) <typedef_field, typedef_field_count>
	(TYPE_TYPEDEF_FIELD_ARRAY, TYPE_TYPEDEF_FIELD, TYPE_TYPEDEF_FIELD_NAME)
	(TYPE_TYPEDEF_FIELD_TYPE, TYPE_TYPEDEF_FIELD_COUNT): New.

2010-06-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* cp-namespace.c (cp_lookup_nested_type): New variable
	concatenated_name.  Turn the current return condition into a reverse
	one.  Call also lookup_static_symbol_aux on the constructed qualified
	name.
	* symtab.c (lookup_symbol_aux): Move variable objfile and searching in
	other files into a called ...
	(lookup_static_symbol_aux): ... new function here.
	* symtab.h (lookup_static_symbol_aux): New prototype.
	* valops.c (value_maybe_namespace_elt): Call also
	lookup_static_symbol_aux if we failed otherwise.

2010-06-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix PR c++/11703 and PR gdb/1448.
	* c-exp.y (yylex) <last_was_coloncolon && first_was_coloncolon>: Add
	FIRST_ITER check.

2010-06-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix modification of cplus_struct_default.
	* dwarf2read.c (dwarf2_add_member_fn) <no DW_AT_vtable_elem_location>:
	Call ALLOCATE_CPLUS_STRUCT_TYPE.
	* gdbtypes.c (cplus_struct_default): New empty initializer, comment it.

2010-06-28  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Add entry announcing the python directory.

2010-06-28  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (read_structure_type): Allocate null cleanup later.

2010-06-28  Doug Evans  <dje@google.com>

	* breakpoint.c (breakpoint_sals_to_pc): Delete arg address, unused.
	All callers updated.

2010-06-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* cp-valprint.c (cp_print_value_fields) <recurse == 0>: Call
	obstack_begin after each obstack_free.

2010-06-27  Doug Evans  <dje@google.com>

	* value.c (value_static_field): Use `switch' instead of `if'.
	Assert-fail if passed invalid TYPE_FIELD_LOC_KIND.

	* valops.c (search_struct_field): Fix typo in error message.

2010-06-26  Ulrich Weigand  <uweigand@de.ibm.com>

	* dwarf2expr.c (execute_stack_op): Place preprocessor
	directives at the start of the source line.

2010-06-25  Paul Hilfinger  <hilfinger@adacore.com>

	* defs.h (make_command_stats_cleanup): Declare.
	(set_display_time): Declare.
	(set_display_space): Declare.
	* event-top.c (command_handler): Use make_command_stats_cleanup.
	* main.c (display_time, display_space): Move definitions to utils.c.
	(captured_main): Use make_command_stats_cleanup to get start-up
	statistics.
	Use set_display_time and set_display_space for processing OPT_STATISTICS
	case.
	* maint.c (maintenance_time_display): Use set_display_time.
	(maintenance_space_display): Use set_display_space.
	* top.c (execute_command): Remove obsolete 'maint time' code.
	(command_loop): Use make_command_stats_cleanup.
	* utils.c (struct cmd_stats): Structure for storing initial time
	and space usage.
	(display_time, display_space): Move definitions here from utils.c.
	(set_display_time): New function.
	(set_display_space): New function.
	(make_command_stats_cleanup): New function.
	(report_command_stats): New auxiliary function for
	make_command_stats_cleanup.

2010-06-25  Ulrich Weigand  <uweigand@de.ibm.com>

	* solib-spu.c (append_ocl_sos): Fix xsnprintf statement for
	hosts where CORE_ADDR is long long.

2010-06-25  Tom Tromey  <tromey@redhat.com>

	PR python/10808:
	* python/python.c (execute_gdb_command): Add keywords.  Accept
	"to_string" argument.
	(struct restore_ui_file_closure): New.
	(restore_ui_file): New function.
	(make_cleanup_restore_ui_file): Likewise.
	(GdbMethods) <execute>: Update.

2010-06-25  Ulrich Weigand  <uweigand@de.ibm.com>

	* s390-tdep.c (s390_push_dummy_call): Error on stack overflow
	during inferior call stack frame setup.

2010-06-25  Ken Werner  <ken.werner@de.ibm.com>

	* solib-spu.c: Include "exception.h".
	(ocl_program_data_key): New variable.
	(append_ocl_sos): New function.
	(ocl_enable_break): Likewise.
	(spu_current_sos): Call append_ocl_sos.
	(spu_solib_loaded): Call ocl_enable_break.
	(_initialize_spu_solib): Register ocl_program_data_key.

2010-06-25  Ulrich Weigand  <uweigand@de.ibm.com>

	* cp-support.c (reset_directive_searched): New function.
	(make_symbol_overload_list_using): Prevent recursive calls.

2010-06-25  Phil Muldoon  <pmuldoon@redhat.com>

	* printcmd.c (print_variable_and_value): Print error message on
	caught exception.

2010-06-25  Ulrich Weigand  <uweigand@de.ibm.com>

	* dwarf2expr.h (struct dwarf_value_location): Use ULONGEST as type
	of stack values.
	(struct dwarf_expr_piece): Rename "expr" member to "mem".  Add new
	"value" member.
	(dwarf_expr_push): Change input type to ULONGEST.
	(dwarf_expr_fetch): Change return type to ULONGEST.
	(dwarf_expr_fetch_address): Add prototype.
	(dwarf2_read_address): Remove prototype.
	* dwarf2expr.c (dwarf_expr_push): Use ULONGEST as type of stack values.
	Truncate stack values to ctx->addr_size bytes.
	(dwarf_expr_fetch): Change return value to ULONGEST.
	(dwarf_expr_fetch_address): New function.
	(add_piece): Use dwarf_expr_fetch_address instead of dwarf_expr_fetch
	when appropriate.  Update for struct dwarf_expr_piece changes.
	(dwarf2_read_address): Remove.
	(unsigned_address_type): Remove.
	(signed_address_type): Remove.
	(execute_stack_op): Use dwarf_expr_fetch_address instead of
	dwarf_expr_fetch when appropriate.  Use ULONGEST as type of stack
	values.  Perform operations on ULONGEST instead of on GDB values,
	sign-extending from ctx->addr_size bytes as needed.  Read DW_OP_addr
	values and DW_OP_deref results as unsigned integers.
	* dwarf2loc.c (read_pieced_value): Update for struct dwarf_expr_piece
	changes.
	(write_pieced_value): Likewise.
	(dwarf2_evaluate_loc_desc): Use dwarf_expr_fetch_address instead of
	dwarf_expr_fetch when appropriate.
	(compile_dwarf_to_ax): Read DW_OP_addr values as unsigned integers.
	* dwarf2-frame.c (execute_stack_op): Use dwarf_expr_fetch_address
	instead of dwarf_expr_fetch when appropriate.

2010-06-25  Pierre Muller  <muller@ics.u-strasbg.fr>

	* c-typeprint.c (c_print_typedef): Append new type name for typedefs.

2010-06-24  Joel Brobecker  <brobecker@adacore.com>

	* python/python.c (_initialize_python): Add new "constant"
	PYTHONDIR in gdb module.  Insert this path at the head of
	sys.path. Set gdb.__path__ to gdb.PYTHONDIR + '/gdb' and
	exec its __init__.py script if it exists in that directory.

2010-06-24  Kevin Buettner  <kevinb@redhat.com>

	* rx-tdep.c (RX_ACC_REGNUM): Define.
	(RX_NUM_REGS): Redefine to 26.
	(rx_register_name): Add register "acc".  Change order of several
	registers.  Change name of "vct" register to "fintv" to match RX
	documentation.
	(rx_register_type): Add case for RX_ACC_REGNUM.

2010-06-24  Tom Tromey  <tromey@redhat.com>

	* psymtab.c (lookup_partial_symbol): Mark definition as static.

2010-06-24  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Tom Tromey  <tromey@redhat.com>

	Fix GDB startup on readonly filesystem.
	* charset.c (find_charset_names): Use PEX_USE_PIPES for pex_init.

2010-06-24  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Pedro Alves  <pedro@codesourcery.com>

	Fix PR 9436.
	* breakpoint.c (handle_jit_event): New function.
	(bpstat_what): Remove enum class, kc, ss, sn, sgl, slr, clr, sr, shl,
	jit, err, table and bs_class.  New variables shlib_event, jit_event,
	this_action and bptype.  Change bs_class assignments to this_action
	assignments.  new unhandled bptype internal error.  Move here
	shlib_event and jit_event handling from handle_inferior_event.
	* breakpoint.h (enum bpstat_what_main_action): Extend the comment.
	Reorder items.  Remove BPSTAT_WHAT_CHECK_SHLIBS and
	BPSTAT_WHAT_CHECK_JIT.
	* inferior.h (debug_infrun, stop_on_solib_events): New declarations.
	* infrun.c (debug_infrun, stop_on_solib_events): Remove static.
	(handle_inferior_event): Reinitialize frame and gdbarch after
	bpstat_what call.  Move BPSTAT_WHAT_CHECK_SHLIBS and
	BPSTAT_WHAT_CHECK_JIT handling to bpstat_what.  Reinitialize even
	gdbarch when frame gets reinitialized.

2010-06-24  Hui Zhu  <teawater@gmail.com>

       * printcmd.c (ui_printf): New function.
       (printf_command): Call ui_printf.
       (_initialize_printcmd): New command "eval".

2010-06-23  Ulrich Weigand  <uweigand@de.ibm.com>

	* infrun.c (handle_inferior_event): Handle presence of single-step
	breakpoints for TARGET_WAITKIND_FORKED and TARGET_WAITKIND_VFORKED.
	Cancel single-step breakpoints for TARGET_WAITKIND_EXITED,
	TARGET_WAITKIND_SIGNALED, and TARGET_WAITKIND_EXECD.
	* breakpoint.c (detach_single_step_breakpoints): New function.
	(detach_breakpoints): Call it.
	(cancel_single_step_breakpoints): New function.
	* breakpoint.h (cancel_single_step_breakpoints): Add prototype.

	* spu-tdep.c (spu_memory_remove_breakpoint): New function.
	(spu_gdbarch_init): Install it.

2010-06-23  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* configure.ac: Always set RDYNAMIC at least as `-rdynamic'.
	* configure: Regenerate.

2010-06-22  Hui Zhu  <teawater@gmail.com>

	* i386-tdep.c (i386_record_lea_modrm): Change warning to query.
	(i386_process_record): Ditto.
	* record.c (record_memory_query): New variable.
	(_initialize_record): New command "set record memory-query".
	* record.h (record_memory_query): New extern.

2010-06-21  Doug Evans  <dje@google.com>

	* i386-tdep.h (i386_displaced_step_copy_insn): Declare.
	* i386-tdep.c (i386_displaced_step_copy_insn): New function.
	(i386_syscall_p): Change type of lengthp to int.
	(i386_displaced_step_fixup): Handle kernels that run one past a
	syscall insn.
	* i386-linux-tdep.c (i386_linux_init_abi): Use
	i386_displaced_step_copy_insn instead of
	simple_displaced_step_copy_insn.

2010-06-21  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (read_base_type): Handle DW_ATE_UTF.
	(dwarf_type_encoding_name): Likewise.

2010-06-21  Tom Tromey  <tromey@redhat.com>

	* p-valprint.c (pascal_val_print): Use TYPE_ERROR_NAME.
	* p-typeprint.c (pascal_type_print_base): Use TYPE_ERROR_NAME.
	* m2-valprint.c (m2_val_print): Use TYPE_ERROR_NAME.
	* gdbtypes.h (TYPE_ERROR_NAME): New macro.
	* f-valprint.c (f_val_print): Use TYPE_ERROR_NAME.
	* f-typeprint.c (f_type_print_base): Use TYPE_ERROR_NAME.
	* dwarf2read.c (tag_type_to_type): Create a new error type on
	failure.
	* c-valprint.c (c_val_print): Use TYPE_ERROR_NAME.
	* c-typeprint.c (c_type_print_base): Use TYPE_ERROR_NAME.

2010-06-21  Michael Snyder  <msnyder@vmware.com>

	* breakpoint.c (_initialize_breakpoint): Use add_prefix_cmd,
	not add_abbrev_prefix_cmd, for "enable breakpoints".

2010-06-21  Ulrich Weigand  <uweigand@de.ibm.com>

	* dwarf2loc.c (find_location_expression): Add relocation offset
	to base-address-selection entry base addresses.  Read addresses
	(and offsets) as signed/unsigned integers, depending on the
	BFD's sign_extend_vma flag.  Do not call dwarf2_read_address.
	(loclist_describe_location): Likewise.
	(disassemble_dwarf_expression): Read DW_OP_addr operand as
	unsigned integer.  Do not call dwarf2_read_address.
	(locexpr_describe_location): Likewise for DW_OP_GNU_push_tls_address.

2010-06-19  Ulrich Weigand  <uweigand@de.ibm.com>

	* spu-tdep.c (spu_frame_unwind_cache): Use LSLR register
	value instead of hard-coded SPU_LS_SIZE.
	(spu_software_single_step): Likewise.
	* spu-tdep.h (SPU_LS_SIZE): Remove.

2010-06-19  Ulrich Weigand  <uweigand@de.ibm.com>

	* spu-multiarch.c (spu_xfer_partial): Wrap around local store
	limit on local store memory accesses.
	* spu-linux-nat.c (spu_xfer_partial): Likewise.
	* spu-tdep.c (spu_lslr): Remove.
	(spu_pointer_to_address): Do not truncate addresses.
	(spu_integer_to_address): Likewise.
	(spu_overlay_new_objfile): Use SPU_OVERLAY_LMA.
	* spu-tdep.h: Add comments.
	(SPUADDR_SPU): Respect SPU_OVERLAY_LMA bit.
	(SPU_OVERLAY_LMA): Define.

2010-06-18  Stan Shebs  <stan@codesourcery.com>

	* osdata.c (get_osdata): Warn separately if target does not report
	type list.
	(info_osdata_command): Allow empty type, report error if target
	does not return available types of OS data.
	* linux-nat.c (linux_nat_xfer_osdata): Report list of OS data
	types if no annex supplied.

	* thread.c (thread_id_make_value): Make a value representing the
	current thread.
	(_initialize_thread): Create $_thread.

2010-06-17  Joel Brobecker  <brobecker@adacore.com>

	* dwarf2read.c (psymtabs_addrmap_cleanup): Add empty line after
	last local variable declaration.  No real code change.

2010-06-17  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (psymtabs_addrmap_cleanup): New function.
	(dwarf2_build_psymtabs_hard): Use it.  Create addrmap on a
	temporary obstack.

2010-06-16  Sergio Durigan Junior  <sergiodj@redhat.com>
	    Jan Kratochvil  <jan.kratochvil@redhat.com>

	* breakpoint.c: Include parser-defs.h.
	(watchpoint_exp_is_const): New function.
	(watch_command_1): Call watchpoint_exp_is_const to check
	if the expression is constant.

2010-06-15  Andreas Schwab  <schwab@linux-m68k.org>

	* configure.ac: Check for RDYNAMIC also for cross builds.
	* configure: Regenerate.

2010-06-15  Pedro Alves  <pedro@codesourcery.com>

	* Makefile.in (ALL_TARGET_OBS): Remove solib-target.o.
	(SFILES): Remove solib-null.c, add solib-target.c.
	(COMMON_OBS): Remove solib-null.o, add solib-target.o.
	(ALLDEPFILES): Remove solib-target.c.
	* solib-target.c (_initialize_solib_target): Set
	current_target_so_ops to solib_target_so_ops if not already set.
	* solib-null.c: Delete.

2010-06-14  Pedro Alves  <pedro@codesourcery.com>

	* NEWS: Mention GDBserver's JIT compilation of tracepoint
	bytecode.

2010-06-14  Ulrich Weigand  <uweigand@de.ibm.com>

	* cp-valprint.c (cp_print_static_field): Members of
	dont_print_stat_array_obstack are of type "struct type *".
	(_initialize_cp_valprint): Likewise.

2010-06-14  Ulrich Weigand  <uweigand@de.ibm.com>

	* frame.c (frame_register_unwind): Do not access contents
	of "optimized out" unwound register value.

2010-06-14  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* ada-lang.h (ada_print_type): Make varstring const.
	* ada-typeprint.c (print_func_type): Make name const.
	(ada_print_type): Make varstring const.
	* c-lang.h (c_print_type): Make varstring const.
	* c-typeprint.c (c_print_type): Likewise.
	* f-lang.h (f_print_type): Likewise.
	* f-typeprint.c (f_print_type): Likewise.
	* jv-lang.h (java_print_type): Likewise.
	* jv-typeprint.c (java_print_type): Likewise.
	* language.c (unk_lang_print_type): Likewise.
	* language.h (struct language_defn) <la_print_type>: Likewise.
	* m2-lang.h (m2_print_type): Likewise.
	* m2-typeprint.c (m2_print_type): Likewise.
	* p-lang.h (pascal_print_type): Likewise.
	* p-typeprint.c (pascal_print_type): Likewise.

2010-06-11  Stan Shebs  <stan@codesourcery.com>

	Add per-operation permission flags.

	* target.h (struct target_ops): New method to_set_permissions.
	(target_set_permissions): New macro.
	(target_insert_breakpoint): Change macro to function.
	(target_remove_breakpoint): Ditto.
	(target_stop): Ditto.
	(may_write_registers): Declare.
	(may_write_memory): Declare.
	(may_insert_breakpoints): Declare.
	(may_insert_tracepoints): Declare.
	(may_insert_fast_tracepoints): Declare.
	(may_stop): Declare.
	* target.c (may_write_registers, may_write_registers_1): New globals.
	(may_write_memory, may_write_memory_1): New globals.
	(may_insert_breakpoints, may_insert_breakpoints_1): New globals.
	(may_insert_tracepoints, may_insert_tracepoints_1): New globals.
	(may_insert_fast_tracepoints, may_insert_fast_tracepoints_1): New
	globals.
	(may_stop, may_stop_1): New global.
	(target_xfer_partial): Test for write permission.
	(target_store_registers): Ditto.
	(target_insert_breakpoint): New function.
	(target_remove_breakpoint): New function.
	(target_stop): New function.
	(_initialize_targets): Add new set/show variables.
	(set_write_memory_permission): New function.
	(update_target_permissions): New function.
	(set_target_permissions): New function.
	(update_current_target): Default to_set_permissions.
	(_initialize_targets): Use new globals and setter function.
	* tracepoint.c (start_tracing): Test for permission.
	* inferior.h (update_observer_mode): Declare.
	* infrun.c (non_stop_1): Define earlier.
	(observer_mode, observer_mode_1): New globals.
	(set_observer_mode, show_observer_mode): New functions.
	(update_observer_mode): New function.
	(_initialize_infrun): Define "set observer" command.
	* remote.c (PACKET_QAllow): New optional packet.
	(remote_protocol_features): Add QAllow.
	(remote_set_permissions): New function.
	(remote_start_remote): Call it.
	(init_remote_ops): Add it to target vector.
	(_initialize_remote): Add config command for QAllow.

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

	* dwarf2read.c (dwarf2_add_member_fn): Handle correct form of
	DW_AT_vtable_elem_location even when GCC extension is seen.

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

	PR gdb/9977, PR exp/11636:
	* value.h (value_offset): Update.
	(struct lval_funcs) <check_validity>: New field.
	<copy_closure>: Make argument const.
	(value_computed_closure): Update.
	(value_contents_for_printing): Declare.
	(value_bits_valid): Likewise.
	(val_print): Likewise.
	(set_value_component_location): Update.
	(value_entirely_optimized_out): Declare.
	* value.c (value_offset): Argument now const.
	(require_not_optimized_out): New function.
	(value_contents_for_printing): New function.
	(value_contents_all): Call require_not_optimized_out.
	(value_contents): Likewise.
	(value_bits_valid): New function.
	(value_computed_closure): Argument now const.
	(set_value_component_location): Make 'whole' argument const.
	(value_entirely_optimized_out): New function.
	(value_bitsize): Argument now 'const'.
	(value_bitpos): Likewise.
	(value_type): Likewise.
	* valprint.h (val_print_array_elements): Update.
	* valprint.c (val_print): Add 'val' argument.  Use
	valprint_check_validity.
	(valprint_check_validity): New function.
	(value_check_printable): Use value_entirely_optimized_out.
	(common_val_print): Update.
	(value_print): Likewise.
	(val_print_array_elements): Add 'val' argument.
	* valops.c (value_fetch_lazy): Use value_contents_for_printing,
	value_bits_valid.  Reinit frame cache for lval_computed.
	* sh64-tdep.c (sh64_do_register): Update.
	* scm-valprint.c (scm_val_print): Add 'val' argument.
	* scm-lang.h (scm_val_print): Update.
	* python/python.h (apply_val_pretty_printer): Update.
	* python/py-prettyprint.c (apply_val_pretty_printer): Add 'val'
	argument.  Call set_value_component_location.
	* printcmd.c (print_scalar_formatted): Update.
	* p-valprint.c (pascal_val_print): Add 'val' argument.
	(pascal_object_print_value_fields): Likewise.
	(pascal_object_print_value): Likewise.
	(pascal_object_print_static_field): Update.
	* p-lang.h (pascal_val_print): Update.
	(pascal_object_print_value_fields): Update.
	* mt-tdep.c (mt_registers_info): Update.
	* mi/mi-main.c (get_register): Update.
	(mi_cmd_data_evaluate_expression): Use common_val_print.
	* m2-valprint.c (m2_print_array_contents): Add 'val' argument.
	(m2_print_unbounded_array): Likewise.
	(m2_val_print): Likewise.
	* m2-lang.h (m2_val_print): Update.
	* language.h (struct language_defn) <la_val_print>: Add 'val'
	argument.
	(LA_VAL_PRINT): Likewise.
	* language.c (unk_lang_val_print): Add 'val' argument.
	* jv-valprint.c (java_print_value_fields): Add 'val' argument.
	(java_val_print): Likewise.
	* jv-lang.h (java_val_print): Add 'val' argument.
	* infcmd.c (default_print_registers_info): Update.
	* f-valprint.c (f77_print_array_1): Add 'val' argument.
	(f77_print_array): Likewise.
	(f_val_print): Likewise.
	* f-lang.h (f_val_print): Add 'val' argument.
	* dwarf2loc.c (read_pieced_value): Use value_bitsize and
	value_bitpos.
	<DWARF_VALUE_OPTIMIZED_OUT>: Don't print warning.  Call
	set_value_optimized_out.
	(write_pieced_value): Use value_bitsize and value_bitpos.
	<default>: Don't exit loop.
	(check_pieced_value_validity): New function.
	(pieced_value_funcs): Reference check_pieced_value_validity,
	check_pieced_value_invalid.
	(copy_pieced_value_closure): Update.
	(check_pieced_value_bits): New function.
	(check_pieced_value_invalid): New function.
	* d-valprint.c (dynamic_array_type): Add 'val' argument.
	(d_val_print): Likewise.
	* d-lang.h (d_val_print): Update.
	* cp-valprint.c (cp_print_value_fields): Add 'val' argument.
	(cp_print_value_fields_rtti): Likewise.
	(cp_print_value): Likewise.
	(cp_print_static_field): Update.
	* c-valprint.c (c_val_print): Add 'val' argument.
	(c_value_print): Update.
	* c-lang.h (c_val_print): Update.
	(cp_print_value_fields): Likewise.
	(cp_print_value_fields_rtti): Likewise.
	* ada-valprint.c (struct ada_val_print_args): Remove.
	(val_print_packed_array_elements): Add 'val' argument.
	(ada_val_print): Likewise.  Rewrite.
	(ada_val_print_stub): Remove.
	(ada_val_print_array): Add 'val' argument.
	(ada_val_print_1): Likewise.
	(print_variant_part): Likewise.
	(ada_value_print): Update.
	(print_record): Add 'val' argument.
	(print_field_values): Likewise.
	* ada-lang.h (ada_val_print): Update.

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

	* vec.h (VEC_cleanup): New macro.
	(DEF_VEC_ALLOC_FUNC_I): Update.
	(DEF_VEC_ALLOC_FUNC_P): Likewise.
	(DEF_VEC_ALLOC_FUNC_O): Likewise.
	* dwarf2loc.c (struct axs_var_loc): Remove.
	(unimplemented): New function.
	(translate_register): Likewise.
	(access_memory): Likewise.
	(compile_dwarf_to_ax): Likewise.
	(dwarf2_tracepoint_var_loc): Remove.
	(dwarf2_tracepoint_var_access): Likewise.
	(dwarf2_tracepoint_var_ref): Likewise.
	(locexpr_tracepoint_var_ref): Use compile_dwarf_to_ax.
	(loclist_tracepoint_var_ref): Likewise.
	* dwarf2expr.h (dwarf_expr_require_composition): Declare.
	* dwarf2expr.c (dwarf_expr_require_composition): Rename from
	require_composition.  No longer static.
	(execute_stack_op): Update.
	* ax-gdb.h (trace_kludge): Declare.

2010-06-11  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* breakpoint.c (breakpoint_restore_shadows): New OWNER comment.
	(should_be_inserted): Return zero also on NULL OWNER.
	(breakpoint_program_space_exit): New OWNER comment.
	(insert_breakpoint_locations): Extend comment for OWNER.
	(remove_breakpoint_1, remove_breakpoint): Assert on OWNER.
	(breakpoint_init_inferior, breakpoint_here_p, breakpoint_thread_match):
	New OWNER comment.
	(print_it_typical): Return PRINT_UNKNOWN on NULL OWNER.
	(watchpoint_check): New assert on BREAKPOINT_AT and OWNER.
	(bpstat_check_location): New assert on OWNER.
	(bpstat_check_watchpoint, bpstat_check_breakpoint_conditions): Move BL
	and B initializations to the code block.  New assert on them.
	(print_one_breakpoint_location): New OWNER comment.
	(watchpoint_locations_match): Assert on OWNER.
	(breakpoint_locations_match): Move HW_POINT1 and HW_POINT2
	initializations to the code block.  New assert on OWNER.
	(set_breakpoint_location_function): New assert on OWNER.
	(disable_breakpoints_in_shlibs, disable_breakpoints_in_unloaded_shlib)
	(bp_location_compare, update_global_location_list)
	(update_global_location_list): New OWNER comment.

2010-06-09  Ulrich Weigand  <uweigand@de.ibm.com>

	* Makefile.in (HFILES_NO_SRCDIR): Remove config/i386/nm-linux.h

2010-06-09  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/nm-linux.h (struct target_ops): Remove forward declaration.
	(lin_thread_get_thread_signals): Remove prototype.
	(GET_THREAD_SIGNALS): Remove.
	* linux-nat.h (lin_thread_get_thread_signals): Add prototype.
	* linux-thread-db.c (check_thread_signals): Directly call
	lin_thread_get_thread_signals; do not check GET_THREAD_SIGNALS.

2010-06-09  Ulrich Weigand  <uweigand@de.ibm.com>

	* gregset.h (GDB_FPXREGSET_T): Remove.
	(gdb_fpxregset_t): Likewise.
	(supply_fpxregset): Remove prototype.
	(fill_fpxregset): Likewise.
	* i386-linux-nat.c (supply_fpxregset): Remove.
	(fill_fpxregset): Likewise.
	(fetch_fpxregs): Inline supply_fpxregset call.
	(store_fpxregs): Inline fill_fpxregset call.

	* config/i386/linux.mh: Set NAT_FILE to config/nm-linux.h.
	* config/i386/nm-linux.h: Remove file.

2010-06-09  Michael Snyder  <msnyder@vmware.com>

	* target.c (update_current_target): Fix spelling error in comment.
	(target_mourn_inferior): Fix spelling error in error message.

2010-06-08  Paul Hilfinger  <hilfingr@adacore.com>

      * dictionary.h (dict_iter_name_first, dict_iter_name_next): Refer to
      SYMBOL_SEARCH_NAME, not SYMBOL_BEST_NAME, in comments.

2010-06-08  Michael Snyder  <msnyder@vmware.com>

	* remote.c (remote_close): Set inferior_ptid to null_ptid.

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

	* configure.ac <"${have_libpython}" != no>: New workaround of
	python#4434.
	* configure: Regenerate.

2010-06-08  Hui Zhu  <teawater@gmail.com>

	* record.c (record_wait): Move signal out of replay code.

2010-06-07  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix PR 10640.
	* dwarf2-frame.c (no_dwarf_call): New function.
	(execute_stack_op): Set CTX->DWARF_CALL.
	* dwarf2expr.c (execute_stack_op) <DW_OP_call2, DW_OP_call4>: New.
	* dwarf2expr.h (struct dwarf_expr_context) <dwarf_call>: New.
	(struct dwarf_expr_context) <get_subr>: Remove the #if0-ed field.
	* dwarf2loc.c (per_cu_dwarf_call, dwarf_expr_dwarf_call): New functions.
	(dwarf2_evaluate_loc_desc): Initialize CTX->DWARF_CALL.
	(needs_frame_dwarf_call): New function.
	(dwarf2_loc_desc_needs_frame): Initialize CTX->DWARF_CALL.
	* dwarf2read.c (follow_die_offset): Based on former follow_die_ref.
	Update the comment.  Move variables die, offset and error call to ...
	(follow_die_ref): ... a new function.
	(dwarf2_fetch_die_location_block): New function.
	* dwarf2loc.h (dwarf2_fetch_die_location_block): New prototype.

2010-06-07  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2loc.c (struct dwarf_expr_baton) Replace objfile by per_cu.
	(dwarf_expr_tls_address): Use per_cu instead of objfile.
	(dwarf2_evaluate_loc_desc): Drop initialization of BATON.OBJFILE.
	Initialize new BATON.PER_CU.  Adjust CTX->GDBARCH initialization for
	this change.
	(struct needs_frame_baton): New field per_cu.
	(dwarf2_loc_desc_needs_frame): Initialize new BATON.PER_CU.
	* dwarf2read.c (struct dwarf2_per_cu_data) <cu>: Extend the comment.

2010-06-07  Sami Wagiaalla  <swagiaal@redhat.com>

	* cp-support.c (make_symbol_overload_list_namespace): Only search
	static and global blocks.
	(make_symbol_overload_list_block): New function.
	(make_symbol_overload_list): Separate namespace search from block
	search.
	(make_symbol_overload_list_qualified): Use
	make_symbol_overload_list_block.

2010-06-07  Sami Wagiaalla  <swagiaal@redhat.com>

	* value.h: Created oload_search_type enum.
	(find_overload_match): Use oload_search_type enum.
	* valops.c (find_overload_match): Support combined member and
	non-member search.
	* eval.c (evaluate_subexp_standard): Calls to
	find_overload_match now use oload_search_type enum.
	(oload_method_static): Verify index is a proper value.
	* valarith.c (value_user_defined_cpp_op): Search for and handle
	both member and non-member operators.
	(value_user_defined_cpp_op): New function.
	(value_user_defined_op): New function.
	(value_x_unop): Use value_user_defined_op.
	(value_x_binop): Ditto.
	* cp-support.c (make_symbol_overload_list_using): Added block
	iteration.
	Add check for namespace aliases and imported declarations.

2010-06-07  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* breakpoint.h (owner): Extend the comment.

2010-06-07  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Clear stale specific bp_location from former whole breakpoint.
	* breakpoint.c (delete_breakpoint): Move the stale referencing clear
	code ...
	(free_bp_location): ... here.  Rename there the called function to
	bpstat_remove_bp_location_callback.
	(bpstat_remove_breakpoint_callback): Rename to ...
	(bpstat_remove_bp_location_callback): ... here, change DATA resolution
	to struct bp_location.  Change the called function to
	bpstat_remove_bp_location.  Create new declaration for the function.
	(bpstat_remove_breakpoint): Rename to ...
	(bpstat_remove_bp_location): ..., change the parameter to loc, adjust
	code for the new parameter type.

2010-06-07  Nathan Sidwell  <nathan@codesourcery.com>

	* README: Make version-agnostic.

2010-06-05  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix duplicate types for single DIE.
	* dwarf2read.c (read_structure_type): Move set_descriptive_type after
	set_die_type.
	(read_array_type): Remove type initialization.  Recheck get_die_type
	after initial die_type.  Move set_die_type before set_descriptive_type.
	(read_set_type): New variable domain_type.  Recheck get_die_type after
	initial die_type.  Move attr initialization later.
	(read_tag_pointer_type, read_tag_reference_type): New variable
	target_type.  Recheck get_die_type after initial die_type.
	(read_tag_ptr_to_member_type): Recheck get_die_type after initial
	die_type and die_containing_type.
	(read_tag_const_type, read_tag_volatile_type, read_subroutine_type):
	Recheck get_die_type after initial die_type.
	(read_subrange_type): Recheck get_die_type after initial die_type.
	Move set_die_type before set_descriptive_type.
	(set_die_type): Extend the function comment.  Call complaint if DIE has
	some type already set.

2010-06-05  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-main.c (mi_cmd_list_thread_groups): Adjust
	for current naming of thread groups (iN, not N).

2010-06-04  Sergio Durigan Junior  <sergiodj@redhat.com>

	* ada-lang.c (ada_operator_length): Constify `struct expression'.
	* parse.c (operator_length): Likewise.
	(operator_length_standard): Likewise.
	* parser-defs.h (operator_length): Likewise.
	(operator_length_standard): Likewise.
	(struct exp_descriptor <operator_length>): Likewise.

2010-06-04  Doug Evans  <dje@google.com>

	Add support for enabling/disabling individual pretty-printers.
	* python/py-prettyprint.c (search_pp_list): Skip disabled printers.
	* python/python-internal.h (gdbpy_enabled_cst): Declare.
	* python/python.c (gdbpy_enabled_cst): Define.
	(_initialize_python): Initialize gdbpy_enabled_cst.
	* NEWS: Add entry.

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

	* breakpoint.c (update_global_location_list): Fix comment typo.

2010-06-04  Hui Zhu  <teawater@gmail.com>

	* dwarf2loc.c (disassemble_dwarf_expression): Change ul to l.

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

	* configure.ac: Don't fail if python is unusable when
	configured with --with-python=auto.
	* configure: Regenerate.

2010-06-03  Sami Wagiaalla  <swagiaal@redhat.com>

	* dwarf2read.c (new_symbol): Remove redundant naming of symbol.

2010-06-03  Pierre Muller  <muller@ics.u-strasbg.fr>

	* valprint.h (get_array_bounds): Change low and high parameter types
	to LONGEST *.
	* valprint.c (get_array_bounds): Use get_discrete_bounds call to
	compute bounds.
	(val_print_array_elements): Adapt to change above.
	* ada-valprint.c (print_optional_low_bound): Adapt to change above.
	* p-valprint.c (pascal_val_print): Likewise.

2010-06-02  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* symfile.c (init_filename_language_table): New extensions .for, .FOR,
	.ftn, .FTN, .fpp, .FPP, .f90, .F90, .f95, .F95, .f03, .F03, .f08 and
	.F08.

2010-06-02  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Support DW_TAG_module as separate namespaces.
	* dwarf2read.c (typename_concat): New parameter physname.
	(read_module_type): New function and declaration.
	(scan_partial_symbols): Scan also DW_TAG_module children.
	(partial_die_parent_scope): Accept scope even from DW_TAG_module. Pass
	to typename_concat backward compatible physname value 0.
	(partial_die_full_name, read_namespace_type): Pass to typename_concat
	backward compatible physname value 0.
	(add_partial_module, read_module): Remove FIXME comment.
	(process_die) <DW_TAG_module>: Set PROCESSING_HAS_NAMESPACE_INFO.
	(die_needs_namespace) <DW_TAG_variable>: Allow returning true even for
	DIEs under DW_TAG_module.
	(dwarf2_compute_name): Move the ada block for DW_AT_linkage_name and
	DW_AT_MIPS_linkage_name first, extend it for language_fortran
	&& physname and return there instead of just setting NAME.  Extend
	the main block for language_fortran.  Pass physname parameter to the
	typename_concat call.
	(read_import_statement, read_func_scope, get_scope_pc_bounds)
	(load_partial_dies, determine_prefix): Support also DW_TAG_module.
	(new_symbol): Fill in cplus_specific.demangled_name if it is still
	missing from SYMBOL_SET_NAMES in the language_fortran case.
	(new_symbol) <DW_TAG_variable>: Force LOC_UNRESOLVED for gfortran module
	variables.
	(read_type_die) <DW_TAG_module>: New.
	(MAX_SEP_LEN): Increase to 7.
	(typename_concat): New parameter physname.  New variable lead.  Support
	also language_fortran.
	* f-exp.y (yylex): Consider : also as a symbol name character class.
	* f-lang.c: Include cp-support.h.
	(f_word_break_characters, f_make_symbol_completion_list): New functions.
	(f_language_defn): Use cp_lookup_symbol_nonlocal,
	f_word_break_characters and f_make_symbol_completion_list.
	* f-typeprint.c (f_type_print_base) <TYPE_CODE_MODULE>: New.
	* gdbtypes.h (enum type_code) <TYPE_CODE_MODULE>: New.
	* symtab.c (symbol_init_language_specific): Support language_fortran.
	(symbol_find_demangled_name): New comment on language_fortran.
	(symbol_natural_name, symbol_demangled_name): Use demangled_name even
	for language_fortran.
	(lookup_symbol_aux_local): Check imports also for language_fortran.
	(default_make_symbol_completion_list): Rename to ...
	(default_make_symbol_completion_list_break_on): ... this name.  New
	parameter break_on, use it.
	(default_make_symbol_completion_list): New stub.
	* symtab.h (default_make_symbol_completion_list_break_on): New
	prototype.

2010-06-02  Joel Brobecker  <brobecker@adacore.com>

	* remote.c (remote_get_noisy_reply): Remove trailing "\n" in call
	to error.

2010-06-02  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2read.c (typename_concat): Add const to the variable sep.

2010-06-02  Tom Tromey  <tromey@redhat.com>

	* dwarf2loc.h (dwarf2_per_cu_data): Declare.
	* dwarf2read.c (dwarf_stack_op_name): No longer static.  Return
	type is const.  Add 'def' argument.  Add missing operators, remove
	unhandled ones.
	(decode_locdesc): Update.
	(dwarf2_always_disassemble): New global.
	(show_dwarf2_always_disassemble): New function.
	(_initialize_dwarf2_read): Add always-disassemble.
	(dwarf2_per_cu_offset_size): New function.
	* dwarf2loc.c (dwarf2_always_disassemble): Declare.
	(piece_end_p): New function.
	(locexpr_describe_location_piece): Replace 'size' argument with
	'end'.  Use piece_end_p.  Rewrite recognition of TLS.  Recognize
	some constants.  Remove errors.
	(disassemble_dwarf_expression): New function.
	(locexpr_describe_location_1): Use disassemble_dwarf_expression.
	Add 'offset_size' argument.
	(loclist_describe_location): Change output formatting.
	* dwarf2expr.h (dwarf_stack_op_name): Declare.

2010-06-02  Sami Wagiaalla  <swagiaal@redhat.com>

	* cp-support.c (make_symbol_overload_list_adl_namespace): Handle
	anonymous type case.

2010-06-02  Pierre Muller  <muller@ics.u-strasbg.fr>

	* dwarf2read.c (read_subrange_type): Handle missing base type
	according to Dwarf-2 specifications.

2010-06-01  Sergio Durigan Junior  <sergiodj@redhat.com>

	* expprint.c (print_subexp_standard): Remove exp_opcodes BINOP_INCL,
	BINOP_EXCL.
	(op_name_standard): Remove exp_opcodes BINOP_INCL, BINOP_EXCL,
	UNOP_LOWER, UNOP_UPPER, UNOP_LENGTH.
	(dump_subexp_body_standard): Remove exp_opcodes BINOP_INCL,
	BINOP_EXCL, UNOP_LOWER, UNOP_UPPER, UNOP_LENGTH, UNOP_CARD,
	UNOP_CHMAX, UNOP_CHMIN.
	* expression.h (enum exp_opcode) <BINOP_INCL, BINOP_EXCL,
	UNOP_LOWER, UNOP_UPPER, UNOP_LENGTH, UNOP_CARD, UNOP_CHMAX,
	UNOP_CHMIN>: Remove opcodes.

2010-06-01  Pierre Muller  <muller@ics.u-strasbg.fr>

	* dwarf2read.c (read_func_scope): Do not complain for
	external function if bounds are not found.

2010-06-01  Pedro Alves  <pedro@codesourcery.com>

	* NEWS: Mention gdbserver fast tracepoints support.

2010-05-31  Pierre Muller  <muller@ics.u-strasbg.fr>

	* windows-nat.c (GetConsoleFontSize, GetCurrentConsoleFont):
	New macros.
	(windows_set_console_info): New function.
	(windows_create_inferior): Call windows_set_console_info
	if NEW_CONSOLE is true.
	(bad_GetCurrentConsoleFont, bad_GetConsoleFontSize): New functions.
	(_initialize_loadable): Initialize GetConsoleFontSize and
	GetCurrentConsoleFont.

2010-05-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* Makefile.in (RDYNAMIC): New.
	(SFILES): Add proc-service.list.
	* config/alpha/alpha-linux.mh (NAT_CDEPS): New.
	(LOADLIBES): Replace -rdynamic by $(RDYNAMIC).
	* 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/powerpc/linux.mh: Likewise.
	* config/powerpc/ppc64-linux.mh: Likewise.
	* config/s390/s390.mh: Likewise.
	* config/sparc/linux.mh: Likewise.
	* config/sparc/linux64.mh: Likewise.
	* config/xtensa/linux.mh: Likewise.
	* configure.ac: New RDYNAMIC on native host and GCC.
	(solaris*): Replace -Wl,-export-dynamic by $RDYNAMIC.
	* configure: Regenerate.
	* proc-service.list: New.

2010-05-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* linux-nat.c (linux_nat_core_of_thread_1): Fix crash on invalid
	CONTENT.

2010-05-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* linux-nat.c (linux_nat_wait_1): Do not call
	linux_nat_core_of_thread_1 on TARGET_WAITKIND_EXITED or
	TARGET_WAITKIND_SIGNALLED.

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

	* ada-lang.c (ada_inferior_data): New struct.
	(ada_inferior_data): New static global.
	(ada_inferior_data_cleanup, get_ada_inferior_data, ada_inferior_exit)
	(ada_get_tsd_type): New functions.
	(ada_tag_name_2): Use ada_get_tsd_type instead of ada_find_any_type
	to look the tsd type up.
	(_initialize_ada_language): Attach ada_inferior_exit to inferior_exit
	event.  Set ada_inferior_data.

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

	* remote.c (unpack_varlen_hex): Remove forward declaration.
	(remote_console_output): Make static, and add forward declaration.
	* remote.h: Drop FIXME comment.
	(unpack_varlen_hex): Declare.
	(remote_console_output, remote_cisco_objfile_relocate)
	(deprecated_target_resume_hook, deprecated_target_wait_loop_hook):
	Delete declarations.
	* tracepoint.c: Include "remote.h".
	(unpack_varlen_hex): Delete declaration.

2010-05-27  Tom Tromey  <tromey@redhat.com>

	* dwarf2loc.c (struct piece_closure) <refc>: New field.
	(allocate_piece_closure): Initialize refc.
	(copy_pieced_value_closure): Use refc.
	(free_pieced_value_closure): Likewise.

2010-05-27  Tom Tromey  <tromey@redhat.com>

	* arm-tdep.c (push_stack_item): 'contents' now const.
	(arm_push_dummy_call): Make 'val' const.  Use value_contents, not
	value_contents_writeable.  Introduce new temporary.

2010-05-27  Tom Tromey  <tromey@redhat.com>

	* findcmd.c (parse_find_args): Use value_contents, not
	value_contents_raw.

2010-05-27  Tom Tromey  <tromey@redhat.com>

	* alpha-tdep.c (alpha_push_dummy_call): Make alpha_arg.contents
	const.  Use value_contents, not value_contents_writeable.

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

	* ada-lang.c (ensure_lval): Replace call to value_contents_raw
	by call to value_contents.

2010-05-27  Ozkan Sezer  <sezeroz@gmail.com>

	* MAINTAINERS: Add myself for write after approval privileges.

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

	Allow python to find its files if moved from original location.
	* acinclude.m4 (GDB_AC_DEFINE_RELOCATABLE): New function.
	(GDB_AC_WITH_DIR): Call it.
	* configure.ac: Define WITH_PYTHON_PATH if we can find the
	python installation directory.
	* config.in: Regenerate.
	* configure: Regenerate.
	* defs.h (python_libdir): Declare.
	* main.c (python_libdir): Define.
	(captured_main): Initialize python_libdir.
	* python/python.c (_initialize_python): #ifdef WITH_PYTHON_PATH,
	call Py_SetProgramName to make sure python can find its libraries
	and modules.

	* configure.ac: Try to use python's distutils to fetch compilation
	parameters.
	* configure: Regenerate.
	* python/python-config.py: New file.

2010-05-26  Ozkan Sezer  <sezeroz@gmail.com>

	* ser-tcp.c (net_open): Check error return from socket() call by its
	equality to -1 not by it being negative.
	(net_close): Likewise.

2010-05-26  Pedro Alves  <pedro@codesourcery.com>

	* NEWS: Mention the `qRelocInsn' feature.
	* gdbarch.sh (relocate_instruction): New.
	* amd64-tdep.c (rip_relative_offset): New.
	(append_insns): New.
	(amd64_relocate_instruction): New.
	(amd64_init_abi): Install it.
	* i386-tdep.c (append_insns): New.
	(i386_relocate_instruction): New.
	(i386_gdbarch_init): Install it.
	* remote.c (remote_get_noisy_reply): Handle qRelocInsn requests.
	* gdbarch.h, gdbarch.c: Regenerate.

2010-05-26  Tom Tromey  <tromey@redhat.com>

	* dwarf2loc.h (struct dwarf2_locexpr_baton) <data>: Now const.
	(struct dwarf2_loclist_baton) <data>: Likewise.
	* dwarf2loc.c (find_location_expression): Constify return type.
	(dwarf2_evaluate_loc_desc): Make 'data' argument const.
	(dwarf2_loc_desc_needs_frame): Likewise.
	(loclist_read_variable): Constify.
	(loclist_describe_location): Likewise.
	(loclist_tracepoint_var_ref): Likewise.

2010-05-25  Tom Tromey  <tromey@redhat.com>

	* dwarf2loc.c (dwarf_expr_frame_base): Constify.
	(dwarf_expr_frame_base_1): Likewise.
	(read_pieced_value): Update.
	(needs_frame_frame_base): Constify.
	(dwarf2_tracepoint_var_loc): Likewise.
	(dwarf2_tracepoint_var_access): Likewise.
	(locexpr_describe_location_piece): Likewise.
	(locexpr_describe_location_1): Likewise.
	* dwarf2expr.h (struct dwarf_expr_context) <get_frame_base>:
	Constify.
	(data): Now const.
	(struct dwarf_expr_piece) <v.literal.data>: Likewise.
	(dwarf_expr_eval, read_uleb128, read_sleb128)
	(dwarf2_read_address): Update.
	* dwarf2expr.c (dwarf_expr_eval): Constify.
	(read_uleb128): Likewise.
	(read_sleb128): Likewise.
	(dwarf2_read_address): Likewise.
	(require_composition): Likewise.
	(execute_stack_op): Likewise.
	* dwarf2-frame.h (struct dwarf2_frame_state_reg) <loc.exp>: Now a
	"const gdb_byte *".
	* dwarf2-frame.c (struct dwarf2_frame_state_reg_info) <cfa_exp>:
	Now const.
	(no_get_frame_base): Constify.
	(execute_stack_op): Likewise.
	(execute_cfa_program): Likewise.
	(read_encoded_value): Likewise.

2010-05-25  Doug Evans  <dje@google.com>

	* ser-pipe.c (pipe_open): Ignore SIGINTs in child.

	* event-loop.h (GDB_READABLE, GDB_WRITABLE, GDB_EXCEPTION): Move to ...
	* event-loop.c: ... here.
	* tui/tui-io.c (tui_readline_output): Rename parameter `code' to
	`error' for clarity.
	(tui_getc): Pass correct value for `error' parameter to
	tui_readline_output.

	Add python gdb.GdbError and gdb.string_to_argv.
	* NEWS: Document them.
	* python/py-cmd.c (cmdpy_function): Don't print a traceback if
	the exception is gdb.GdbError.  Print a second traceback if there's
	an error computing the error message.
	(gdbpy_string_to_argv): New function.
	* python/py-utils.c (gdbpy_obj_to_string): New function.
	(gdbpy_exception_to_string): New function.
	* python/python-internal.h (gdbpy_string_to_argv): Declare.
	(gdbpy_obj_to_string, gdbpy_exception_to_string): Declare.
	(gdbpy_gdberror_exc): Declare.
	* python/python.c (gdbpy_gdberror_exc): New global.
	(_initialize_python): Initialize gdbpy_gdberror_exc and create
	gdb.GdbError.
	(GdbMethods): Add string_to_argv.

2010-05-21  Pierre Muller  <muller@ics.u-strasbg.fr>

	* windows-nat.c (display_selector): Call GetLastError to give better
	failure explanation.

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

	* config.in: Regenerate.

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

	Code cleanup.
	* target.c (push_target): Return only void.  Remove the return value
	comment.
	* target.h (push_target): Return only void.

2010-05-23  Pedro Alves  <pedro@codesourcery.com>

	Update gnulib from latest git.
	(250b80067c1e1d8faa0c42fb572f721975b929c5)

	* gnulib/memcmp.c: Removed.
	* gnulib/memchr.valgrind: New.
	* gnulib/stddef.in.h: New.
	* gnulib/Makefile.am: Updated.
	* gnulib/memchr.c: Updated.
	* gnulib/memmem.c: Updated.
	* gnulib/stdint.in.h: Updated.
	* gnulib/str-two-way.h: Updated.
	* gnulib/string.in.h: Updated.
	* gnulib/wchar.in.h: Updated.

	* gnulib/extra/link-warning.h: Removed.
	* gnulib/extra/c++defs.h: New.
	* gnulib/extra/warn-on-use.h: New.
	* gnulib/extra/arg-nonnull.h: Updated.

	* gnulib/m4/extensions.m4: Updated.
	* gnulib/m4/gnulib-cache.m4: Updated.
	* gnulib/m4/gnulib-common.m4: Updated.
	* gnulib/m4/gnulib-comp.m4: Updated.
	* gnulib/m4/gnulib-tool.m4: Updated.
	* gnulib/m4/include_next.m4: Updated.
	* gnulib/m4/longlong.m4: Updated.
	* gnulib/m4/memchr.m4: Updated.
	* gnulib/m4/memmem.m4: Updated.
	* gnulib/m4/stdint.m4: Updated.
	* gnulib/m4/string_h.m4: Updated.
	* gnulib/m4/memcmp.m4: Removed.
	* gnulib/m4/onceonly_2_57.m4: Removed.
	* gnulib/m4/00gnulib.m4: New.
	* gnulib/m4/mmap-anon.m4: New.
	* gnulib/m4/multiarch.m4: New.
	* gnulib/m4/onceonly.m4: New.
	* gnulib/m4/stddef_h.m4: New.
	* gnulib/m4/warn-on-use.m4: New.
	* gnulib/m4/wchar.m4: Removed.
	* gnulib/m4/wchar_h.m4: New.
	* gnulib/m4/wchar_t.m4: New.
	* gnulib/m4/wint_t.m4: New.

	* aclocal.m4: Regenerate.
	* config.in: Likewise.
	* configure: Likewise.
	* gnulib/Makefile.in: Likewise.

2010-05-21  Tom Tromey  <tromey@redhat.com>

	* dwarf2loc.c (extract_bits_primitive): New function.
	(extract_bits): Likewise.
	(insert_bits): Likewise.
	(copy_bitwise): Likewise.
	(read_pieced_value): Do all operations in bits.
	(write_pieced_value): Likewise.
	* dwarf2expr.h (struct dwarf_expr_piece) <offset>: New field.
	* dwarf2expr.c (add_piece): New arguments bit_piece, offset.
	Always use xrealloc to resize piece array.
	(execute_stack_op) <DW_OP_reg0>: Handle DW_OP_bit_piece.
	<DW_OP_piece>: Update.
	<DW_OP_bit_piece>: New case.

2010-05-21  Tom Tromey  <tromey@redhat.com>

	* dwarf2loc.c (read_pieced_value): Exit loop when result is full.
	<DWARF_VALUE_OPTIMIZED_OUT>: New case.
	* dwarf2expr.h (enum dwarf_value_location)
	<DWARF_VALUE_OPTIMIZED_OUT>: New constant.
	* dwarf2expr.c (dwarf_expr_stack_empty_p): New function.
	(add_piece): Handle empty piece.
	(execute_stack_op) <DW_OP_piece>: Handle
	DWARF_VALUE_OPTIMIZED_OUT.

2010-05-21  Tom Tromey  <tromey@redhat.com>

	* eval.c (evaluate_subexp_standard) <BINOP_SUBSCRIPT>: Call
	evaluate_subexp, not evaluate_subexp_with_coercion.

2010-05-21  Pierre Muller  <muller@ics.u-strasbg.fr>

	* dwarf2read.c (new_symbol): Handle DW_AT_variable_parameter
	attribute.

2010-05-21  Tom Tromey  <tromey@redhat.com>

	* dwarf2loc.c (read_pieced_value): Work properly when 'v' has an
	offset.
	(write_pieced_value): Likewise.

2010-05-21  Pierre Muller  <muller@ics.u-strasbg.fr>

	* dwarf2read.c (process_die): Also allow DW_TAG_const_type
	and DW_TAG_volatile_type.
	(new_symbol): Likewise.

2010-05-20  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-valprint.c (pascal_val_print): Call get_array_bounds
	to obtain the number of elements in an array.

2010-05-19  Doug Evans  <dje@google.com>

	* python.c (gdbpy_print_stack): Ensure output ends with a newline.

	* python.c (source_python_script): Add comment.
	(source_python_script_for_objfile): Remove unnecessary call to
	gdbpy_print_stack.

2010-05-18  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Sergio Durigan Junior  <sergiodj@redhat.com>

	Code cleanup.
	* parse.c (exp_iterate): Use operator_length wrapper function.

2010-05-18  Michael Snyder  <msnyder@vmware.com>

	* ada-lang.c: White space.
	* ada-typeprint.c: White space.
	* ada-valprint.c: White space.
	* addrmap.c: White space.
	* auxv.c: White space.
	* ax-gdb.c: White space.

2010-05-18  Hui Zhu  <teawater@gmail.com>

	* linux-fork.c (inferior_call_waitpid_cleanup): Add check
	for oldfp.
	(inferior_call_waitpid): Move make_cleanup out of check.
	Check the return of waitpid.
	(delete_checkpoint_command): Add pptid to save fi->parent_ptid.

2010-05-17  Michael Snyder  <msnyder@vmware.com>

	* tui/tui.c: White space.
	* tui/tui-data.c: White space.
	* tui/tui-disasm.c: White space.
	* tui/tui-file.c: White space.
	* tui/tui-interp.c: White space.
	* tui/tui-main.c: White space.
	* tui/tui-out.c: White space.
	* tui/tui-regs.c: White space.
	* tui/tui-source.c: White space.
	* tui/tui-stack.c: White space.
	* tui/tui-win.c: White space.
	* tui/tui-winsource.c: White space.

	* procfs.c: White space.

	* python/py-auto-load.c: White space.
	* python/py-block.c: White space.
	* python/py-breakpoint.c: White space.
	* python/py-cmd.c: White space.
	* python/py-function.c: White space.
	* python/py-lazy-string.c: White space.
	* python/py-objfile.c: White space.
	* python/py-param.c: White space.
	* python/py-prettyprint.c: White space.
	* python/py-progspace.c: White space.
	* python/py-symtab.c: White space.
	* python/python.c: White space.
	* python/py-type.c: White space.
	* python/py-utils.c: White space.
	* python/py-value.c: White space.

	* mi/mi-cmd-break.c: White space.
	* mi/mi-cmd-env.c: White space.
	* mi/mi-cmds.c: White space.
	* mi/mi-cmd-stack.c: White space.
	* mi/mi-cmd-var.c: White space.
	* mi/mi-console.c: White space.
	* mi/mi-getopt.c: White space.
	* mi/mi-interp.c: White space.
	* mi/mi-main.c: White space.
	* mi/mi-out.c: White space.
	* mi/mi-parse.c: White space.

	* cli/cli-cmds.c: White space.
	* cli/cli-decode.c: White space.
	* cli/cli-dump.c: White space.
	* cli/cli-interp.c: White space.
	* cli/cli-logging.c: White space.
	* cli/cli-script.c: White space.
	* cli/cli-setshow.c: White space.

	* valarith.c: White space.
	* valops.c: White space.
	* valprint.c: White space.
	* value.c: White space.
	* varobj.c: White space.
	* xcoffread.c: White space.
	* xml-support.c: White space.
	* xml-tdesc.c: White space.

2010-05-17  Andreas Schwab  <schwab@redhat.com>

	PR gdb/11092
	* c-lang.c (c_printstr): Compute real length of NUL terminated
	string at first.

2010-05-17  Joel Brobecker  <brobecker@adacore.com>

	* parse.c (parse_exp_in_context): When block is not NULL, use
	its associated language to parse the expression instead of
	the current_language.

2010-05-17  Joel Brobecker  <brobecker@adacore.com>

	* jv-lang.c (java_lookup_class): Remove commented out code.
	(type_from_class): Likewise.
	(java_op_print_tab): Remove commented-out elements.

2010-05-17  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (to_fixed_range_type): The the raw index type as
	argument instead of the raw type name.  Remove orig_type parameter.
	Update calls throughout.
	(ada_fixup_array_indexes_type): New function.
	(ada_array_bound_from_type): Add call to ada_fixup_array_indexes_type.
	* ada-lang.h (ada_fixup_array_indexes_type): Add declaration.
	* ada-typeprint.c (print_range_type): Renames print_range_type_named.
	Remove name parameter.
	(print_array_type): Add call to ada_fixup_array_indexes_type.
	Update calls to print_range_type.
	(ada_print_type): Update calls to print_range_type.

2010-05-17  Pierre Muller  <muller@ics.u-strasbg.fr>

	* dwarf2read.c (read_set_type): Set type length if
	DW_AT_byte_size attribute is present.

2010-05-17  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-valprint.c (pascal_val_print): Handle set type if range limits
	are undefined but size is known.

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

	* procfs.c: Reformat.

2010-05-16  Michael Snyder  <msnyder@vmware.com>

	* target.c: White space.
	* target-descriptions.c: White space.
	* target-memory.c: White space.
	* thread.c: White space.
	* top.c: White space.
	* tracepoint.c: White space.
	* trad-frame.c: White space.
	* tramp-frame.c: White space.
	* ui-file.c: White space.
	* ui-out.c: White space.
	* user-regs.c: White space.
	* utils.c: White space.

	* scm-exp.c: White space.
	* scm-lang.c: White space.
	* scm-valprint.c: White space.
	* sentinel-frame.c: White space.
	* ser-base.c: White space.
	* ser-go32.c: White space.
	* serial.c: White space.
	* ser-mingw.c: White space.
	* ser-pipe.c: White space.
	* ser-tcp.c: White space.
	* ser-unix.c: White space.
	* solib.c: White space.
	* solib-darwin.c: White space.
	* solib-frv.c: White space.
	* solib-irix.c: White space.
	* solib-osf.c: White space.
	* solib-pa64.c: White space.
	* solib-som.c: White space.
	* solib-spu.c: White space.
	* solib-svr4.c: White space.
	* solib-target.c: White space.
	* source.c: White space.
	* stabsread.c: White space.
	* stack.c: White space.
	* std-regs.c: White space.
	* symfile.c: White space.
	* symmisc.c: White space.
	* symtab.c: White space.

2010-05-16  Michael Snyder  <msnyder@vmware.com>

	* source.c (_initialize_source): Add "rev" as an abbreviation
	for the "reverse-search" command.

2010-05-16  Michael Snyder  <msnyder@vmware.com>

	* record.c: White space.
	* regcache.c: White space.
	* reggroups.c: White space.
	* remote-fileio.c: White space.
	* remote-m32r-sdi.c: White space.
	* remote-mips.c: White space.
	* remote-sim.c: White space.
	* remote.c: White space.
	(process_g_packet): Remove orphan braces.

2010-05-15  Michael Snyder  <msnyder@vmware.com>

	* parse.c: White space.
	* p-lang.c: White space.
	* posix-hdep.c: White space.
	* printcmd.c: White space.
	* progspace.c: White space.
	* prologue-value.c: White space.
	* psymtab.c: White space.
	* p-typeprint.c: White space.
	* p-valprint.c: White space.

	* objc-lang.c: White space.
	* objfiles.c: White space.
	* observer.c: White space.
	* osabi.c: White space.
	* osdata.c: White space.

	* m2-lang.c: White space.
	* m2-valprint.c: White space.
	* macrocmd.c: White space.
	* macroexp.c: White space.
	* macroscope.c: White space.
	* macrotab.c: White space.
	* main.c: White space.
	* maint.c: White space.
	* mdebugread.c: White space.
	* memattr.c: White space.
	* minsyms.c: White space.
	* monitor.c: White space.

2010-05-14  Michael Snyder  <msnyder@vmware.com>

	* jv-lang.c: White space.
	* jv-typeprint.c: White space.
	* jv-valprint.c: White space.
	* language.c: White space.
	* libunwind-frame.c: White space.
	* linespec.c: White space.
	* linux-nat.c: White space.
	* linux-record.c: White space.
	* linux-thread-db.c: White space.

	* infcall.c: White space.
	* inf-child.c: White space.
	* infcmd.c: White space.
	* inferior.c: White space.
	* inf-loop.c: White space.
	* inflow.c: White space.
	* inline-frame.c: White space.
	* interps.c: White space.

	* gcore.c: White space.
	* gdb.c: White space.
	* gdbtypes.c: White space.
	* gnu-nat.c: White space.
	* gnu-v2-abi.c: White space.
	* gnu-v3-abi.c: White space.

	* findcmd.c: White space.
	* findvar.c: White space.
	* fork-child.c: White space.
	* frame-base.c: White space.
	* frame.c: White space.
	* frame-unwind.c: White space.
	* f-valprint.c: White space.

	* elfread.c: White space.
	* environ.c: White space.
	* eval.c: White space.
	* event-loop.c: White space.
	* event-top.c: White space.
	* exceptions.c: White space.
	* exec.c: White space.
	* expprint.c: White space.

	* dbxread.c: White space.
	* dcache.c: White space.
	* disasm.c: White space.
	* doublest.c: White space.
	* dsrec.c: White space.
	* dummy-frame.c: White space.
	* dwarf2expr.c: White space.
	* dwarf2-frame.c: White space.
	* dwarf2loc.c: White space.
	* dwarf2read.c: White space.

2010-05-14  Phil Muldoon  <pmuldoon@redhat.com>

	PR python/11482

	* python/py-value.c (valpy_hash): New function.
	(value_object_type): Register valpy_hash.

2010-05-14  Hui Zhu  <teawater@gmail.com>
	    Michael Snyder  <msnyder@vmware.com>

	* linux-fork.c (gdbthread.h): New include.
	(fork_info): Add parent_ptid.
	(inferior_call_waitpid_cleanup, inferior_call_waitpid): New
	functions.
	(delete_checkpoint_command): Call inferior_call_waitpid.
	(checkpoint_command): Set parent_ptid.

2010-05-13  Michael Snyder  <msnyder@vmware.com>

	* dictionary.c: Re-indent to GNU coding standard.

	* charset.c: White space.
	* c-lang.c: White space.
	* cli-out.c: White space.
	* coffread.c: White space.
	* complaints.c: White space.
	* completer.c: White space.
	* corefile.c: White space.
	* corelow.c: White space.
	* cp-abi.c: White space.
	* cp-namespace.c: White space.
	* cp-support.c: White space.
	* cp-valprint.c: White space.
	* c-typeprint.c: White space.
	* c-valprint.c: White space.
	* blockframe.c: White space.
	* breakpoint.c: White space.
	* buildsym.c: White space.
	* blockframe.c: White space.
	* bcache.c: White space.
	* gdbarch.sh: White space, add blank lines.
	* arch-utils.c: Ditto.
	* gdbarch.c: Regenerate.
	* frame.c: White space, add blank lines.
	* stack.c: White space, add blank lines.
	(initialize_stack): Remove long-dead code.

2010-05-13  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup.
	* dwarf2loc.c (dwarf2_evaluate_loc_desc): Change the parameter to type.
	(locexpr_read_variable, loclist_read_variable): Update the callers.

2010-05-13  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup.
	* dwarf2read.c (die_type, die_descriptive_type): Remove variable type.
	Remove check of NULL returned by tag_type_to_type.
	(die_containing_type): Remove variable type.  Remove type_die variable
	initialization.  Remove check of NULL returned by tag_type_to_type.

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

	PR exp/11530.
	* gdbtypes.c (lookup_struct_elt_type): Also lookup
	names of unnamed structures or unions.

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

	* procfs.c (proc_watchpoint_address): New function.
	(procfs_stopped_by_watchpoint): Remove useless check after
	find_procinfo_or_die call.
	(procfs_stopped_data_address): New function.
	(procfs_use_watchpoints): Register new watchpoint related function.

2010-05-11  Tom Tromey  <tromey@redhat.com>

	* eval.c (evaluate_subexp_standard): Revert inadvertent change.

2010-05-10  Michael Snyder  <msnyder@vmware.com>

	* utils.c: White space cleanup.

2010-05-10  Tom Tromey  <tromey@redhat.com>

	* eval.c (ptrmath_type_p): Add 'lang' argument.
	(evaluate_subexp_standard): Update.
	(evaluate_subexp_with_coercion): Update.
	* language.h (CAST_IS_CONVERSION): Add 'LANG' argument.

2010-05-10  Michael Snyder  <msnyder@vmware.com>

	* utils.c (do_fclose_cleanup) Restore local variable.

2010-05-09  Doug Evans  <dje@google.com>

	* record.c (init_record_core_ops): Rename record_core to record-core.

2010-05-08  Joel Brobecker  <brobecker@adacore.com>

	Implement task switching on pa-hpux.
	* inf-ttrace.c (inf_ttrace_get_ada_task_ptid): New function.
	(inf_ttrace_target): Set t->to_get_ada_task_ptid.

2010-05-08  Pierre Muller  <muller@ics.u-strasbg.fr>

	* valops.c (find_overload_match): Add missing i18n markup.

2010-05-08  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-exp.y (exp : SIZEOF '(' exp ')'): New rule.

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

	* dwarf2read.c (typename_concat): Use (char *) NULL terminated stdarg
	list for the obconcat call.
	* mdebugread.c (parse_symbol): Likewise.
	* stabsread.c (define_symbol, read_member_functions, read_cpp_abbrev):
	Likewise.
	* symfile.c (obconcat): Replace the s1, s2 and s3 parameters by `...'.
	New variable ap.  Remove variables len and val.
	* symfile.h (obconcat): Likewise for the prototype.

2010-05-07  Michael Snyder  <msnyder@vmware.com>

	* python/python.c (execute_gdb_command): Remove unused variables.
	* python/py-block.c (gdbpy_block_for_pc): Remove unused variable.
	* python/py-breakpoint.c (gdbpy_breakpoint_created):
	Remove unused variable.
	* python/py-cmd.c (cmdpy_function): Remove unused variable.
	(cmdpy_completer): Remove unused variable.
	* python/py-frame.c (frapy_find_sal): Remove unused variable.
	* python/py-function.c (fnpy_call): Remove unused variable.
	* python/py-objfile.c (objfile_to_objfile_object):
	Remove unused variable.
	* python/py-param.c (parmpy_init): Remove unused variable.
	* python/py-prettyprint.c (apply_varobj_pretty_printer):
	Remove unused variable.
	(gdbpy_default_visualizer): Remove unused variable.
	* python/py-progspace.c (pspace_to_pspace_object):
	Remove unused variable.
	* python/py-symtab.c (symtab_and_line_to_sal_object):
	Remove unused variable.
	* python/py-type.c (typy_template_argument):
	Remove unused variable.
	* python/py-value.c (valpy_string): Remove unused variable.
	(convert_value_from_python): Remove unused variables.

2010-05-07  Michael Snyder  <msnyder@vmware.com>

	* valops.c (value_cast_pointers): Restore unused variable 'type1',
	and use it to compute variable 't1'.

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

	* ada-lang.c (assign_aggregate): Remove unused variable.

2010-05-07  Sami Wagiaalla  <swagiaal@redhat.com>

	PR C++/7943:
	* valops.c (find_overload_match): Handle fsym == NULL case.
	Add int no_adl argument.
	(find_oload_champ_namespace_loop): Call make_symbol_overload_list_adl
	when appropriate.
	Add int no_adl argument.
	(find_oload_champ_namespace): 	Add int no_adl argument.
	* parse.c (operator_length_standard): Return length for OP_ADL_FUNC
	expression.
	* expprint.c (op_name_standard): Added string for OP_ADL_FUNC case.
	* eval.c (evaluate_subexp_standard): Added OP_ADL_FUNC case.
	Evaluate arguments and use them to perform ADL lookup.
	Pass no_adl argument to find_overload_match.
	Disable adl lookup when evaluating a fully qualified OP_FUNCALL.
	* cp-support.h: Added prototype for
	make_symbol_overload_list_namespace.
	* cp-support.c (make_symbol_overload_list_namespace): New function.
	(make_symbol_overload_list_adl_namespace): New function.
	(make_symbol_overload_list_adl): New function.
	(make_symbol_overload_list_using): Moved code to add function to
	overload set to make_symbol_overload_list_namespace.
	* c-exp.y: create UNKNOWN_CPP_NAME token.
	Add parse rule for ADL functions.
	(classify_name): Recognize an UNKNOWN_CPP_NAME.

2010-05-07  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* fbsd-nat.c (fbsd_make_corefile_notes): Add cast to NULL used as
	sentinel.

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

	Implement task switching on solaris targets.
	* sol-thread.c (thread_db_find_thread_from_tid)
	(sol_get_ada_task_ptid): New functions.
	(init_sol_thread_ops): Set sol_thread_ops.to_get_ada_task_ptid.

2010-05-07  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (remote_query_supported_append): Use reconcat.
	(remote_query_supported): Install a cleanup.  Use reconcat.

2010-05-07  Pedro Alves  <pedro@codesourcery.com>

	* gdbarch.sh (qsupported): Delete.
	* gdbarch.h, gdbarch.c: Regenerate.
	* remote.c (remote_query_supported): Remove use of
	gdbarch_qsupported.

2010-05-06  Sergio Durigan Junior  <sergiodj@redhat.com>

	* xml-syscall.c (syscall_start_syscalls_info): Remove unused
	function.

2010-05-06  Michael Snyder  <msnyder@vmware.com>

	* xml-support.c (xinclude_start_include): Delete unused variable.
	(xml_process_xincludes): Delete unused variable.
	* xml-syscall.c (syscall_parse_xml): Delete unused variable.
	* target-descriptions.c (tdesc_gdb_type): Delete unused variable.
	(tdesc_find_arch_register): Delete unused variable.
	(tdesc_use_registers): Delete unused variable.
	* xml-tdesc.c (tdesc_start_target): Delete unused variable.
	* inferior.c (print_inferior): Delete unused variable.
	* record.c (record_open_1): Delete unused variable.
	(record_restore): Delete unused variable.
	(cmd_record_save): Delete unused variable.
	* gcore.c (derive_heap_segment): Delete unused variable.
	(objfile_find_memory_regions): Use unused variable.
	* jit.c (jit_inferior_init): Delete unused variable.
	* progspace.c (clone_program_space): Delete unused variable.
	(pspace_empty_p): Delete unused variable.

	* frame-unwind.c (frame_unwind_find_by_frame):
	Delete unused variable.
	* gnu-v2-abi.c (gnuv2_value_rtti_type): Delete unused variable.
	* cp-support.c (mangled_name_to_comp): Delete unused variable.
	(method_name_from_physname): Delete unused variable.
	(cp_func_name): Delete unused variable.
	(cp_validate_operator): Delete unused variable.
	* cp-namespace.c (cp_scan_for_anonymous_namespaces):
	Delete unused variable.
	* trad-frame.c (trad_frame_get_prev_register):
	Delete unused variable.
	* tramp-frame.c (tramp_frame_cache): Delete unused variable.

	* serial.c (serial_for_fd): Delete unused variable.
	* mdebugread.c (psymtab_to_symtab_1): Delete unused variable.
	* top.c (execute_command): Delete unused variable.
	(init_main): Delete unused variable.
	* utils.c (do_fclose_cleanup): Delete unused variable.
	(do_all_inferior_continuations): Delete unused variable.
	(initialize_utils): Delete unused variable.
	(internal_problem_mode): Delete unused global.
	* frame.c (get_prev_frame): Delete unused global.
	(get_frame_locals_address): Delete unused global.
	(get_frame_args_address): Delete unused global.

	* p-typeprint.c (pascal_type_print_base): Delete unused variable.
	(pascal_type_print_varspec_prefix): Delete unused variable.
	* f-typeprint.c (f_type_print_base): Delete unused variable.
	(f_type_print_varspec_suffix): Delete unused variable.
	* m2-typeprint.c (m2_print_type): Delete unused variable.
	(m2_long_set): Delete unused variable.
	* ada-valprint.c (ada_val_print_1): Delete unused variable.
	* d-valprint.c (dynamic_array_type): Delete unused variable.
	* f-valprint.c (f77_get_dynamic_length_of_aggregate):
	Delete unused variable.
	(f77_create_arrayprint_offset_tbl): Delete unused variable.
	* m2-valprint.c (m2_val_print): Delete unused variable.

	* ui-out.c (ui_out_field_int): Delete unused variable.
	(ui_out_field_fmt_int): Delete unused variable.
	* varobj.c (varobj_list_children): Delete unused variable.
	(varobj_set_value): Delete unused variable.
	(install_new_value_visualizer): Delete unused variable.
	(varobj_set_visualizer): Delete unused variable.
	(varobj_update): Delete unused variable.
	(varobj_editable_p): Delete unused variable.
	(c_value_of_root): Delete unused variable.
	(cplus_describe_child): Delete unused variable.

	* ada-lang.c (add_defn_to_vec): Delete unused variable.
	(decode_constrained_packed_array_type): Delete unused variable.
	(add_defn_to_vec): Delete unused variable.
	(symbol_completion_match): Delete unused variable.
	(value_tag_from_contents_and_address): Delete unused variable.
	(ada_evaluate_subexp): Delete unused variable.
	* c-lang.c (classify_type): Delete unused variable.
	* f-lang.c (f_printstr): Delete unused variable.
	* objc-lang.c (objc_printstr): Delete unused variable.
	* ada-tasks.c (get_known_tasks_addr): Delete unused variable.
	* jv-lang.c (type_from_class): ifdef unused variable.
	(java_class_name_from_physname): Delete unused variable.
	* m2-lang.c (m2_printstr): Delete unused variable.

	* objfiles.c (objfile_relocate): Delete unused variable.
	* maint.c (_initialize_maint_cmds): Delete unused variable.
	* demangle.c (_initialize_demangler): Delete unused variable.
	* corefile.c (reopen_exec_file): Delete unused variable.
	* dwarf2expr.c (dwarf2_read_address): Delete unused variable.
	* dwarf2-frame.c (decode_frame_entry): Delete unused variable.

	* osabi.c (_initialize_gdb_osabi): Delete unused variable.
	* memattr.c (mem_delete): Delete unused variable.
	(invalidate_target_mem_regions): Delete unused variable.
	* mem-break.c (default_memory_insert_breakpoint):
	Delete unused variable.
	* target.c (target_get_osdata): Delete unused variable.
	* parse.c (length_of_subexp): Delete unused variable.
	(prefixify_subexp): Delete unused variable.
	(exp_iterate): Delete unused variable.
	* reverse.c (delete_bookmark_command): Delete unused variable.

	* macrocmd.c (_initialize_macrocmd): Delete unused variable.
	* macroexp.c (gather_arguments): Delete unused variable.
	(substitute_args): Delete unused variable.
	* completer.c (gdb_completer_loc_break_characters): Unused, delete.
	* gdbarch.sh (gdbarch_printable_names): Delete unused variable.
	(_initialize_gdbarch): Delete unused variable.
	* gdbarch.c, gdbarch.h: Regenerate.
	* arch-utils.c (initialize_current_architecture):
	Delete unused variable.
	(_initialize_gdbarch_utils): Delete unused variable.
	* gdbtypes.c (make_cv_type): Delete unused variable.
	(make_type_with_address_space): Delete unused variable.

	* linespec.c (decode_compound): Delete unused variable.
	* dictionary.c (iterator_next_hashed): Delete unused variable.
	* infcall.c (call_function_by_hand): Delete unused variable.
	* infcmd.c (step_1): Delete unused variable.
	(registers_info): Delete unused variable.
	(attach_command): Delete unused variable.
	* infrun.c (follow_exec): Delete unused variable.
	(handle_step_into_function_backwards): Delete unused variable.
	(_initialize_infrun): Delete unused variable.
	* stack.c (parse_frame_specification_1): Delete unused variable.
	(frame_info): Delete unused variable.
	(backtrace_command_1): Delete unused variable.
	(catch_info): Delete unused variable.

	* eval.c (evaluate_subexp_standard): Delete unused variable.
	* valops.c (value_cast_pointers): Delete unused variable.
	(value_dynamic_cast): Delete unused variable.
	(value_array): Delete unused variable.
	(find_overload_match): Delete unused variable.
	* valarith.c (value_subscript): Delete unused variable.
	(value_binop): Delete unused variable.
	* valprint.c (_initialize_valprint): Delete unused variable.
	* printcmd.c (print_command_1): Delete unused variable.
	(address_info): Delete unused variable.
	(printf_command): Delete unused variable.

	* auxv.c (target_auxv_search): Delete unused variable.
	* blockframe.c (get_frame_block): Delete unused variable.
	* regcache.c (regcache_cpy): Delete unused variable.
	(regcache_cpy_no_passthrough): Delete unused variable.
	* charset.c (wchar_iterate): Delete unused variable.
	(find_charset_names): Delete unused variable.
	(_initialize_charset): Delete unused variable.
	* disasm.c (do_mixed_source_and_assembly):
	Delete unused variable.
	* source.c (set_default_source_symtab_and_line):
	Delete unused variable.
	(set_substitute_path_command): Delete unused variable.
	* value.c (preserve_values): Delete unused variable.
	(value_from_double): Delete unused variable.

2010-05-05  Michael Snyder  <msnyder@vmware.com>

	* psymtab.c (lookup_partial_symbol): Delete unused variable.
	(find_last_source_symtab_from_partial): Delete unused variable.
	* symfile.c (place_section): Delete unused variable.
	(default_symfile_offsets): Delete unused variable.
	(get_debug_link_info): Delete unused variable.
	(find_separate_debug_file_by_debuglink): Delete unused variable.
	(add_symbol_file_command): Delete unused variable.
	(symfile_find_segment_sections): Delete unused variable.
	* symmisc.c (free_symtab): Delete unused variable.
	(dump_symtab_1): Delete unused variable.
	* symtab.c (lookup_symbil_aux_quick): Delete unused variable.
	(find_pc_sect_symtab): Delete unused variable.
	(skip_prologue_using_lineinfo): Delete unused variable.
	(sources_info): Delete unused variable.
	(completion_list_add_name): Delete unused variable.
	(expand_line_sal): Delete unused variable.

	* breakpoint.c (validate_commands_for_breakpoint):
	Delete unused variables.
	(insert_catchpoint): Delete unused variable.
	(update_watchpoint): Delete unused variable.
	(insert_bp_location): Delete unused variable.
	(insert_breakpoint_locations): Delete unused variable.
	(remove_breakpoint_1): Delete unused variable.
	(software_breakpoint_inserted_here_p): Delete unused variable.
	(watchpoints_triggered): Delete unused variable.
	(bpstat_check_watchpoint): Delete unused variable.
	(bpstat_stop_status): Delete unused variable.
	(print_one_breakpoint_location): Delete unused variable.
	(allocate_bp_location): Delete unused variable.
	(create_breakpoint): Delete unused variable.
	(watch_command_1): Delete unused variable.
	(catch_exception_command_1): Delete unused variable.
	(catch_ada_exception_command): Delete unused variable.
	(delete_breakpoint): Delete unused variable.
	(breakpoint_re_set_one): Delete unused variable.
	(do_enable_breakpoint): Delete unused variable.

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

	* amd64-tdep.c: Include disasm.h.
	(amd64_insn_length_fprintf, amd64_insn_length_init_dis)
	(amd64_insn_length): Moved to disasm.c and renamed.
	(fixup_riprel): Adjust.
	* disasm.c (do_ui_file_delete): New.
	(gdb_insn_length): New.
	(gdb_buffered_insn_length_fprintf)
	(gdb_buffered_insn_length_init_dis)
	(gdb_buffered_insn_length): New, moved from amd64-tdep.c, and
	renamed.
	* disasm.h (gdb_insn_length): Declare.
	(gdb_buffered_insn_length): Declare.

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

	* remote.c (clear_threads_parsing_context): New.
	(remote_threads_info): Delete unused null_cleanup.  Install a
	cleanup to clear the threads_parsing_context in case parsing
	throws.

2010-05-05  Michael Snyder  <msnyder@vmware.com>

	* c-exp.y (parse_string_or_char): Delete unused variable.
	(c_lex): Delete unused variable.
	* cp-name-parser.y (cpname_lex): Delete unused variable.
	* ada-exp.y (find_primitive_type): Delete unused variable.
	(write_var_or_type): Delete unused variable.
	* jv-exp.y (java_parse): Delete unused variable.
	(push_expression_name): Delete unused variable.
	* p-exp.y (pascal_lex): Delete unused variable.

2010-05-05  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (remote_threads_info): Really revert previous previous
	change.

2010-05-05  Michael Snyder  <msnyder@vmware.com>

	* elfread.c (elf_symtab_read): Delete unused variable.
	(find_separate_debug_file_by_buildid): Delete unused variables.
	(elf_symfile_read): Delete unused variable.

	* coffread.c (coff_symfile_read): Delete unused variables.

	* coff-pe-read.c (add_pe_exported_sym): Delete unused variable.
	(read_pe_exported_syms): Delete unused variable.

	* stabsread.c (define_symbol): Delete unused variable.

	* dwarf2read.c (read_type_comp_unit_head): Delete unused variable.
	(process_psymtab_comp_unit): Delete unused variable.
	(dwarf2_build_psymtabs_hard): Delete unused variable.
	(load_partial_comp_unit): Delete unused variable.
	(create_all_comp_units): Delete unused variable.
	(scan_partial_symbols): Delete unused variable.
	(add_partial_symbol): Delete unused variable.
	(add_partial_namespace): Delete unused variable.
	(add_partial_enumeration): Delete unused variable.
	(load_full_comp_unit): Delete unused variable.
	(process_full_comp_unit): Delete unused variable.
	(read_file_scope): Delete unused variable.
	(read_type_unit_scope): Delete unused variable.
	(process_structure_scope): Delete unused variable.
	(process_enumeration_scope): Delete unused variable.
	(read_tag_ptr_to_member_type): Delete unused variable.
	(read_typedef): Delete unused variable.
	(read_partial_die): Delete unused variable.
	(decode_locdesc): Delete unused variable.
	(zeroed_partial_die): Delete unused global variable.

	* tui/tui-interp.c (_initialize_tui_interp):
	Delete unused variable.
	* tui/tui-regs.c tui_display_registers_from):
	Delete unused variable.
	(tui_check_register_values): Delete unused variable.
	(tui_register_format): Delete unused variable.
	* tui/tui-win.c (_initialize_tui_win): Delete unused variable.
	* tui/tui-windata.c (tui_display_data_from_line):
	Delete unused variables.
	(tui_vertical_data_scroll): Delete unused variables.

2010-05-05  Michael Snyder  <msnyder@vmware.com>

	* remote.c (remote_threads_info): Revert questionable part of
	the previous change.

2010-05-05  Michael Snyder  <msnyder@vmware.com>

	* mi/mi-out.c (mi_table_begin): Delete unused variable.
	* mi/mi-cmd-var.c (print_varobj): Delete unused variable.
	(mi_cmd_var_list_children): Delete unused variable.
	(varobj_update_one): Delete unused variable.
	* mi/mi-cmd-break.c (mi_cmd_break_insert): Delete unused variables.
	* mi/mi-cmd-stack.c (mi_cmd_stack_list_locals):
	Delete unused variable.
	(mi_cmd_stack_list_variables): Delete unused variable.
	(list_args_or_locals): Delete unused variable.
	* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_file):
	Delete unused variables.
	(mi_cmd_file_list_exec_source_files): Delete unused variable.
	* mi/mi-cmd-target.c (mi_cmd_target_file_delete):
	Delete unused variable.
	* mi/mi-interp.c (mi_interpreter_exec): Delete unused variable.
	(mi_cmd_interpreter_exec): Delete unused variable.
	(mi_on_normal_stop): Delete unused variable.
	* mi/mi-main.c (run_one_inferior): Delete unused variable.
	(print_one_inferior): Delete unused variables.
	(mi_execute_command): Delete unused variable.
	(mi_cmd_execute): Delete unused variable.
	(timestamp): Delete unused variable.

	* cli/cli-dump.c (dump_memory_to_file): Delete unused variable.
	(restore_binary_file): Delete unused variable.
	* cli/cli-decode.c (deprecated_cmd_warning): Delete unused variables.
	* cli/cli-script.c (define_command): Delete unused variables.
	(recurse_read_control_structure): Delete unused variable.
	(script_from_file): Delete unused variable.
	* cli/cli-cmds.c (complete_command): Delete unused variable.
	(disassemble_command): Delete unused variable.

	* ax-gdb.c (gen_struct_elt_for_reference): Delete unused variables.
	* tracepoint.c (delete_trace_variable_command):
	Delete unused variables.
	(encode_actions_1): Delete unused variables.
	(start_tracing): Delete unused variable.
	(trace_status_mi): Delete unused variable.
	(tfind_1): Delete unused variable.
	(trace_find_pc_command): Delete unused variable.
	(trace_find_line_command): Delete unused variables.
	(trace_find_range_command): Delete unused variables.
	(trace_find_outside_command): Delete unused variables.
	(parse_tracepoint_definition): Delete unused variables.
	(tfile_fetch_registers): Delete unused variable.

	* dcache.c (dcache_init): Delete unused variable.
	(dcache_info): Delete unused variable.

	* remote.c (remote_threads_info): Delete unused variable.
	(process_stop_reply) :Delete unused variable.
	(remote_get_trace_status): Delete unused variables.

	* linux-thread-db.c (add_thread_db_info): Delete unused variable.
	(thread_from_lwp): Delete unused variable.
	(enable_thread_event_reporting): Delete unused variable.
	(check_for_thread_db): Delete unused variables.
	(thread_db_find_new_threads_2): Delete unused variable.

	* linux-fork.c (info_checkpoints_command): Delete unused variables.
	(checkpoint_command): Delete unused variable.
	(linux_fork_context): Delete unused variables.

	* linux-nat.c (linux_parent_pid): Delete unused global variable.
	(linux_tracefork_child): Delete unused variable.
	(linux_child_follow_fork): Delete unused variable.
	(linux_nat_detach): Delete unused variable.
	(linux_handle_extended_wait): Delete unused variable.
	(linux_nat_has_pending_sigint): Delete unused variable.
	(linux_nat_find_memory_regions): Delete unused variable.
	(linux_nat_make_corefile_notes): Delete unused variables.
	(linux_nat_info_proc_cmd): Delete unused variable.
	(linux_proc_pending_signals): Delete unused variable.
	(linux_nat_stop_lwp): Delete unused variables.
	(_initialize_linux_nat): Delete unused variable.

	* ser-pipe.c (pipe_ops): Delete unused global variable.

	* linux-record.c (record_linux_system_call):
	Delete unused variables.

	* corelow.c (core_xfer_partial): Delete unused variables.

	* solib-svr4.c (find_program_interpreter): Delete unused variable.
	(svr4_solib_create_inferior_hook): Add ifdef around
	conditionally-used variable declarations.

	* solib.c (solib_find): Delete unused variable.
	(free_so_symbols): Delete unused variable.
	(info_sharedlibrary_command): Delete unused variable.
	(reload_shared_libraries_1): Delete unused variable.
	(_initialize_solib): Delete unused variable.

	* i386-tdep.c (i386_supply_xstateregset) Delete unused variable.
	(i386_collect_xstateregset): Delete unused variable.
	* i387-tdep.c (i387_print_float_info): Delete unused variable.

	* features/i386/i386-mmx.c (initialize_tdesc_i386_mmx):
	Delete unused variable 'type'.

2010-05-05  Joel Brobecker  <brobecker@adacore.com>

	* gdbtypes.h (MAX_OF_TYPE, MIN_OF_TYPE): Delete macros.  *
	ada-lang.c: Remove comment mentioning these macros.
	* m2-exp.y: Delete commented out code.

2010-05-05  Joel Brobecker  <brobecker@adacore.com>

	* sparc-tdep.c (sparc_structure_or_union_p): Return non-zero
	for array types.
	* sparc64-tdep.c (sparc64_structure_or_union_p): Likewise.

2010-05-04  Pierre Muller  <muller@ics.u-strasbg.fr>

	ARI fix: Remove ATTRIBUTE_UNUSED throughout.
	* arm-linux-tdep.c (arm_linux_cleanup_svc): Remove
	ATTRIBUTE_UNUSED.
	(cleanup_kernel_helper_return): Likewise.
	* arm-tdep.c (copy_unmodified): Likewise.
	(copy_preload): Likewise.
	(copy_copro_load_store): Likewise.
	(cleanup_branch): Likewise.
	(copy_b_bl_blx): Likewise.
	(copy_bx_blx_reg): Likewise.
	(copy_alu_imm): Likewise.
	(copy_alu_reg): Likewise.
	(copy_alu_shifted_reg): Likewise.
	(cleanup_load): Likewise.
	(cleanup_store): Likewise.
	(cleanup_block_load_pc): Likewise.
	(cleanup_svc): Likewise.
	(copy_undef): Likewise.
	(copy_unpred): Likewise.
	* remote.c (register_remote_support_xml): Likewise.

2010-05-05  Hui Zhu  <teawater@gmail.com>

	* gdbarch.h (gdbarch_has_dos_based_file_system): Update comment.

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

	* remote.c (register_remote_support_xml)
	(remote_query_supported_append, remote_query_supported): Add cast
	to NULL used as sentinel.
	* tracepoint.c (tvariables_info_1): Likewise.
	* utils.c (add_internal_problem_command): Likewise.

2010-05-04  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>

	* dwarf2loc.c (read_pieced_value, write_pieced_value,
	dwarf2_evaluate_loc_desc): Handle not being able to access DWARF
	registers gracefully.

2010-05-04  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>

	* exec.c (print_section_info): Display entry point without arch
	specific parts.

2010-05-04  Pierre Muller  <muller@ics.u-strasbg.fr>

	PR exp/11349.
	* printcmd.c (x_command): Only dereference once implicitly for
	TYPE_CODE_REF.

2010-05-03  Doug Evans  <dje@google.com>

	* event-loop.c (gdb_timer): Delete unused global.
	(create_timer): Update.

2010-05-03  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* cp-namespace.c (cp_lookup_symbol_imports): Support ALIAS for the
	CURRENT->DECLARATION case.
	* cp-support.h (struct using_direct): Provide extended comment.

2010-05-03  Mark Kettenis  <kettenis@gnu.org>

	* hppaobsd-tdep.c (HPPAOBSD_SIZEOF_GREGS): Renamed from
	HPPABSD_SIZEOF_GREGS.
	(HPPAOBSD_SIZEOF_FPREGS): New define.
	(hppaobsd_supply_gregset): Renamed from hppabsd_supply_gregset.
	(hppaobsd_supply_fpregset): New function.
	(hppaobsd_gregset): Renamed from hppabsd_gregset.
	(hppaobsd_fpregset): New variable.
	(hppaobsd_regset_from_core_section): Handle floating-point registers.
	(_initialize_hppabsd_tdep): Remove spurious blank line.

2010-05-03  Pierre Muller  <muller@ics.u-strasbg.fr>

	PR pascal/11349.
	* p-valprint.c (pascal_value_print): Always dereference a value with
	type code TYPE_CODE_REF.

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

	* remote.c (remote_notice_signals): New.
	(remote_start_remote): In non-stop mode, update the remote end on
	which signals it can silently pass.
	(init_remote_ops): Install remote_notice_signals.

2010-05-02  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* cli/cli-cmds.h (error_no_arg): Remove.  Move the comment ...
	* command.h (error_no_arg): ... here.  Remove NORETURN, change
	ATTR_NORETURN to ATTRIBUTE_NORETURN.
	* defs.h (NORETURN, ATTR_NORETURN): Remove.
	(perror_with_name, verror, error, error_stream, vfatal, fatal)
	(internal_verror, internal_error, nomem): Remove NORETURN, change
	ATTR_NORETURN to ATTRIBUTE_NORETURN.
	* exceptions.c (throw_exception, deprecated_throw_reason, throw_verror)
	(throw_vfatal, throw_error): Remove NORETURN.
	(throw_it): Remove NORETURN, change ATTR_NORETURN to ATTRIBUTE_NORETURN.
	* exceptions.h (throw_exception, throw_verror, throw_vfatal)
	(throw_error, deprecated_throw_reason): Remove NORETURN, change
	ATTR_NORETURN to ATTRIBUTE_NORETURN.
	* linespec.c (cplusplus_error): Remove NORETURN, change ATTR_NORETURN
	to ATTRIBUTE_NORETURN for prototype, for the definition only remove
	NORETURN.
	* remote-mips.c (mips_error): Change NORETURN to ATTRIBUTE_NORETURN.
	* remote-sim.c (gdb_os_error): Change ATTR_NORETURN to
	ATTRIBUTE_NORETURN.
	* target.c (tcomplain): Likewise.
	* target.h (noprocess): Remove NORETURN, change ATTR_NORETURN to
	ATTRIBUTE_NORETURN.
	* utils.c (verror, error, vfatal, fatal, error_stream, internal_verror)
	(internal_error, perror_with_name, nomem): Remove NORETURN.
	* xml-support.h (gdb_xml_error): Change ATTR_NORETURN to
	ATTRIBUTE_NORETURN.

2010-05-02  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* ada-lang.c (lim_warning): Change ATTR_FORMAT to ATTRIBUTE_PRINTF.
	* amd64-tdep.c (amd64_insn_length_fprintf): Likewise.
	* cli-out.c (cli_field_fmt): New ATTRIBUTE_PRINTF.
	(cli_message, out_field_fmt): Change ATTR_FORMAT to ATTRIBUTE_PRINTF.
	* complaints.c (find_complaint): New ATTRIBUTE_PRINTF.
	(vcomplaint): Change ATTR_FORMAT to ATTRIBUTE_PRINTF.
	* complaints.h (complaint, internal_complaint): Likewise.
	* defs.h: Change ATTR_FORMAT to ATTRIBUTE_PRINTF in the top comment.
	(ATTR_FORMAT): Remove.
	(query, nquery, yquery, vprintf_filtered, vfprintf_filtered)
	(fprintf_filtered, fprintfi_filtered, printf_filtered, printfi_filtered)
	(vprintf_unfiltered, vfprintf_unfiltered, fprintf_unfiltered)
	(printf_unfiltered, xasprintf, xvasprintf, xstrprintf, xstrvprintf)
	(xsnprintf, verror, error, vfatal, fatal, internal_verror)
	(internal_error, internal_vwarning, internal_warning, warning)
	(vwarning): Change ATTR_FORMAT to ATTRIBUTE_PRINTF.
	* disasm.c (fprintf_disasm): Likewise.
	* exceptions.c (throw_it): Likewise.
	* exceptions.h (exception_fprintf, throw_verror, throw_vfatal)
	(throw_error): Likewise.
	* language.h (type_error, range_error): Likewise.
	* linespec.c (cplusplus_error): Likewise.
	* mi/mi-interp.c (mi_interp_query_hook): Likewise.
	* mi/mi-out.c (mi_field_fmt, mi_message): Likewise.
	* monitor.c (monitor_debug): Likewise.
	* parser-defs.h (parser_fprintf): Likewise.
	* serial.h (serial_printf): Likewise.
	* tui/tui-hooks.c (tui_query_hook): Likewise.
	* ui-out.c (default_field_fmt, default_message, uo_field_fmt)
	(uo_message): Likewise.
	* ui-out.h (ui_out_field_fmt, ui_out_message): Likewise.
	* utils.c (vfprintf_maybe_filtered, internal_vproblem, defaulted_query):
	Likewise.
	* xml-support.h (gdb_xml_debug, gdb_xml_error): Likewise.

2010-05-02  Pedro Alves  <pedro@codesourcery.com>

	* cli-out.c (cli_table_begin, cli_table_body, cli_table_end)
	(cli_table_header, cli_begin, cli_end, cli_field_int)
	(cli_field_skip, cli_field_string, cli_field_fmt, cli_spaces)
	(cli_text, cli_message, cli_wrap_hint, cli_flush, cli_redirect):
	Delete forward declarations.
	(cli_ui_out_impl): Move below the callbacks.
	(_initialize_cli_out): Delete.

2010-05-02  Pedro Alves  <pedro@codesourcery.com>

	* README: Use consistent `GDB' and `GDBserver' spellings.

2010-05-02  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* cli/cli-dump.h (parse_and_eval_with_error): Remove the declaration.

2010-05-01  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (prepare_for_detach): In non-stop, context switch to
	the thread that got the event before handling the event.

2010-04-30  Tom Tromey  <tromey@redhat.com>

	* symtab.c (symbol_set_names): Fix typo.

2010-04-30  Pierre Muller  <muller@ics.u-strasbg.fr>

	* python/py-param.c (parm_constants): Avoid ARI warning
	by adding ARI comment.
	(parmpy_init): Likewise.

2010-04-30  Pierre Muller  <muller@ics.u-strasbg.fr>

	* windows-tdep.c (windows_get_tlb_type): Remember last GDBARCH
	and created type for re-use.

2010-04-30  Pierre Muller  <muller@ics.u-strasbg.fr>

	* NEWS: Mention gdbserver support for x86_64 Windows 64-bit.

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

	* ser-base.h (reschedule): Delete prototype.
	* ser-base.c (reschedule): Make static.

2010-04-29  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>

	* arm-linux-tdep.c (ARM_LINUX_JB_PC): Remove.
	(ARM_LINUX_JB_PC_FPA): Add, offset of PC in longjmp buffer for FPA.
	(ARM_LINUX_JB_PC_EABI): Add, offset of PC in longjmp buffer for
	EABI.
	(arm_linux_init_abi): Set up JB_PC field dependent on FP model in
	use.

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

	PR gdb/11557

	* regcache.c (registers_changed): Rename to ...
	(registers_changed_ptid): ... this, and only delete register cache
	entries matching the ptid filter argument.
	(registers_changed): Reimplement on top of registers_changed_ptid.
	* regcache.h (registers_changed_ptid): Declare.
	* target.c (target_resume): Flush register caches.

2010-04-29  Phil Muldoon  <pmuldoon@redhat.com>
	    Tom Tromey  <tromey@redhat.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* Makefile.in (SUBDIR_PYTHON_OBS): Add py-parameter.
	(SUBDIR_PYTHON_SRCS): Likewise.
	(py-parameter.o): New rule.
	* python/py-parameter.c: New file.
	* python/python-internal.h (gdbpy_initialize_parameter)
	(gdbpy_parameter, gdbpy_parameter_value)
	(gdbpy_parse_command_name): Declare.
	* python/py-cmd.c (parse_command_name): Rename to
	gdbpy_parse_command_name.
	(gdbpy_parse_command_name): Accept a starting list parameter and
	use over cmdlist.
	(cmdpy_init): Use gdbpy_parse_command_name.
	* python/python.c (parameter_to_python): Rename to
	gdbpy_parameter_to_python.  Accept enum var_types and value.
	(gdbpy_parameter): Use gdbpy_parameter_value.
	(_initialize_python): Call gdbpy_initialize_parameters.

2010-04-29  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>

	* MAINTAINERS: Add myself for write after approval privileges.

2010-04-29  Mihail Zenkov  <mihail.zenkov@gmail.com>

	D language support.
	* Makefile.in (SFILES): Add d-lang.c d-valprint.c.
	(COMMON_OBS): Add d-lang.o d-valprint.o.
	(HFILES_NO_SRCDIR): Add d-lang.h.
	* NEWS: Mention D language support.
	* c-lang.c (c_emit_char, exp_descriptor_c): Make public.
	* c-lang.h (c_emit_char, exp_descriptor_c): Add declaration.
	* d-lang.c: New file.
	* d-lang.h: New file.
	* d-valprint.c: New file.
	* defs.h (enum language): Add language_d.
	* dwarf2read.c (set_cu_language): Add DW_LANG_D.
	* language.c (binop_result_type, integral_type, character_type)
	(string_type, boolean_type, structured_type): Add language_d.
	* symfile.c (init_filename_language_table): Add language_d.
	* symtab.c: Include d-lang.h.
	(symbol_init_language_specific, symbol_find_demangled_name)
	(symbol_natural_name, lookup_symbol_in_language)
	(symbol_demangled_name, symbol_matches_domain): Add language_d.

2010-04-27  Joel Brobecker  <brobecker@adacore.com>

	* solib-svr4.c (solib_svr4_r_map): Expand function description.

2010-04-27  Joel Brobecker  <brobecker@adacore.com>

	* symfile.c (init_filename_language_table): Register .dg files
	with language_ada.

2010-04-27  Joel Brobecker  <brobecker@adacore.com>

	* gdbtypes.h (struct main_type): Expand comment about target_type
	field.

2010-04-27  Pedro Alves  <pedro@codesourcery.com>
	    Tristan Gingold  <gingold@adacore.com>

	* symfile.c (reread_symbols): Also search for file in libraries.
	Update comment.

2010-04-27  Joel Brobecker  <brobecker@adacore.com>

	* configure.tgt: Treat x86-lynxos targets as x86 bareboard targets
	in terms of configuration.

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

	* objfiles.c: Include solist.h.
	(free_all_objfiles): New variable so.  Check stale solist objfiles.
	* symfile.c (symbol_file_clear): Swap the order of free_all_objfiles
	and no_shared_libraries.

2010-04-27  Joel Brobecker  <brobecker@adacore.com>

	ARI warning fix.
	* python/py-auto-load.c (source_section_scripts): Remove trailing
	new-line in i18n string.

2010-04-26  Doug Evans  <dje@google.com>

	* serial.c (serial_write): Handle serial_debug_p akin to serial_read.

2010-04-26  Tom Tromey  <tromey@redhat.com>

	* cli/cli-decode.c (complete_on_cmdlist): Make two passes over the
	command list.

2010-04-26  Pierre Muller  <muller@ics.u-strasbg.fr>

	Removal of config/i386/nm-i386sol2.h native configuration file.
	* config/i386/nm-i386sol2.h: Remove file.
	* config/i386/i386sol2.mh: Remove NAT_FILE definition.
	* config/i386/sol2-64.mh: Idem.
	* config/djgpp/fnchange.lst: Remove reference to that file.
	* Makefile.in (HFILES_NO_SRCDIR): Idem.

2010-04-26  Pierre Muller  <muller@ics.u-strasbg.fr>

	PR breakpoints/11531.
	* config/i386/nm-i386sol2.h (CANNOT_STEP_HW_WATCHPOINTS): Remove
	macro definition and related comment.
	* infrun.c (CANNOT_STEP_HW_WATCHPOINTS): Remove macro.
	(resume): Remove code and comment related to this macro.

2010-04-26  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* cp-namespace.c (cp_lookup_symbol_in_namespace): Fix alloca size.
	Fix whitespace.

2010-04-24  Pedro Alves  <pedro@codesourcery.com>

	* defs.h: Adjust comment.
	* filesystem.h, filesystem.c: New files.
	* Makefile.in (SFILES): Add filesystem.c.
	(COMMON_OBS): Add filesystem.o.
	* solib.c (solib_find): Handle DOS-based filesystems.  Handle
	different target and host path flavours.
	* arm-symbian-tdep.c (arm_symbian_init_abi): Set
	has_dos_based_file_system on the gdbarch.
	* arm-wince-tdep.c (arm_wince_init_abi): Ditto.
	* i386-cygwin-tdep.c (i386_cygwin_init_abi): Ditto.
	* i386-tdep.c (i386_go32_init_abi): Ditto.
	* gdbarch.sh (has_dos_based_file_system): New.
	* gdbarch.h, gdbarch.c: Regenerate.
	* NEWS: Mention improved support for remote targets with DOS-based
	filesystems.  Mention new `set/show target-file-system-kind'
	commands.

2010-04-23  Stan Shebs  <stan@codesourcery.com>

	* ax.h (struct agent_expr): Merge in agent_reqs fields, add some
	comments.
	(struct agent_reqs): Remove.
	(ax_reg_mask): Declare.
	* ax-general.c (new_agent_expr): Add gdbarch argument, set new fields.
	(free_agent_expr): Free reg_mask.
	(ax_print): Add scope and register mask info.
	(ax_reqs): Remove agent_reqs argument, use agent expression
	fields, and move part of register mask computation to...
	(ax_reg_mask): New function.
	* ax-gdb.c (gen_trace_static_fields): Call it.
	(gen_traced_pop): Ditto.
	(is_nontrivial_conversion): Add dummy gdbarch to new_agent_expr.
	(gen_trace_for_var): Pass gdbarch to new_agent_expr.
	(gen_trace_for_expr): Ditto, and clear optimized_out flag.
	(gen_eval_for_expr): Ditto, and require an rvalue.
	(agent_command): Call ax_reqs.
	(agent_eval_command): Ditto.
	* tracepoint.c (report_agent_reqs_errors): Use agent expression fields.
	(validate_action_line): Ditto.
	(collect_symbol): Ditto.
	(encode_actions_1): Ditto.

2010-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
	    Paul Pluzhnikov  <ppluzhnikov@google.com>
	    Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix deadlock on looped list of loaded shared objects.
	* solib-svr4.c (LM_PREV): New function.
	(IGNORE_FIRST_LINK_MAP_ENTRY): Use it.
	(svr4_current_sos): Check for correct l_prev.  New variables prev_lm
	and next_lm.  Clear prev_lm for solib_svr4_r_ldsomap.
	* config/djgpp/fnchange.lst: Add translation for solib-corrupted.exp.

2010-04-23  Doug Evans  <dje@google.com>

	* configure.ac (CONFIG_SRCS): Add py-auto-load.o even if not using
	python.
	* configure: Regenerate.
	* main.c: #include "python/python.h".
	(captured_main): Defer loading auto-loaded scripts until after
	local_gdbinit has been sourced.
	* python/py-auto-load.c (gdbpy_global_auto_load): New global.
	(load_auto_scripts_for_objfile): New function.
	(auto_load_new_objfile): Call it.
	* python/python.h (gdbpy_global_auto_load): Declare.
	(load_auto_scripts_for_objfile): Declare.

	Add support for auto-loading scripts from .debug_gdb_scripts section.
	* NEWS: Add entry for .debug_gdb_scripts.
	* Makefile.in SUBDIR_PYTHON_OBS): Add py-auto-load.o.
	(SUBDIR_PYTHON_SRCS): Add py-auto-load.c.
	(py-auto-load.o): New rule.
	* cli/cli-cmds.c (find_and_open_script): Make externally visible.
	* cli/cli-cmds.h (find_and_open_script): Update prototype.
	* python/py-auto-load.c: New file.
	* python/python-internal.h: #include <stdio.h>.
	(set_python_list, show_python_list): Declare.
	(gdbpy_initialize_auto_load): Declare.
	(source_python_script_for_objfile): Declare.
	* python/python.c: Remove #include of observer.h.
	(gdbpy_auto_load): Moved to py-auto-load.c.
	(GDBPY_AUTO_FILENAME): Ditto.
	(gdbpy_new_objfile): Delete.
	(source_python_script_for_objfile): New function.
	(set_python_list, show_python_list): Make externally visible.
	(_initialize_python): Move "auto-load" command to py-auto-load.c
	and observer_attach_new_objfile to py-auto-load.c.

2010-04-23  Jerome Guitton  <guitton@adacore.com>

	* alpha-tdep.c (INSN_OPCODE, MEM_RA, MEM_RB, MEM_DISP, BR_RA)
	(OPR_FUNCTION, OPR_HAS_IMMEDIATE, OPR_RA, OPR_RC, OPR_LIT): New macros.
	(lda_opcode, stq_opcode, bne_opcode, subq_opcode, subq_function):
	New constants.
	(alpha_heuristic_analyze_probing_loop): New function.
	(alpha_heuristic_frame_unwind_cache): In the prologue analysis, detect
	and handle cases when a stack probe loop is generated.
	* alpha-mdebug-tdep.c (alpha_mdebug_frameless): New function.
	(alpha_mdebug_max_frame_size_exceeded): New function.
	(alpha_mdebug_after_prologue): Use alpha_mdebug_frameless.
	(alpha_mdebug_frame_sniffer, alpha_mdebug_frame_base_sniffer):
	Return 0 when the maximum debuggable frame size has been exceeded.

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

	Fix ARI warning.
	* ppc-linux-nat.c (booke_cmp_hw_point): Do not mark inline.

2010-04-20  Chris Moller  <cmoller@redhat.com>

	PR 10179

	* symtab.c (rbreak_command): Added code to include a filename
	specification in the rbreak argument.
	* NEWS: Added a brief description of filename-qualified rbreak.

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

	Fix crashes on dangling display expressions.
	* ada-lang.c (ada_operator_check): New function.
	(ada_exp_descriptor): Fill-in the field operator_check.
	* c-lang.c (exp_descriptor_c): Fill-in the field operator_check.
	* jv-lang.c (exp_descriptor_java): Likewise.
	* m2-lang.c (exp_descriptor_modula2): Likewise.
	* scm-lang.c (exp_descriptor_scm): Likewise.
	* parse.c (exp_descriptor_standard): Likewise.
	(operator_check_standard): New function.
	(exp_iterate, exp_uses_objfile_iter, exp_uses_objfile): New functions.
	* parser-defs.h (struct exp_descriptor): New field operator_check.
	(operator_check_standard, exp_uses_objfile): New declarations.
	* printcmd.c: Remove the inclusion of solib.h.
	(display_uses_solib_p): Remove the function.
	(clear_dangling_display_expressions): Call lookup_objfile_from_block
	and exp_uses_objfile instead of display_uses_solib_p.
	* solist.h (struct so_list) <objfile>: New comment.
	* symtab.c (lookup_objfile_from_block): Remove the static qualifier.
	* symtab.h (lookup_objfile_from_block): New declaration.
	(struct general_symbol_info) <obj_section>: Extend the comment.

2010-04-22  Sergio Durigan Junior  <sergiodj@linux.vnet.ibm.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* ppc-linux-nat.c (PTRACE_GET_DEBUGREG): Update comment.
	(PPC_PTRACE_GETWDBGINFO, PPC_PTRACE_SETHWDEBUG, PPC_PTRACE_DELHWDEBUG,
	ppc_debug_info, PPC_DEBUG_FEATURE_INSN_BP_RANGE,
	PPC_DEBUG_FEATURE_INSN_BP_MASK, PPC_DEBUG_FEATURE_DATA_BP_RANGE,
	PPC_DEBUG_FEATURE_DATA_BP_MASK, ppc_hw_breakpoint,
	PPC_BREAKPOINT_TRIGGER_EXECUTE, PPC_BREAKPOINT_TRIGGER READ,
	PPC_BREAKPOINT_TRIGGER_WRITE, PPC_BREAKPOINT_TRIGGER_RW,
	PPC_BREAKPOINT_MODE_EXACT PPC_BREAKPOINT_MODE_RANGE_INCLUSIVE,
	PPC_BREAKPOINT_MODE_RANGE_EXCLUSIVE, PPC_BREAKPOINT_MODE_MASK,
	PPC_BREAKPOINT_CONDITION_NONE, PPC_BREAKPOINT_CONDITION_AND,
	PPC_BREAKPOINT_CONDITION_EXACT, PPC_BREAKPOINT_CONDITION_OR,
	PPC_BREAKPOINT_CONDITION_AND_OR, PPC_BREAKPOINT_CONDITION_BE_ALL,
	PPC_BREAKPOINT_CONDITION_BE_SHIFT, PPC_BREAKPOINT_CONDITION_BE):
	Define, in case <ptrace.h> doesn't provide it.
	(booke_debug_info): New variable.
	(max_slots_number): Ditto.
	(hw_break_tuple): New struct.
	(thread_points): Ditto.
	(ppc_threads): New variable.
	(PPC_DEBUG_CURRENT_VERSION): New define.
	(have_ptrace_new_debug_booke): New function.
	(ppc_linux_check_watch_resources): Renamed to ...
	(ppc_linux_can_use_hw_breakpoint): ... this.  Handle BookE processors.
	(ppc_linux_region_ok_for_hw_watchpoint): Handle BookE processors.
	(booke_cmp_hw_point): New function.
	(booke_find_thread_points_by_tid): Ditto.
	(booke_insert_point): Ditto.
	(booke_remove_point): Ditto.
	(ppc_linux_insert_hw_breakpoint): Ditto.
	(ppc_linux_remove_hw_breakpoint): Ditto.
	(get_trigger_type): Ditto.
	(ppc_linux_insert_watchpoint): Handle BookE processors.
	(ppc_linux_remove_watchpoint): Ditto.
	(ppc_linux_new_thread): Ditto.
	(ppc_linux_thread_exit): New function..
	(ppc_linux_stopped_data_address): Handle BookE processors.
	(ppc_linux_watchpoint_addr_within_range): Ditto.
	(_initialize_ppc_linux_nat): Initialize to_insert_hw_breakpoint and
	to_remove_hw_breakpoint fields of the target operations struct.
	Add observe for the thread_exit event.

2010-04-22  H.J. Lu  <hongjiu.lu@intel.com>

	* i386-linux-nat.c (regmap): Removed.
	(fetch_register): Replace regmap with
	i386_linux_gregset_reg_offset.
	(store_register): Likewise.
	(supply_gregset): Likewise.
	(fill_gregset): Likewise.

	* i386-linux-tdep.c (i386_linux_gregset_reg_offset): Make it
	global.

	* i386-linux-tdep.h (i386_linux_gregset_reg_offset): New.

2010-04-22  Chris Moller  <cmoller@redhat.com>

	* cp-valprint.c (cp_print_value_fields): Replaced obstack_base()
	method of popping recursion-detection stack with a method based on
	obstack_object_size().  (Similar to the PR9167 patch below, but for
	the static array obstack rather than the static member obstack.)

2010-04-22  H.J. Lu  <hongjiu.lu@intel.com>

	* amd64-linux-nat.c (amd64_linux_gregset64_reg_offset): Removed.
	(_initialize_amd64_linux_nat): Replace
	amd64_linux_gregset64_reg_offset with
	amd64_linux_gregset_reg_offset.

	* amd64-linux-tdep.c (amd64_linux_gregset_reg_offset): Make it
	global.

	* amd64-tdep.h (amd64_linux_gregset_reg_offset): New.

2010-04-22  Pierre Muller  <muller@ics.u-strasbg.fr>

	PR stabs/11479.
	* stabsread.c (set_length_in_type_chain): New function.
	(read_struct_type): Call set_length_in_type_chain function.
	(read_enum_type): Idem.

2010-04-21  Stan Shebs  <stan@codesourcery.com>
	    Nathan Sidwell  <nathan@codesourcery.com>

	* tracepoint.c (trace_save): Open in binary mode.

2010-04-22  Pierre Muller  <muller@ics.u-strasbg.fr>

	* gdbtypes.h (builtin_type): Add builtin_char16 and builtin_char32
	fields.
	* gdbtypes.c (gdbtypes_post_init): Set builtin_char16 and
	builtin_char32 fields.
	* printcmd.c (decode_format): Set char size to '\0'
	for strings unless explicit size is given.
	(print_formatted): Correct calculation of NEXT_ADDRESS
	for 16 or 32 bit strings.
	(do_examine): Do not force byte size for strings.
	Use builtin_char16 and builtin_char32 types to display
	16 or 32 bit-wide strings.
	(x_command): Set LAST_SIZE to 'b' for string type.

2010-04-21  H.J. Lu  <hongjiu.lu@intel.com>

	PR corefiles/11523
	* amd64-linux-tdep.c (amd64_linux_core_read_description): Check
	XCR0 first.

	* i386-linux-tdep.c (i386_linux_core_read_xcr0): Return 0 if
	there is no .reg-xstate section.
	(i386_linux_core_read_description): Check XCR0 first.

2010-04-21  Mike Frysinger  <vapier@gentoo.org>

	* gdb/sparc-tdep.c (sparc32_store_return_value): Add gdb_assert ()
	for len <= 8.

2010-04-21  Chris Moller  <cmoller@redhat.com>

	PR 9167
	* cp-valprint.c (cp_print_value_fields): Replaced obstack_base()
	method of popping recursion-detection stack with a method based on
	obstack_object_size().

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

	PR pascal/11492.
	* p-valprint.c (pascal_val_print): Fix default printing of integer
	arrays.

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

	Fix compilation warning on gcc-4.1.2.
	* rs6000-aix-tdep.c (rs6000_convert_from_func_ptr_addr): Initialize
	local variable`pc' to zero.

2010-04-20  Joel Brobecker  <brobecker@adacore.com>

	Implement thread support with core files on alpha-tru64.
	* dec-thread.c (dec_thread_find_new_threads): New function,
	extracted from resync_thread_list.
	(resync_thread_list): Add OPS parameter.  Replace extracted-out
	code by call to dec_thread_find_new_threads.
	(dec_thread_wait): Update call to resync_thread_list.
	(init_dec_thread_ops): Set dec_thread_ops.to_find_new_threads.

2010-04-20  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (value_pointer): New function.
	(make_array_descriptor): Call value_pointer to convert addresses to
	pointers.

2010-04-20  Joel Brobecker  <brobecker@adacore.com>

	* rs6000-aix-tdep.c: #include exceptions.h.
	(rs6000_convert_from_func_ptr_addr): If an exception is thrown
	while reading the memory at ADDR, then ADDR cannot be a function
	descriptor.

2010-04-20  Joel Brobecker  <brobecker@adacore.com>

	* ada-typeprint.c (ada_print_typedef): New function.
	* ada-lang.h (ada_print_typedef): Add declaration.
	* ada-lang.c (ada_language_defn): set la_print_typdef field
	to ada_print_typedef.

2010-04-20  Joel Brobecker  <brobecker@adacore.com>

	* procfs.c (procfs_address_to_host_pointer): Only define when used.

2010-04-20  Joel Brobecker  <brobecker@adacore.com>

	* procfs.c (iterate_over_mappings_cb_ftype): New typedef.
	(iterate_over_mappings): Adjust function profile. Add declaration.
	(insert_dbx_link_bpt_in_region, info_mappings_callback):
	Adjust accordingly.

2010-04-20  Joel Brobecker  <brobecker@adacore.com>

	* procfs.c (solib_mappings_callback): Move function up to avoid
	a compiler warning.

2010-04-20  Joel Brobecker  <brobecker@adacore.com>

	* procfs.c (find_signalled_thread, find_stop_signal): Move
	these functions down to define them only when used.

2010-04-20  Joel Brobecker  <brobecker@adacore.com>

	* valprint.c (common_val_print): Fix the value before extracting
	its contents.
	* ada-lang.c (ada_to_fixed_value): Make this function extern.
	* ada-lang.h (ada_to_fixed_value): New function declaration.
	* ada-valprint.c (ada_value_print): Use ada_to_fixed_value
	to avoid code duplication and fix a bug in the handling of
	fixed types contents.

2010-04-20  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (dwarf2_compute_name): Handle DW_AT_linkage_name.
	(read_partial_die): Likewise.
	(dwarf_attr_name): Likewise.

2010-04-20  Chris Moller  <cmoller@redhat.com>

	PR 10867

	* cp-valprint.c (global): Adding new static array recursion
	detection obstack.
	(cp_print_value_fields, cp_print_static_field): Added new static
	array recursion detection code.

2010-04-20  Mark Kettenis  <kettenis@gnu.org>

	* i386-linux-tdep.c (i386_linux_regset_sections): Size of the
	general-purpose register set should be 68 instead of 144.
	(i386_linux_sse_regset_sections): Likewise.
	(i386_linux_avx_regset_sections): Likewise.

2010-04-20  Stan Shebs  <stan@codesourcery.com>
	    Nathan Sidwell  <nathan@codesourcery.com>

	* dwarf2loc.c (struct axs_var_loc): New struct.
	(dwarf2_tracepoint_var_loc): New function.
	(dwarf2_tracepoint_var_access): New function.
	(dwarf2_tracepoint_var_ref): Use dwarf2_tracepoint_var_loc, deal
	with DW_OP_piece.
	(locexpr_describe_location_piece): New function.
	(locexpr_describe_location_1): New function.
	(locexpr_describe_location): Call it, update signature.
	(loclist_describe_location): Rewrite to loop over locations,
	update signature.
	* symtab.h (struct symbol_computed_ops): Add address to
	describe_location arguments, return void.
	* printcmd.c (address_info): Get context PC, pass to computed
	location description.
	* tracepoint.c (scope_info): Ditto.
	* ax-gdb.c (trace_kludge): Export.

2010-04-20  Tom Tromey  <tromey@redhat.com>

	* dwarf2-frame.c (decode_frame_entry_1): Handle CIE version 4.
	(struct dwarf2_cie) <segment_size>: New field.
	* dwarf2read.c (partial_read_comp_unit_head): Accept DWARF 4.
	(skip_one_die): Handle DW_FORM_flag_present, DW_FORM_sec_offset,
	DW_FORM_exprloc.
	(read_attribute_value): Handle DW_FORM_flag_present,
	DW_FORM_sec_offset, DW_FORM_exprloc.
	(dump_die_shallow): Likewise.
	(attr_form_is_section_offset): Handle DW_FORM_sec_offset.
	(dwarf2_const_value): Handle DW_FORM_exprloc.
	(attr_form_is_block): Likewise.
	(struct line_header) <maximum_ops_per_instruction>: New field.
	(dwarf_decode_line_header): Set new field.
	(dwarf_decode_lines): Handle new field.

2010-04-20  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* f-exp.y: Add new production to recognize the `logical*8' type.
	(LOGICAL_S8_KEYWORD): New token.
	* f-lang.c (enum f_primitive_types)
	<f_primitive_type_logical_s8>: New field.
	(f_language_arch_info): Handling `logical*8' type.
	(build_fortran_types): Building `logical*8' type.
	* f-lang.h (struct builtin_f_type) <builtin_logical_s8>: New field.

2010-04-19  Doug Evans  <dje@google.com>

	* ser-base.c (generic_readchar): Watch for EOF in read of error_fd.
	* ser-pipe.c (pipe_open): Fix file descriptor leaks.
	(pipe_close): Ditto.

2010-04-19  Pierre Muller  <muller@ics.u-strasbg.fr>

	* configure.tgt (x86_64-*-mingw*): Set BUILD_GDBSERVER to yes.

2010-04-19  Pierre Muller  <muller@ics.u-strasbg.fr>

	* windows-tdep.c (windows_get_tlb_type): Change current_seh.handle
	type to void function.

2010-04-19  Stan Shebs  <stan@codesourcery.com>
	    Vladimir Prus  <vladimir@codesourcery.com>

	* tracepoint.c (tfind_1): Add missing newline, report exit from
	tfind mode as such.
	* target.c (update_current_target): Make default
	to_trace_find return -1.

2010-04-19  Mike Frysinger  <vapier@gentoo.org>

	* objc-lang.c (find_methods): Move symname check up.

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

	* ada-lang.c (print_recreate_exception)
	<ex_catch_exception_unhandled>: It's "catch exception unhandled",
	not "catch unhandled".

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

	PR breakpoints/8554.

	Implement `save-breakpoints'.

	* breakpoint.c (save_cmdlist): New.
	(breakpoint_set_cmdlist, breakpoint_show_cmdlist): Moved up close
	to save_cmdlist.
	(print_recreate_catch_fork): New.
	(catch_fork_breakpoint_ops): Install it.
	(print_recreate_catch_vfork): New.
	(catch_vfork_breakpoint_ops): Install it.
	(print_recreate_catch_syscall): New.
	(catch_syscall_breakpoint_ops): Install it.
	(print_recreate_catch_exec): New.
	(catch_exec_breakpoint_ops): Install it.
	(print_recreate_exception_catchpoint): New.
	(gnu_v3_exception_catchpoint_ops): Install it.
	(save_breakpoints): New, based on tracepoint_save_command, but
	handle all breakpoint types.
	(save_breakpoints_command): New.
	(tracepoint_save_command): Rename to...
	(save_tracepoints_command): ... this, and reimplement using
	save_breakpoints.
	(save_command): New.
	(_initialize_breakpoints): Install the "save" command prefix.
	Install the "save breakpoints" command.  Make "save-tracepoints" a
	deprecated alias for "save tracepoints".
	* breakpoint.h (struct breakpoint_ops): New field `print_recreate'.
	* ada-lang.c (print_recreate_exception): New.
	(print_recreate_catch_exception): New.
	(catch_exception_breakpoint_ops): Install it.
	(print_recreate_catch_exception_unhandled): New.
	(catch_exception_unhandled_breakpoint_ops): Install it.
	(print_recreate_catch_assert): New.
	(catch_assert_breakpoint_ops): Install it.

	* NEWS: Mention the new `save breakpoints' command.  Mention the
	new `save tracepoints' alias and that `save-tracepoints' is now
	deprecated.

2010-04-18  Pedro Alves  <pedro@codesourcery.com>

	PR tui/9217

	* tui/tui-out.c: Include cli-out.h.
	(tui_table_begin, tui_table_body, tui_table_end, tui_table_header)
	(tui_begin, tui_end, tui_field_int, tui_field_skip)
	(tui_field_string, tui_field_fmt, tui_spaces, tui_text)
	(tui_message, tui_wrap_hint, tui_flush): Delete forward
	declarations.
	(struct ui_out_data): Rename to...
	(struct tui_ui_out_data): ... this.  Remove `stream' and
	`suppress_output' fields, and inherit cli_ui_out_data.
	(tui_out_data): New typedef.
	(tui_ui_out_impl): Don't initialize fields staticaly.
	(tui_table_begin, tui_table_body, tui_table_end, tui_table_header)
	(tui_begin, tui_end): Delete.
	(tui_field_int): Adjust to delegate most work to the base type.
	(tui_field_skip): Delete.
	(tui_field_string, tui_field_fmt): Adjust comment.  Adjust to
	delegate most work to the base type.
	(tui_spaces): Delete.
	(tui_text): Adjust to delegate most work to the base type.
	(tui_message): Delete.
	(tui_wrap_hint): Delete.
	(tui_flush): Delete.
	(out_field_fmt): Delete.
	(field_separator): Delete.
	(tui_out_new): Adjust to initialize the base type.
	(_initialize_tui_out): Initialize tui_ui_out_impl.
	* cli-out.c (struct ui_out_data): Moved out to cli-out.h, renamed
	cli_ui_out_data.
	(cli_out_data): Adjust.
	(cli_ui_out_impl): Make extern.
	(cli_table_header, cli_field_int, cli_field_skip): Use
	uo_field_string instead of cli_field_string.
	(cli_redirect): Adjust to use cli_out_data.
	(cli_out_data_ctor): New.
	(cli_out_new): Use it.
	* cli-out.h (struct ui_file): Remove forward declaration.
	(struct cli_ui_out_data): New, moved from cli-out.c, and renamed.
	(cli_ui_out_impl): Declare.
	(cli_out_data_ctor): Declare.
	* ui-out.c (struct ui_out) <data>: Change type to void pointer.
	(uo_field_string): No longer static.
	(ui_out_data): Change return type to void pointer.
	(ui_out_new): Change `data' parameter type to void pointer.
	* ui-out.h (struct ui_out_data): Don't forward declare.
	(ui_out_data): Change return type to void pointer.
	(ui_out_new): Change `data' parameter type to void pointer.
	(uo_field_string): Declare.

2010-04-17  Pedro Alves  <pedro@codesourcery.com>

	* ui-file.c (tee_file_isatty): Return whether `tee->one' is a tty,
	instead of always false.

2010-04-17  H.J. Lu  <hongjiu.lu@intel.com>

	PR corefiles/11511
	* amd64-linux-tdep.c (amd64_linux_gregset_reg_offset): Support
	orig_rax.

2010-04-17  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (watchpoints_triggered): Use
	is_hardware_watchpoint.
	(watchpoints_triggered): Ditto.
	(bpstat_check_location): Use is_watchpoint and
	is_hardware_watchpoint.
	(bpstat_check_watchpoint): Use is_watchpoint and
	is_hardware_watchpoint.
	(bpstat_stop_status): Fix comment.
	(user_settable_breakpoint): Use is_watchpoint.
	(hw_watchpoint_used_count): Use is_hardware_watchpoint.
	(disable_watchpoints_before_interactive_call_start): Use
	is_watchpoint.
	(enable_watchpoints_after_interactive_call_stop): Use
	is_watchpoint.
	(clear_command): Use is_watchpoint.
	(do_enable_breakpoint): Use is_watchpoint.

2010-04-16  Mike Frysinger  <vapier@gentoo.org>

	* solib-frv.c (enable_break1_done): Delete.
	(enable_break2): Do not check enable_break1_done.  Move the
	enable_break2_done setting and call to
	remove_solib_event_breakpoints() to the end.  Return without
	warning when the contents of _dl_debug_addr are 0.
	(enable_break): Do not set enable_break1_done.
	(frv_clear_solib): Likewise.

2010-04-16  Kevin Buettner  <kevinb@redhat.com>

	* m32c-tdep.c (m32c_m16c_address_to_pointer): Print warning
	instead of an error if no PLT entry is found.  Return a
	potentially useful result.
	(m32c_m16c_pointer_to_address): Add code to search for function
	address when no .plt entry is found.

2010-04-16  Stan Shebs  <stan@codesourcery.com>

	* tracepoint.c (trace_variable_command): Run a cleanup.

2010-04-16  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-lang.c (pascal_one_char): Do not restrict C to 0..255 range.

2010-04-16  Pierre Muller  <muller@ics.u-strasbg.fr>

	Support for Windows OS Thread Information Block.
	* NEWS: Document new feature.
	* remote.c (PACKET_qGetTIBAddr): New enum element.
	(remote_get_tib_address): New function.
	(init_remote_ops): Set to_get_tib_address field
	to remote_get_tib_address.
	(_initialize_remote): Add add_packet_config_cmd
	for PACKET_qGetTIBAddr.
	* target.c (update_current_target): Set default value for
	new to_get_tib_address field.
	* target.h (target_ops): New field to_get_tib_address.
	(target_get_tib_address): New macro.
	* windows-nat.c (thread_info): Add thread_local_base field.
	(windows_add_thread): Add tlb argument of type 'void *'.
	(fake_create_process): Adapt windows_add_thread call.
	(get_windows_debug_event): Idem.
	(windows_get_tib_address): New function.
	(init_windows_ops): Set to_get_tib_address field
	to remote_get_tib_address.
	(_initialize_windows_nat): Replace info_w32_cmdlist
	initialization by a call to init_w32_command_list.
	(info_w32_command, info_w32_cmdlist): Removed from here...
	to windows-tdep.c file.
	* windows-tdep.h (info_w32_cmdlist): Declare.
	(init_w32_command_list): New external function
	declaration.
	* windows-tdep.c: Add several headers.
	(info_w32_cmdlist): to here, made global.
	(thread_information_32): New struct.
	(thread_information_64): New struct.
	(TIB_NAME): New char array.
	(MAX_TIB32, MAX_TIB64, FULL_TIB_SIZE): New constants.
	(maint_display_all_tib): New static variable.
	(windows_get_tlb_type): New function.
	(tlb_value_read, tlb_value_write): New functions.
	(tlb_value_funcs): New static struct.
	(tlb_make_value): New function.
	(display_one_tib): New function.
	(display_tib): New function.
	(show_maint_show_all_tib):New function.
	(info_w32_command): Moved from windows-nat.c.
	(init_w32_command_list): New function.
	(_initialize_windows_tdep): New function.
	New "maint set/show show-all-tib" command
	New "$_tlb" internal variable.

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

	* tui/tui-regs.c (tui_display_register): Add comment about
	a couple of casts.
	* tui/tui-stack.c (tui_show_locator_content): Ditto.

2010-04-15  Stan Shebs  <stan@codesourcery.com>

	* frame.c: Include tracepoint.h.
	(get_current_frame): Allow a trace frame to be an alternate source
	of stack frame data.
	* tracepoint.c (tfind_1): Don't try to get current stack frame if
	it won't succeed.

2010-04-15  Pedro Alves  <pedro@codesourcery.com>

	* ppc-linux-tdep.c (bsd_uthread_solib_loaded): Always pass 0 for
	flags.
	* solib-spu.c (spu_solib_loaded): Always pass 0 for flags.

2010-04-15  Doug Evans  <dje@google.com>

	* NEWS: Add entry for python program space support.
	* Makefile.in (SUBDIR_PYTHON_OBS): Add py-progspace.o.
	(SUBDIR_PYTHON_SRCS): Add py-progspace.c.
	(py-progspace.o): New rule.
	* python/py-prettyprint.c (find_pretty_printer_from_objfiles): New
	function.
	(find_pretty_printer_from_progspace): New function.
	(find_pretty_printer_from_gdb): New function.
	(find_pretty_printer): Rewrite.
	* python/py-progspace.c: New file.
	* python/python-internal.h (program_space): Add forward decl.
	(pspace_to_pspace_object, pspy_get_printers): Declare.
	(gdbpy_initialize_pspace): Declare.
	* python/python.c: #include "progspace.h".
	(gdbpy_get_current_progspace, gdbpy_progspaces): New functions.
	(_initialize_python): Call gdbpy_initialize_pspace.
	(GdbMethods): Add current_progspace, progspaces.

	Add -s option to source command.
	* NEWS: Document new option.
	* cli/cli-cmds.c (find_and_open_script): Add function comment.
	Delete from_tty and cleanupp args.  Split filep arg into file and
	full_pathp.  New arg search_path.
	(source_script_from_stream): New function.
	(source_script_with_search): New function.
	(source_script): Rewrite.
	(source_command): Parse "-s" option.
	(init_cli_cmds): Add "-s" docs to source command help, and reformat.
	* python/python.c (source_python_script): Make file arg a const char *.
	Don't call fclose, leave for caller.
	* python/python.h (source_python_script): Update.

2010-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
	    Pedro Alves  <pedro@codesourcery.com>

	Avoid rereading shared libraries that haven't changed.

	* solib.c (free_so_symbols): New function, from ...
	(free_so): ... here.  Call it.
	(solib_read_symbols): Don't warn here if symbols have already been
	loaded.
	(solib_add): Warn here instead, if a pattern was specified.
	(reload_shared_libraries_1): New.
	(reload_shared_libraries): Rewrite to not fetch the library list.

2010-04-14  Doug Evans  <dje@google.com>

	* source.c (openp): Strip DOS drive letter if present before
	concatenating string to search path.

2010-04-14  Pedro Alves  <pedro@codesourcery.com>

	* objfiles.h (gdb_bfd_close_or_warn): Declare.
	* objfiles.c (gdb_bfd_close_or_warn): New.
	* corelow.c: Include objfiles.h
	(core_close): Use gdb_bfd_close_or_warn.
	* elfread.c (build_id_verify): Ditto.
	* exec.c (exec_close, exec_close_1): Ditto.

2010-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
	    Pedro Alves  <pedro@codesourcery.com>

	Group errors for many missing shared libraries.

	* solist.h (struct so_list): Remove from_tty.
	* solib.c (solib_bfd_open): Return NULL if we failed to open a BFD.
	(solib_map_sections): Take so_list argument.  Return 0 if we
	failed to open a BFD.  Add target sections here.
	(symbol_add_stub): Delete.
	(solib_read_symbols): Inline symbol_add_stub.  Use current flags,
	not from_tty copied from the so_list.  Don't warn a second time
	for a missing library.
	(update_solib_list): Don't save from_tty.  Use TRY_CATCH.  Do not
	add to the section table here.  Print out a single warning for all
	missing libraries.
	* bsd-uthread.c (bsd_uthread_solib_loaded): Always pass 0 for
	flags.

2010-04-14  Phil Muldoon  <pmuldoon@redhat.com>

	* python/py-block.c (gdbpy_block_for_pc): Use i8n to encompass
	error/warning messages.  Capitalize and use complete sentences.
	(blpy_block_syms_iternext): Likewise.
	* python/py-cmd.c (parse_command_name, cmdpy_init): Likewise.
	* python/py-frame.c (FRAPY_REQUIRE_VALID, frapy_block)
	(frame_info_to_frame_object, frapy_read_var)
	(gdbpy_frame_stop_reason_string): Likewise.
	* python/py-lazy-string.c (stpy_convert_to_value)
	(gdbpy_create_lazy_string_object): Likewise.
	* python/py-objfile.c (objfpy_set_printers): Likewise.
	* python/py-prettyprint.c (gdbpy_default_visualizer): Likewise.
	* python/python.c (parameter_to_python): Likewise.
	* python/py-type.c (typy_range, typy_target): Likewise.
	* python/py-value.c (valpy_cast, valpy_length, valpy_getitem)
	(valpy_richcompare, valpy_int, valpy_long, valpy_float): Likewise.


2010-04-14  Phil Muldoon  <pmuldoon@redhat.com>

	PR python/11381

	* python/py-prettyprint.c (pretty_print_one_value): Test for
	Py_None.
	(print_string_repr): Test for Py_None.  Set flags accordingly.
	Return value depending on return type.
	(print_children): Take a value indicating whether data was printed
	before this function was called.  Alter output accordingly.
	(apply_val_pretty_printer): Capture return value from
	print_string_repr and pass to print_children.

2010-04-13  Mark Kettenis  <kettenis@gnu.org>

	PR corefiles/11481
	* i386-linux-tdep.c (i386_linux_regset_sections): Remove extended
	register note sections.
	(i386_linux_sse_regset_sections, i386_linux_avx_regset_sections):
	New variables.
	(i386_linux_init_abi): Install list of supported register note
	sections that matches the target description.

2010-04-13  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (remote_get_noisy_reply): Don't error out on empty
	replies.
	(remote_start_remote): Update and merge tracepoints and trace
	state variables as long as the target supports tracepoints.
	(remote_trace_init): Fix prototype.
	(remote_download_trace_state_variable): Validate reply.
	(remote_trace_set_readonly_regions): Fix prototype.
	(remote_trace_start): Fix prototype.  Check for empty reply.
	(remote_get_trace_status): Small cleanup.
	(remote_trace_stop): Fix prototype.  Check for empty reply.
	(remote_trace_find): Check for empty reply.
	(remote_save_trace_data): Validate reply.
	(remote_set_disconnected_tracing): Check for empty reply, and
	validate reply.
	(remote_set_circular_trace_buffer): Ditto.

2010-04-13  Pierre Muller  <muller@ics.u-strasbg.fr>

	Suppress unused value warning during compilation.
	* tui/tui-regs.c (tui_display_register): Cast wstandout and wstandend
	calls to void.
	* tui/tui-stack.c (tui_show_locator_content): Likewise.

2010-04-12  Stan Shebs  <stan@codesourcery.com>

	* tracepoint.c (tfile_xfer_partial): Check read result.

2010-04-12  Mike Frysinger  <vapier@gentoo.org>

	* remote-m32r-sdi.c (m32r_files_info): Add const to local "file" var.
	* remote-sim.c (gdbsim_files_info): Likewise.

2010-04-12  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>

	* arm-tdep.h (gdb_regnum): Add ARM_FPSCR_REGNUM
	* arm-linux-nat.c (arm_linux_vfp_register_count): New
	variable.
	(fetch_vfp_registers): New function to fetch VFP registers.
	(store_vfp_registers): New function to store VFP registers.
	(arm_linux_fetch_inferior_registers): Add support for VFP
	registers.
	(arm_linux_store_inferior_registers): Likewise.
	(arm_linux_read_description): Likewise.
	(_initialize_arm_linux_nat): Delay initialising iWMMX tdesc
	until we need it.

2010-04-11  H.J. Lu  <hongjiu.lu@intel.com>

	* amd64-tdep.c (amd64_supply_xstateregset): Remove the unused
	tdep.
	(amd64_collect_xstateregset): Likewise.

2010-04-09  Stan Shebs  <stan@codesourcery.com>

	* tracepoint.c (trace_status_mi): Report frames created.

	* tracepoint.c (trace_dump_command): Include default-collect
	expressions.

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

	* symtab.c (find_function_start_sal): Never return SAL pointing
	before function start address, even if line info is missing.

2010-04-09  Pedro Alves  <pedro@codesourcery.com>

	* NEWS: Mention tracepoints support.

2010-04-09  Pedro Alves  <pedro@codesourcery.com>

	* tracepoint.c (trace_status_mi): Report disconnected tracing and
	circular trace buffer statuses.

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

	* config/djgpp/fnchange.lst: Fix typo in translations for
	symbol-without-target_section.exp and symbol-without-target_section.c.

2010-04-09  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (condition_command): Pass condition expression to
	set_breakpoint_condition stripped from breakpoint number.

2010-04-09  Phil Muldoon  <pmuldoon@redhat.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>
	    Tom Tromey  <tromey@redhat.com>

	* breakpoint.c (condition_command): Simplify.  Move condition
	setting code to ...
	(set_breakpoint_condition): ... here.  New function.
	* breakpoint.h  (set_breakpoint_condition): Declare.
	* Makefile.in (SUBDIR_PYTHON_OBS): Add py-breakpoint.
	(SUBDIR_PYTHON_SRCS): Likewise.
	(py-breakpoint.o): New rule.
	* python/py-breakpoint.c: New file.
	* python/python-internal.h (gdbpy_breakpoints)
	(gdbpy_initialize_breakpoints): Declare.
	(GDB_PY_SET_HANDLE_EXCEPTION) Define.

2010-04-09  Pedro Alves  <pedro@codesourcery.com>

	* regformats/regdat.sh: Include server.h.  Don't include
	regcache.h.

2010-04-08  Stan Shebs  <stan@codesourcery.com>
	    Pedro Alves  <pedro@codesourcery.com>

	* tracepoint.h (struct trace_status): New fields disconnected_tracing
	and circular_buffer.
	(disconnect_tracing): Rename from disconnect_or_stop_tracing.
	* tracepoint.c (trace_status_command): Display target's status for
	disconnected tracing and circular buffer.
	(disconnect_tracing): Rename from disconnect_or_stop_tracing, add
	query for non-disconnected-tracing case, remove the stop_tracing
	call.
	(tfile_open): Clear disconnected and circular buffer status.
	(trace_save): Save disconnected and circular buffer status.
	(parse_trace_status): Parse disconnected and circular buffer status,
	also recognize disconnected as a stop reason.
	* remote.c (remote_set_disconnected_tracing): Only set
	QTDisconnected if the remote end supports disconnected tracing.
	Warn otherwise, if trying to enable disconnected tracing.
	* infcmd.c (detach_command): Update disconnect_tracing call.
	* cli/cli-cmds.c (quit_command): Ditto.

2010-04-08  H.J. Lu  <hongjiu.lu@intel.com>

	* i387-tdep.c (i387_collect_xsave): Replace abort with
	internal_error.

2010-04-08  Stan Shebs  <stan@codesourcery.com>

	* breakpoint.c (default_collect_info): New function.
	(breakpoints_info): Call it.
	(maintenance_info_breakpoints): Ditto.
	(tracepoints_info): Ditto.

2010-04-08  H.J. Lu  <hongjiu.lu@intel.com>

	* i387-tdep.c (i387_collect_xsave): Re-indent.

2010-04-08  H.J. Lu  <hongjiu.lu@intel.com>

	* i386-linux-nat.c (have_ptrace_getfpxregs): Initialize to -1
	if HAVE_PTRACE_GETFPXREGS is defined.
	(i386_linux_read_description): Set have_ptrace_getfpxregs and
	have_ptrace_getregset to 0 if ptrace PTRACE_GETFPXREGS failed.

	* i386-linux-tdep.c: Include "features/i386/i386-mmx-linux.c"
	(i386_linux_core_read_description): Return tdesc_i386_mmx_linux
	if .reg-xfp section doesn't exist.
	(_initialize_i386_linux_tdep): Call initialize_tdesc_i386_mmx_linux.

	* i386-linux-tdep.h (tdesc_i386_mmx_linux): New.

	* i386-tdep.c: Include "features/i386/i386-mmx.c".
	(i386_go32_init_abi): Set tdesc to tdesc_i386_mmx.
	(i386_validate_tdesc_p): Make org.gnu.gdb.i386.sse optional.  Set
	xcr0 to I386_XSTATE_X87_MASK if SSE isn't available.
	(i386_gdbarch_init): Update comments.
	(_initialize_i386_tdep): Call initialize_tdesc_i386_mmx.

	* common/i386-xstate.h (I386_XSTATE_X87_MASK): New.

	* config/djgpp/fnchange.lst: Add i386 MMX XML files.

	* features/Makefile (i386/i386-mmx-expedite): New.
	(i386/i386-mmx-linux-expedite): Likewise.
	($(outdir)/i386/i386-mmx.dat): Likewise.
	($(outdir)/i386/i386-mmx-linux.dat): Likewise.

	* features/i386/i386-mmx-linux.c: New.
	* features/i386/i386-mmx-linux.xml: Likewise.
	* features/i386/i386-mmx.c: Likewise.
	* features/i386/i386-mmx.xml: Likewise.
	* regformats/i386/i386-mmx-linux.dat: Likewise.
	* regformats/i386/i386-mmx.dat: Likewise.

	* features/Makefile (WHICH): Add i386/i386-mmx and
	i386/i386-mmx-linux.

2010-04-08  Doug Evans  <dje@google.com>

	* source.c (openp): Skip $cdir in PATH.

2010-04-08  Phil Muldoon  <pmuldoon@redhat.com>

	PR python/11417
	* python/py-lazy-string.c (stpy_convert_to_value): Check for
	a NULL address.
	(gdbpy_create_lazy_string_object): Allow strings with a NULL
	address and a zero length.

2010-04-08  Hui Zhu  <teawater@gmail.com>

	* i386-tdep.c (i386_process_record): Add support for insn
	rdtsc.

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

	* python/python.c (source_python_script): Use ensure_python_env
	to prepare environment for script.

2010-04-07  H.J. Lu  <hongjiu.lu@intel.com>

	* amd64-linux-nat.c: Include "regset.h", "elf/common.h",
	<sys/uio.h> and "i386-xstate.h".
	(PTRACE_GETREGSET): New.
	(PTRACE_SETREGSET): Likewise.
	(have_ptrace_getregset): Likewise.
	(amd64_linux_gregset64_reg_offset): Include 16 upper YMM
	registers.
	(amd64_linux_gregset32_reg_offset): Include 8 upper YMM
	registers.
	(amd64_linux_fetch_inferior_registers): Support PTRACE_GETFPREGS.
	(amd64_linux_store_inferior_registers): Likewise.
	(amd64_linux_read_description): Check and enable AVX target
	descriptions.

	* amd64-linux-tdep.c: Include "regset.h", "i386-linux-tdep.h"
	and "features/i386/amd64-avx-linux.c".
	(amd64_linux_regset_sections): New.
	(amd64_linux_core_read_description): Check and enable AVX
	target description.
	(amd64_linux_init_abi): Set xsave_xcr0_offset.  Call
	set_gdbarch_core_regset_sections.
	(_initialize_amd64_linux_tdep): Call
	initialize_tdesc_amd64_avx_linux.

	* amd64-linux-tdep.h (AMD64_LINUX_ORIG_RAX_REGNUM): Replace
	AMD64_MXCSR_REGNUM with AMD64_YMM15H_REGNUM.
	(tdesc_amd64_avx_linux): New.
	(amd64_linux_update_xstateregset): Likewise.

	* amd64-tdep.c: Include "features/i386/amd64-avx.c".
	(amd64_ymm_names): New.
	(amd64_ymmh_names): Likewise.
	(amd64_register_name): Likewise.
	(amd64_supply_xstateregset): Likewise.
	(amd64_collect_xstateregset): Likewise.
	(amd64_supply_xsave): Likewise.
	(amd64_collect_xsave): Likewise.
	(AMD64_NUM_REGS): Removed.
	(amd64_dwarf_reg_to_regnum): Return %ymmN register number for
	%xmmN if AVX is available.
	(amd64_pseudo_register_name): Support pseudo YMM registers.
	(amd64_regset_from_core_section): Support .reg-xstate section.
	(amd64_init_abi): Set ymmh_register_names, num_ymm_regs
	and ymm0h_regnum.  Call set_gdbarch_register_name.
	(amd64_init_abi): Call initialize_tdesc_amd64_avx.

	* amd64-tdep.h (amd64_regnum): Add AMD64_YMM0H_REGNUM and
	AMD64_YMM15H_REGNUM.
	(AMD64_NUM_REGS): New.
	(amd64_supply_xsave): Likewise.
	(amd64_collect_xsave): Likewise.
	(amd64_register_name): Removed.
	(amd64_register_type): Likewise.

2010-04-07  H.J. Lu  <hongjiu.lu@intel.com>

	* i387-tdep.c: Include "i386-xstate.h".
	(XSAVE_XSTATE_BV_ADDR): New.
	(xsave_avxh_offset): Likewise.
	(XSAVE_AVXH_ADDR): Likewise.
	(i387_supply_xsave): Likewise.
	(i387_collect_xsave): Likewise.

	* i387-tdep.h (I387_NUM_YMM_REGS): New.
	(I387_YMM0H_REGNUM): Likewise.
	(I387_YMMENDH_REGNUM): Likewise.
	(i387_supply_xsave): Likewise.
	(i387_collect_xsave): Likewise.

2010-04-07  H.J. Lu  <hongjiu.lu@intel.com>

	* i386-linux-nat.c: Include "regset.h", "elf/common.h",
	<sys/uio.h> and "i386-xstate.h".
	(PTRACE_GETREGSET): New.
	(PTRACE_SETREGSET): Likewise.
	(fetch_xstateregs): Likewise.
	(store_xstateregs): Likewise.
	(GETXSTATEREGS_SUPPLIES): Likewise.
	(regmap): Include 8 upper YMM registers.
	(i386_linux_fetch_inferior_registers): Support XSAVE extended
	state.
	(i386_linux_store_inferior_registers): Likewise.
	(i386_linux_read_description): Check and enable AVX target
	descriptions.

	* i386-linux-tdep.c: Include "regset.h", "i387-tdep.h",
	"i386-xstate.h" and "features/i386/i386-avx-linux.c".
	(i386_linux_regset_sections): Add ".reg-xstate".
	(i386_linux_gregset_reg_offset): Include 8 upper YMM registers.
	(i386_linux_core_read_xcr0): New.
	(i386_linux_core_read_description): Check and enable AVX target
	description.
	(i386_linux_init_abi): Set xsave_xcr0_offset.
	(_initialize_i386_linux_tdep): Call
	initialize_tdesc_i386_avx_linux.

	* i386-linux-tdep.h (I386_LINUX_ORIG_EAX_REGNUM): Replace
	I386_SSE_NUM_REGS with I386_AVX_NUM_REGS.
	(i386_linux_core_read_xcr0): New.
	(tdesc_i386_avx_linux): Likewise.
	(I386_LINUX_XSAVE_XCR0_OFFSET): Likewise.

	* i386-tdep.c: Include "i386-xstate.h" and
	"features/i386/i386-avx.c".
	(i386_ymm_names): New.
	(i386_ymmh_names): Likewise.
	(i386_ymmh_regnum_p): Likewise.
	(i386_ymm_regnum_p): Likewise.
	(i386_xmm_regnum_p): Likewise.
	(i386_register_name): Likewise.
	(i386_ymm_type): Likewise.
	(i386_supply_xstateregset): Likewise.
	(i386_collect_xstateregset): Likewise.
	(i386_sse_regnum_p): Removed.
	(i386_pseudo_register_name): Support pseudo YMM registers.
	(i386_pseudo_register_type): Likewise.
	(i386_pseudo_register_read): Likewise.
	(i386_pseudo_register_write): Likewise.
	(i386_dbx_reg_to_regnum): Return %ymmN register number for
	%xmmN if AVX is available.
	(i386_regset_from_core_section): Support .reg-xstate section.
	(i386_register_reggroup_p): Supper upper YMM and YMM registers.
	(i386_process_record): Replace i386_sse_regnum_p with
	i386_xmm_regnum_p.
	(i386_validate_tdesc_p): Support org.gnu.gdb.i386.avx feature.
	Set ymmh_register_names, num_ymm_regs, ymm0h_regnum and xcr0.
	(i386_gdbarch_init): Set xstateregset.  Set xsave_xcr0_offset.
	Call set_gdbarch_register_name.  Replace I386_SSE_NUM_REGS with
	I386_AVX_NUM_REGS.  Set ymmh_register_names, ymm0h_regnum and
	num_ymm_regs.  Add num_ymm_regs to set_gdbarch_num_pseudo_regs.
	Set ymm0_regnum.
	(_initialize_i386_tdep): Call initialize_tdesc_i386_avx.

	* i386-tdep.h (gdbarch_tdep): Add xstateregset, ymm0_regnum,
	xcr0, xsave_xcr0_offset, ymm0h_regnum, ymmh_register_names and
	i386_ymm_type.
	(i386_regnum): Add I386_YMM0H_REGNUM, and I386_YMM7H_REGNUM.
	(I386_AVX_NUM_REGS): New.
	(i386_xmm_regnum_p): Likewise.
	(i386_ymm_regnum_p): Likewise.
	(i386_ymmh_regnum_p): Likewise.

	* common/i386-xstate.h: New.

2010-04-07  H.J. Lu  <hongjiu.lu@intel.com>

	* config/djgpp/fnchange.lst: Add x86 AVX XML files.

	* features/Makefile (WHICH): Add i386/i386-avx,
	i386/i386-avx-linux, i386/x86-64-avx and i386/x86-64-avx-linux.
	(i386/i386-avx-expedite): New.
	(i386/i386-avx-linux-expedite): Likewise.
	(i386/x86-64-avx-expedite):Likewise.
	(i386/x86-64-avx-linux-expedite): Likewise.
	($(outdir)/i386/i386-avx.dat): New dependency.
	($(outdir)/i386/i386-avx-linux.dat): Likewise.
	($(outdir)/i386/x86-avx-64.dat): Likewise.
	($(outdir)/i386/x86-64-avx-linux.dat): Likewise.

	* features/i386/32bit-avx.xml: New.
	* features/i386/64bit-avx.xml: Likewise.
	* features/i386/i386-avx-linux.c: Likewise.
	* features/i386/i386-avx-linux.xml: Likewise.
	* features/i386/i386-avx.c: Likewise.
	* features/i386/i386-avx.xml: Likewise.
	* features/i386/x86-64-avx-linux.c: Likewise.
	* features/i386/x86-64-avx-linux.xml: Likewise.
	* features/i386/x86-64-avx.c: Likewise.
	* features/i386/x86-64-avx.xml: Likewise.
	* regformats/i386/i386-avx-linux.dat: Likewise.
	* regformats/i386/i386-avx.dat: Likewise.
	* regformats/i386/x86-64-avx-linux.dat: Likewise.
	* regformats/i386/x86-64-avx.dat: Likewise.

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

	* top.c (source_file_name): Make const char *.
	* top.h (source_file_name): Update.
	* cli/cli-script.c (source_cleanup_lines_args): Make old_file
	const char *.
	(script_from_file): Change `file' arg to const char *.
	* cli/cli-script.h (script_from_file): Update.

2010-04-06  Doug Evans  <dje@google.com>

	* cli/cli-cmds.c (source_command): Run cleanups.

2010-04-06  Stan Shebs  <stan@codesourcery.com>

	* defs.h (char_ptr): Move typedef here from...
	* ada-lang.c (char_ptr): Remove.
	* charset.c (char_ptr): Remove.
	* tracepoint.h (struct uploaded_string): Remove.
	(struct uploaded_tp): Use vectors for string arrays.
	* tracepoint.c (trace_save): Use vectors of actions.
	(parse_tracepoint_definition): Ditto.
	(get_uploaded_tp): Clear vectors.
	* breakpoint.c (create_tracepoint_from_upload): Use vectors.
	(next_cmd): Change to an int.
	(read_next_cmd): Use vector of command strings.

2010-04-06  Doug Evans  <dje@google.com>

	* top.h (source_script, cd_command): Delete.
	* main.c: #include "cli/cli-cmds.h"

2010-04-06  Kevin Buettner  <kevinb@redhat.com>

	* m32c-tdep.c (make_types): When calling `arch_type', pass size of
	type in bytes, not bits.

2010-04-06  Pierre Muller  <muller@ics.u-strasbg.fr>

	* stabsread.c (define_symbol): Add support for char
	and string constants.

2010-04-06  Pierre Muller  <muller@ics.u-strasbg.fr>

	Remove remaining "%ll" uses.
	* go32-nat.c (go32_pte_for_address): Replace "0x%llx" using
	hex_string call.
	* rs6000-nat.c (rs6000_ptrace64): Idem.
	* solib-pa64.c (pa64_current_sos): Idem.
	* solib-spu.c (spu_current_sos): Idem.
	* linux-nat.c (linux_nat_find_memory_regions): Replace "%lld" using
	plongest call.
	* nto-procfs.c (procfs_meminfo): Replace "0x%016llx" using
	phex (VAR, 8) call.
	* sh64-tdep.c (sh64_show_media_regs): Idem.

2010-04-05  Stan Shebs  <stan@codesourcery.com>

	* tracepoint.c: Include gdbcore.h.
	(tfile_xfer_partial): Return partial results, also try reading
	from executable.
	(tfile_has_all_memory): New function.
	(init_tfile_ops): Use it.

2010-04-05  Sergio Durigan Junior  <sergiodj@redhat.com>

	PR gdb/10736:
	* xml-syscall.c (my_gdb_datadir): New variable to keep track of
	the changes in data-directory.
	(init_sysinfo): Reload the syscall XML file if the data-directory
	has changed.

2010-04-05  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup.
	* breakpoint.c (bpstat_stop_status): Use bpstat_causes_stop.

2010-04-04  Stan Shebs  <stan@codesourcery.com>
	    Nathan Sidwell  <nathan@codesourcery.com>

	* breakpoint.c (breakpoint_1): Add filter argument, return number of
	breakpoints printed.
	(is_hardware_watchpoint): Make argument const.
	(is_watchpoint): Ditto.
	(is_tracepoint): Merge of tracepoint_type and breakpoint_is_tracepoint,
	use it everywhere.
	(breakpoints_info): Pass NULL to breakpoint_1.
	(maintenance_info_breakpoints): Ditto.
	(watchpoints_info): New function.
	(tracepoints_info): Use breakpoint_1 filter.
	(set_ignore_count): Warn that tracepoint ignore count will be ignored.
	(_initialize_breakpoint): Make "info watchpoints" its own command.
	* breakpoint.h (is_tracepoint): Rename from breakpoint_is_tracepoint.
	* mi/mi-cmd-break.c (mi_cmd_break_commands): Use is_tracepoint.

2010-04-04  Stan Shebs  <stan@codesourcery.com>

	* tracepoint.c (tfile_fetch_registers): Add fallback case.

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

	* infcmd.c (run_command_1): Call proceed with regcache_read_pc address.
	* config/djgpp/fnchange.lst: Add translation for break-entry.exp.

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

	* breakpoint.c (bpstat_find_step_resume_breakpoint): Remove.
	* breakpoint.h (bpstat_find_step_resume_breakpoint): Remove.

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

	* dwarf2read.c (read_namespace_type): Use common "return set_die_type"
	code form.

2010-04-02  Hui Zhu  <teawater@gmail.com>

	* i386-tdep.c (OT_DQUAD): New enum.
	(i386_process_record): Add code for MMX, 3DNow!, SSE, SSE2,
	SSE3, SSSE3 and SSE4.

2010-04-02  Hui Zhu  <teawater@gmail.com>

	* i386-tdep.c (i386_record_lea_modrm_addr): Remove useless
	"*addr = 0".

2010-04-02  Pedro Alves  <pedro@codesourcery.com>

	* tracepoint.c (trace_dump_actions): New, factored out from
	trace_dump_command, and adjusted to recurse into while-stepping's
	action list.
	(trace_dump_command): Use it.

2010-04-02  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.h (struct counted_command_line): Moved definition to
	breakpoint.c, and forward declare.
	(breakpoint_commands): Declare.
	* breakpoint.c (struct counted_command_line): Moved here.
	(breakpoint_commands): New.
	* tracepoint.c (encode_actions): Use breakpoint_commands.
	* remote.c (remote_download_tracepoint): Ditto.

2010-04-01  H.J. Lu  <hongjiu.lu@intel.com>

	* remote.c (remote_parse_stop_reply): Use hex_string instead
	of phex_nz for error.

2010-04-01  Stan Shebs  <stan@codesourcery.com>
	    Nathan Sidwell  <nathan@codesourcery.com>

	* tracepoint.h (enum actionline_type): Remove.
	(validate_actionline): Change return to void.
	* tracepoint.c (report_agent_reqs_errors): New function.
	(validate_actionline): Call it, change return to void, report errors
	more consistently.
	(collect_symbol): Call report_agent_reqs_errors.
	(encode_actions_1): Ditto.
	(encode_actions): Don't expect a result from validate_actionline.

2010-04-01  Stan Shebs  <stan@codesourcery.com>

	* tracepoint.c (trace_start_command): Confirm if trace is running.
	(trace_stop_command): Error if trace not running.

2010-04-01  H.J. Lu  <hongjiu.lu@intel.com>

	* amd64-tdep.c (amd64_byte_names): Add "ah", "bh", "ch", "dh".
	(AMD64_NUM_LOWER_BYTE_REGS): New.
	(amd64_pseudo_register_read): Handle "ah", "bh", "ch", "dh".
	(amd64_pseudo_register_write): Likewise.
	(amd64_init_abi): Set num_byte_regs to 20.

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

	* breakpoint.c (multi_start, multi_end, last_was_multi): Delete.
	(prev_breakpoint_count): New.
	(set_breakpoint_count): Adjust.
	(rbreak_start_breakpoint_count): New.
	(start_rbreak_breakpoints): Adjust.
	(end_rbreak_breakpoints): Adjust.
	(struct commands_info) <arg>: New field.
	(do_map_commands_command): Tweak output to include breakpoint spec
	range.
	(commands_command_1): Adjust.  Avoid setting an xfree cleanup if
	ARG was empty on entry.  Set INFO's arg.
	(create_breakpoint): Adjust.

	* NEWS: Clarify `commands' changes.

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

	* tracepoint.c: Include stack.h.
	(struct add_local_symbols_data): New.
	(do_collect_symbol): New.
	(add_local_symbols): Rewrite using iterate_over_block_arg_vars and
	iterate_over_block_local_vars.
	* stack.c (print_block_frame_locals): Rewrite as ...
	(iterate_over_block_locals): ... this.  Take a callback function
	pointer and generic data pointer, and call that instead of
	print_variable_and_value.
	(struct print_variable_and_value_data): New.
	(do_print_variable_and_value): New.
	(iterate_over_block_local_vars): New, abstracted out from
	print_frame_local_vars.
	(print_frame_local_vars): Rewrite using
	iterate_over_block_local_vars.
	(iterate_over_block_arg_vars): New, abstracted out from
	print_frame_arg_vars.
	(print_frame_arg_vars): Rewrite using iterate_over_block_arg_vars.
	* stack.h (iterate_over_block_arg_local_vars_cb): New typedef.
	(iterate_over_block_arg_vars, iterate_over_block_local_vars): Declare.

2010-03-31  Richard Earnshaw  <rearnsha@arm.com>

	* arm-tdep.c (thumb_get_next_pc_raw): Correctly detect TBH
	instructions.  Use the PC+4 if the base of the TBB or TBH is the
	PC register.

2010-03-31  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix crash on reading wrong function declaration DWARF.
	* dwarf2read.c (read_subroutine_type): New variable void_type.
	Pre-fill all TYPE_FIELD_TYPEs.  Move nparams and iparams initialization
	more close to their use.

2010-03-31  Stan Shebs  <stan@codesourcery.com>

	* breakpoint.c (tracepoint_save_command): Include variables,
	conditionals, tracepoint types, and default-collect.
	* tracepoint.c (save_trace_state_variables): New function.
	* tracepoint.h (save_trace_state_variables): Declare it.

2010-03-31  Pierre Muller  <muller@ics.u-strasbg.fr>

	* remote.c (end_thread): ARI fix: Use xstrdup instead of strdup.

2010-03-30  Keith Seitz  <keiths@redhat.com>

	* c-typeprint.c (c_type_print_args): Don't print "void"
	for java, regardless of whether it is TYPE_PROTOTYPED.
	Use the passed-in language instead of current_language.
	(c_type_print_varspec_suffix): Use current_language instead
	of assuming language_c.
	* jv-typeprint.c (java_type_print_base): (bz 9320) Strip off
	any return type specifier from the physname.

2010-03-30  Pedro Alves  <pedro@codesourcery.com>

	* tui/tui-interp.c (tui_is_toplevel): New.
	(tui_init): Set it.
	(tui_allowed_p): New.
	* tui/tui.c (tui_enable): Check if the TUI is allowed before
	enabling it.
	* tui/tui.h (tui_allowed_p): Declare.

2010-03-30  Ozkan Sezer  <sezeroz@gmail.com>

	* serial.h: Include winsock2.h before windows.h.

2010-03-30  H.J. Lu  <hongjiu.lu@intel.com>

	* NEWS: Mention xmlRegisters= in qSupported packet.

	* i386-tdep.c: Include "remote.h".
	(_initialize_i386_tdep): Call register_remote_support_xml.

	* remote.c (remote_support_xml): New.
	(register_remote_support_xml): Likewise.
	(remote_query_supported_append): Likewise.
	(remote_query_supported): Support remote_support_xml.

	* remote.h (register_remote_support_xml): New.

2010-03-29  Stan Shebs  <stan@codesourcery.com>

	* tracepoint.c (trace_find_line_command): Remove dead code.

	* tracepoint.h (struct uploaded_string): New struct.
	(struct uploaded_tp): New fields for source strings.
	* breakpoint.c (this_utp, next_cmd): New globals.
	(read_uploaded_action): New function.
	(create_tracepoint_from_upload): Fill in more parts
	of a tracepoint.
	* tracepoint.c (encode_source_string): New function.
	(trace_save): Write out source strings, fix error checks.
	(parse_tracepoint_definition): Add source string parsing.
	* remote.c (PACKET_TracepointSource): New packet type.
	(remote_download_command_source): New function.
	(remote_download_tracepoint): Download source pieces also.
	(_initialize_remote): Add packet config command.

	* tracepoint.c (collect_symbol): Send LOC_UNRESOLVED symbols to
	expression handler.

	* tracepoint.c (start_tracing): Check tracepoints before sending
	commands to target, don't start if all tracepoints disabled.

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

	* cli/cli-script.c (process_next_line): Handle 'stepping'.

2010-03-26  Stan Shebs  <stan@codesourcery.com>

	* tracepoint.c (disconnect_or_stop_tracing): Get out of tfind mode.

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

	* breakpoint.c (commands_command_1): Duplicate 'arg'.

2010-03-26  Ulrich Weigand  <uweigand@de.ibm.com>

	* breakpoint.c (expand_line_sal_maybe): Always call skip_prologue_sal.
	(skip_prologue_sal): Remove local definition.
	(resolve_sal_pc): Remove now unnecessary code.
	* linespec.c (minsym_found): Call skip_prologue_sal.
	* symtab.c (find_function_start_pc): Remove.
	(find_function_start_sal): Extract prologue skipping into ...
	(skip_prologue_sal): ... this new function.  Handle code both
	with and without debug info.  Respect SAL's explicit_pc and
	explicit_line flags.  Inline old find_function_start_pc.
	* symtab.h (find_function_start_pc): Remove.
	(skip_prologue_sal): Add prototype.

2010-03-26  Ulrich Weigand  <uweigand@de.ibm.com>

	* dwarf2read.c (read_func_scope): Also scan specification DIEs
	for DW_TAG_imported_module children.

2010-03-26  Ulrich Weigand  <uweigand@de.ibm.com>

	* dwarf2read.c (dwarf2_name): Work around GCC bugzilla debug/41828 by
	ignoring spurious DW_AT_name attributes for unnamed structs or unions.
	* completer.c (add_struct_fields): Fix inverted logic.

2010-03-26  Ulrich Weigand  <uweigand@de.ibm.com>

	* breakpoint.c (bpstat_clear_actions): Reset bs->commands_left.

2010-03-26  Pedro Alves  <pedro@codesourcery.com>

	* tracepoint.c (current_trace_status): Don't make sure error_desc
	is non-NULL here.
	(parse_trace_status): Release a previous error_desc string, and
	set it to NULL by default.  If stop reason is tracepoint_error,
	make sure error_desc is not left NULL.

2010-03-26  Pedro Alves  <pedro@codesourcery.com>

	* tracepoint.c (trace_save): Remove X from tracepoint error
	description.

2010-03-26  Pedro Alves  <pedro@codesourcery.com>

	* tracepoint.c (parse_trace_status): Don't allow plain strings in
	the terror description.  Don't expect an X prefix.

2010-03-25  Stan Shebs  <stan@codesourcery.com>

	* tracepoint.h (trace_stop_reason): Add tracepoint_error.
	(struct trace_status): New field error_desc.
	* tracepoint.c (stop_reason_names): Add terror.
	(current_trace_status): Ensure non-NULL error description.
	(trace_status_command): Add error report.
	(trace_status_mi): Ditto.
	(trace_save): Add special case for error description.
	(parse_trace_status): Add case for errors.

2010-03-25  Keith Seitz  <keiths@redhat.com>

	* dwarf2read.c (read_subroutine_type): If the compilation unit
	language is Java, mark any formal parameter named "this" as
	artificial (GCC/43521).
	(dwarf2_name): Add special handling for Java constructors.

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

	PR gdb/11327, PR gdb/11328, PR breakpoints/11368:
	* infrun.c (handle_inferior_event): Change initialization of
	stop_stack_dummy.
	(handle_inferior_event): Change assignment to stop_stack_dummy.
	(normal_stop): Update use of stop_stack_dummy.
	(struct inferior_status) <stop_stack_dummy>: Change type.
	* inferior.h (stop_stack_dummy): Update.
	* infcmd.c (stop_stack_dummy): Change type.
	* infcall.c (cleanup_delete_std_terminate_breakpoint): New
	function.
	(call_function_by_hand): Call set_std_terminate_breakpoint.
	Rewrite std::terminate handling.
	* breakpoint.h (enum bptype) <bp_std_terminate,
	bp_std_terminate_master>: New.
	(enum stop_stack_kind): New.
	(struct bpstat_what) <call_dummy>: Change type.
	(set_std_terminate_breakpoint, delete_std_terminate_breakpoint):
	Declare.
	* breakpoint.c (create_std_terminate_master_breakpoint): New
	function.
	(update_breakpoints_after_exec): Handle bp_std_terminate_master.
	Call create_std_terminate_master_breakpoint.
	(print_it_typical): Handle new breakpoint kinds.
	(bpstat_stop_status): Handle bp_std_terminate_master.
	(bpstat_what): Correctly set call_dummy field.  Handle
	bp_std_terminate_master and bp_std_terminate.
	(print_one_breakpoint_location): Update.
	(allocate_bp_location): Update.
	(set_std_terminate_breakpoint): New function.
	(delete_std_terminate_breakpoint): Likewise.
	(create_thread_event_breakpoint): Update.
	(delete_command): Update.
	(breakpoint_re_set_one): Update.
	(breakpoint_re_set): Call create_std_terminate_master_breakpoint.

2010-03-25  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* symfile.c (build_section_addr_info_from_bfd): New.
	(build_section_addr_info_from_objfile): Base it on
	build_section_addr_info_from_bfd.
	(addrs_section_compar, addrs_section_sort): New.
	(addr_info_make_relative): New variables my_cleanup, abfd_addrs,
	addrs_sorted, abfd_addrs_sorted and addrs_to_abfd_addrs.  Build
	addrs_to_abfd_addrs.  Use it for recalculating ADDRS.

2010-03-24  Michael Snyder  <msnyder@localhost.localdomain>

	* elfread.c (find_separate_debug_file_by_buildid):
	Remove unused local variable.

2010-03-24  Tom Tromey  <tromey@redhat.com>

	PR breakpoints/9352:
	* NEWS: Mention changes to `commands' and `rbreak'.
	* symtab.c (do_end_rbreak_breakpoints): New function.
	(rbreak_command): Call start_rbreak_breakpoints; arrange to call
	end_rbreak_breakpoints.
	* breakpoint.c (breakpoint_count, tracepoint_count): Now static.
	(set_breakpoint_count): Likewise.  Clear last_was_multi.
	(multi_start, multi_end, last_was_multi): New globals.
	(start_rbreak_breakpoints, end_rbreak_breakpoints): New
	functions.
	(struct commands_info): New
	(do_map_commands_command): New function.
	(commands_command_1): New function.
	(commands_command): Use it.
	(commands_from_control_command): Likewise.
	(do_delete_breakpoint): New function.
	(delete_command): Use it.
	(map_breakpoint_numbers): Add 'data' argument.  Pass to callback.
	(do_map_disable_breakpoint): New function.
	(disable_command): Use it.
	(do_map_enable_breakpoint): New function.
	(enable_command): Use it.
	(enable_once_breakpoint): Add argument.
	(enable_once_command): Update.
	(enable_delete_breakpoint): Add argument.
	(enable_delete_command): Update.
	(break_command_really): Set last_was_multi when needed.
	(check_tracepoint_command): Fix formatting.
	(validate_commands_for_breakpoint): New function.
	(breakpoint_set_commands): Use it.
	(tracepoint_save_command): Update.
	* breakpoint.h (start_rbreak_breakpoints, end_rbreak_breakpoints):
	Declare.

2010-03-24  Tom Tromey  <tromey@redhat.com>

	* breakpoint.h (struct counted_command_line): New struct.
	(struct breakpoint) <commands>: Change type.
	(struct bpstats) <commands>: Change type.
	<commands_left>: New field.
	* breakpoint.c (alloc_counted_command_line): New function.
	(incref_counted_command_line): Likewise.
	(decref_counted_command_line): Likewise.
	(do_cleanup_counted_command_line): Likewise.
	(make_cleanup_decref_counted_command_line): Likewise.
	(breakpoint_set_commands): Use decref_counted_command_line and
	alloc_counted_command_line.
	(commands_command): Don't error if breakpoint commands are
	executing.
	(commands_from_control_command): Likewise.
	(bpstat_free): Update.
	(bpstat_copy): Likewise.
	(bpstat_clear_actions): Likewise.
	(bpstat_do_actions_1): Likewise.
	(bpstat_stop_status): Likewise.
	(print_one_breakpoint_location): Likewise.
	(delete_breakpoint): Likewise.
	(bpstat_alloc): Initialize new field.
	(tracepoint_save_command): Update.
	* tracepoint.c (encode_actions): Update.
	(trace_dump_command): Update.

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

	* dwarf2-frame.c (dwarf2_frame_find_quirks): Use producer_is_realview.
	* dwarf2read.c (load_full_comp_unit): Read DW_AT_producer.
	(read_structure_type): For RealView, set TYPE_STUB on structures with
	no byte size and no children.
	(read_subroutine_type): Mark functions as prototyped by default.
	* symtab.c (producer_is_realview): New function.
	* symtab.h (expand_line_sal): Fix declaration formatting.
	(producer_is_realview): Declare.

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

	* arm-tdep.c (skip_prologue_function): New function.
	(submask, bit, bits, sbits, BranchDest): Move higher in the file.
	(thumb_analyze_prologue): Document return value.  Recognize more
	Thumb instructions, skippable calls, and some Thumb-2 instructions.
	Add debug output.
	(arm_skip_prologue): Remove call dummy check.  Check the prologue
	for non-GNU compilers.
	(arm_instruction_changes_pc): New function.
	(arm_analyze_prologue): New function, broken out from
	arm_scan_prologue.  Recognize more ARM instructions and skippable
	calls.  Update comments.  Handle NULL cache.  Return the address
	of the first unrecognized instruction.  Do not skip past other
	instructions which change control flow.  Add debug output.
	(arm_scan_prologue): Use arm_analyze_prologue.
	(ARM_PC_32): Delete.
	(shifted_reg_val): Simplify ARM_PC_32 check.

2010-03-24  Vladimir Prus  <vladimir@codesourcery.com>

	* tracepoint.c (tvariables_info_1): Actually compute
	the number of rows in the result.

2010-03-24  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (crc32): Constify `buf' parameter.
	(remote_verify_memory): New, abstracted out from...
	(compare_sections_command): ... this.  Remove hardcoded target
	checks.
	(init_remote_ops): Install remote_verify_memory.
	* target.c (target_verify_memory): New.
	* target.h (struct target_ops) <to_verify_memory>: New field.
	(target_verify_memory): Declare.

2010-03-24  Vladimir Prus  <vladimir@codesourcery.com>

	Implement -trace-save.

	* mi-cmds.h (mi_cmds_trace_save): Declare.
	* mi-cmds.c (mi_cmds): Register -trace-save.
	* mi/mi-main.c (mi_cmd_trace_save): New.
	* remote.c (remote_save_trace_data): Take const parameter.
	* target.h (struct target_ops::to_save_trace_data): Take
	const parameter.
	* target.c (update_current_target): Adjust to the above.
	* tracepoint.c (trave_save): New, extracted from
	(trace_save_command): ...this.
	(tfile_trace_find): Remove message that is unnecessary now
	that 'tfind' reports found frame.
	* tracepoint.h (trace_save): Declare.

2010-03-24  Vladimir Prus  <vladimir@codesourcery.com>

	Implement -trace-find.

	* mi/mi-cmds.c (mi_cmds): Register -trace-find.
	* mi/mi-cmds.h (mi_cmd_trace_find): Declare.
	* mi/mi-main.c (mi_cmd_trace_find): New.
	* target.h (struct target_ops): Document to_trace_find.
	* tracepoint.h (tfind_1): Declare.
	* tracepoint.c (finish_tfind_command): Rename to...
	(tfind_1): ...this.
	* remote.c (remote_trace_find): Return -1 if target say
	there's no frame.  Improve error diagnostics.

2010-03-24  Vladimir Prus  <vladimir@codesourcery.com>

	-trace-define-variable and -trace-list-variables.

	* tracepoint.c (create_trace_state_variable): Make
	private copy of name, as opposed to assuming the
	pointer lives forever.
	(tvariables_info_1): New.
	(tvariables_info): Use the above.
	* tracepoint.h (create_trace_state_variable, tvariables_info_1):
	Declare.
	* mi/mi-cmds.c (mi_cmds): Register -trace-define-variable
	and -trace-list-variables.
	* mi/mi-cmds.h (mi_cmd_trace_define_variable)
	(mi_cmd_trace_list_variables): New.
	* mi/mi-main.c (mi_cmd_trace_define_variable)
	(mi_cmd_trace_list_variables): New.

2010-03-24  Vladimir Prus  <vladimir@codesourcery.com>

	Implement -break-passcount.

	* mi/mi-cmd-break.c (mi_cmd_break_passcount): New.
	* mi/mi-cmds.c (mi_cmds): Register -break-passcount.
	* mi/mi-cmds.h (mi_cmd_break_passcount): Declare.

2010-03-24  Vladimir Prus  <vladimir@codesourcery.com>

	-trace-start/-trace-end/-trace-status.

	* mi/mi-cmds.c (mi_cmds): Register -trace-start, -trace-status
	and -trace-stop.
	* mi/mi-cmds.h (mi_cmd_trace_start, mi_cmd_trace_status)
	(mi_cmd_trace_stop): Declare.
	* mi/mi-main.c (mi_cmd_trace_start, mi_cmd_trace_status)
	(mi_cmd_trace_stop): New.
	* tracepoint.c (start_tracing): New, extracted from...
	(trace_start_command): ...this.
	(trace_status_mi): New.
	* tracepoint.h (struct trace_status): Document
	stopping_tracepoint.
	(start_tracing, stop_tracing, trace_status_mi): Declare.

2010-03-24  Vladimir Prus  <vladimir@codesourcery.com>

	Implement creating tracepoints with -break-insert.

	* mi/mi-cmd-break.c (mi_cmd_break_insert): Handle -a
	to mean that tracepoint should be created.

2010-03-24  Vladimir Prus  <vladimir@codesourcery.com>

	* breakpoint.c (check_no_tracepoint_commands): Use
	current spelling of 'teval'.

2010-03-24  Vladimir Prus  <vladimir@codesourcery.com>

	Unify actions and commands

	* defs.h (read_command_lines, read_command_lines_1): New
	parameters validator and closure.
	* tracepoint.h (struct action_line): Remove.
	* breakpoint.h (struct breakpoint): Remove the 'actions'
	field.
	* defs.h (enum command_control_type): New value
	while_stepping_control.
	(struct command_line): Add comments.
	* breakpoint.c (breakoint_is_tracepoint): New.
	(breakpoint_set_commands): For tracepoints,
	verify the commands are permissible.
	(check_tracepoint_commands): New.
	(commands_command): Require that each new line is validated using
	check_tracepoint_command, if we set commands for a tracepoint.
	(create_tracepoint_from_upload): Likewise.
	(print_one_breakpoint_location): Remove the code to print
	actions specifically.
	(tracepoint_save_command): Relay to print_command_lines.
	* cli/cli-script.c (process_next_line): New parameters validator
	and closure. Handle 'while-stepping'. Call validator if not null.
	(read_command_lines, read_command_lines1): Likewise.
	(recurse_read_control_structure): New parameters validator and
	closure. Handle while_stepping_control.
	(print_command_lines): Handle while-stepping.
	(get_command_line, define_command, document_command): Adjust.
	* remote.c (remote_download_tracepoint): Adjust.
	* tracepoint.c (make_cleanup_free_actions, read_actions)
	(free_actions, do_free_actions_cleanup): Remove.
	(trace_actions_command): Use read_command_lines.
	(validate_actionline): Use error in one place.
	(encode_actions_1): New, extracted from...
	(encode_actions): ...this. Also use cleanups for exception
	safety.
	(trace_dump_command): Adjust.
	* mi/mi-cmd-break (mi_cmd_break_commands): Validate commands if
	it's tracepoint.

2010-03-23  Mike Frysinger  <vapier@gentoo.org>

	* Makefile.in (OPCODES_CFLAGS): Add -I$(OPCODES_SRC)/..

2010-03-22  Stan Shebs  <stan@codesourcery.com>

	* value.c (value_static_field): Be lazy about the field's value.

2010-03-22  Reid Kleckner  <reid@kleckner.net>

	PR gdb/11094
	* breakpoint.c (disable_breakpoints_in_unloaded_shlib): Add
	bp_jit_event.
	(disable_breakpoints_in_shlibs): Likewise.

2010-03-22  Ulrich Weigand  <uweigand@de.ibm.com>

	* dwarf2read.c (partial_die_parent_scope): Work around buggy
	GCC 4.1 debug info generation (GCC PR c++/28460).
	(determine_prefix): Likewise.

2010-03-20  Daniel Jacobowitz  <dan@codesourcery.com>

	* tui/tui-disasm.c (tui_get_begin_asm_address): Default to
	get_current_arch.
	* tui/tui-layout.c (extract_display_start_addr): Likewise.

2010-03-19  Stan Shebs  <stan@codesourcery.com>

	* ax-gdb.c (gen_fetch): Handle bool.
	(gen_usual_unary): Ditto.
	(gen_cast): Ditto.
	(gen_equal): New function.
	(gen_less): New function.
	(gen_expr_binop_rest): Call them, also return integer type from
	logical operations.
	(gen_expr): Ditto.

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

	* jv-lang.c (jv_dynamics_objfile_data_key)
	(jv_type_objfile_data_key): New globals.
	(class_symtab): Move earlier.
	(jv_per_objfile_free): New function.
	(get_dynamics_objfile): Call set_objfile_data.  Add 'gdbarch'
	parameter.
	Remove ancient #if 1.
	(add_class_symbol): Remove redundant declaration.
	(java_lookup_class): Use alloc_type, not alloc_type_arch.
	(java_link_class_type): Mark as static.  Update.
	(jv_clear_object_type): New function.
	(set_java_object_type): Likewise.
	(get_java_object_type): Use set_java_object_type.
	(is_object_type): Likewise.
	(_initialize_java_language): Register new objfile keys.
	(get_java_class_symtab): Add 'gdbarch' parameter.
	(add_class_symtab_symbol): Update.
	(type_from_class): Update.

2010-03-19  Stan Shebs  <stan@codesourcery.com>

	* ax-general.c (ax_const_l): Fix a sizing bug.

2010-03-18  Joel Brobecker  <brobecker@adacore.com>

	GDB 7.1 released.

2010-03-18  Stan Shebs  <stan@codesourcery.com>
	    Pedro Alves  <pedro@codesourcery.com>

	* target.h (struct target_ops): New method
	to_set_circular_trace_buffer.
	(target_set_circular_trace_buffer): New macro.
	* target.c (update_current_target): Add
	to_set_circular_trace_buffer, fix to_set_disconnected_tracing
	default behavior.
	* remote.c (remote_set_circular_trace_buffer): New function.
	(init_remote_ops): Add it to vector.
	* tracepoint.h (struct trace_status): New field traceframes_created,
	change buffer_size and buffer_free to int.
	* tracepoint.c (circular_trace_buffer): New global.
	(start_tracing): Send values of disconnected tracing and circular
	trace buffer settings.
	(set_circular_trace_buffer): New function.
	(parse_trace_state): Handle total space and frames created.
	(trace_status_command): Display total space and total frames
	created.
	(trace_save): Write out new status values.
	(parse_trace_status): Set traceframe_count, traceframes_created,
	buffer_free and buffer_size to -1 by default.
	(_initialize_tracepoint): New setshow for circular-trace-buffer.
	* NEWS: Mention the circular trace buffer option.

2010-03-18  Tom Tromey  <tromey@redhat.com>

	* infcmd.c (finish_command_continuation): Wrap print_return_value
	in TRY_CATCH.

2010-03-18  Joel Brobecker  <brobecker@adacore.com>

	* dwarf2read.c (add_partial_subprogram): Make sure the subprogram
	DIE has a name before creating the associated partial symbol.
	(read_func_scope): Emit a complaint if the subprogram does not
	have a name or when we can't extract the subprogram PC bounds.

2010-03-18  Ulrich Weigand  <uweigand@de.ibm.com>

	* mi/mi-main.c (mi_cmd_list_thread_groups): Use get_current_arch
	instead of selected frame architecture.

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

	* infcmd.c (until_command): Use ERROR_NO_INFERIOR.  Ensure there's
	a valid selected thread, and that it is not running.
	(advance_command): Ditto.
	(finish_command): Ditto.

2010-03-17 Stan Shebs  <stan@codesourcery.com>

	* ax-gdb.c (require_rvalue): Disallow non-scalars.

	* infcall.c: Include tracepoint.h.
	(call_function_by_hand): Disallow calls in tfind mode.
	* infcmd.c: Include tracepoint.h.
	(ensure_not_tfind_mode): New function.
	(continue_1): Call it.
	(step_1) Ditto.
	(jump_command): Ditto.
	(signal_command): Ditto.
	(advance_command): Ditto.
	(until_command): Ditto.
	(finish_command): Ditto.
	* tracepoint.h (disconnect_or_stop_tracing): Declare.

	* ax-gdb.h (struct axs_value): New field optimized_out.
	(gen_trace_for_var): Add gdbarch argument.
	* ax-gdb.c (gen_trace_static_fields): New function.
	(gen_traced_pop): Call it, add gdbarch argument.
	(gen_trace_for_expr): Update call to it.
	(gen_trace_for_var): Ditto, and report optimized-out variables.
	(gen_struct_ref_recursive): Check for optimized-out value.
	(gen_struct_elt_for_reference): Ditto.
	(gen_static_field): Pass gdbarch instead of expression, assume
	optimization if field not found.
	(gen_var_ref): Set the optimized_out flag.
	(gen_expr): Error on optimized-out variable.
	* tracepoint.c (collect_symbol): Handle struct-valued vars as
	expressions, skip optimized-out variables with computed locations.
	* dwarf2loc.c (dwarf2_tracepoint_var_ref): Flag instead of
	erroring out if location expression missing.
	(loclist_tracepoint_var_ref): Don't error out here.

2010-03-17  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (dwarf2_get_section_info): Handle case where no
	DWARF data is available.

2010-03-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* symfile.c (generic_load): Reset breakpoints after loading.

2010-03-17  Tom Tromey  <tromey@redhat.com>

	* linux-nat.c (linux_nat_detach): Check debug_linux_nat.

2010-03-17  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* spu-tdep.c (spu_catch_start): Replace set_breakpoint call with the
	create_breakpoint call, adjust the parameters.

2010-03-16  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Chandru <chandru@in.ibm.com>

	* dwarf2read.c (read_subrange_type): Set TYPE_HIGH_BOUND_UNDEFINED.
	* valarith.c (value_subscripted_rvalue): Suppress error if
	TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED.

2010-03-16  Holger Hans Peter Freyther  <zecke@selfish.org>

	* linux-record.c (record_linux_msghdr): Remove unintended semicolons.

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

	* ada-tasks.c (task_command_1): Check that the task ptid is valid
	before doing the associated thread switch.

2010-03-16  Daniel Jacobowitz  <dan@codesourcery.com>

	* MAINTAINERS: Update my email address.

2010-03-16  Vladimir Prus  <vladimir@codesourcery.com>

	Simplify MI breakpoint setting.

	* breakpoint.c (break_command_really): Make nonstatic and
	rename to...
	(create_breakpoint): ...this. Rename prior function by this name
	to...
	(create_breakpoint_sal): ...this.
	(create_breakpoints): Rename to...
	(create_breakpoints_sal): ...this.
	(set_breakpoint): Remove.
	* breakpoint.h: Adjust to above changes.
	* mi/mi-cmd-break.c (mi_cmd_break_insert): Simplify.

2010-03-15 Stan Shebs  <stan@codesourcery.com>

	* ax-gdb.c: Include cp-support.h.
	(find_field): Remove.
	(gen_primitive_field): New function.
	(gen_struct_ref_recursive): New function.
	(gen_struct_ref): Rewrite to call gen_struct_ref_recursive instead
	of find_field.
	(gen_static_field): New function.
	(gen_struct_elt_for_reference): New.
	(gen_namespace_elt): New.
	(gen_maybe_namespace_elt): New.
	(gen_aggregate_elt_ref): New.
	(gen_expr): Add OP_SCOPE, display opcode name in error message.

2010-03-15  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (die_needs_namespace): Also return 0 for
	DW_TAG_subprogram.

2010-03-15  Sami Wagiaalla  <swagiaal@redhat.com>

	PR c++/7936:
	* cp-support.h: Added char *declaration element to using_direct
	data struct.
	(cp_add_using): Added char *declaration argument.
	(cp_add_using_directive): Ditto.
	(cp_lookup_symbol_imports): made extern.
	* cp-namespace.c: Updated with the above changes.
	* dwarf2read.c (read_import_statement): Ditto.
	(read_namespace): Ditto.
	(read_import_statement): Support import declarations.
	* cp-namespace.c (cp_lookup_symbol_imports): Check for imported
	declarations.
	Added support for 'declaration_only' search.
	(cp_lookup_symbol_namespace): Attempt to search for the name as
	is before consideration of imports.
	* symtab.c (lookup_symbol_aux_local): Added a 'declaration_only'
	search at every block level search.
	Now takes language argument.
	(lookup_symbol_aux): Updated.

2010-03-15  Tom Tromey  <tromey@redhat.com>

	* c-exp.y (name_not_typename): Add 'operator' clause.

2010-03-15  Ralf Corsepius  <ralf.corsepius@rtems.org>  (tiny change)

	* configure.ac: Exit if ${gdb_target_obs}" is not set.
	* configure: Regenerate.

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

	* symfile.c (addr_info_make_relative): Ignore also missing ".dynbss"
	and ".sdynbss".  Update the comment.

2010-03-15  Jie Zhang  <jie@codesourcery.com>

	* MAINTAINERS: Update my email address.

2010-03-14  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdbtypes.h (TYPE_IS_OPAQUE): Correct HAVE_CPLUS_STRUCT check.

2010-03-14  Daniel Jacobowitz  <dan@codesourcery.com>

	* charset.c [USE_WIN32API]: Include <windows.h>.
	 (_initialize_charset): Correct type of w32_host_default_charset.

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

	* infrun.c (ptid_match): Don't assert that PTID is not a pid ptid.

2010-03-12  Tom Tromey  <tromey@redhat.com>

	PR c++/9708:
	* dwarf2read.c (die_needs_namespace) <DW_TAG_variable>: A variable
	in a lexical block does not need a namespace.
	(new_symbol) <DW_TAG_variable>: Put extern variables on
	list_in_scope in all cases.

2010-03-12 Stan Shebs  <stan@codesourcery.com>

	* ax-gdb.c (gen_expr): Add shift expressions.
	(gen_expr_binop_rest): Ditto.

2010-03-12  Sami Wagiaalla  <swagiaal@redhat.com>

	* buildsym.c (finish_block): Reset using_directives pointer
	after block initialization.

2010-03-12  H.J. Lu  <hongjiu.lu@intel.com>

	* amd64-tdep.c (amd64_word_names): Replace "sp" with "".
	* i386-tdep.c (i386_word_names): Likewise.

2010-03-12  Pedro Alves  <pedro@codesourcery.com>

	* target.c (memory_xfer_partial): Don't use the stack cache if
	inspecting trace frames.
	* tracepoint.c (finish_tfind_command): Invalidate the target
	dcache.

2010-03-11  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* solib-svr4.c (LM_ADDR_CHECK) <info_verbose>: Use printf_unfiltered
	for the PIC displacement, print also the displacement value.
	(svr4_exec_displacement):  Print DISPLACEMENT if INFO_VERBOSE.

2010-03-10  Kevin Buettner  <kevinb@redhat.com>

	* remote-mips.c (close_ports, mips_initialize_cleanups)
	(mips_exit_cleanups, mips_send_command, mips_open, pmon_open)
	(ddb_open, lsi_open, mips_remove_breakpoint, mips_remove_watchpoint)
	(mips_stopped_by_watchpoint, send_srec, pmon_checkset)
	(pmon_make_fastrec, pmon_check_ack, mips_expect_download)
	(pmon_check_entry_address, pmon_check_total, pmon_end_download)
	(pmon_download, pmon_load_fast, _initialize_remote_mips): Add
	comments describing each of these functions.
	(mips_enter_debug, mips_exit_debug, common_open)
	(mips_signal_from_protocol, pmon_makeb64, pmon_zeroset): Add
	blank line after the comment describing the function.

2010-03-10  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* solib-svr4.c (svr4_exec_displacement): Return now success, new
	parameter displacementp.  Update comment.
	(svr4_relocate_main_executable): Return if non-zero SECTION_OFFSETS
	element exists.  Return if svr4_exec_displacement was not successful.
	Update comment.

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

	* solib-svr4.c (read_program_header): Support type == -1 to read
	all program headers.
	(read_program_headers_from_bfd): New function.
	(svr4_static_exec_displacement): Remove and move the comment ...
	(svr4_exec_displacement): ... here.  Remove variable found.  New
	variable displacement.  Check also DYNAMIC.  Verify DISPLACEMENT
	alignment for ELF targets.  Compare target vs. exec_bfd PHDRs for ELF
	targets using read_program_headers_from_bfd.  Remove the call of
	svr4_static_exec_displacement.

2010-03-10  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (struct pubnames_header): Remove.
	(_PUBNAMES_HEADER): Remove.
	(_ACTUAL_PUBNAMES_HEADER_SIZE): Remove.
	(struct aranges_header): Remove.
	(_ARANGES_HEADER, _ACTUAL_ARANGES_HEADER_SIZE): Remove.
	(struct dwarf2_per_objfile) <pubnames, aranges>: Remove.
	(PUBNAMES_SECTION): Remove.
	(ARANGES_SECTION): Remove.
	(dwarf2_locate_sections): Don't handle pubnames or aranges.
	(dwarf2_build_psymtabs): Remove dead code.
	(dwarf2_build_psymtabs_easy): Remove.

2010-03-10  Tom Tromey  <tromey@redhat.com>

	* elfread.c (elf_symfile_read): Don't call
	dwarf2_build_frame_info.
	* dwarf2read.c (struct dwarf2_section_info) <readin>: New field.
	(struct dwarf2_per_objfile) <objfile>: New field.
	(dwarf2_has_info): Now idempotent.  Set objfile field.
	(dwarf2_read_section): Check and set readin field.  Call
	posix_madvise.
	(dwarf2_build_psymtabs): Don't read all sections.
	(read_type_comp_unit_head): Read types section.
	(create_debug_types_hash_table): Likewise.
	(init_cu_die_reader): Add asserts.
	(process_type_comp_unit): Add assert.
	(dwarf2_build_psymtabs_hard): Read info section.
	(load_partial_comp_unit): Add assert.
	(create_all_comp_units): Read info section.
	(load_full_comp_unit): Likewise.
	(dwarf2_ranges_read): Read ranges section.
	(dwarf2_record_block_ranges): Add assert.
	(dwarf2_read_abbrevs): Read abbrev section.
	(read_indirect_string): Read str section.
	(dwarf_decode_line_header): Read line section.
	(read_signatured_type_at_offset): Read types section.
	(dwarf_decode_macros): Read macinfo section.
	(dwarf2_symbol_mark_computed): Read loc section.
	* dwarf2-frame.c (dwarf2_frame_find_fde): Call
	dwarf2_build_frame_info.
	(dwarf2_build_frame_info): Unconditionally set
	dwarf2_frame_objfile_data on the objfile.
	* configure.ac: Check for posix_madvise.
	* config.in, configure: Rebuild.

2010-03-10  Tom Tromey  <tromey@redhat.com>

	* xcoffread.c (xcoff_start_psymtab): Update.
	(xcoff_end_psymtab): Update.
	* psymtab.c (allocate_psymtab): Remove dead code.
	* psympriv.h (struct partial_symtab) <read_symtab_private>: Now
	void*.
	* mdebugread.c (parse_partial_symbols): Update.
	(new_psymtab): Likewise.
	* dwarf2read.c (process_psymtab_comp_unit): Update.
	(psymtab_to_symtab_1): Update.
	* dbxread.c (start_psymtab): Update.
	(end_psymtab): Likewise.

2010-03-10  Tom Tromey  <tromey@redhat.com>

	* xcoffread.c: Include psymtab.h.
	(xcoff_sym_fns): Update.
	* symtab.h (struct partial_symbol): Remove.
	(PSYMBOL_DOMAIN, PSYMBOL_CLASS): Remove.
	(struct partial_symtab): Remove.
	(PSYMTAB_TO_SYMTAB): Remove.
	(lookup_partial_symbol, lookup_partial_symtab, find_pc_psymtab)
	(find_pc_sect_psymtab): Remove.
	(find_pc_sect_symtab_via_partial): Declare.
	(find_pc_psymtab, find_pc_sect_psymbol, psymtab_to_symtab)
	(find_main_psymtab): Remove.
	(find_main_filename): Declare.
	(fixup_psymbol_section): Remove.
	(fixup_section): Declare.
	* symtab.c: Include psymtab.h.
	(lookup_symtab): Use lookup_symtab method.
	(lookup_partial_symtab): Remove.
	(find_pc_sect_psymtab_closer): Remove.
	(find_pc_sect_psymtab): Remove.
	(find_pc_sect_symtab_via_partial): New function.
	(find_pc_psymtab, find_pc_sect_psymbol, find_pc_psymbol): Remove.
	(fixup_section): No longer static.
	(fixup_psymbol_section): Remove.
	(lookup_symbol_aux): Use lookup_symbol_aux_quick.
	(lookup_global_symbol_from_objfile): Likewise.
	(lookup_symbol_aux_psymtabs): Remove.
	(lookup_symbol_aux_quick): New function.
	(lookup_symbol_global): Use lookup_symbol_aux_quick.
	(lookup_partial_symbol): Remove.
	(basic_lookup_transparent_type_quick): New function.
	(basic_lookup_transparent_type): Use it.
	(find_main_psymtab): Remove.
	(find_main_filename): New function.
	(find_pc_sect_symtab): Use find_pc_sect_symtab method.
	(find_line_symtab): Use expand_symtabs_with_filename method.
	(output_partial_symbol_filename): New function.
	(sources_info): Use map_partial_symbol_filenames.
	(struct search_symbols_data): New type.
	(search_symbols_file_matches): New function.
	(search_symbols_name_matches): Likewise.
	(search_symbols): Use expand_symtabs_matching method.
	(struct add_name_data): Rename from add_macro_name_data.
	(add_macro_name): Update.
	(add_partial_symbol_name): New function.
	(default_make_symbol_completion_list): Use
	map_partial_symbol_names.
	(struct add_partial_symbol_name): New type.
	(maybe_add_partial_symtab_filename): New function.
	(make_source_files_completion_list): Use
	map_partial_symbol_filenames.
	(expand_line_sal): Use expand_symtabs_with_filename method.
	* symmisc.c: Include psymtab.h.
	(print_objfile_statistics): Use print_stats method.
	(dump_objfile): Use dump method.
	(dump_psymtab, maintenance_print_psymbols)
	(maintenance_info_psymtabs, maintenance_check_symtabs)
	(extend_psymbol_list): Remove.
	* symfile.h (struct quick_symbol_functions): New struct.
	(struct sym_fns) <qf>: New field.
	(sort_pst_symbols): Remove.
	(increment_reading_symtab): Declare.
	* symfile.c: Include psymtab.h.
	(compare_psymbols, sort_pst_symbols): Remove.
	(psymtab_to_symtab): Remove.
	(increment_reading_symtab): New function.
	(symbol_file_add_with_addrs_or_offsets): Use expand_all_symtabs
	method.
	(set_initial_language): Use find_main_filename.
	(allocate_psymtab, discard_psymtab, cashier_psymtab): Remove.
	(free_named_symtabs): Remove unused code.
	(start_psymtab_common, add_psymbol_to_bcache)
	(append_psymbol_to_list, add_psymbol_to_list, init_psymbol_list):
	Remove.
	* stack.c: Include psymtab.h, symfile.h.
	(backtrace_command_1): Use find_pc_sect_symtab_via_partial.
	* source.h (psymtab_to_fullname): Don't declare.
	* source.c: Include psymtab.h.
	(select_source_symtab): Use find_last_source_symtab method.
	(forget_cached_source_info): Use forget_cached_source_info
	method.
	(find_and_open_source): No longer static.
	(psymtab_to_fullname): Remove.
	* somread.c: Include psymtab.h.
	(som_sym_fns): Update.
	* psympriv.h: New file.
	* psymtab.h: New file.
	* psymtab.c: New file.
	* objfiles.h: (ALL_OBJFILE_PSYMTABS): Remove.
	(ALL_PSYMTABS, ALL_PSPACE_PSYMTABS): Likewise.
	* objfiles.c: Include psymtab.h.
	(objfile_relocate1): Use relocate method.
	(objfile_has_partial_symbols): Use has_symbols method.
	* mipsread.c: Include psymtab.h.
	(ecoff_sym_fns): Update.
	* mi/mi-cmd-file.c: Include psymtab.h.
	(print_partial_file_name): New function.
	(mi_cmd_file_list_exec_source_files): Use
	map_partial_symbol_filenames.
	* mdebugread.c: Include psympriv.h.
	* machoread.c: Include psympriv.h.
	(macho_sym_fns): Update.
	* m2-exp.y (yylex): Use lookup_symtab.
	* elfread.c: Include psympriv.h.
	(elf_sym_fns): Update.
	* dwarf2read.c: Include psympriv.h.
	* dbxread.c: Include psympriv.h.
	(aout_sym_fns): Update.
	* cp-support.c: Include psymtab.h.
	(read_in_psymtabs): Remove.
	(make_symbol_overload_list_qualified): Use
	expand_symtabs_for_function method.
	* coffread.c: Include psympriv.h.
	(coff_sym_fns): Update.
	* blockframe.c: Include psymtab.h.
	(find_pc_partial_function): Use find_pc_sect_symtab method.
	* ada-lang.h (ada_update_initial_language): Update.
	* ada-lang.c: Include psymtab.h.
	(ada_update_initial_language): Remove 'main_pst' argument.
	(ada_lookup_partial_symbol): Remove.
	(struct ada_psym_data): New type.
	(ada_add_psyms): New function.
	(ada_add_non_local_symbols): Use map_ada_symtabs method.
	(struct add_partial_datum): New type.
	(ada_add_partial_symbol_completions): New function.
	(ada_make_symbol_completion_list): Use map_partial_symbol_names.
	(ada_exception_support_info_sniffer): Update.
	* Makefile.in (SFILES): Add psymtab.c.
	(COMMON_OBS): Add psymtab.o.
	(HFILES_NO_SRCDIR): Add psymtab.h, psympriv.h.

2010-03-10  Pierre Muller  <muller@ics.u-strasbg.fr>

	* remote-fileio.c (cygwin_conv_path): Define macro for old cygwin API.

2010-03-10  Sami Wagiaalla  <swagiaal@redhat.com>

	PR C++/11236:
	* cp-namespace.c (cp_add_using): Deleted.
	(cp_add_using_directive): Use obstack allocations.
	Merged the function cp_add_using into this one.
	Added 'struct obstack *' argument.
	(cp_scan_for_anonymous_namespaces): Updated.
	* cp-support.h: Updated.
	* dwarf2read.c (read_import_statement): Updated.
	(read_namespace): Updated.

2010-03-10  Pierre Muller  <muller@ics.u-strasbg.fr>

	* windows-nat.c (cygwin_conv_path): Remove old macro.

2010-03-10  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (condition_command): Handle watchpoint conditions.
	(is_hardware_watchpoint): Add comment.
	(is_watchpoint): New.
	(update_watchpoint): Don't reparse the watchpoint's condition
	unless necessary.
	(WP_IGNORE): New.
	(watchpoint_check): Use it.
	(bpstat_check_watchpoint): Handle it.
	(bpstat_check_breakpoint_conditions): Evaluate watchpoint local
	conditions in a frame where it makes sense.
	(watch_command_1): Store the innermost block of the condition
	expression.
	(delete_breakpoint): Delete the watchpoint condition expression.
	* breakpoint.h (struct bp_location) <cond>: Update comment.
	(struct breakpoint): New field `cond_exp_valid_block'.

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

	Adjust handling of Ada DIEs after dwarf2_physname patch.
	* dwarf2read.c (dwarf2_compute_name): Add handling of Ada DIEs.

2010-03-09  Christopher Faylor  <me+cygwin@cgf.cx>
	    Pierre Muller  <muller@ics.u-strasbg.fr>

	* windows-nat.c (cygwin_conv_path): Redefine to properly convert
	from/to posix/win32.
	(windows_make_so): Use non-Cygwin 1.7 specific function.
	(windows_create_inferior): Make sure that cygallargs points to
	original args in non Cygwin 1.7. case.

2010-03-09  Michael Snyder  <msnyder@vmware.com>

	* i386-tdep.c (i386_record_lea_modrm_addr): Use extract_signed_int
	after target_read_memory to get host byte order.
	(i386_process_record): Ditto.

2010-03-09  Keith Seitz  <keiths@redhat.com>

	Based on work from Daniel Jacobowitz  <dan@codesourcery.com>
	* c-typeprint.c (cp_type_print_method_args): For non-static methods,
	print out const or volatile qualifiers, too.
	(c_type_print_args): Add parameters show_artificial and language.
	Skip artificial parameters when requested.
	Use the appropriate language printer.
	(c_type_print_varspec): Tell c_type_print_args to skip artificial
	parameters and pass language_c.
	* dwarf2read.c (die_list): New file global.
	(struct partial_die_info): Update comments for name field.
	(pdi_needs_namespace): Renamed to ...
	(die_needs_namespace): ... this. Rewrite.
	(dwarf2_linkage_name): Remove.
	(add_partial_symbol): Do not predicate the call to
	partial_die_full_name based on pdi_needs_namespace.
	Remove call to cp_check_possible_namespace_symbols and associated
	outdated comments.
	(guess_structure_name): Do not inspect child subprogram DIEs.
	(dwarf2_fullname): Update comments.
	Use die_needs_namespace to assist in computing the name.
	(read_func_scope): Use dwarf2_name to get the DIE's name.
	Use dwarf2_physname to get the "linkage name" of the DIE.
	(dwarf2_add_member_field): Use dwarf2_physname instead of
	dwarf2_linkage_name.
	(read_structure_type): For structs and classes, set TYPE_NAME, too.
	(determine_class): Remove.
	(read_partial_die): Ignore DW_AT_MIPS_linkage_name for all languages
	except Ada.
	(new_symbol): Unconditionally call dwarf2_name.
	Compute the "linkage name" using dwarf2_physname.
	Use dwarf2_name instead of dwarf2_full_name for enumerator DIEs.
	When determining to scan for anonymous C++ namespaces, ignore
	the linkage name.
	(dwarf2_physname): New function.
	(dwarf2_full_name): Move content to new function and call
	that.
	(dwarf2_compute_name): "New" function.
	(_initialize_dwarf2_read): Initialize die_list.
	* gnu-v3-eabi.c (gnu_v3_find_method_in): Remove unused variable
	physname.
	(gnu_v3_print_method_ptr): Use the physname for virtual methods
	without a demangled name.
	Print out type information for non-virtual methods.
	* linespec.c (decode_line_1): Force ANY string using "::" (or
	"." for java) to use decode_compound, and clean up any stray quoting.
	If we found a file symtab, re-evaluate whether the remainder is_quoted.
	(decode_compound): Stop consuming at an open parenthesis.
	Keep template parameters.
	Keep any overload information.
	Keep keywords like "const".
	Remove paren_pointer.
	Move is_quoted check from set_flags to here.
	Remove #if 0 code from 2000. Ten years is long enough.
	(find_method): Before comparing symbol names, canonicalize the string
	from the user.
	If a specific overload is requested, find it. Otherwise throw an error.
	(find_method_overload_end): New function.
	(set_flags): Remove.
	(decode_compound): Assume that parentheses are matched.
	It's a lot easier.
	* symtab.c (symbol_find_demangled_name): Add DMGL_VERBOSE flag
	to cplus_demangle.
	* linespec.c (decode_line_1): Keep important keywords like
	"const" and "volatile".
	* symtab.h (SYMBOL_CPLUS_DEMANGLED_NAME): Remove.
	* typeprint.h (c_type_print_args): Add declaration.
	* ui-file.c (do_ui_file_obsavestring): New function.
	(ui_file_obsavestring): New function.
	* ui-file.h (ui_file_obsavestring): Add declaration.
	* valops.c (find_overload_match): Resolve the object to
	a non-pointer type.
	If the object is a data member, search the object for the member
	and return with staticp set.
	Use SYMBOL_NATURAL_NAME instead of SYMBOL_CPLUS_DEMANGLED_NAME.
	Do not attempt to extract a function name from non-function types.
	If the extracted function name and the original name are the same,
	we don't have a C++ method.

	From Jan Kratochvil  <jan.kratochvil@redhat.com>:
	* dwarf2read.c (new_symbol <DW_TAG_enumerator>): Call dwarf2_full_name.

	* ada-lang.c (ada_lookup_symbol): Remove linkage_name parameters
	and arguments from symbol lookups.
	* ax-gdb.c (gen_expr): Likewise.
	* cp-namespace.c (cp_lookup_symbol_nonlocal, lookup_namespace_scope,
	cp_lookup_symbol_namespace, lookup_symbol_file, lookup_nested_type,
	lookup_possible_namespace_symbol): Likewise.
	* cp-support.c (read_in_psymtabs): Likewise.
	* cp-support.h (cp_lookup_symbol_nonlocal): Likewise.
	* language.h (la_lookup_symbol_nonlocal): Likewise.
	* scm-valprint.c (scm_inferior_print): Likewise.
	* solib-darwin.c (darwin_relocate_section_addresses): Likewise.
	* solib-svr.c (elf_lookup_lib): Likewise.
	* solib.c (show_auto_solib_add): Likewise.
	* solist.h (lookup_lib_global, solib_global_lookup): Likewise.
	* symmisc.c (maintenance_check_symtabs): Likewise.
	* symtab.c (lookup_symbol_in_language, lookup_symbol_aux,
	lookup_symbol_aux_local, lookup_symbol_aux_block,
	lookup_symbol_from_objfile, lookup_symbol_aux_symtabs,
	lookup_symbol_aux_psymtabs,basic_lookup_symbol_nonlocal,
	lookup_symbol_static, lookup_symbol_global, symbol_matches_domain,
	basic_lookup_transparent_type, find_main_psymtab,
	lookup_block_symbol): Likewise.
	* symtab.h (basic_lookp_symbol_nonlocal, lookup_symbol_static,
	lookup_symbol_global, lookup_symbol_aux_block,
	lookup_symbol_partial_symbol, lookup_block_symbol,
	lookup_global_symbol, value_maybe_namespace_elt): Likewise.

2010-03-09  Pierre Muller  <muller@ics.u-strasbg.fr>

	* python/python-internal.h: Include symtab.h.

2010-03-09  Joel Brobecker  <brobecker@adacore.com>
	    Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-lang.c (is_pascal_string_type): Remove unneeded parentheses.
	* p-valprint.c (pascal_val_print): Remove undeed block and fix
	indentation.

2010-03-08  Tom Tromey  <tromey@redhat.com>

	* breakpoint.c (breakpoint_1): Add "QUIT".

2010-03-08  Daniel Jacobowitz  <dan@codesourcery.com>
	    Pedro Alves  <pedro@codesourcery.com>

	* solib.c (solib_find): Replace extension if
	solib_symbols_extension is set in the target gdbarch.
	* arm-symbian-tdep.c (arm_symbian_init_abi): Set
	solib_symbols_extension to "sym".
	* gdbarch.sh (solib_symbols_extension): New variable.
	(pstring): New function.
	* gdbarch.h, gdbarch.c: Regenerate.

2010-03-08  Tom Tromey  <tromey@redhat.com>

	PR cli/9591:
	* NEWS: Update.
	* utils.c: Include main.h.
	(fputs_maybe_filtered): Don't paginate if `batch_flag'.
	(defaulted_query): Use default answer if `batch_flag'.
	* main.h (batch_flag): Declare.
	* main.c (batch_flag): New global.
	(captured_main): Remove 'batch'.  Update.

2010-03-08  Kevin Buettner  <kevinb@redhat.com>

	From Richard Sandiford, Martin M. Hunt, Corinna Vinschen,
	and Kevin Buettner:

	* remote-mips.c (rockhopper_ops): New target_ops struct.
	(MON_ROCKHOPPER): New mips_monitor_type.
	(read_hex_value): New function.
	(mips_request): Send 8-byte values with a 'T' packet.  Read the
	packet argument as a string and use read_hex_value to parse it.
	(mips_exit_debug): Wait for response when using MON_ROCKHOPPER.
	(rockhopper_open): New function.
	(mips_wait): Read the PC, FP and SP fields as strings.  Use
	read_hex_value to parse them and mips_set_register to commit them.
	(mips_set_register): New function.
	(mips_fetch_registers): Do not cast register value to "unsigned"
	when reading a MON_ROCKHOPPER 't' packet.  Use mips_set_register.
	(mips_store_registers): Use a 'T' packet to set registers when
	using MON_ROCKHOPPER.
	(pmon_end_download): Don't run initEther if using MON_ROCKHOPPER
	and expect the total to be printed before the entry address.
	(_initialize_remote_mips): Initialize and add rockhopper_ops.

2010-03-08  Kevin Buettner  <kevinb@redhat.com>

	* remote-mips.c (mips_fetch_word): Add new parameter, `valp'.
	Change return value to int.  Store value fetched in location
	addressed by `val'.  Use function's return value as success
	or failure indicator.  Adjust all callers.

2010-03-08  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-lang.c (is_pascal_string_type): Check that TYPE arg is non NULL.

2010-03-08  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Hui Zhu  <teawater@gmail.com>

	* record.c (record_open_1): Check tmp_to_stopped_by_watchpoint and
	tmp_to_stopped_data_address.
	(record_open): Reset tmp_to_stopped_by_watchpoint and
	tmp_to_stopped_data_address.
	* target.c (init_dummy_target): Add to_stopped_by_watchpoint and
	to_stopped_data_address.

2010-03-08  Hui Zhu  <teawater@gmail.com>

	* i386-tdep.c (i386_process_record): Initialize regnum.

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

	* symfile.c (addr_info_make_relative): New variable sect_name, use it.
	Do not warn on ".gnu.liblist" and ".gnu.conflict".

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

	Memory error when reading wrong core file.
	* solib-svr4.c (solib_svr4_r_map): catch and print all exception
	errors while reading the inferior memory, and return zero if
	an exception was raised.

2010-03-07  Michael Snyder  <msnyder@vmware.com>

	* record.c (record_restore): Rename tmpu8 to rectype.

	* i386-tdep.c (i386_record_lea_modrm_addr): Rename local variables
	tmpu8, tmpi16, tmpi32, tmpulongest to addr8, addr16, addr32, addr64.

	(i386_record_push): Rename local tmpulongest to addr.

	(i386_process_record): Rename local tmpulongest to addr.

	Rename local variables tmpu16, tmpu32, tmpu64 to addr16, addr32,
	addr64.

	Rename local variable tmpu8 to opcode8 and regnum.

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

	* remote.c (remote_get_ada_task_ptid): New function.
	(init_remote_ops): Set remote_ops.to_get_ada_task_ptid.

2010-03-06  Christopher Faylor  <me+cygwin@cgf.cx>

	* windows-nat.c: Reorganize #ifdef __CYGWIN__ considerations into one
	block.  Define helper macros to reduce ifdefs in code.
	(get_module_name): Use cygwin_buf_t for buffer and __PMAX for buffer
	size.  Call unadorned GetModuleFileNameEx rather than
	GetModuleFileNameEx*.
	(windows_make_so): Use __PMAX to denote maximum buffer size and
	cygwin_buf_t for buffer type.  Use GetSystemDirectory{W,A} as
	appropriate.
	(get_image_name): Use __PMAX to denote maximum buffer size.
	(handle_load_dll): Likewise.
	(windows_pid_to_exec_file): Likewise.
	(windows_create_inferior): Add many accommodations for older Cygwin and
	non-Cygwin.
	(bad_GetModuleFileNameExW): Control inclusion of this function based on
	__USEWIDE conditional.
	(bad_GetModuleFileNameExA): Likewise.
	(_initialize_loadable): Just use real function names without the dyn_
	part since they are defined earlier.

2010-03-05  Corinna Vinschen  <vinschen@redhat.com>
	    Tom Tromey  <tromey@redhat.com>

	* utils.c (host_char_to_target): Add 'gdbarch' argument.
	(parse_escape): Likewise.
	* python/py-utils.c (unicode_to_target_string): Update.
	(unicode_to_target_python_string): Update.
	(target_string_to_unicode): Update.
	* printcmd.c (printf_command): Update.
	* p-exp.y (yylex): Update.
	* objc-exp.y (yylex): Update.
	* mi/mi-parse.c: Include charset.h.
	(mi_parse_escape): New function.
	(mi_parse_argv): Use it.
	* jv-exp.y (yylex): Update.
	* i386-cygwin-tdep.c (i386_cygwin_auto_wide_charset): New
	function.
	(i386_cygwin_init_abi): Call set_gdbarch_auto_wide_charset.
	* gdbarch.sh (auto_charset, auto_wide_charset): New.
	* gdbarch.c: Rebuild.
	* gdbarch.h: Rebuild.
	* defs.h (parse_escape): Update.
	* cli/cli-setshow.c: Include arch-utils.h.
	(do_setshow_command): Update.
	* cli/cli-cmds.c (echo_command): Update.
	* charset.h (target_charset, target_wide_charset): Update.
	* charset.c: Include arch-utils.h.
	(target_charset_name): Default to "auto".
	(target_wide_charset_name): Likewise.
	(show_target_charset_name): Handle "auto".
	(show_target_wide_charset_name): Likewise.
	(be_le_arch): New global.
	(set_be_le_names): Add 'gdbarch' argument.
	(validate): Likewise.  Don't call set_be_le_names.
	(set_charset_sfunc, set_host_charset_sfunc)
	(set_target_charset_sfunc, set_target_wide_charset_sfunc):
	Update.
	(target_charset): Add 'gdbarch' argument.
	(target_wide_charset): Likewise.  Remove 'byte_order' argument.
	(auto_target_charset_name): New global.
	(default_auto_charset, default_auto_wide_charset): New functions.
	(_initialize_charset): Set auto_target_charset_name.  Allow "auto"
	for target charsets.  Copy result of nl_langinfo.  Use GetACP if
	USE_WIN32API.
	* c-lang.c (charset_for_string_type): Add 'gdbarch' argument,
	remove 'byte_order' argument.  Update.
	(classify_type): Likewise.
	(c_emit_char): Update.
	(c_printchar): Update.
	(c_printstr): Update.
	(c_get_string): Update.
	(evaluate_subexp_c): Update.
	* arch-utils.h (default_auto_charset, default_auto_wide_charset):
	Declare.
	* python/python.c (gdbpy_target_charset): New function.
	(gdbpy_target_wide_charset): Likewise.
	(GdbMethods): Update.
	* NEWS: Update.

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

	* symfile.c (build_section_addr_info_from_objfile): Do not mask
	off high address bits.

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

	* python/py-lazy-string.c (gdbpy_extract_lazy_string): Extract
	address as UnsignedLongLong, not LongLong.

2010-03-05  Kevin Buettner  <kevinb@redhat.com>
	    Pedro Alves  <pedro@codesourcery.com>

	* remote-mips.c (gdbthread.h): Include.
	(remote_mips_ptid): Declare.
	(mips_error): Only mourn the inferior when inferior_ptid is non-null.
	(common_open): Set inferior_ptid, add it as an inferior, and
	as a thread too.  Delete FIXME comment regarding start_remote().
	(mips_close): Invoke generic_mourn_inferior().
	(mips_kill): Make sure that target_mourn_inferior is invoked.
	(mips_mourn_inferior): Don't invoke generic_mourn_inferior, as
	it's now invoked from mips_close().
	(mips_load): Don't null out inferior_ptid.  Don't call
	clear_symtab_users().
	(mips_thread_alive, mips_pid_to_str): New functions.
	(_initialize_remote_mips): Initialize remote_mips_ptid.  Initialize
	to_thread_alive and to_pid_to_str operations.

2010-03-04  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (skip_one_die) <DW_FORM_ref_addr>: Use offset size
	in DWARF 3 and later.
	(read_attribute_value) <DW_FORM_ref_addr>: Likewise.

2010-03-04  Keith Seitz  <keiths@redhat.com>

	* linespec.c (decode_line_1): Update comments for is_quote_enclosed.
	If the filename portion of the linespec was quoted, recheck the
	remainder for additional quoting.
	(locate_first_half): Skip over completer chars, too.

2010-03-04  Tom Tromey  <tromey@redhat.com>

	* printcmd.c (printf_command): Pass dummy argument to
	printf_filtered.

2010-03-04  Doug Evans  <dje@google.com>

	* arm-tdep.c (arm_make_stub_cache): Delete unused locals reg,
	unwound_fp.

	* arm-tdep.c (arm_stub_unwind_sniffer): Add comment.

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

	* breakpoint.c (update_watchpoint): Create a sentinel location if
	the software watchpoint isn't watching any memory.
	(breakpoint_address_bits): Skip dummy software watchpoint locations.

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

	* utils.c (fputs_maybe_filtered): Check if there's already a top
	level interpreter before dereferencing it.  If there isn't one,
	don't paginate either.

2010-03-04  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>

	* arm-tdep.c (arm_pc_is_thumb): Add heuristic that tries to get
	the state right when single stepping.
	(arm_get_next_pc_raw, thumb_get_next_pc_raw): New functions.
	Get the next PC along with the instruction state.
	(thumb_get_next_pc): Remove.
	(arm_get_next_pc): Modified to use arm_get_next_pc_raw.

2010-03-04  Hui Zhu  <teawater@gmail.com>

	* i386-tdep.c (i386_process_record): Change "addr" to "tmpu64".

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

	* utils.c (fputs_maybe_filtered): Always disable pagination if the
	top level interpreter is MI.

2010-03-03 Stan Shebs  <stan@codesourcery.com>

	* remote.c (remote_download_tracepoint): Iterate over locations.
	* tracepoint.c (validate_actionline): Ditto.
	(encode_actions): Add location argument.
	(trace_dump_command): Check all locations to see if stepping
	frame.

2010-03-03  H.J. Lu  <hongjiu.lu@intel.com>
	    Eli Zaretskii  <eliz@gnu.org>

	* NEWS: Add X86 general purpose registers section.

2010-03-03  Tom Tromey  <tromey@redhat.com>

	PR mi/11098:
	* varobj.c (install_new_value): Handle case where new print_value
	is NULL.

2010-03-03  Dainis Jonitis  <jonitis@gmail.com>

	PR gdb/11345:
	* printcmd.c (printf_command): Print end of format string using
	printf_filtered.

2010-03-02  Tom Tromey  <tromey@redhat.com>

	* mi/mi-cmd-break.c (mi_read_next_line): Add missing 'void'.
	* defs.h (read_command_lines_1): Add missing 'void'.
	* cli/cli-script.c (recurse_read_control_structure): Add missing
	'void'.
	(read_next_line): Likewise.
	(read_command_lines_1): Likewise.

2010-03-02  Ulrich Weigand  <uweigand@de.ibm.com>

	* spu-tdep.c (spu_analyze_prologue): Track instruction to
	store backchain as part of prologue.

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

	* progspace.c (update_address_spaces): Update inferior address spaces
	also.

2010-03-02  Doug Evans  <dje@google.com>

	* dwarf2read.c (add_partial_subprogram): Add missing baseaddr to
	lowpc,highpc args to addrmap_set_empty.

2010-03-02  H.J. Lu  <hongjiu.lu@intel.com>

	* amd64-tdep.c (amd64_byte_names): New.
	(amd64_word_names): Likewise.
	(amd64_dword_names): Likewise.
	(amd64_pseudo_register_name): Likewise.
	(amd64_pseudo_register_read): Likewise.
	(amd64_pseudo_register_write): Likewise.
	(amd64_init_abi): Set num_byte_regs, num_word_regs, num_dword_regs
	and num_mmx_regs.  Call set_gdbarch_pseudo_register_read,
	set_gdbarch_pseudo_register_write and
	set_tdesc_pseudo_register_name.  Don't call
	set_gdbarch_num_pseudo_regs.  Don't set mm0_regnum.

	* i386-tdep.c (i386_num_mmx_regs): Removed.
	(i386_num_pseudo_regs): Likewise.
	(i386_byte_names): New.
	(i386_word_names): Likewise.
	(i386_byte_regnum_p): Likewise.
	(i386_word_regnum_p): Likewise.
	(i386_mmx_regnum_p): Updated.
	(i386_pseudo_register_name): Make it global.  Handle byte and
	word pseudo-registers.
	(i386_pseudo_register_read): Likewise.
	(i386_pseudo_register_write): Likewise.
	(i386_pseudo_register_type): Handle byte, word and dword
	pseudo-registers
	(i386_register_reggroup_p): Don't include pseudo
	registers, except for MXX, in any register groups.  Don't
	include pseudo byte, word, dword registers in general_reggroup.
	(i386_gdbarch_init): Set num_byte_regs, num_word_regs,
	num_dword_regs, al_regnum, ax_regnum and eax_regnum.  Put MMX
	pseudo-registers after word pseudo-registers.  Call
	set_gdbarch_num_pseudo_regs after calling gdbarch_init_osabi.

	* i386-tdep.h (gdbarch_tdep): Add num_mmx_regs, num_byte_regs,
	al_regnum, num_word_regs, ax_regnum, num_dword_regs and
	eax_regnum.
	(i386_byte_regnum_p): New.
	(i386_word_regnum_p): Likewise.
	(i386_dword_regnum_p): Likewise.
	(i386_pseudo_register_name): Likewise.
	(i386_pseudo_register_read): Likewise.
	(i386_pseudo_register_write): Likewise.

2010-03-01  H.J. Lu  <hongjiu.lu@intel.com>

	* target-descriptions.c (tdesc_type): Remove
	TDESC_TYPE_I386_EFLAGS and TDESC_TYPE_I386_MXCSR.
	(tdesc_predefined_types): Likewise.
	(tdesc_gdb_type): Likewise.  Pass NULL to append_flags_type_flag
	if flag name is empty.
	(maint_print_c_tdesc_cmd): Handle TDESC_TYPE_FLAGS.

	* features/i386/32bit-core.xml: Define i386_eflags.
	* features/i386/64bit-core.xml: Likewise.

	* features/i386/32bit-sse.xml: Define i386_mxcsr.
	* features/i386/64bit-sse.xml: Likewise.

	* features/i386/amd64-linux.c: Regenerated.
	* features/i386/amd64.c: Likewise.
	* features/i386/i386-linux.c: Likewise.
	* features/i386/i386.c: Likewise.

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

	* gdbtypes.c (append_composite_type_field_raw): New.
	(append_composite_type_field_aligned): Use the new function.
	* gdbtypes.h (append_composite_type_field_raw): Declare.
	* target-descriptions.c (struct tdesc_type_field): Add start and end.
	(struct tdesc_type_flag): New type.
	(struct tdesc_type): Add TDESC_TYPE_STRUCT and TDESC_TYPE_FLAGS to
	kind.  Add size to u.u.  Add u.f for flags.
	(tdesc_gdb_type): Handle TDESC_TYPE_STRUCT and TDESC_TYPE_FLAGS.
	(tdesc_free_type): Likewise.
	(tdesc_create_struct, tdesc_set_struct_size, tdesc_create_flags): New.
	(tdesc_add_field): Handle TDESC_TYPE_STRUCT.
	(tdesc_add_bitfield, tdesc_add_flag): New.
	* target-descriptions.h (tdesc_create_struct, tdesc_set_struct_size)
	(tdesc_create_flags, tdesc_add_bitfield, tdesc_add_flag): Declare.
	* xml-tdesc.c (struct tdesc_parsing_data): Rename current_union to
	current_type.  Add current_type_size and current_type_is_flags.
	(tdesc_start_union): Clear the new fields.
	(tdesc_start_struct, tdesc_start_flags): New.
	(tdesc_start_field): Handle struct fields, including bitfields.
	(field_attributes): Make type optional.  Add start and end.
	(union_children): Rename to struct_union_children.
	(union_attributes): Rename to struct_union_attributes.  Add optional
	size.
	(flags_attributes): New.
	(feature_children): Add struct and flags.
	* features/gdb-target.dtd: Add flags and struct to features.
	Make field type optional.  Add field start and end.

2010-03-01  H.J. Lu  <hongjiu.lu@intel.com>

	* amd64-linux-nat.c (AMD64_LINUX_USER64_CS): New.
	(amd64_linux_read_description): Likewise.
	(_initialize_amd64_linux_nat): Set to_read_description to
	amd64_linux_read_description.

	* amd64-linux-tdep.c: Include "features/i386/amd64-linux.c".
	(amd64_linux_register_name): Removed.
	(amd64_linux_register_type): Likewise.
	(amd64_linux_core_read_description): New.
	(amd64_linux_init_abi): Set target description to
	tdesc_amd64_linux if needed.  Support orig_rax in target
	description.  Don't call set_gdbarch_register_name nor
	set_gdbarch_register_type.  Call
	set_gdbarch_core_read_description.
	(_initialize_amd64_linux_tdep): Call
	initialize_tdesc_amd64_linux.

	* amd64-linux-tdep.h (tdesc_amd64_linux): New.

	* amd64-tdep.c:  Include "features/i386/amd64.c".
	(amd64_register_names): Removed.
	(amd64_register_name): Likewise.
	(amd64_register_type): Likewise.
	(amd64_init_abi):  Set num_core_regs and register_names.  Set
	target description to tdesc_amd64 if needed.  Don't call
	set_gdbarch_register_name nor set_gdbarch_register_type.
	(_initialize_amd64_tdep): New.

	* i386-linux-nat.c (i386_linux_read_description): New.
	(_initialize_i386_linux_nat): Set to_read_description to
	i386_linux_read_description.

	* i386-linux-tdep.c: Include "features/i386/i386-linux.c".
	(i386_linux_register_name): Removed.
	(i386_linux_core_read_description): New.
	(i386_linux_read_description): Likewise.
	(i386_linux_init_abi): Don't call set_gdbarch_register_name.
	Set target description to tdesc_i386_linux if needed.  Support
	orig_eax.  Set register_reggroup_p.  Call
	set_gdbarch_core_read_description.
	(_initialize_i386_linux_tdep): Call initialize_tdesc_i386_linux.

	* i386-linux-tdep.h (tdesc_i386_linux): New.

	* i386-nto-tdep.c (i386nto_regset_id): Replace I386_NUM_FREGS
	with I387_NUM_REGS.

	* i386-tdep.c: Include "features/i386/i386.c".
	(i386_register_names): Make it const.
	(i386_mmx_names): Likewise.
	(i386_num_register_names): Removed.
	(i386_register_name): Likewise.
	(i386_eflags_type): Likewise.
	(i386_mxcsr_type): Likewise.
	(i386_sse_type): Likewise.
	(i386_register_type): Likewise.
	(i387_ext_type): Call tdesc_find_type instead of arch_float_type.
	(i386_pseudo_register_name): New.
	(i386_pseudo_register_type): Likewise.
	(i386_mmx_type): Make it static.
	(i386_gdbarch_init): Check arch.  Replace I386_NUM_FREGS with
	I387_NUM_REGS.  Set num_core_regs and register_names.  Don't
	call set_gdbarch_register_name nor set_gdbarch_register_type.
	Set register_reggroup_p.  Set target description to tdesc_i386
	if needed.  Call set_tdesc_pseudo_register_type,
	set_tdesc_pseudo_register_name and tdesc_use_registers.
	(_initialize_i386_tdep): Call initialize_tdesc_i386.
	initialize_tdesc_x86_64.

	* i386-tdep.h (gdbarch_tdep): Remove i386_eflags_type,
	i386_mxcsr_type and i386_sse_type.  Add num_core_regs,
	register_names, tdesc and register_reggroup_p.
	(I386_NUM_FREGS): Removed.
	(i386_eflags_type): Likewise.
	(i386_mxcsr_type): Likewise.
	(i386_mmx_type): Likewise.
	(i386_sse_type): Likewise.
	(i386_register_name): Likewise.
	(i386_regnum): Add I386_MXCSR_REGNUM.
	(I386_SSE_NUM_REGS): Defined with I386_MXCSR_REGNUM.

	* i387-tdep.h (I387_NUM_REGS): New.

	* regformats/i386/i386-linux.dat: Generated.
	* regformats/i386/i386.dat: Likewise.
	* regformats/i386/amd64-linux.dat: Likewise.
	* regformats/i386/amd64.dat: Likewise.

	* regformats/reg-i386-linux.dat: Removed.
	* regformats/reg-i386.dat: Likewise.
	* regformats/reg-x86-64-linux.dat: Likewise.
	* regformats/reg-x86-64.dat: Likewise.

2010-03-01  Corinna Vinschen  <vinschen@redhat.com>

	* remote-fileio.c (remote_fileio_func_rename): Use Cygwin 1.7
	cygwin_conv_path API rather than the deprecated
	cygwin_conv_to_full_posix_path.
	* windows-nat.c:
	(GetModuleFileNameExA): Undefine for Cygwin.
	(GetModuleFileNameExW): Define for Cygwin.
	(get_module_name): Change size of pathbuf to PATH_MAX for Cygwin.
	Call GetModuleFileNameExW and convert path to POSIX using
	cygwin_conv_path.
	(windows_make_so): Always define p.  Drop unused variable m.
	Don't use Win32 functions to check file existance, rather use
	access on Cygwin.  Fetch system directory using GetSystemDirectoryW.
	Use canonicalize_file_name to get full path.
	(get_image_name): Use wcstombs, rather than WideCharToMultiByte
	to convert Unicode pathname to multibyte on Cygwin.  Otherwise,
	use correct target buffer size in call to WideCharToMultiByte.
	(handle_load_dll): Change size of dll_buf to PATH_MAX for Cygwin.
	(windows_pid_to_exec_file): Change size of path to PATH_MAX for Cygwin.
	(windows_create_inferior): Convert all paths and arguments to wchar_t
	and use CreateProcessW on Cygwin.
	(_initialize_windows_nat): Disable DOS-style path warning on Cygwin.
	(bad_GetModuleFileNameExA): Undefine for Cygwin.
	(bad_GetModuleFileNameExW): Define for Cygwin.
	(_initialize_loadable): Load GetModuleFileNameExW into
	dyn_GetModuleFileNameExW on Cygwin.  Don't load ANSI function on Cygwin.

2010-02-28  Phil Muldoon  <pmuldoon@redhat.com>

	PR python/11036
	* python/py-frame.c (frapy_read_var): Add block argument and logic
	to cope with user provided blocks.

2010-02-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* infcall.c (call_function_by_hand): Remove gdb_assert on sp and old_sp.
	New comment.

2010-02-28  Corinna Vinschen  <vinschen@redhat.com>

	* Makefile.in (SUBDIR_MI_OBS): Move mi-common.o from here...
	(COMMON_OBS): ... to here since it's used unconditionally.
	(SUBDIR_MI_SRCS): Move mi/mi-common.c from here...
	(SFILES): To here.

2010-02-26  David Daney  <ddaney@caviumnetworks.com>

	* mips-linux-tdep.c: Update struct sigframe comments.
	(SIGFRAME_CODE_OFFSET): Delete macro.
	(mips_linux_o32_sigframe_init): Calculate sigcontext_base using
	this_frame's sp.
	(mips_linux_n32n64_sigframe_init): Same.

2010-02-26  Kevin Buettner  <kevinb@redhat.com>

	* remote-mips.c (mips_load): Don't use pseudo-register when
	invalidating regcache.

2010-02-26  Daniel Jacobowitz  <dan@codesourcery.com>

	* arm-tdep.c (thumb_get_next_pc): Correct conditional branch opcode.

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

	* NEWS: Add "New targets" section, and mention ARM Symbian
	support.

2010-02-26  Ulrich Weigand  <uweigand@de.ibm.com>

	* dwarf2loc.c (struct piece_closure): Remove ARCH member,
	add ADDR_SIZE member.
	(allocate_piece_closure): Update.
	(copy_pieced_value_closure): Likewise.
	(dwarf2_evaluate_loc_desc): Likewise.
	(read_pieced_value): Use DWARF address size instead of
	GDB's gdbarch_addr_bit as size of values on the DWARF stack.

2010-02-26  Phil Muldoon  <pmuldoon@redhat.com>
	    Tom Tromey  <tromey@redhat.com>

	* python/py-type.c (typy_lookup_typename): Add in block argument.
	If provided restrict lookup to specified blocks.
	(gdbpy_lookup_type): Likewise.
	(typy_lookup_type): Likewise.

2010-02-25  Daniel Jacobowitz  <dan@codesourcery.com>

	Symbian config

	gdb/
	* arm-symbian-tdep.c: New.
	* configure.tgt (arm*-*-symbianelf*): New target.
	(*-*-symbianelf*): New OS.
	* osabi.c (gdb_osabi_names): Add Symbian.
	* defs.h (gdb_osabi): Add GDB_OSABI_SYMBIAN.
	* Makefile.in (ALL_TARGET_OBJS): Add arm-symbian-tdep.o.
	(ALLDEPFILES): Add arm-symbian-tdep.c.

2010-02-25  Daniel Jacobowitz  <dan@codesourcery.com>

	* symfile.c (find_lowest_section): Include SEC_ALLOC sections.

2010-02-24  Pedro Alves  <pedro@codesourcery.com>

	* mi/mi-main.c (mi_cmd_execute): Fix typo.

2010-02-24  Phil Muldoon  <pmuldoon@redhat.com>
	    Tom Tromey  <tromey@redhat.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* python/python.c (_initialize_python): Call
	gdbpy_initialize_symtabs, gdbpy_initialize_symbols and
	gdbpy_initialize_blocks.
	* python/python-internal.h: Declare struct symbol, block and
	symtab_and_line.  Declare block_object_type and
	symbol_object_type
	(gdbpy_lookup_symbol gdbpy_block_for_pc)
	(symtab_and_line_to_sal_object, symtab_to_symtab_object)
	(symbol_to_symbol_object,  block_to_block_object)
	(gdbpy_initialize_symtabs,gdbpy_initialize_symbols)
	(gdbpy_initialize_blocks ): Declare.
	* python/py-frame.c (frapy_block, frapy_function, frapy_find_sal)
	(frapy_select): Add methods.
	(frapy_read_var): Add symbol branch.
	* Makefile.in (SUBDIR_PYTHON_OBS): Add py-symbol, py-symtab,
	py-block.
	(SUBDIR_PYTHON_SRCS): Likewise.
	(py-symbol.o): New rule.
	(py-symtab.o): Likewise.
	(py-block.o): Likewise.
	* python/py-symbol.c: New file.
	* python/py-symtab.c: Likewise.
	* python/py-block.c: Likewise.

2010-02-24  Pedro Alves  <pedro@codesourcery.com>

	PR gdb/11321

	* inferior.h (prepare_for_detach): Declare.
	(struct inferior) <detaching>: New field.
	* infrun.c (prepare_for_detach): New.
	(handle_inferior_event) <random signal>: Don't stop if detaching.
	* target.c (target_detach): Call prepare_for_detach.

2010-02-24  Pedro Alves  <pedro@codesourcery.com>

	Per-process displaced stepping queue.

	* infrun.c (displaced_step_ptid, displaced_step_request_queue)
	(displaced_step_gdbarch, displaced_step_closure,
	(displaced_step_original, displaced_step_copy): Move globals to
	this...
	(struct displaced_step_inferior_state): ... new structure.
	(displaced_step_inferior_states): New global.
	(get_displaced_stepping_state, add_displaced_stepping_state)
	(remove_displaced_stepping_state, infrun_inferior_exit): New
	functions.
	(displaced_step_clear): Add displaced_step_inferior_state
	parameter, and adjust to handle it.
	(displaced_step_clear_cleanup): Parameter is now a
	displaced_step_inferior_state.  Adjust.
	(displaced_step_prepare): Adjust.
	(displaced_step_fixup, displaced_step_fixup)
	(infrun_thread_ptid_changed, resume): Adjust.
	(init_wait_for_inferior): Don't call displaced_step_clear.
	(infrun_thread_stop_requested): Rewrite.
	(_initialize_infrun): Install infrun_inferior_exit as
	inferior_exit observer.

2010-02-24  Pedro Alves  <pedro@codesourcery.com>

	* inferior.h (ptid_match): Declare.
	* infrun.c (ptid_match): New.
	* remote.c (queued_stop_reply): Rewrite and use ptid_match.
	(handle_notification): Add debug output.
	* linux-nat.c (ptid_match): Delete.

2010-02-24  David S. Miller  <davem@davemloft.net>

	* gdb_ptrace.h (PT_SYSCALL): If PTRACE_SYSCALL is available, use it.
	* syscalls/sparc-linux.xml: New.
	* syscalls/sparc64-linux.xml: New.
	* Makefile.in (XML_SYSCALL_FILES): Add new syscall XML files.
	* sparc-linux-tdep.c (XML_SYSCALL_FILENAME_SPARC32): Define.
	(sparc32_linux_get_syscall_number): New function.
	(sparc32_linux_init_abi): Set syscall XML file name and hook up
	syscall number fetcher.
	* sparc64-linux-tdep.c (XML_SYSCALL_FILENAME_SPARC64): Define.
	(sparc64_linux_get_syscall_number): New function.
	(sparc64_linux_init_abi): Set syscall XML file name and hook up
	syscall number fetcher.

2010-02-24  Vladimir Prus  <vladimir@codesourcery.com>

	Multiexec MI

	* breakpoint.c (clear_syscall_counts): Take struct inferior*.
	* inferior.c (add_inferior_silent): Notify inferior_added
	observer.
	(delete_inferior_1): Notify inferior_removed observer.
	(exit_inferior_1): Pass inferior, not pid, to observer.
	(inferior_appeared): Likewise.
	(add_inferior_with_spaces): New.
	(add_inferior_command): Use the above.
	* inferior.h (delete_inferior_1, add_inferior_with_spaces):
	Declare.

	* inflow.c (inflow_inferior_exit): Likewise.
	* jit.c (jit_inferior_exit_hook): Likewise.

	* mi/mi-cmds.c (mi_cmds): Register add-inferior and
	remove-inferior.
	* mi/mi-cmds.h (mi_cmd_add_inferior, mi_cmd_remove_inferior): New.
	* mi/mi-interp.c (mi_inferior_added, mi_inferior_removed): New.
	(report_initial_inferior): New.
	(mi_inferior_removed): Register the above. Make sure
	inferior_added observer is called on the first inferior.
	(mi_new_thread, mi_thread_exit): Thread group is now identified by
	inferior number, not pid.
	(mi_solib_loaded, mi_solib_unloaded): Report which inferiors are
	affected.
	* mi/mi-main.c (current_context): New.
	(proceed_thread_callback): Use typed closure.
	Proceed everything if pid is 0. Most implementation split into
	(proceed_thread): ... this.
	(run_one_inferior): New.
	(mi_cmd_exec_continue, mi_cmd_exec_interrupt, mi_cmd_exec_run):
	Adjust for multiexec behaviour.
	(mi_cmd_add_inferior, mi_cmd_remove_inferior): New.
	(mi_cmd_execute): Handle the 'thread-group' option here.
	Do some extra checks.
	* mi-parse.c (mi_parse): Handle the --all and --thread-group
	options.
	* mi-parse.h (struct mi_parse): New fields all and thread_group.

2010-02-24  Vladimir Prus  <vladimir@codesourcery.com>

	Make -exec-run a proper MI commands.

	* mi/mi-cmds.h (mi_cmd_exec_run): Declare.
	* mi/mi-cmds.c (mi_cmds): Adjust.
	* mi/mi-main.c (mi_cmd_exec_run): New.

2010-02-24  Pedro Alves  <pedro@codesourcery.com>
	    Stan Shebs  <stan@codesourcery.com>

	* tracepoint.h (set_traceframe_number)
	(cleanup_restore_current_traceframe): Declare.
	* tracepoint.c (set_traceframe_number): New.
	(struct current_traceframe_cleanup): New.
	(do_restore_current_traceframe_cleanup)
	(restore_current_traceframe_cleanup_dtor)
	(make_cleanup_restore_current_traceframe): New.
	* infrun.c: Include tracepoint.h.
	(fetch_inferior_event): Switch out and in of tfind mode.

2010-02-24  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (breakpoint_init_inferior): Also delete
	bp_shlib_event breakpoints.
	* solib-frv.c (enable_break): Remove call to
	remove_solib_event_breakpoints.
	* solib-svr4.c (enable_break): Ditto.
	* solib-darwin.c (darwin_solib_create_inferior_hook): Ditto.
	* solib-pa64.c (pa64_solib_create_inferior_hook): Ditto.
	* solib-som.c (som_solib_create_inferior_hook): Ditto.
	* solib-spu.c (spu_enable_break): Ditto.

2010-02-23  Harald Koenig  <H.Koenig@science-computing.de>

	* c-exp.y (token_and_value): s/union YYSTYPE/YYSTYPE.

2010-02-23  Harald Koenig  <H.Koenig@science-computing.de>

	* varobj.c (varobj_update): Avoid non-constants in initializers.

2010-02-23  Tom Tromey  <tromey@redhat.com>

	* dwarf2loc.c (read_pieced_value) <DWARF_VALUE_STACK>: Correctly
	handle big-endian values.
	(dwarf2_evaluate_loc_desc) <DWARF_VALUE_STACK>: Likewise.

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

	PR9605

	gdb/
	* breakpoint.c (insert_bp_location): If inserting the read
	watchpoint failed, fallback to an access watchpoint.
	(bpstat_check_watchpoint): Stop for read watchpoint triggers even
	if the value changed, if not watching the same memory for writes.
	(watchpoint_locations_match): Add comment.
	(update_global_location_list): Copy the location's watchpoint type.
	* i386-nat.c (i386_length_and_rw_bits): It's an internal error to
	handle read watchpoints here.
	(i386_insert_watchpoint): Read watchpoints aren't supported.
	* remote.c (remote_insert_watchpoint): Return 1 for unsupported
	packets.
	* target.h (target_insert_watchpoint): Update description.

2010-02-19  Tom Tromey  <tromey@redhat.com>

	* p-typeprint.c (pascal_type_print_varspec_prefix): Update.
	* m2-typeprint.c (m2_print_type): Update.
	* gdbtypes.c (recursive_dump_type): Update.
	(copy_type_recursive): Update.
	* c-typeprint.c (c_type_print_varspec_prefix): Update.
	(c_type_print_base): Update.
	* gdbtypes.h (TYPE_CODE_TEMPLATE, TYPE_CODE_TEMPLATE_ARG):
	Remove.
	(struct cplus_struct_type) <ntemplate_args>: Remove.
	<struct template_arg>: Remove.
	<is_dynamic>: Move earlier.
	(TYPE_TEMPLATE_ARGS): Remove.
	(TYPE_NTEMPLATE_ARGS): Remove.
	(TYPE_TEMPLATE_ARG): Remove.

2010-02-19  Tom Tromey  <tromey@redhat.com>

	PR c++/8693, PR c++/9496:
	* cp-namespace.c (cp_lookup_nested_type): Handle TYPE_CODE_UNION.
	* c-exp.y (lex_one_token): Rename from yylex.  Don't call
	write_dollar_variable.  Don't try to classify NAME tokens.
	(token_and_value): New type.
	(token_fifo, popping, name_obstack): New globals.
	(classify_name): New function.
	(classify_inner_name): Likewise.
	(yylex): Likewise.
	(VARIABLE): Now has type sval.
	(exp : VARIABLE): Call write_dollar_variable.
	(qualified_name): Use TYPENAME, not typebase.  Add production for
	multiple "::" instances.
	(variable): Use name_not_typename.
	(qualified_type): Remove.
	(typebase): Update.

2010-02-19  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* symfile.c (addr_info_make_relative): Extend comment.  Move SECT to
	a more inner block.  Initialize ADDR by LOWER_OFFSET only if it was
	found by bfd_get_section_by_name.
	* symfile.h (struct section_addr_info) <sectindex>: New comment.

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

	* NEWS: Add new "[...] since 7.1" section.  Rename the "[...] since
	7.0 section" into "Changes in 7.1".

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

	GDB 7.1 branch created (branch timestamp: 2010-02-18 20:00 UTC)
	* version.in: Bump version to 7.1.50.20100219-cvs.

2010-02-18  Harald Koenig  <H.Koenig@science-computing.de>

	* mi/mi-main.c (mi_cmd_exec_jump): Drop unneeded `return'.
	* symfile.c (symfile_map_offsets_to_segments): Fix assertion.

2010-02-17  Tom Tromey  <tromey@redhat.com>

	* NEWS: Add Python API Improvements section.

2010-02-18  Daniel Jacobowitz  <dan@codesourcery.com>

	* NEWS: Correct typo.

2010-02-17  Tom Tromey  <tromey@redhat.com>

	* objfiles.c (gdb_bfd_ref): Handle abfd==NULL.

2010-02-17  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* symfile.c (build_section_addr_info_from_objfile): Include sections
	only if they are SEC_ALLOC or SEC_LOAD.

2010-02-17  H.J. Lu  <hongjiu.lu@intel.com>

	PR shlibs/11293
	* solib-svr4.c (enable_break): Check size of CORE_ADDR instead
	of ULONGEST for address size.

2010-02-17  Tom Tromey  <tromey@redhat.com>

	* NEWS: Add C++ improvements section.

2010-02-17  Ulrich Weigand  <uweigand@de.ibm.com>

	* python/python-internal.h [!WITH_THREAD] (PyGILState_Release,
	PyThreadState_Swap): Avoid "statement with no effect" warning.

2010-02-17  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* solib-svr4.c (enable_break <target_auxv_search>): New variable
	addr_bit.  Adjust LOAD_ADDR sign for cross-arch inferiors.

2010-02-17  Tristan Gingold  <gingold@adacore.com>
	    Petr Hluzin  <petr.hluzin@gmail.com>

	* avr-tdep.c (avr_scan_prologue): Convert an if statement to a
	gdb_assert.  Fix info->size for SIG prologue.

2010-02-16  Daniel Jacobowitz  <dan@codesourcery.com>

	* infcmd.c (show_inferior_tty_command): Check for NULL.
	Correct output message.

2010-02-16  Daniel Jacobowitz  <dan@codesourcery.com>

	* linespec.c (decode_line_1): Handle FILE:FUNCTION even if
	FUNCTION contains parentheses.  Improve removal of a trailing
	single quote.

2010-02-16  Daniel Jacobowitz  <dan@codesourcery.com>

	* gcore.c (do_bfd_delete_cleanup): New function.
	(gcore_command): Use it.  Discard the cleanup after success.
	(gcore_copy_callback): Delete dead code.

2010-02-16  Daniel Jacobowitz  <dan@codesourcery.com>

	* symfile.c (addr_info_make_relative): Always use
	find_lowest_section.

2010-02-16  Sami Wagiaalla <swagiaal@redhat.com>

	* NEWS: Added entry for namespace fixes.

2010-02-15  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (guess_structure_name): Allocate name on the
	objfile obstack.

2010-02-15  Tom Tromey  <tromey@redhat.com>

	* c-typeprint.c (c_type_print_base): Reverse order of test.

2010-02-15  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* solib-svr4.c (LM_ADDR_CHECK): New variable minpagesize.  Optionally
	initialize it from ELF BFD.  Extend the prelink condition by it.

2010-02-15  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* defs.h (parse_pid_to_attach): New.
	* utils.c (parse_pid_to_attach): New.
	* darwin-nat.c (darwin_attach): Replace ARGS parsing by parse_pid.
	* gnu-nat.c (gnu_attach): Likewise.
	* nto-procfs.c (procfs_attach): Likewise.
	* procfs.c (procfs_attach): Likewise.
	* windows-nat.c (windows_attach): Likewise.
	* inf-ptrace.c (inf_ptrace_attach): Likewise.  Remove variable dummy.
	* inf-ttrace.c (inf_ttrace_attach): Likewise.
	* remote.c (extended_remote_attach_1): Likewise.  New comment on getpid
	check.

2010-02-14  Masaki Muranaka  <monaka@monami-software.com>

	* MAINTAINERS: Add myself for write after approval privileges.

2010-02-13  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* solib-svr4.c: (LM_ADDR_CHECK): Move variable align to a more inner
	block.

2010-02-13  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* solib-svr4.c: (LM_ADDR_CHECK): Print successful prelink adjustment
	only if INFO_VERBOSE.

2010-02-12  Tomas Holmberg <th@virtutech.com>

	* mi/mi-main.c: Added the --reverse flag to the following MI
	commands: exec-continue, exec-finish, exec-next, exec-step,
	exec-next-instruction, exec-step-instruction. This is to
	support reverse execution over the MI interface to gdb.

2010-02-12  Pedro Alves  <pedro@codesourcery.com>

	* tracepoint.c (_initialize_tracepoint): Specify that the address
	range of `tfind outsize' is exclusive, and that the address range
	of `tfind range' is inclusive, in the commands' help strings.

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

	Spurious "dll not found" error messages on x64-windows.
	* windows-nat.c: Add include of complaints.h.
	(handle_unload_dll): Change dll-not-found error into a complaint.

2010-02-12  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (allocate_bp_location): Use bp_loc_other for
	bp_tracepoint and bp_fast_tracepoint, not
	bp_loc_software_breakpoint.
	(update_global_location_list): Tracepoints are never duplicates of
	anything.

2010-02-12  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (break_command_really): Change return type to int.
	Return false if no breakpoint was created, true otherwise.
	(trace_command): Don't set the tracepoint count if no tracepoint
	was created.
	(ftrace_command): Ditto.
	(create_tracepoint_from_upload): Bail out if the tracepoint wasn't
	created in the breakpoints table.

2010-02-11  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Ulrich Weigand  <uweigand@de.ibm.com>

	* solib-svr4.c (LM_ADDR_CHECK): New comment on PPC-aware condition.

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

	* ax-gdb.c (gen_exp_binop_rest) [BINOP_SUBSCRIPT]: Error out if
	the offset value isn't of integral type.

2010-02-11  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* breakpoint.c (delete_breakpoint) <bpt->related_breakpoint != NULL>:
	New.

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

	* ax-gdb.c (gen_exp_binop_rest) [BINOP_SUBSCRIPT]: Error out on
	non-subscriptable types.
	* valarith.c (binop_types_user_defined_p): New, abstracted out
	from ...
	(binop_user_defined_p): ... this.
	* value.h (binop_types_user_defined_p): Declare.

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

	* tracepoint.c (tfile_open): Remove spurious discard_cleanups.
	Merge uploaded TSVs before merging uploaded tracepoints.

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

	* ax-gdb.c (gen_deref): Don't allow dereferencing void pointers.

2010-02-11  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-cmd-stack.c (mi_cmd_stack_list_locals): Add extra
	whitespace character after a dot in comment.
	(mi_cmd_stack_list_arguments, mi_cmd_stack_list_variables):
	Likewise.
	(list_args_or_locals): For the 'all' (that is
	-stack-list-variables) case, always output list of tuples.
	Output 'arg' field if variable is argument.

2010-02-10  Tom Tromey  <tromey@redhat.com>

	* parser-defs.h (parser_debug): Declare.
	* parse.c (_initialize_parse): Install "debug parser" set/show
	command.
	(parser_debug): New global.
	(show_parserdebug): New function.
	* c-exp.y (c_parse): Set yydebug.

2010-02-10  H.J. Lu  <hongjiu.lu@intel.com>

	* target-descriptions.c (tdesc_type): Add TDESC_TYPE_I387_EXT,
	TDESC_TYPE_I386_EFLAGS and TDESC_TYPE_I386_MXCSR.
	(tdesc_predefined_types): Add i387_ext, i386_eflags and
	i386_mxcsr.
	(tdesc_find_type): New.
	(tdesc_gdb_type): Use tdesc_find_type.  Handle TDESC_TYPE_I387_EXT,
	TDESC_TYPE_I386_EFLAGS and TDESC_TYPE_I386_MXCSR.

	* target-descriptions.h (tdesc_find_type): New.

2010-02-10  Michael Snyder  <msnyder@vmware.com>

	* gdb-gdb.py: Comment fix.

2010-02-09  Tristan Gingold  <gingold@adacore.com>

	* machoread.c (macho_symfile_relocate): New function.
	(macho_sym_fns): Use macho_symfile_relocate instead of
	default_symfile_relocate.
	(macho_oso_data): New type.
	(current_oso): New variable.
	(macho_add_oso_symfile): Do not compute section_addr_info, but
	instead set vma of sections.
	Do not set SYMFILE_VERBOSE to call symbol_file_add_from_bfd.
	Set and clear current_oso.

2010-02-09  Joel Brobecker  <brobecker@adacore.com>

	Wrong type description for tagged type parameter.
	* ada-lang.c (ada_evaluate_subexp) [OP_VAR_VALUE]: When noside is
	EVAL_AVOID_SIDE_EFFECTS, also handle the case when type is a
	reference to a tagged type.

2010-02-09  Tristan Gingold  <gingold@adacore.com>

	* objfiles.c (objfile_separate_debug_iterate): Do not iterate on
	brothers of the parent.

2010-02-08  Tom Tromey  <tromey@redhat.com>

	PR c++/8017:
	* value.h: Update.
	* valops.c (search_struct_field): Make 'name' const.
	(search_struct_method): Likewise.
	(find_method_list): Make 'method' const.
	(value_struct_elt): Make 'name' and 'err' const.
	(value_find_oload_method_list): Make 'method' const.
	(find_overload_match): Make 'name' const.
	* eval.c (evaluate_subexp_standard): New locals function,
	function_name.
	<OP_FUNCALL>: Handle OP_SCOPE specially.

2010-02-08  Ulrich Weigand  <uweigand@de.ibm.com>

	* infrun.c (handle_inferior_event): Do not look up regcache
	for exited processes.

2010-02-08  Chris Moller  <moller@mollerware.com>

	PR gdb/10728
	* valarith.c (value_ptrdiff): Added a test for a zero type length,
	warn if found, and assume length = 1.

2010-02-08  Chris Moller  <cmoller@redhat.com>

	PR gdb/9067
	* cp-valprint.c (cp_print_value_fields) Fix use of obstacks.
	(cp_print_static_field)  Fix use of obstacks.

2010-02-08  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (linux_nat_resume): In non-stop, also only tag
	resumed LWPs as resumed.
	(linux_nat_wait_1): If there's no resumed LWP in the set of LWPs
	we're waiting for, bail out with TARGET_WAITKIND_IGNORE, instead
	of throwing an internal error.  If an LWP of a process we're not
	waiting for reports a signal, don't force collecting a SIGSTOP,
	and if it was breakpoint hit in non-stop mode, cancel it.  Don't
	go through all LWPs cancelling breakpoints in non-stop mode.
	(resume_stopped_resumed_lwps): New.
	(linux_nat_wait): Use it.

2010-02-07  H.J. Lu  <hongjiu.lu@intel.com>

	* features/Makefile (WHICH): Add i386/i386, i386/i386-linux,
	i386/amd64 and i386/amd64-linux.
	(i386/i386-expedite): New.
	(i386/i386-linux-expedite): Likewise.
	(i386/amd64-expedite):Likewise.
	(i386/amd64-linux-expedite): Likewise.
	($(outdir)/i386/i386-linux.dat): Likewise.
	($(outdir)/i386/amd64.dat): Likewise.
	($(outdir)/i386/amd64-linux.dat): Likewise.

	* features/i386/32bit-core.xml: New.
	* features/i386/32bit-linux.xml: Likewise.
	* features/i386/32bit-sse.xml: Likewise.
	* features/i386/64bit-core.xml: Likewise.
	* features/i386/64bit-linux.xml: Likewise.
	* features/i386/64bit-sse.xml: Likewise.
	* features/i386/i386-linux.xml: Likewise.
	* features/i386/i386.xml: Likewise.
	* features/i386/amd64-linux.xml: Likewise.
	* features/i386/amd64.xml: Likewise.
	* features/i386/i386-linux.c: Likewise.
	* features/i386/i386.c: Likewise.
	* features/i386/amd64-linux.c: Likewise.
	* features/i386/amd64.c: Likewise.

2010-02-05  Sami Wagiaalla  <swagiaal@redhat.com>

	PR c++/7935:
	* cp-support.h: Added char* alias element to using_direct data
	struct.
	(cp_add_using): Added char* alias argument.
	(cp_add_using_directive): Ditto.
	* cp-namespace.c: Updated with the above changes.
	(cp_lookup_symbol_imports): Check for aliases.
	* dwarf2read.c (read_import_statement): Figure out local alias
	for the import and pass it on to cp_add_using.
	(read_namespace): Pass alias argument to cp_add_using.

2010-02-05  Hui Zhu  <teawater@gmail.com>

	* defs.h (gdb_bfd_errmsg): New extern.
	* exec.c (exec_file_attach): Change bfd_errmsg to
	gdb_bfd_errmsg.
	* utils.c (AMBIGUOUS_MESS1): New macro.
	(AMBIGUOUS_MESS2): New macro.
	(gdb_bfd_errmsg): New function.

2010-02-04  Doug Evans  <dje@google.com>

	* solib-svr4.c (enable_break): Add comment.

2010-02-04  Anthony Green  <green@moxielogic.com>

	* moxie-tdep.c (moxie_analyze_prologue): Fail protocol analysis
	gracefully.

2010-02-04  Tom Tromey  <tromey@redhat.com>

	* valops.c (search_struct_field): Account for
	value_embedded_offset.  Fix check for virtual base past the end of
	the object.  Use value_copy when making a slice of the value.

2010-02-04  H.J. Lu  <hongjiu.lu@intel.com>

	PR tui/9622
	* tui/tui-interp.c (tui_init): Call tui_initialize_readline
	only if gdb_stdout is a tty.

2010-02-04  H.J. Lu  <hongjiu.lu@intel.com>

	* target-descriptions.c: Include "osabi.h".
	(maint_print_c_tdesc_cmd): Generate set_tdesc_osabi for valid
	OSABI.

2010-02-04  Tristan Gingold  <gingold@adacore.com>

	* machoread.c (macho_add_oso): Renamed to macho_register_oso.
	(macho_symtab_read): Adjust calls to macho_add_oso.
	(macho_oso_symfile): Renamed to macho_symfile_read_all_oso.
	(macho_symfile_read): Adjust call to macho_oso_symfile.
	(macho_new_init): Move this function after declarations.
	(macho_symfile_init): Ditto.
	* darwin-nat-info.c (darwin_lib_gdb_ports): Remove.
	* darwin-nat.c (darwin_lookup_task): Remove unused prototype.

2010-02-04  Vladimir Prus  <vladimir@codesourcery.com>

	Include MI command in remotelog.

	* mi/mi-main.c (mi_execute_command): Call target_log_command.

2010-02-03  H.J. Lu  <hongjiu.lu@intel.com>

	* remote.c (remote_state): Remove gdbarch.
	(init_remote_state): Don't set gdbarch.
	(remote_query_supported): Pass target_gdbarch instead of
	rs->gdbarch to gdbarch_qsupported.

2010-02-03  H.J. Lu  <hongjiu.lu@intel.com>

	* gdbarch.sh: Add qsupported.

	* gdbarch.c: Regenerated.
	* gdbarch.h: Likewise.

	* remote.c (remote_state): Add gdbarch.
	(init_remote_state): Set gdbarch.
	(remote_query_supported): Support gdbarch_qsupported.

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

	* amd64fbsd-nat.c (amd64fbsd_supply_pcb): Also check for
	__FreeBSD_kernel_version.

2010-02-03  Tristan Gingold  <gingold@adacore.com>

	* symfile.h (struct sym_fns): Add sym_relocate field.
	(default_symfile_relocate): New prototype.
	(symfile_relocate_debug_section): First argument is now an objfile.
	* symfile.c (default_symfile_relocate): Rename from
	symfile_relocate_debug_section, first argument is now an objfile.
	(symfile_relocate_debug_section): New function.
	* coffread.c (coff_sym_fns): Set sym_relocate field.
	* somread.c (som_sym_fns): Ditto.
	* mipsread.c (ecoff_sym_fns): Ditto.
	* machoread.c (macho_sym_fns): Ditto.
	* elfread.c (elf_sym_fns): Ditto.
	* dwarf2read.c (dwarf2_read_section): Ditto.
	* xcoffread.c (xcoff_sym_fns): Ditto.
	* dbxread.c (aout_sym_fns): Ditto.
	(dbx_psymtab_to_symtab): Adjust call to symfile_relocate_debug_section.
	(elfstab_build_psymtabs): Ditto.

2010-02-03  H.J. Lu  <hongjiu.lu@intel.com>

	* defs.h (MAX_REGISTER_SIZE): Increase to 32.

2010-02-02  Tom Tromey  <tromey@redhat.com>

	* valops.c (value_cast_structs): Try downcasting using the RTTI
	type.

2010-02-02  Tom Tromey  <tromey@redhat.com>

	* gnu-v2-abi.c: Don't include gnu-v2-abi.h.
	(gnuv2_baseclass_offset): Now static.
	* Makefile.in (HFILES_NO_SRCDIR): Remove gnu-v2-abi.h.
	* gnu-v2-abi.h: Remove.

2010-02-02  Tom Tromey  <tromey@redhat.com>

	* m2-typeprint.c (m2_record_fields): Don't use
	TYPE_DECLARED_TYPE.
	* gdbtypes.h (TYPE_DECLARED_CLASS): New macro.
	(struct main_type) <flag_declared_class>: New field.
	(struct cplus_struct_type) <declared_type>: Remove.
	<ntemplate_args>: Move earlier.
	(DECLARED_TYPE_CLASS, DECLARED_TYPE_UNION, DECLARED_TYPE_STRUCT)
	(DECLARED_TYPE_TEMPLATE): Remove.
	(TYPE_DECLARED_TYPE): Remove.
	* gdbtypes.c (lookup_union): Don't use TYPE_DECLARED_TYPE.
	* dwarf2read.c (read_structure_type): Set TYPE_DECLARED_CLASS.
	* c-typeprint.c (c_type_print_base): Use TYPE_DECLARED_CLASS, not
	TYPE_DECLARED_TYPE.

2010-02-02  Tom Tromey  <tromey@redhat.com>

	PR c++/11226, PR c++/9629, PR c++/9688, PR c++/8890:
	* valops.c (search_struct_field): Compute nbases after calling
	CHECK_TYPEDEF.
	(check_field): Call CHECK_TYPEDEF.
	* cp-valprint.c (cp_print_value): Pass correct address to
	baseclass_offset.  Fix check for virtual base past the end of the
	object.  Don't offset address passed to cp_print_value_fields or
	apply_val_pretty_printer.
	(cp_print_value_fields): Fix call to val_print.
	(cp_print_value_fields_rtti): New function.
	* c-valprint.c (c_val_print): Use cp_print_value_fields_rtti.
	* p-valprint.c (pascal_object_print_value_fields): Fix call to
	val_print.
	* python/py-prettyprint.c (apply_val_pretty_printer): Add embedded
	offset to address.
	* language.h (struct language_defn) <la_val_print>: Document.
	* c-lang.h (cp_print_value_fields_rtti): Declare.

2010-02-01  Jan Kratochvil  <jan.kratochvil@redhat.com>

	PR libc/11214:
	* linux-low.c (linux_tracefork_child) [!(__UCLIBC__ && HAS_NOMMU)]: New.
	(linux_test_for_tracefork): Move `stack' into [__UCLIBC__ && HAS_NOMMU].
	(linux_test_for_tracefork) [!(__UCLIBC__ && HAS_NOMMU)]: New.

2010-02-01  Michael Matz  <matz@suse.de>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* i386-tdep.c (i386_frame_cache): Assume valid anonymous
	functions use a frame pointer.

2010-02-01  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* solib-svr4.c (scan_dyntag): New variable dyn_addr.  Replace gdb_assert
	by a conditional setting DYN_ADDR.  Use DYN_ADDR.
	* config/djgpp/fnchange.lst: Add translations for
	symbol-without-target_section.exp and symbol-without-target_section.c.

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

	* gdbarch.sh: Set LANG and LC_ALL to C, not c.
	(remote_breakpoint_for_pc): Correct invalid_p check.
	* gdbarch.c: Regenerated.

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

	* arm-tdep.c (arm_find_mapping_symbol): New function, from
	arm_pc_is_thumb.
	(arm_pc_is_thumb): Use arm_find_mapping_symbol.
	(extend_buffer_earlier): New function.
	(MAX_IT_BLOCK_PREFIX, IT_SCAN_THRESHOLD): New constants.
	(arm_adjust_breakpoint_address): New function.
	(arm_gdbarch_init): Register arm_adjust_breakpoint_address.

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

	* arm-linux-tdep.c (arm_linux_thumb2_be_breakpoint)
	(arm_linux_thumb2_le_breakpoint): New constants.
	(arm_linux_init_abi): Set thumb2_breakpoint and
	thumb2_breakpoint_size.
	* arm-tdep.c (thumb_insn_size, thumb_advance_itstate): New functions.
	(thumb_get_next_pc): Add a comment.  Rename IT to ITSTATE.
	Implement support for single stepping through IT blocks if
	a 32-bit Thumb breakpoint instruction is available.
	(arm_breakpoint_from_pc): If a 32-bit Thumb breakpoint instruction
	is available, use it when needed.
	(arm_remote_breakpoint_from_pc): New function.
	(arm_gdbarch_init): Register arm_remote_breakpoint_from_pc.
	* arm-tdep.h (struct gdbarch_tdep): Correct thumb_breakpoint
	comment.  Add thumb2_breakpoint and thumb2_breakpoint_size.

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

	* arch-utils.c (default_remote_breakpoint_from_pc): New function.
	* arch-utils.h (default_remote_breakpoint_from_pc): Declare.
	* gdbarch.c, gdbarch.h: Regenerated.
	* gdbarch.sh (remote_breakpoint_from_pc): New architecture method.
	* remote.c (remote_insert_breakpoint, remote_insert_hw_breakpoint): Use
	gdbarch_remote_breakpoint_from_pc.

2010-01-29  Daniel Jacobowitz  <dan@codesourcery.com>

	* infrun.c (prepare_to_proceed): Handle other signals which might
	match a breakpoint.
	(handle_inferior_event): Move the check for unusual breakpoint
	signals earlier.

2010-01-29  Paul Hilfinger  <hilfinger@adacore.com>

	amd64 - function returning record with field straddling 2 registers.
	* amd64-tdep.c (amd_classify_aggregate): Handle the case of
	a record of length <= 16 in which a field straddles the two
	eightbytes.

2010-01-29  Joel Brobecker  <brobecker@adacore.com>

	Implement return values on amd64-windows.
	* amd64-windows-tdep.c: #include gdbcore.h and regcache.h.
	(amd64_windows_return_value): New function.
	(amd64_windows_init_abi): Call set_gdbarch_return_value with
	amd64_windows_return_value.

2010-01-29  Joel Brobecker  <brobecker@adacore.com>

	amd64-windows: 32 bytes allocated on stack by caller for integer
	parameter registers.
	* i386-tdep.h (struct gdbarch_tdep): Add new field
	integer_param_regs_saved_in_caller_frame.
	* amd64-windows-tdep.c (amd64_windows_init_abi): Set
	tdep->integer_param_regs_saved_in_caller_frame to 1.
	* amd64-tdep.c (amd64_push_dummy_call): Allocate some memory on
	stack if tdep->integer_param_regs_saved_in_caller_frame is set.

2010-01-29  Joel Brobecker  <brobecker@adacore.com>

	amd64-windows: memory args passed by pointer during function calls.
	* i386-tdep.h (gdbarch_tdep): Add field memory_args_by_pointer.
	* amd64-tdep.c (amd64_push_arguments): Add handling of architectures
	where tdep->memory_args_by_pointer is non-zero.
	* amd64-windows-tdep.c (amd64_windows_init_abi): Set
	tdep->memory_args_by_pointer to 1.

2010-01-29  Joel Brobecker  <brobecker@adacore.com>

	amd64-windows: Integer parameters in function calls.
	* i386-tdep.h (enum amd64_reg_class): New, moved here from
	amd64-tdep.c.
	(struct gdbarch_tdep): Add fields call_dummy_num_integer_regs,
	call_dummy_integer_regs, and classify.
	* amd64-tdep.h (amd64_classify): Add declaration.
	* amd64-tdep.c (amd64_dummy_call_integer_regs): New static constant.
	(amd64_reg_class): Delete, moved to i386-tdep.h.
	(amd64_classify): Make non-static.  Move declaration to amd64-tdep.h.
	Replace call to amd64_classify by call to tdep->classify.
	(amd64_push_arguments): Get the list of registers to use for
	passing integer parameters from the gdbarch tdep structure,
	rather than using a hardcoded one.  Replace calls to amd64_classify
	by calls to tdep->classify.
	(amd64_push_dummy_call): Get the register number used for
	the "hidden" argument from tdep->call_dummy_integer_regs.
	(amd64_init_abi): Initialize tdep->call_dummy_num_integer_regs
	and tdep->call_dummy_integer_regs.  Set tdep->classify.
	* amd64-windows-tdep.c: Add include of gdbtypes.h.
	(amd64_windows_dummy_call_integer_regs): New static global.
	(amd64_windows_classify): New function.
	(amd64_windows_init_abi): Initialize tdep->call_dummy_num_integer_regs
	tdep->call_dummy_integer_regs and tdep->classify.

2010-01-28  Daniel Jacobowitz  <dan@codesourcery.com>

	* regcache.c (regcache_xmalloc): Add aspace argument.  Use it
	for the new regcache.  All callers updated.
	(regcache_cpy, regcache_cpy_no_passthrough): Do not set aspace here.
	(get_thread_arch_regcache): Do not set aspace here.
	* regcache.h (regcache_xmalloc): Update declaration.

	* frame.c, infcall.c, ppc-linux-tdep.c: Calls to
	regcache_xmalloc updated.

2010-01-28  Joel Brobecker  <brobecker@adacore.com>

	Another -Wunused-function error in procfs.c (sparc-solaris)
	* procfs.c (insert_dbx_link_breakpoint): Delete declaration.  Move up.
	Only define if SYS_syssgi is defined.
	(remove_dbx_link_breakpoint): Delete declaration.  Move up.
	(dbx_link_addr, insert_dbx_link_bpt_in_file)
	(insert_dbx_link_bpt_in_region): Move up.  Only define if SYS_syssgi
	is itself defined.

2010-01-27  Christopher Faylor  <me+cygwin@cgf.cx>

	* windows-nat.c (windows_initialization_done): New variable.
	(get_windows_debug_event): Issue error when process dies before
	completely initializing.
	(do_initial_windows_stuff): Set flag to indicate when we are done with
	the initial steps of attaching to the child.

2010-01-27  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* symtab.h (struct symbol <symtab>): New comment on NULL values.

2010-01-27  Doug Evans  <dje@google.com>

	* solib-svr4.c (solib_break_names): Add __dl_rtld_db_dlactivity.

	* breakpoint.c (bpstat_stop_status): Delete useless code.

2010-01-27  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* printcmd.c (display_uses_solib_p): Remove variable section.  Access
	objfile via SYMBOL_SYMTAB.

2010-01-26  Tom Tromey  <tromey@redhat.com>

	PR exp/7643:
	* eval.c (evaluate_subexp_for_address) <UNOP_IND>: Call
	coerce_array on result.

2010-01-26  Sami Wagiaalla  <swagiaal@redhat.com>

	* cp-namespace.c (cp_lookup_symbol_namespace): Added
	search_parent argument.
	(cp_add_using): Initialize 'searched' field.
	(reset_directive_searched): New function.
	* cp-support.h: Add 'searched' field to using_direct struct.
	(cp_lookup_symbol_imports): Ditto.
	* cp-namespace.c (cp_lookup_symbol_imports): Ditto.
	Perform recursive search.
	Implement non parent search.
	* valops.c (value_maybe_namespace_elt): Updated.

2010-01-26  Sami Wagiaalla  <swagiaal@redhat.com>

	PR gdb/10929:
	* dwarf2read.c (read_lexical_block_scope): Create blocks for
	scopes which contain using directives even if they contain no
	declarations.
	* symtab.c (lookup_symbol_aux): Pass lowest level block to
	la_lookup_symbol_nonlocal.
	* cp-namespace.c (cp_lookup_symbol_nonlocal): call
	cp_lookup_symbol_namespace.
	(cp_lookup_symbol_namespace): Perform an import lookup at every
	block level.
	(cp_lookup_symbol_imports): New function.
	(cp_lookup_symbol_in_namespace): New function.

2010-01-25  Tom Tromey  <tromey@redhat.com>

	PR gdb/11049:
	* c-valprint.c (c_val_print): Fix test of extract_unsigned_integer
	result.

2010-01-25  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* configure.ac: Only use host_os part when disabling TUI on osf.
	Use test to check variables, prefix strings with x.
	* configure: Regenerate.

	* solib-osf.c (osf_current_sos): Initialize tail.

2010-01-25  gingold  <gingold@adacore.com>

	* windows-nat.c (windows_continue): Use %x to print thread id.
	(get_windows_debug_event): Ditto.

2010-01-22  Tom Tromey  <tromey@redhat.com>

	PR symtab/11199:
	* dwarf2read.c (quirk_gcc_member_function_pointer): Change return
	type and arguments.  Use smash_to_methodptr_type.
	(read_structure_type): Call quirk_gcc_member_function_pointer
	later.
	* gdbtypes.h (smash_to_methodptr_type): Declare.
	* gdbtypes.c (smash_to_methodptr_type): New function.
	(lookup_methodptr_type): Use it.

2010-01-21  Tom Tromey  <tromey@redhat.com>

	PR symtab/11198:
	* symtab.h (lookup_minimal_symbol_and_objfile): Declare.
	* minsyms.c (lookup_minimal_symbol_and_objfile): New function.
	* glibc-tdep.c (find_minsym_and_objfile): Remove.
	(glibc_skip_solib_resolver): Use
	lookup_minimal_symbol_and_objfile.

2010-01-21  Kai Tietz  <kai.tietz@onevision.com>

	* inflow.c (check_syscall): Guard by #if clause for GO32 and
	WIN32 targets.

2010-01-20  Tom Tromey  <tromey@redhat.com>

	PR backtrace/10770:
	* valarith.c (value_binop): Handle BINOP_GTR, BINOP_LEQ, and
	BINOP_GEQ.  Handle BINOP_NOTEQUAL in the signed case.
	* dwarf2expr.c (new_dwarf_expr_context): Allocate
	dwarf_stack_values, not CORE_ADDRs.
	(execute_stack_op): Change DW_OP_div and comparison operators to
	use signed operands.

2010-01-20  Vladimir Prus  <vladimir@codesourcery.com>

	Per-inferior args and tty and environment.

	* infcmd.c (inferior_args): Rename to ...
	(inferior_args_scratch): ... this.
	(inferior_io_terminal): Rename to ...
	(inferior_io_terminal_scratch): ... this.
	(inferior_argc, inferior_argv): Remove.
	(set_inferior_io_terminal, get_inferior_io_terminal): Store
	inside current_inferior().
	(set_inferior_tty_command, show_inferior_tty_command): New.
	(get_inferior_args, set_inferior_args): Store inside
	current_inferior().
	(notice_args_set): Likewise and rename to...
	(set_args_command): ... this.
	(set_inferior_args_vector): Likewise.
	(notice_args_read): Rename to...
	(show_args_command): ...new.
	(tty_command): Remove.
	(run_command_1): Don't free old args, as they are freed by
	set_inferior_arg now.
	(run_no_args_command): Likewise.
	(inferior_environ): Remove.
	(run_command_1): Use environment of the current inferior.
	(environment_info, set_environment_command)
	(unset_environment_command, path_info, path_command): Likewise.
	(_initialize_infcmd): Adjust for function and variable renames.
	Do not init inferior_environ.
	* inferior.h (set_inferior_arg): Adjust prototype.
	(struct inferior): New fields args, argc, argv, terminal, environment.
	(inferior_environ): Remove declaration.
	* inferior.c (free_inferior): Free new fields.
	(add_inferior_silent): Initialize 'environment' field.
	* main.c (captured_main): Set arguments only after the initial
	inferior has been created.  Set set_inferior_io_terminal,
	not tty_command.
	* mi/mi-main.c (mi_cmd_env_path): Use environment of the current
	inferior.
	(_initialize_mi_cmd_env): Adjust for disappearance of global
	inferior_environ.
	* solib.c (solib_find): Use environment of the current inferior.

2010-01-20  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* varobj.c (varobj_add_child, install_dynamic_child): Wrap into #if
	HAVE_PYTHON.
	(instantiate_pretty_printer): Move HAVE_PYTHON outside of the function.

2010-01-20  Joel Brobecker  <brobecker@adacore.com>

	Get rid of ada-lang.c:function_name_from_pc.
	* ada-lang.c: Add "stack.h" #include.
	(function_name_from_pc): Delete.
	(is_known_support_routine): Replace call to function_name_from_pc
	by call to find_frame_funname.
	(ada_unhandled_exception_name_addr_from_raise): Likewise.

2010-01-19  Tom Tromey  <tromey@redhat.com>

	PR c++/11026:
	* dwarf2read.c (read_partial_die): Allocate partial DIE's name on
	objfile obstack.

2010-01-19  Tom Tromey  <tromey@redhat.com>

	* top.c (stop_sig, float_handler, do_nothing): Remove.

2010-01-19  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* breakpoint.c (watchpoint_check): Check the call
	gdbarch_in_function_epilogue_p before calling frame_find_by_id.
	Extend the comment.
	* config/djgpp/fnchange.lst: Add translations for
	watchpoint-cond-gone.exp, watchpoint-cond-gone.c and
	watchpoint-cond-gone-stripped.c.

2010-01-19  Tom Tromey  <tromey@redhat.com>

	PR c++/8000:
	* dwarf2read.c (partial_die_parent_scope): Put enumeration type
	into parent scope, and enumerator into grandparent scope.

2010-01-19  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Add entry for "set/show ada trust-PAD-over-XVS" commands.

2010-01-19  Joel Brobecker  <brobecker@adacore.com>

	* configure.host: Make x86_64-*-solaris2.1[0-9]* an alias of
	i[34567]86-*-solaris2.1[0-9]*.
	* configure.tgt: Likewise.

2010-01-19  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Document the source command enhancement allowing it
	to load Python scripts. Document the "set/show script-extension"
	commands.

2010-01-19  Joel Brobecker  <brobecker@adacore.com>

	Add -Wunused-function to compile flags.
	* configure.ac: Add -Wunused-function to build_warnings.
	* configure: Regenerate.

2010-01-19  Joel Brobecker  <brobecker@adacore.com>

	"delete" ada-lex.c:input function, not used.
	* ada-lex.l: #define YY_NO_INPUT.

2010-01-19  Joel Brobecker  <brobecker@adacore.com>

	Delete free_named_symtabs and associated cleanup.
	* symfile.h (free_named_symtabs): Delete declaration.
	* symfile.c: Remove some commented out code (clear_symtab_users_once).
	(cashier_psymtab): Comment function out.
	Delete declaration.
	(free_named_symtabs): Delete.
	* coffread.c (coff_end_symtab): Remove call to free_named_symtabs.
	* dbxread.c (end_psymtab): Likewise.
	* dwarf2read.c (process_psymtab_comp_unit): Ditto.
	* exec.c (exec_close_1): Ditto.
	* xcoffread.c (xcoff_end_psymtab): Likewise.

2010-01-19  Joel Brobecker  <brobecker@adacore.com>

	* stack.c (print_block_frame_labels): Comment function out.

2010-01-19  Joel Brobecker  <brobecker@adacore.com>

	Delete unused or undefined functions.
	* breakpoint.c (ep_parse_optional_filename): Delete.
	* dcache.c (dcache_write_line): Remove declaration.
	* infrun.c (build_infrun): Remove declaration.
	* tracepoint.c (tracepoint_save_command): Remove declaration.
	* linux-nat.c (init_lwp_list): Delete. No longer used.
	* event-loop.c (check_async_signal_handlers): Delete declaration.
	* infrun.c (init_execution_control_state): Delete.
	(proceed): Update comment to avoid mentioning
	init_execution_control_state.
	* target.c (kill_or_be_killed, nosupport_runtime): Delete.
	* ada-lang.c (ada_to_static_fixed_value): Delete.
	* scm-lang.c (evaluate_subexp_scm): Delete declaration.
	* cp-namespace.c (cp_copy_usings): Delete.
	* xml-syscall.c (xml_number_of_syscalls): Delete.
	* progspace.c (find_program_space_by_num): Delete.
	* inflow.c (handle_sigio): Delete declaration.
	* hppa-tdep.c (hppa_alignof): Delete.
	* mipsnbsd-tdep.c (mipsnbsd_sigtramp_offset)
	(mipsnbsd_core_osabi_sniffer): Delete.

2010-01-18  Tom Tromey  <tromey@redhat.com>

	PR c++/9680:
	* c-exp.y (REINTERPRET_CAST, DYNAMIC_CAST, STATIC_CAST)
	(CONST_CAST): New tokens.
	(exp): Add new productions.
	(ident_tokens): Add const_cast, dynamic_cast, static_cast, and
	reinterpret_cast.
	(is_cast_operator): New function.
	(yylex): Handle cast operators specially.
	* eval.c (evaluate_subexp_standard) <UNOP_DYNAMIC_CAST,
	UNOP_REINTERPRET_CAST>: New cases.
	* expprint.c (print_subexp_standard): Likewise.
	(op_name_standard): Likewise.
	(dump_subexp_body_standard): Likewise.
	* parse.c (operator_length_standard): Likewise.
	* expression.h (enum exp_opcode): New constants UNOP_DYNAMIC_CAST,
	UNOP_REINTERPRET_CAST.
	* gdbtypes.c (class_types_same_p): New function.
	(is_ancestor): Use it.
	(is_public_ancestor): New function.
	(is_unique_ancestor_worker): Likewise.
	(is_unique_ancestor): Likewise.
	* gdbtypes.h (class_types_same_p, is_public_ancestor)
	(is_unique_ancestor): Declare.
	* valops.c (value_reinterpret_cast): New function.
	(dynamic_cast_check_1): Likewise.
	(dynamic_cast_check_2): Likewise.
	(value_dynamic_cast): Likewise.
	* value.h (value_reinterpret_cast, value_dynamic_cast): Declare.

2010-01-18  Joel Brobecker  <brobecker@adacore.com>

	Fix build failure when building without Python support.
	* python/python.c: Always include exceptions.h, even when HAVE_PYTHON
	is not defined.

2010-01-18  Joel Brobecker  <brobecker@adacore.com>

	Use XVS field type instead of doing a parallel lookup.
	* ada-lang.c (ada_get_base_type): Follow the XVS field type
	if it is a reference type instead of doing a type lookup using
	the XVS field name.

2010-01-18  Joel Brobecker  <brobecker@adacore.com>

	Trust PAD types instead of using PAD___XVS.
	* ada-lang.c (trust_pad_over_xvs): New static variable.
	(ada_is_aligner_type): If !trust_pad_over_xvs and there is a
	parallel XVS type, follow the XVS type instead of the PAD type.
	(unwrap_value): Make sure that there is no parallel XVE type
	before returning the value as is.
	(set_ada_list, show_ada_list): New static variables.
	(set_ada_command, show_ada_command): New functions.
	(_initialize_ada_language): Add new "set/show ada" prefix commands.
	Add new "set/show ada trust-PAD-over-XVS" setting.

2010-01-18  Tom Tromey  <tromey@redhat.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>

	Allow "source" to load python scripts.
	* exceptions.h (enum errors): Add UNSUPPORTED_ERROR.
	* python/python.c (source_python_script): New function.
	* python/python.h (source_python_script): Add declaration.
	* cli/cli-cmds.c: #include exceptions.h and python/python.h.
	(script_ext_off, script_ext_soft, script_ext_strict)
	(script_ext_enums, script_ext_mode): New static constants.
	(show_script_ext_mode, find_and_open_script): New functions.
	(source_script): Enhance to handle Python scripts.
	(init_cli_cmds): Add set/show script-extension commands.

2010-01-16  Stan Shebs  <stan@codesourcery.com>

	* tracepoint.h (struct trace_status): Use unsigned long long
	instead of size_t.
	* tracepoint.c (trace_status_command): Fix printf directive.
	(trace_save_command): Check fwrite returns, fix printf directive.
	(trace_filename): New global.
	(tfile_open): Set it, check read returns.
	(tfile_close): Free trace_filename.
	(tfile_get_traceframe_address): Check read returns.
	(tfile_trace_find): Ditto.
	(tfile_fetch_registers): Ditto.
	(tfile_xfer_partial): Ditto.
	(tfile_get_trace_state_variable_value): Ditto.

2010-01-15  Stan Shebs  <stan@codesourcery.com>

	Add trace file support.
	* tracepoint.h (enum trace_stop_reason): New enum.
	(struct trace_status): New struct.
	(parse_trace_status): Declare.
	(struct uploaded_tp): Move here from remote.c,
	add fields for actions.
	(struct uploaded_tsv): New struct.
	* tracepoint.c (tfile_ops): New target vector.
	(trace_fd): New global.
	(tfile_open): New function.
	(tfile_close): New function.
	(tfile_files_info): New function.
	(tfile_get_trace_status): New function.
	(tfile_get_traceframe_address): New function.
	(tfile_trace_find): New function.
	(tfile_fetch_registers): New function.
	(tfile_xfer_partial): New function.
	(tfile_get_trace_state_variable_value): New function.
	(init_tfile_ops): New function.
	(_initialize_tracepoint): Call it, add tfile target.
	(trace_status): New global.
	(current_trace_status): New function.
	(trace_running_p): Remove, change all users to get from
	current_trace_status()->running.
	(get_trace_status): Remove.
	(trace_status_command): Call target_get_trace_status directly,
	report more detail including tracing stop reasons.
	(trace_find_command): Always allow tfind on a file.
	(trace_find_pc_command): Ditto.
	(trace_find_tracepoint_command): Ditto.
	(trace_find_line_command): Ditto.
	(trace_find_range_command): Ditto.
	(trace_find_outside_command): Ditto.
	(trace_frames_offset, cur_offset): Declare as off_t.
	(trace_regblock_size): Rename from reg_size, update users.
	(parse_trace_status): New function.
	(tfile_interp_line): New function.
	(disconnect_or_stop_tracing): Ensure current trace
	status before asking what to do.
	(stop_reason_names): New global.
	(trace_save_command): New command.
	(get_uploaded_tp): Move here from remote.c.
	(find_matching_tracepoint): Ditto.
	(merge_uploaded_tracepoints): New function.
	(parse_trace_status): Use stop_reason_names.
	(_initialize_tracepoint): Define tsave command.
	* target.h (target_ops): New fields to_save_trace_data,
	to_upload_tracepoints, to_upload_trace_state_variables,
	to_get_raw_trace_data, change to_get_trace_status
	to take a pointer to a status struct.
	(target_save_trace_data): New macro.
	(target_upload_tracepoints): New macro.
	(target_upload_trace_state_variables): New macro.
	(target_get_raw_trace_data): New macro.
	* target.c (update_current_target): Add new methods, change
	signature of to_get_trace_status.
	* remote.c (hex2bin): Make globally visible.
	(bin2hex): Ditto.
	(remote_download_trace_state_variable): Download name also.
	(remote_get_trace_status): Update parameter, use
	parse_trace_status.
	(remote_save_trace_data): New function.
	(remote_upload_tracepoints): New function.
	(remote_upload_trace_state_variables): New function.
	(remote_get_raw_trace_data): New function.
	(remote_start_remote): Use them.
	(_initialize_remote_ops): Add operations.
	* ax-gdb.c: Include breakpoint.h.
	* breakpoint.c (create_tracepoint_from_upload): Use
	break_command_really, return tracepoint, warn about unimplemented
	parts.
	* NEWS: Mention trace file addition.

2010-01-15  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix compilation warning on gcc-3.4.
	* exec.c (print_section_info): Move the `displacement' variable
	initialization to its declaration.

2010-01-15  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* gdb-gdb.py (StructMainTypePrettyPrinter): Fix TYPE_CODE_RANGE
	comparison.

2010-01-15  Eric Botcazou  <botcazou@adacore.com>

	"info tasks" broken by typedefs in ATCB type definitions.
	* ada-lang.c (ada_template_to_fixed_record_type_1): Add call to
	ada_check_typedef before retrieving the length of the type for
	regular fields.

2010-01-15  Joel Brobecker  <brobecker@adacore.com>

	Do not use name-based lookup for unconstrained packed arrays.
	* ada-lang.c (find_parallel_type_by_descriptive_type):
	Limit the fallback to name-based lookups to the case where
	the type is a constrained packed array.

2010-01-15  Joel Brobecker  <brobecker@adacore.com>

	Enhance gdb-gdb.py to handle main_type.type_specific.
	* gdb-gdb.py: Print the type-specific part of struct main_type.

2010-01-15  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* configure.ac (AC_CHECK_FUNCS): Check for setrlimit and getrlimit.
	* configure: Regenerate.
	* config.in: Regenerate.
	* utils.c: Include sys/resource.h.
	(dump_core, can_dump_core): New.
	(internal_vproblem): Update the comment.  Check can_dump_core while
	setting dump_core_p.  Replace two abort calls by dump_core calls.

2010-01-14  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Eli Zaretskii  <eliz@gnu.org>

	* NEWS: Document the PIE support.

2010-01-14  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* linux-tdep.c: Remove includes gdbcore.h, observer.h and elf-bfd.h.
	(check_is_pie_binary, _initialize_linux_tdep): Remove.

2010-01-14  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* solib-svr4.c (svr4_exec_displacement): New comment for entry_point.
	Replace exec_entry_point call by bfd_get_start_address.

2010-01-14  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Support Valgrind attachments broken by the PIE support.
	* auxv.c: Include gdbcore.h.
	(procfs_xfer_auxv): Make static.  Reduce its comment.  Drop its
	parameters ops, object and annex.  Remove their assertions.
	(ld_so_xfer_auxv, memory_xfer_auxv): New function.
	* auxv.h (procfs_xfer_auxv): Remove comment.  Rename to ...
	(memory_xfer_auxv): ... here.
	* linux-nat.c (linux_xfer_partial): Rename procfs_xfer_auxv to
	memory_xfer_auxv.
	* procfs.c (procfs_xfer_partial): Likewise.
	* solib-svr4.c (svr4_relocate_main_executable): New prototype.
	(svr4_special_symbol_handling): Call svr4_relocate_main_executable.
	(svr4_solib_create_inferior_hook): Conditionalize the
	svr4_relocate_main_executable call.

2010-01-14  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* solib-svr4.c (scan_dyntag): Remove variable dyn_addr.  New variable
	target_section.  Find SECT in current_target_sections, gdb_assert it.
	(elf_lookup_lib_symbol): Pass the binary file if given symfile_objfile.
	New variable abfd.
	* symtab.c (lookup_objfile_from_block): Return the binary file instead
	of separate debug info file.

2010-01-14  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Support PIEs with no symfile_objfile.
	* exec.c (print_section_info <abfd == exec_bfd>): Relocate Entry point.
	* solib-svr4.c (svr4_relocate_main_executable <exec_bfd>): New block.

2010-01-14  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* solib-svr4.c (svr4_relocate_main_executable): Move the static exec
	code part to ...
	(svr4_static_exec_displacement): ... a new function.
	(svr4_exec_displacement): New function.
	(svr4_relocate_main_executable): Call svr4_exec_displacement.  Allocate
	new_offsets using alloca now.  Remove variable old_chain and changed.
	Call objfile_relocate unconditionally now.

2010-01-14  Doug Evans  <dje@google.com>

	* gdbtypes.c (arch_flags_type): Fix comment.
	* gdbtypes.h (arch_composite_type): Fix comment.

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

	* machoread.c (macho_add_oso_symfile): Add symfile_flags parameter.
	Call xstrdup for abfd->filename.  Pass symfile_flags and objfile flags
	to symbol_file_add_from_bfd.  Add OSO as separate objfile.
	(macho_oso_symfile): Add symfile_flags parameter.  Pass it to
	macho_add_oso_symfile.
	(macho_symfile_read): Pass symfile_flags to macho_oso_symfile.

2010-01-14  Joel Brobecker  <brobecker@adacore.com>

	Tru64: Dead threads are never deleted.
	* dec-thread.c (dec_thread_ptid_is_alive): New function.
	(dec_thread_count_gdb_threads): Fix counter increment.
	(dec_thread_add_gdb_thread): Fix *listp increment.
	(resync_thread_list): Fix bug in deletion of dead threads that
	caused all threads to be deleted, instead of just the dead ones.

2010-01-13  Phil Muldoon  <pmuldoon@redhat.com>

	PR python/10705

	* python/python-internal.h: Add lazy_string_object_type
	definition.
	(create_lazy_string_object, gdbpy_initialize_lazy_string)
	(gdbpy_is_lazystring, gdbpy_extract_lazy_string): Define.
	* python/py-value.c (valpy_lazy_string): New function.
	(convert_value_from_python): Add lazy string conversion.
	* python/py-prettyprint.c (pretty_print_one_value): Check if
	return is also a lazy string.
	(print_string_repr): Add lazy string printing branch.
	(print_children): Likewise.
	* python/py-lazy-string.c: New file. Implement lazy strings.
	* python/python.c (_initialize_python): Call
	gdbpy_initialize_lazy_string.
	* varobj.c (value_get_print_value): Add lazy string printing
	branch.  Account for encoding.
	* c-lang.c (c_printstr): Account for new encoding argument.  If
	encoding is NULL, find encoding suited for type, otherwise use
	user encoding.
	* language.h (language_defn): Add encoding argument.
	(LA_PRINT_STRING): Likewise.
	* language.c (unk_lang_printstr): Update to reflect new encoding
	argument to language_defn.
	* ada-lang.h (ada_printstr): Likewise.
	* c-lang.h (c_printstr): Likewise.
	* p-lang.h (pascal_printstr);
	* f-lang.c (f_printstr): Likewise.
	* m2-lang.c (m2_printstr): Likewise.
	* objc-lang.c (objc_printstr): Likewise.
	* p-lang.c (pascal_printstr): Likewise.
	* scm-lang.c (scm_printstr): Likewise.
	* c-valprint.c (c_val_print): Update LA_PRINT_STRING call for
	encoding argument.
	* ada-valprint.c (ada_printstr): Likewise.
	* f-valprint.c (f_val_print): Likewise
	* m2-valprint.c (m2_val_print): Likewise.
	* p-valprint.c (pascal_val_print): Likewise.
	* expprint.c (print_subexp_standard): Likewise.
	* valprint.c (val_print_string): Likewise.
	* Makefile.in (SUBDIR_PYTHON_OBS): Add py-lazy-string.
	(SUBDIR_PYTHON_SRCS): Likewise.
	(py-lazy-string.o): New rule.

2010-01-13  Doug Evans  <dje@google.com>

	* mi/mi-main.c (list_available_thread_groups): Avoid "may be used
	uninitialized" warning from gcc on local `tree'.

2010-01-13  Vladimir Prus  <vladimir@codesourcery.com>

	Implement core awareness.

	* bcache.c (compare_ints): Remove
	(print_percentage): Use compare_positive_ints.
	* defs.h (compare_positive_ints): Declare.
	* linux-nat.h (struct lin_lwp): New field core.
	(linux_nat_core_of_thread_1): Declare.
	* linux-nat.c (add_lwp): Init the 'core' field.
	(linux_nat_wait_1): Record the core.
	(linux_nat_core_of_thread_1, linux_nat_core_of_thread): New.
	(linux_nat_add_target): Register the above.
	* linux-thread-db.c (update_thread_core): New.
	(thread_db_find_new_threads): Update core information for
	every thread.
	* remote.c (struct private_thread_info): New.
	(free_private_thread_info, demand_private_info): New.
	(PACKET_qXfer_threads, use_osdata_threads): New.
	(struct thread_item, threads_parsing_context
	(start_thread, end_thread, thread_attributes)
	(thread_children, threads_children, threads_elements): New.
	(remote_threads_info): Try qXfer:threads before anything
	else.
	(remote_protocol_packets): Register qXfer:threads.
	(remote_open_1): Init use_osdata_threads.
	(struct stop_reply): New field 'core'.
	(remote_parse_stop_reply): Parse core number.
	(process_stop_reply): Record core number.
	(remote_xfer_partial): Handle qXfer:threads.
	(remote_core_of_thread): New.
	(init_remote_ops): Register remote_core_of_thread.
	(_initialize_remote): Register qXfer:read.
	* target.c (target_core_of_thread): New
	* target.h (enum target_object): New value TARGET_OBJECT_THREADS.
	(struct target_ops): New field to_core_of_threads.
	(target_core_of_thread): Declare.
	* gdbthread.h (struct thread_info): New field private_dtor.
	* thread.c (print_thread_info): Report the core.
	* ui-out.c (MAX_UI_OUT_LEVELS): Increase.
	* utils.c (compare_positive_ints): New.
	* features/threads.dtd: New.
	* mi/mi-interp.c (mi_on_normal_stop): Report the core.
	* mi/mi-main.c (struct collect_cores_data, collect_cores)
	(do_nothing, free_vector_of_osdata_items)
	(splay_tree_int_comparator, free_splay_tree): New.
	(print_one_inferior_data): Implemented printing of selected
	inferiors.  Collect and print cores.
	(output_cores): New.
	(mi_cmd_list_thread_groups): Support --recurse.  Permit specifying
	thread groups together with --available.

2010-01-12  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* configure: Regenerate (for _STRUCTURED_PROC).

2010-01-12  Joel Brobecker  <brobecker@adacore.com>

	Delete dead function.
	* ada-lang.c (extract_string): Delete.  No longer used.

2010-01-12  Joel Brobecker  <brobecker@adacore.com>

	Fix -Wunused warning in dec-thread.c.
	* dec-thread.c (dec_thread_count_gdb_threads)
	(dec_thread_add_gdb_thread): Prevent -Wunused warning.

2010-01-12  Joel Brobecker  <brobecker@adacore.com>

	* ada-valprint.c (ada_print_floating): Remove trailing space.

2010-01-12  Joel Brobecker  <brobecker@adacore.com>

	Add support for DW_AT_GNAT_descriptive_type.
	* gdbtypes.h (enum type_specific_kind): New enum.
	(struct main_type) [type_specific_field]: New component.
	[type_specific]: Add new component "gnat_stuff".
	(struct gnat_aux_type): New type.
	(INIT_CPLUS_SPECIFIC): Also set TYPE_SPECIFIC_FIELD (type).
	(HAVE_CPLUS_STRUCT): Also check TYPE_SPECIFIC_FIELD (type).
	(gnat_aux_default, allocate_gnat_aux_type): Add declaration.
	(INIT_GNAT_SPECIFIC, ALLOCATE_GNAT_AUX_TYPE, HAVE_GNAT_AUX_INFO)
	(TYPE_SPECIFIC_FIELD): New macros.
	(TYPE_CPLUS_SPECIFIC): Return cplus_struct_default if the given
	type does not hold any cplus-specific data.
	(TYPE_RAW_CPLUS_SPECIFIC): New macro.
	(TYPE_GNAT_SPECIFIC, TYPE_DESCRIPTIVE_TYPE): New macros.
	(TYPE_IS_OPAQUE): Use HAVE_CPLUS_STRUCT to check if type has
	cplus-specific data.
	* gdbtypes.c (allocate_cplus_struct_type): Minor stylistic rewrite.
	Set new component TYPE_SPECIFIC_FIELD (type).
	(gnat_aux_default): New constant.
	(allocate_gnat_aux_type): New function.
	(init_type): Add initialization the type-specific stuff for
	TYPE_CODE_FLT and TYPE_CODE_FUNC types.
	(print_gnat_stuff): New function.
	(recursive_dump_type): Use HAVE_CPLUS_STRUCT to check for cplus-
	specific data.  Adjust code that prints the contents of the
	type-specific union using the TYPE_SPECIFIC_FIELD value.
	* dwarf2read.c (dwarf2_attach_fields_to_type): Do not allocate
	the type cplus stuff for Ada types.
	(dwarf2_add_member_fn, dwarf2_attach_fn_fields_to_type):
	Error out if these routines are called with an Ada type.
	(read_structure_type, read_array_type, read_subrange_type):
	Add call to set_descriptive_type.
	(set_die_type): Initialize the gnat-specific data if necessary.
	(need_gnat_info, die_descriptive_type, set_descriptive_type):
	New functions.
	* ada-lang.c (decode_constrained_packed_array_type): Use
	decode_constrained_packed_array_type instead of doing a standard
	lookup to locate a parallel type.
	(find_parallel_type_by_descriptive_type): New function.
	(ada_find_parallel_type_with_name): New function.
	(ada_find_parallel_type): Reimplement using
	ada_find_parallel_type_with_name.
	* ada-valprint.c (print_field_values): Use HAVE_CPLUS_STRUCT
	to check if type has a cplus stuff.
	* linespec.c (total_number_of_methods): Likewise.
	* mdebugread.c (new_type): Likewise.

2010-01-11  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* NEWS: Document the 0b binary number prefix parsing.

2010-01-11  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* objfiles.c (objfile_relocate1): Change the return type to int.
	Describe the new return value.  Return non-zero if data changed.
	(objfile_relocate): New variable changed.  Set it.  Call
	breakpoint_re_set depending on CHANGED.

2010-01-11  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Implement binary numbers parsing.
	* c-exp.y (parse_number): New case 'b' and 'B'.

2010-01-11  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Tristan Gingold  <gingold@adacore.com>

	* solib.c (info_sharedlibrary_command): Replace
	objfile_has_partial_symbols and objfile_has_full_symbols calls by
	objfile_has_symbols.

2010-01-10  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Document the improvements made to the mips-irix port.

2010-01-09  Joel Brobecker  <brobecker@adacore.com>

	Fix the documentation of valprint.c:value_print.
	* valprint.c (value_print): Update the function description to
	mention that the syntax of the output follows the current_language,
	not necessarily C.

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

	Fix displacement of separate debug info files.
	* objfiles.c (objfile_relocate): Rename to ...
	(objfile_relocate1): ... here and make it static.  Extend the comment.
	(objfile_relocate): New function.
	* solib-spu.c (spu_relocate_main_executable): Explicitly check if
	SYMFILE_OBJFILE is NULL.  Remove variables objfile and old_chain.
	Remove following of SEPARATE_DEBUG_OBJFILE.  new_offsets is now
	allocated using alloca.
	* symfile.c (copy_section_addr_info): Remove.
	(build_section_addr_info_from_objfile): Make it global.  New variables
	addr_bit and mask, use them.
	* symfile.h (build_section_addr_info_from_objfile): New prototype.
	(copy_section_addr_info): Remove.

2010-01-09  Joel Brobecker  <brobecker@adacore.com>

	Signal unwinder for mips-irix N32.
	* mips-irix-tdep.c: #include mips-tdep.h, trad-frame.h, and
	tramp-frame.h.
	(SIGTRAMP_FRAME_SIZE, SIGCONTEXT_PC_OFF, SIGCONTEXT_REGS_OFF)
	(SIGCONTEXT_FPREGS_OFF, SIGCONTEXT_FPCSR_OFF, SIGCONTEXT_HI_OFF)
	(SIGCONTEXT_LO_OFF): New macros.
	(mips_irix_n32_tramp_frame_init): New function.
	(mips_irix_n32_tramp_frame): New static constant.
	(mips_irix_init_abi): Prepend the mips_irix_n32_tramp_frame unwinder.

2010-01-09  Joel Brobecker  <brobecker@adacore.com>

	Breakpoint in shared library does not work on mips-irix.
	* procfs.c: #include "observer.h".
	(procfs_inferior_created): New function, moving here the code
	which unsets the syssgi syscall-exit notifications.
	(procfs_create_inferior): Remove the code which unsets the syssgi
	syscall-exit notifications. It is too early to do this here.
	(_initialize_procfs): Attach the procfs_inferior_created observer.

2010-01-09  Joel Brobecker  <brobecker@adacore.com>

	Wrong return convention for arrays (mips-irix).
	* mips-tdep.c (mips_n32n64_return_value): Arrays whose size is
	128 bits or smaller are returned the same way as structs
	and unions of the the same size.

2010-01-09  Joel Brobecker  <brobecker@adacore.com>

	Cannot set the PC on mips-irix.
	* irix5-nat.c (fill_gregset): Check regno against the raw PC
	register number, no the cooked one.

2010-01-09  Joel Brobecker  <brobecker@adacore.com>

	Error while loading core file on mips-irix.
	* solib-irix.c (irix_solib_create_inferior_hook): Do nothing
	if debugging from a core file.

2010-01-09  Joel Brobecker  <brobecker@adacore.com>

	GDB hangs when attaching to process on mips-irix.
	* solib-irix.c (irix_solib_create_inferior_hook): Do nothing if
	attaching to a process.

2010-01-09  Joel Brobecker  <brobecker@adacore.com>

	Use the correct breakpoint instruction on mips-irix.
	* mips-tdep.c (mips_breakpoint_from_pc): Add new static variable
	containing the correct breakpoint instruction to use on mips-irix.
	Use it when the osabi is GDB_OSABI_IRIX.

2010-01-09  Joel Brobecker  <brobecker@adacore.com>

	-Wunused warning in procfs.c (mips-irix only).
	* procfs.c (gdb_praddset, gdb_prdelset): New macros.  Use them
	throughout instead of using praddset and prdelset respectively.

2010-01-09  Joel Brobecker  <brobecker@adacore.com>

	GDB crash while stepping into function.
	* infrun.c (handle_inferior_event): Refetch the current frame
	after handling what.main_action, in case that pointer became
	dangling.

2010-01-09  Joel Brobecker  <brobecker@adacore.com>

	Fix build failure of solaris-hosted cross debuggers.
	* ada-valprint.c, parse.c: Include defs.h before including ctype.h.

2010-01-09  Daniel Gutson  <dgutson@codesourcery.com>

	Fix build failure on sparc-solaris.
	* procfs.c: (procfs_do_thread_registers) Use elfcore_write_lwpstatus.

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

	Move some symfile code into subroutines.
	* symfile.h (relative_addr_info_to_section_offsets)
	(addr_info_make_relative): New prototypes.
	* symfile.c (default_symfile_offsets): Move a part to ...
	(relative_addr_info_to_section_offsets): ... this new function.
	(default_symfile_offsets): Call it.
	(syms_from_objfile <!mainline && addrs && addrs->other[0].name>): Move
	this part to ...
	(addr_info_make_relative): ... this new function.

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

	Add from_tty to solib_create_inferior_hook.
	* infcmd.c (post_create_inferior): Move solib_add after
	solib_create_inferior_hook.  Pass from_tty to
	solib_create_inferior_hook.  Call solib_add and SOLIB_ADD with
	0 from_tty and comment why.
	* infrun.c (follow_exec): Pass from_tty solib_create_inferior_hook as 0.
	* linux-nat.c (linux_child_follow_fork): Likewise.
	* nto-procfs.c (procfs_post_attach, procfs_create_inferior): Likewise.
	* solib-darwin.c (darwin_solib_create_inferior_hook): New parameter
	from_tty.
	* solib-frv.c (frv_solib_create_inferior_hook): Likewise.
	* solib-irix.c (irix_solib_create_inferior_hook): Likewise.
	* solib-null.c (null_solib_create_inferior_hook): Likewise.
	* solib-osf.c (osf_solib_create_inferior_hook): Likewise.
	* solib-pa64.c (pa64_solib_create_inferior_hook): Likewise.
	* solib-som.c (som_solib_create_inferior_hook): Likewise.
	* solib-spu.c (spu_solib_create_inferior_hook): New parameter from_tty.
	Pass it to svr4_so_ops.solib_create_inferior_hook.
	* solib-sunos.c (sunos_solib_create_inferior_hook): New parameter
	from_tty.
	* solib-svr4.c (enable_break): New parameter from_tty.  Pass it to
	solib_add.
	(svr4_solib_create_inferior_hook): New parameter from_tty.  Pass it to
	enable_break.
	* solib-target.c (solib_target_solib_create_inferior_hook): New
	parameter from_tty.
	* solib.c (solib_create_inferior_hook): New parameter from_tty.  Pass
	it to ops->solib_create_inferior_hook.
	(reload_shared_libraries): Pass from_tty to solib_create_inferior_hook.
	Move solib_add after solib_create_inferior_hook, call it now with
	from_tty as 0.  New comment there.
	* solib.h (solib_create_inferior_hook): New parameter from_tty.
	* solist.h (struct target_so_ops <solib_create_inferior_hook>):
	Likewise.

2010-01-08  Vladimir Prus  <vladimir@codesourcery.com>

	Fix multiexec race.
	* infrun.c (handle_inferior_event): Use get_thread_regcache
	with events ptid, not get_current_regcache.

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

	GDB crash with empty executable name (MinGW).
	* source.c (openp): Add assert that parameter string is not NULL.
	if parameter string is an empty string, then return with a failure
	immediately.

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

	Get rid of support for VAX Floats.
	* ada-lang.h (ada_is_vax_floating_type, ada_vax_float_type_suffix)
	(ada_vax_float_print_function): Delete.
	* ada-lang.c (ada_is_vax_floating_type, ada_vax_float_type_suffix)
	(ada_vax_float_print_function): Delete.
	* ada-typeprint.c (print_vax_floating_point_type): Delete.
	(ada_print_type): Remove support for VAX floats.
	* ada-valprint.c (ada_val_print_1): Remove support for VAX floats.

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

	* stabsread.c (read_args): Handle zero arguments.

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

	Cannot find in-tree libiconv.a after reconfigure.
	* acinclude.m4 (AM_ICONV): If we find an in-tree libiconv.a
	that we can use, then cache the path to this archive.
	* configure: Regenerate.

2010-01-07  Stan Shebs  <stan@codesourcery.com>

	Make tracepoint operations go through target vector.
	* target.h (enum trace_find_type): New enum.
	(struct target_ops): New fields to_trace_init,
	to_download_tracepoint, to_download_trace_state_variable,
	to_trace_set_readonly_regions, to_trace_start, to_get_trace_status,
	to_trace_stop, to_trace_find, to_get_trace_state_variable_value,
	to_set_disconnected_tracing.
	(target_trace_init): New macro.
	(target_download_tracepoint): New macro.
	(target_download_trace_state_variable): New macro.
	(target_trace_start): New macro.
	(target_trace_set_readonly_regions): New macro.
	(target_get_trace_status): New macro.
	(target_trace_stop): New macro.
	(target_trace_find): New macro.
	(target_get_trace_state_variable_value): New macro.
	(target_set_disconnected_tracing): New macro.
	* target.c (update_current_target): Inherit and set defaults for
	tracepoint operations.
	* tracepoint.c (default_collect): Make globally visible.
	(target_is_remote): Remove, along with all calls.
	(tvariables_info): Call target_get_trace_state_variable_value.
	(remote_set_transparent_ranges): Remove.
	(trace_start_command): Call target_trace_init,
	target_download_tracepoint, etc.
	(download_tracepoint): Remove.
	(trace_stop_command): Simplify.
	(stop_tracing): Call target_trace_stop.
	(get_trace_status): Call target_get_trace_status.
	(trace_status_command): Add case for targets that cannot trace.
	(finish_tfind_command): Change to take numerical arguments, call
	target_trace_find.
	(trace_find_command): Update call to finish_tfind_command.
	(trace_find_pc_command): Ditto.
	(trace_find_tracepoint_command): Ditto.
	(trace_find_line_command): Ditto.
	(trace_find_range_command): Ditto.
	(trace_find_outside_command): Ditto.
	(set_disconnected_tracing_value): Call
	target_set_disconnected_tracing.
	* remote.c: Add protocol encoding bits from tracepoint.c.
	(trace_error): Move from tracepoint.c.
	(remote_get_noisy_reply): Ditto.
	(free_actions_list_cleanup_wrapper): Ditto.
	(free_actions_list): Ditto.
	(remote_trace_init): New function.
	(remote_download_tracepoint): New function.
	(remote_download_trace_state_variable): New function.
	(remote_trace_set_readonly_regions): New function.
	(remote_trace_start): New function.
	(remote_get_trace_status): New function.
	(remote_trace_stop): New function.
	(remote_trace_find): New function.
	(remote_download_trace_state_variable): New function.
	(remote_set_disconnected_tracing): New function.
	(init_remote_ops): Add tracepoint operations.

	* tracepoint.c (trace_dump_command): Don't decr_pc_after_break.

2010-01-07  Tristan Gingold  <gingold@adacore.com>

	* symfile.c (build_section_addr_info_from_objfile): New function.
	(symbol_file_add_separate): Don't use offsets from objfile but
	built an addr info.

2010-01-06  Stan Shebs  <stan@codesourcery.com>

	Support disconnected tracing.
	* infcmd.c (detach_command): Ask whether to stop tracing.
	* cli/cli-cmds.c (quit_command): Ditto.
	* breakpoint.h (struct breakpoint): New field number_on_target.
	* breakpoint.c (create_tracepoint_from_upload): New function.
	(get_tracepoint_by_number_on_target): New function.
	* remote.c (struct remote): New field disconnected_tracing.
	(remote_disconnected_tracing_feature): New function.
	(remote_protocol_features): Add DisconnectedTracing.
	(struct uploaded_tp): New struct.
	(uploaded_tps): New global.
	(get_uploaded_tp): New function.
	(find_matching_tracepoint): New function.
	(remote_get_tracing_state): New function.
	(remote_start_remote): Call it.
	* tracepoint.c (disconnected_tracing): New global.
	(trace_start_command): Initialize number_on_target.
	(stop_tracing): New function, split out from...
	(trace_stop_command): Call stop_tracing.
	(get_trace_status): New function, split out from...
	(trace_status_command): Call get_trace_status, add info on
	disconnection behavior.
	(disconnect_or_stop_tracing): New function.
	(finish_tfind_command): Translate from number on target.
	(trace_find_tracepoint_command): Translate to number on target.
	(send_disconnected_tracing_value): New function.
	(set_disconnected_tracing): New function.
	(_initialize_tracepoint): Add disconnected-tracing variable.
	* NEWS: Mention disconnected tracing.

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

	* symtab.c (lookup_global_symbol_from_objfile): Rename objfile
	parameter to main_objfile.  Iterate on all separate debug objfiles.
	* symfile.h (symbol_file_add_separate)
	(find_separate_debug_file_by_debuglink): Remove parameter names.
	* symfile.c (symbol_file_add_separate): Use add_separate_objfile.
	(reread_symbols): Use free_objfile_separate_debug.
	* objfiles.h (struct objfile): Add separate_debug_objfile_link.
	Adjust comment.
	(objfile_separate_debug_iterate, add_separate_debug_objfile)
	(free_objfile_separate_debug): New prototypes.
	* objfiles.c (objfile_separate_debug_iterate): New function.
	(add_separate_debug_objfile, free_objfile_separate_debug): New
	functions.
	(free_objfile): Use free_objfile_separate_debug.  Adjust for
	multiple separate debug objfile.
	(objfile_has_symbols): Adjust comment.  Iterate on all separate
	debug objfiles.
	* minsyms.c (lookup_minimal_symbol): Adjust for multiple separate
	debug objfile.
	(lookup_minimal_symbol_text): Ditto.
	(lookup_minimal_symbol_by_pc_name): Ditto.
	(lookup_minimal_symbol_solib_trampoline): Ditto.
	(lookup_minimal_symbol_by_pc_section_1): Iterate on all separate
	debug objfiles.

2010-01-05  Stan Shebs  <stan@codesourcery.com>

	Add fast tracepoints.
	* arch-utils.h (default_fast_tracepoint_valid_at): Declare.
	* arch-utils.c (default_fast_tracepoint_valid_at): New function.
	* breakpoint.h (enum bptype): Add bp_fast_tracepoint.
	* breakpoint.c (tracepoint_type): New function.
	(ALL_TRACEPOINTS): Use it.
	(should_be_inserted): Ditto.
	(bpstat_check_location): Ditto.
	(print_one_breakpoint_location): Ditto.
	(user_settable_breakpoint): Ditto.
	(set_breakpoint_location_function): Ditto.
	(disable_breakpoints_in_shlibs): Ditto.
	(delete_trace_command): Ditto.
	(print_it_typical): Add bp_fast_tracepoint case.
	(bpstat_what): Ditto.
	(print_one_breakpoint_location): Ditto.
	(allocate_bp_location): Ditto.
	(mention): Ditto.
	(breakpoint_re_set_one): Ditto.
	(disable_command): Ditto.
	(enable_command): Ditto.
	(check_fast_tracepoint_sals): New function.
	(break_command_really): Call it.
	(ftrace_command): New function.
	(_initialize_breakpoint): Add ftrace command.
	* gdbarch.sh (fast_tracepoint_valid_at): New.
	* gdbarch.h, gdbarch.c: Regenerate.
	* i386-tdep.c (i386_fast_tracepoint_valid_at): New function.
	(i386_gdbarch_init): Use it.
	* remote.c (struct remote_state): New field fast_tracepoints.
	(PACKET_FastTracepoints): New packet config type.
	(remote_fast_tracepoint_feature): New function.
	(remote_protocol_features): Add FastTracepoints.
	(remote_supports_fast_tracepoints): New function.
	(_initialize_remote): Add FastTracepoints.
	* tracepoint.c (download_tracepoint): Add fast tracepoint option.
	* NEWS: Mention fast tracepoints.

2010-01-06  Joel Brobecker  <brobecker@adacore.com>

	* gdb-gdb.py: New file.

2010-01-05  Michael Snyder  <msnyder@vmware.com>

	* infrun.c (handle_inferior_event): Fix typo in comment.

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

	* symfile.c (syms_from_objfile): Remove the !MAINLINE conditional.

2010-01-04  Ulrich Weigand  <uweigand@de.ibm.com>

	* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
	and s390x-linux64.
	(s390-linux32-expedite): Define.
	(s390-linux64-expedite): Define.
	(s390x-linux64-expedite): Define.
	* features/s390-acr.xml: New file.
	* features/s390-fpr.xml: New file.
	* features/s390-core32.xml: New file.
	* features/s390-core64.xml: New file.
	* features/s390x-core64.xml: New file.
	* features/s390-linux32.xml: New file.
	* features/s390-linux64.xml: New file.
	* features/s390x-linux64.xml: New file.
	* features/s390-linux32.c: New generated file.
	* features/s390-linux64.c: New generated file.
	* features/s390x-linux64.c: New generated file.

	* regformats/s390-linux32.dat: New generated file.
	* regformats/s390-linux64.dat: New generated file.
	* regformats/s390x-linux64.dat: New generated file.
	* regformats/reg-s390.dat: Remove.
	* regformats/reg-s390x.dat: Remove.

	* s390-nat.c: Include "auxv.h" and <elf.h>.
	(HWCAP_S390_HIGH_GPRS): Define if undefined.
	(s390_target_wordsize): New function.
	(s390_auxv_parse): Likewise.
	(s390_get_hwcap): Likewise.
	(s390_read_description): Likewise.
	(_initialize_s390_nat): Install s390_auxv_parse and
	s390_read_description.

	* s390-tdep.c: Include "features/s390-linux32.c",
	"features/s390-linux64.c", and "features/s390x-linux64.c".
	(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
	(s390_register_call_saved): New function.
	(s390_register_name): Remove.
	(s390_register_type): Remove.
	(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
	(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
	(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
	(s390_pseudo_register_name): New function.
	(s390_pseudo_register_type): New function.
	(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
	Handle full GPR pesudos and varying pseudo register numbers.
	(s390_pseudo_register_write): Likewise
	(s390x_pseudo_register_read): Remove.
	(s390x_pseudo_register_write): Likewise.
	(s390_register_group): Remove.
	(s390_pseudo_register_group): New function.
	(s390_regmap_gregset): Add GPR upper halves.
	(s390x_regmap_gregset): Likewise.
	(s390_regmap_fpregset): Likewise.
	(s390_regmap_upper): New global variable.
	(s390_upper_regset): New global variable.
	(s390_upper_regset_sections): New global variable.
	(s390_regset_from_core_section): Handle GPR upper halves.
	(s390_core_read_description): New function.
	(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
	register information.  Handle varying pseudo register numbers.
	(s390_backchain_frame_unwind_cache): Likewise.
	(s390_frame_prev_register): Unwind full GPRs to show lower halves.
	(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
	(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
	PC and CC pseudos.  Unwind upper halves and full GPRs as appropriate.
	Handle varying pseudo register numbers.
	(s390_unwind_pc): Handle varying pseudo register numbers.
	(s390_dwarf2_prev_register): New function.
	(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
	register information.  Handle varying pseudo register numbers.
	Install s390_dwarf2_prev_register to unwind full GPRs.
	(s390_gdbarch_init): Handle target descriptions.  Assign varying
	pseudo register numbers.  Install s390_adjust_frame_regnum.
	(_initialize_s390_tdep): Initialize target descriptions.

	* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
	(S390_NUM_REGS): Redefine to include upper half registers.
	(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
	(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
	(tdesc_s390_linux32): Add declaration.
	(tdesc_s390_linux64): Likewise.
	(tdesc_s390x_linux64): Likewise.

2010-01-04  Ulrich Weigand  <uweigand@de.ibm.com>

	* regset.h (struct core_regset_section): Add HUMAN_NAME.
	* i386-linux-tdep.c (i386_linux_regset_sections): Fill in HUMAN_NAME.
	* ppc-linux-tdep.c (ppc_linux_vsx_regset_sections): Likewise.
	(ppc_linux_vmx_regset_sections): Likewise.
	(ppc_linux_fp_regset_sections): Likewise.

	* corelow.c (get_core_register_section): Constify arguments.
	(get_core_registers): Use gdbarch_core_regset_sections instead
	of hard-coded platform-specific register section names.

2010-01-04  Ulrich Weigand  <uweigand@de.ibm.com>

	* dwarf2loc.c (read_pieced_value): If a piece occupies part of
	a register, assume the least-significant part is used.
	(write_pieced_value): Likewise.

2010-01-04  Ulrich Weigand  <uweigand@de.ibm.com>

	* printcmd.c: Include "arch-utils.h".
	(do_one_display): Re-parse expression if current architecture changed.

2010-01-03  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Joel Brobecker  <brobecker@adacore.com>

	* gdbtypes.c (check_typedef): New comment on type length.
	* value.c (allocate_value_lazy): Remove the unused atype variable.  New
	comment on type length.
	(value_primitive_field): Keep the original TYPE value, new comment.

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

	* cli/cli-script.c (process_next_line): Rename p1 as p_end and p2 as
	p_start.  Change != comparisons to > and < comparisons.

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

	* cli/cli-script.c (process_next_line): Check P2 overrun.

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

	Update the copyright hearder to add year 2010 for most GDB files.

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

	Fix build failure in inf-ptrace.c.
	* inf-ptrace.c (inf_ptrace_follow_fork): Fix typo.

2010-01-01  Joel Brobecker  <brobecker@adacore.com>

	* top.c (print_gdb_version): Update copyright year.

2010-01-01, 10  Joel Brobecker  <brobecker@adacore.com>

	Fix break *FUN'address thread NUM.
	* ada-lex.l (task): Expand rule to also match the thread keyword.

2010-01-01  Joel Brobecker  <brobecker@adacore.com>

	Fix break *FUN'address task NUM.
	* ada-lex.l (task): New rule.
	* ada-lang.c (valid_task_id): Make sure the Ada task list has
	been built before using it.

For older changes see ChangeLog-2009.

Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
coding: utf-8
End:
