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

	* annotate.c: Comment cleanup, shorten long lines.
	* arch-utils.c: Ditto.
	* arch-utils.h: Ditto.
	* auxv.c: Ditto.
	* auxv.h: Ditto.
	* ax-gdb.c: Ditto.
	* ax-gdb.h: Ditto.
	* ax-general.c: Ditto.
	* breakpoint.h: Ditto.
	* buildsym.h: Ditto.

	* charset.c: Ditto.
	* charset.h: Ditto.
	* c-lang.c: Ditto.
	* c-lang.h: Ditto.
	* coff-pe-read.c: Ditto.
	* coff-pe-read.h: Ditto.
	* coffread.c: Ditto.
	* command.h: Ditto.
	* complaints.c: Ditto.
	* complaints.h: Ditto.
	* completer.c: Ditto.
	* completer.h: Ditto.
	* corefile.c: Ditto.
	* corelow.c: Ditto.
	* core-regset.c: Ditto.
	* cp-abi.c: Ditto.
	* cp-abi.h: Ditto.
	* cp-namespace.c: Ditto.
	* cp-support.c: Ditto.
	* cp-support.h: Ditto.
	* cp-valprint.c: Ditto.
	* cp-typeprint.c: Ditto.
	* c-valprint.c: Ditto.

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

	* bfin-tdep.c (bfin_register_type): Move || to start of line.

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

	* bcache.c: Comment clean-up, shorten long lines..
	* block.c: Ditto.
	* blockframe.c: Ditto.
	* breakpoint.c: Ditto.
	* bsd-kvm.c: Ditto.
	* buildsym.c: Ditto.

2010-12-29  Jie Zhang  <jie.zhang@analog.com>

	* configure.tgt (bfin-*-*): Set build_gdbserver to yes.
	* NEWS: Mention new Blackfin support.
	* regformats/reg-bfin.dat: New file.

2010-12-29  Jie Zhang  <jie.zhang@analog.com>
	    Mike Frysinger  <vapier@gentoo.org>

	* Makefile.in (ALLDEPFILES): Add bfin-linux-tdep.c and bfin-tdep.c.
	(HFILES_NO_SRCDIR): Add bfin-tdep.h.
	(ALL_TARGET_OBS): Add bfin-linux-tdep.o and bfin-tdep.o.
	* NEWS: Mention new Blackfin port.
	* bfin-tdep.c, bfin-tdep.h, bfin-linux-tdep.c,
	syscalls/bfin-linux.xml: New files.
	* configure.tgt (bfin-*-*): Handle bfin targets.

2010-12-29  Hui Zhu  <teawater@gmail.com>

	* ax-gdb.c (gen_expr): Change error message.

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

	* gdb.c: Revert the previous change, which was probably committed
        by accident.

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

	* ada-lang.c: Fix typo in comment.

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

	* ada-valprint.c (ada_val_print_1): Print null array pointers as
	`0x0' rather than `(null)'.  Add assertion.

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

	* ada-lang.h (ada_coerce_to_simple_array): Add declaration.
	* ada-lang.c (ada_typedef_target_type): New function.
	(desc_base_type): Add handling of fat pointer typedefs.
	(ada_coerce_to_simple_array): Make non-static.
	(decode_packed_array_bitsize): Add handling of fat pointer typedefs.
	Add assertion.
	(ada_template_to_fixed_record_type_1, ada_to_fixed_type)
	(ada_check_typedef): Add handling of fat pointer typedefs.
	(ada_evaluate_subexp) [OP_FUNCALL]: Likewise.
	* ada-typeprint.c (ada_print_type): Add handling of fat pointer
	typedefs.
	* ada-valprint.c (ada_val_print_1): Convert fat pointers that are not
	array accesses to simple arrays rather than simple array pointers.
	(ada_value_print): In the case of array descriptors, do not print
	the value type description unless it is an array access.

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

	* target.h (enum target_object): Expand the documentation of
	TARGET_OBJECT_OSDATA a bit.

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

	* command.h: Comment clean-up, shorten long lines.
	* cli/cli-cmds.c: Ditto.
	* cli/cli-cmds.h: Ditto.
	* cli/cli-decode.c: Ditto.
	* cli/cli-decode.h: Ditto.
	* cli/cli-dump.c: Ditto.
	* cli/cli-interp.c: Ditto.
	* cli/cli-logging.c: Ditto.
	* cli/cli-script.c: Ditto.
	* cli/cli-setshow.c: Ditto.
	* cli/cli-setshow.h: Ditto.

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

	* event-loop.c: Comment clean-up, shorten long lines.
	* event-loop.h: Ditto.
	* event-top.c: Ditto.
	* gdb.c: Ditto.
	* gdb.h: Ditto.
	* main.c: Ditto.
	* top.c: Ditto.
	* top.h: Ditto.	

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

	* ax-gdb.c (gen_expr) <OP_REGISTER>: Error out if trying to
	collect a user register.

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

	* gdbarch.sh (ax_pseudo_register_collect,
	ax_pseudo_register_push_stack): new callbacks.
	(agent_expr): Forward declare.
	* gdbarch.h, gdbarch.c: Regenerate.
	* ax-gdb.c (gen_expr): Remove pseudo-register check code.
	* ax-general.c (user-regs.h): New include.
	(ax_reg): Call gdbarch_ax_pseudo_register_push_stack.
	(ax_reg_mask): Call gdbarch_ax_pseudo_register_collect.
	* mips-tdep.c (ax.h): New include.
	(mips_ax_pseudo_register_collect,
	mips_ax_pseudo_register_push_stack): New functions.
	(mips_gdbarch_init): Set mips_ax_pseudo_register_collect and
	mips_ax_pseudo_register_push_stack.

2010-12-28  Yao Qi  <yao@codesourcery.com>

	* arm-tdep.c (arm_register_aliases): Remove sp, pc, and fp.

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

	* inf-child.c (inf_child_acknowledge_created_inferior): Delete.
	(inf_child_target): Do not set t->to_acknowledge_created_inferior.
	* inf-ptrace.c (inf_ptrace_create_inferior): Remove call to
	target_acknowledge_created_inferior.
	* inf-ttrace.c (inf_ttrace_him): Likewise.
	* target.h (struct target_ops): Delete to_acknowledge_created_inferior
	field.
	(target_acknowledge_created_inferior): Delete.
	* target.c (update_current_target): Remove setting of
	to_acknowledge_created_inferior field. Do default value for that
	field either.
	(debug_to_acknowledge_created_inferior): Delete.
	(setup_target_debug): Remove setting of
	current_target.to_acknowledge_created_inferior.

2010-12-27  Pedro Alves  <pedro@codesourcery.com>

	gdb/
	* breakpoint.c (breakpoint_restore_shadows): When looking for the
	location with the lowest address that overlaps the memory range we
	want to restore shadows for, account for multiple locations at the
	same address.

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

	Code cleanup - renaming.
	* breakpoint.c: Use bl for `*bp_location' variables, blp_tmp for
	`**bp_location' helper variables, b_tmp for `*breakpoint' helper
	variables.

2010-12-27  Kevin Buettner  <kevinb@redhat.com>
	    Hui Zhu  <teawater@gmail.com>

	* mips-tedp.c (mips_register_name): Add comments.

2010-12-23  Yao Qi  <yao@codesourcery.com>

	* arm-tdep.c (thumb_analyze_prologue): Move some code ...
	(EXTRACT_MOVW_MOVT_IMM_T): ... here.  New macro.
	(EXTRACT_MOVW_MOVT_IMM_A): New macro.
	(arm_analyze_load_stack_chk_guard): New.
	(arm_skip_stack_protector): New.
	(arm_skip_prologue): Adjust post_prologue_pc by
	arm_skip_stack_protector.


2010-12-23  Yao Qi  <yao@codesourcery.com>

	* arm-tdep.c (arm_gdbarch_init): Remove invoke to
	set_gdbarch_deprecated_fp_regnum.

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

	* inferior.c (remove_inferior_command): Don't remove an active inferior.
	* mi/mi-main.c (mi_cmd_remove_inferior): Ditto.

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

	* thread.c (print_thread_info): Make a ui-out table in CLI mode.

2010-12-20  Yao Qi  <yao@codesourcery.com>

	* arm-tdep.c (arm_register_reggroup_p): New.
	(arm_gdbarch_init): Set arm_register_reggroup_p for hook
	register_reggroup_p.

2010-12-20  Yao Qi  <yao@codesourcery.com>

	* features/arm-core.xml:  Add attribute type to reg from r0 to r12.
	* features/arm-with-iwmmxt.c: Regenerate.
	* features/arm-with-neon.c: Regenerate.
	* features/arm-with-vfpv2.c: Regenerate.
	* features/arm-with-vfpv3.c: Regenerate.

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

	* mi/mi-main.c (mi_cmd_remove_inferior): Don't delete current inferior.
	(get_other_inferior): New.

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

	* python/py-progspace.c (py_free_pspace): Obtain arch another
	way to avoid dereferencing a null pointer.

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

	* utils.c (do_my_cleanups): Comment fix-up.

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>

        * 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>

	* valarith.c (vector_binop): New function.
	(scalar_binop): Likewise.
	(value_binop): Call scalar_binop or vector_binop depending on the types.
	* 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.
	* 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>

	* 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:
