2008-12-31  Pedro Alves  <pedro@codesourcery.com>

	PR gdb/8812:
	* infrun.c (handle_command): Don't print a header or notify the
	target about signal changes if we didn't change any signal.

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

	* valops.c (find_method_list): Minor reformatting in comment.

2008-12-29  Pedro Alves  <pedro@codesourcery.com>

	PR gdb/7536:
	* valprint.c (input_radix_1): New static global.
	(set_input_radix): Use it instead of "input_radix".
	(set_input_radix_1): Always leave input_radix_1 set to
	input_radix.
	(output_radix_1): New static global.
	(set_output_radix): Use it instead of "output_radix".
	(set_output_radix_1): Always leave output_radix_1 set to
	output_radix.
	(_initialize_valprint): Use "input_radix_1" instead of
	"input_radix" with the "input-radix" command.  Use
	"output_radix_1" instead of "output_radix" with the "output-radix"
	command.

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

	* linux-fork.c (linux_fork_detach): New.
	* linux-fork.h (linux_fork_detach): Declare.
	* linux-nat.c (linux_child_follow_fork): When following the fork
	child, add the child inferior before possibly detaching from the
	parent.  Don't reinstall ourselves.
	(linux_nat_detach): Call linux_fork_detach if there are other
	forks to debug.
	* linux-thread-db.c (thread_db_detach): Don't call
	target_mourn_inferior.  Instead inline the necessary bits.
	* inf-ptrace.c (inf_ptrace_detach): Don't unpush the target if
	there are other inferiors to debug.

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

	Fix TYPE_HIGH_BOUND for TYPE_CODE_RANGE using arbitrary TYPE_NFIELDS in
	preparation for supporting DW_AT_byte_stride.
	* ada-lang.c (packed_array_type, ada_index_type): Use TYPE_INDEX_TYPE.
	(ada_array_bound_from_type): Move `index_type' declaration to the
	function start.  New variable `retval'.  Return the bounds for
	TYPE_CODE_RANGE using TYPE_LOW_BOUND and TYPE_HIGH_BOUND.  Abort on
	invalid index type codes.
	* ada-typeprint.c (print_range): Set `upper_bound' for TYPE_CODE_RANGE
	now using TYPE_HIGH_BOUND.
	* ada-valprint.c (val_print_packed_array_elements): Use `index_type'.
	* eval.c (evaluate_subexp_standard): Use TYPE_INDEX_TYPE.
	* gdbtypes.c (create_range_type): Use TYPE_LOW_BOUND, TYPE_HIGH_BOUND,
	refer to the number of fields only through TYPE_NFIELDS.
	(create_array_type): Use TYPE_INDEX_TYPE.
	(check_typedef): Use TYPE_INDEX_TYPE, TYPE_LOW_BOUND, TYPE_HIGH_BOUND.
	* gdbtypes.h (TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED)
	(TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED): Use TYPE_INDEX_TYPE.
	(TYPE_ARRAY_UPPER_BOUND_VALUE, TYPE_ARRAY_LOWER_BOUND_VALUE): Use
	TYPE_INDEX_TYPE, TYPE_LOW_BOUND, TYPE_HIGH_BOUND,
	* hppa-tdep.c (hppa_alignof <TYPE_CODE_ARRAY>): Use TYPE_INDEX_TYPE.
	* mdebugread.c (parse_type): Use TYPE_LOW_BOUND, TYPE_HIGH_BOUND,
	* valarith.c (value_bit_index): Use TYPE_INDEX_TYPE.

2008-12-26  Sandra Loosemore  <sandra@codesourcery.com>

	* breakpoint.c (update_watchpoint): Refactor to avoid compiler
	warning.

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

	* stack.c (print_block_frame_locals): Print spaces, not tabs.
	Update for call to print_variable_and_value.
	(print_frame_arg_vars): Update.
	* value.h (print_variable_and_value): Rename from
	print_variable_value.  Add 'name' and 'indent' parameters.
	* printcmd.c (print_variable_and_value): Rename from
	print_variable_value.  Add 'name' and 'indent' parameters.  Use
	common_val_print.
	* f-valprint.c (info_common_command): Update.

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

	* python/python-value.c (valpy_length): Remove #if.

2008-12-22  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* python/python-internal.h (PyEval_ReleaseLock): New define.
	
2008-12-22  Tom Tromey  <tromey@redhat.com>

	* c-exp.y (ident_tokens): New global.
	(struct token) <cxx_only>: New field.
	(tokentab3): Update.
	(tokentab2): Update.
	(yylex): Use ident_tokens.

2008-12-22  Adam Denton  <adenton@yahoo.com>

	PR gdb/8307:
	* environ.c (free_environ): Free e->vector.

2008-12-22  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix memory double-free.
	* completer.c (line_completion_function): Clear LIST after called xfree.

2008-12-22  Joel Brobecker  <brobecker@adacore.com>

	* breakpoint.c (update_watchpoint): Adjust and extend the description
	of this function.  Fix one error message accordingly.

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

	Fix hw watchpoints created before the inferior was started.
	* breakpoint.c (update_watchpoint): Convert the bp_watchpoint and
	bp_hardware_watchpoint types according to the current runtime state.

2008-12-18  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (linux_child_follow_fork): If following the child,
	and not detaching the parent, also add the child fork to the fork
	list.
	* linux-fork.c (linux_fork_context): Remove dead error call.
	Assert that the incoming newfp argument is not null.  Do not add a
	new fork for inferior_ptid.  Assert that there is one already.

2008-12-16  Tristan Gingold  <gingold@adacore.com>

	* inflow.c: Remove old_sigio, handle_sigio, old_fcntl_flags,
	set_sigio_trap, clear_sigio_trap definitions.
	* inferior.h: Remove set_sigio_trap and clear_sigio_trap declarations.
	* inf-ptrace.c (inf_ptrace_wait): Remove call to set_sigio_trap
	and clear_sigio_trap.
	* inf-ttrace.c (inf_ttrace_wait): Ditto.
	* linux-nat.c (linux_nat_wait): Ditto.
	* spu-linux-nat.c (spu_child_wait): Ditto.
	* rs6000-nat.c (rs6000_wait): Ditto.
	* target.c: Remove target_activity_function and target_activity_fd.
	* target.h: Remove target_activity_function and target_activity_fd
	declarations.

2008-12-15  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* dbxread.c (read_ofile_symtab): Sign-extend 32-bit N_LSYM and
	N_PSYM STABS values for 64-bit GDB.

2008-12-15  Tristan Gingold  <gingold@adacore.com>

	* dwarf2expr.c (execute_stack_op): Handle DW_OP_swap.

2008-12-15  Jerome Guitton  <guitton@adacore.com>

	* ada-lang.c (ada_value_slice_ptr): Rename to...
	(ada_value_slice_from_ptr): ... this. Return a lazy value instead
	of a reference.	Update comment.
	(ada_value_struct_elt): Ditto if arg is a pointer or a reference.
	Update comment as well.
	(ada_evaluate_subexp): Update use of ada_value_slice_ptr.

2008-12-12  Kevin Buettner  <kevinb@redhat.com>

	* gnu-v3-abi.c (vtable_ptrdiff_type): New function.
	(gnuv3_decode_method_ptr, gnuv3_print_method_ptr)
	(gnuv3_method_ptr_to_value): Use a better approximation for
	`ptrdiff_t' instead of `long'.

2008-12-12  Kevin Buettner  <kevinb@redhat.com>

	* m32c-tdep.c (m32c_gdbarch_init): Call set_gdbarch_vbit_in_delta().
	(m32c_push_dummy_call): Dereference pointer type.

2008-12-12  Tom Tromey  <tromey@redhat.com>

	PR cli/2563:
	* cli/cli-decode.c (delete_cmd): Add hook-related out parameters.
	(add_cmd): Update.  Install hooks into new command.
	(add_alias_cmd): Update.

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

	* macroexp.c (get_pp_number): Require digit after leading ".".
	Correctly handle suffixes.

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

	* macrocmd.c (macro_define_command): Skip whitespace after
	macro name.
	(print_one_macro): Print space after macro name.

2008-12-12  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (handle_inferior_event): Correctly tag non-executing
	threads in multi-process.
	(normal_stop): Correctly tag stopped threads in multi-process.

2008-12-12  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (extended_remote_mourn_1): Always call
	generic_mourn_inferior.

2008-12-12  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (remote_detach_1): Don't delete the inferior here.
	(process_stop_reply): Ditto.
	(extended_remote_kill): Ditto.

2008-12-12  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (read_ptid): If we don't know about any inferior yet,
	use the pid of magic_null_ptid.
	(remote_start_remote): In the non-stop mode case, don't set
	inferior_ptid to magic_null_ptid here.

2008-12-11  Daniel Jacobowitz  <dan@codesourcery.com>
	    Pedro Alves  <pedro@codesourcery.com>

	* infcmd.c (step_1): Use step_once in the synchronous case too.
	(step_1_continuation): Wrap line.
	(step_once): Adjust comment.  Only install the continuation in
	async mode.

2008-12-11  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (handle_inferior_event): On a TARGET_WAITKIND_EXITED or
	TARGET_WAITKIND_SIGNALLED, switch inferior_ptid to the event ptid.
	* linux_thread_db.c (thread_db_wait): On a TARGET_WAITKIND_EXITED
	or TARGET_WAITKIND_SIGNALLED, return the ptid the beneath target
	returned.
	* inf-ptrace.c (inf_ptrace_wait): Return inferior_ptid instead of
	minus_one_ptid if the inferior disappeared.
	* rs6000-nat.c (rs6000_wait): Likewise.
	* spu-linux-nat.c (spu_child_wait): Likewise.

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

	PR macros/2564:
	* c-exp.y (macro_original_text, expansion_obstack,
	expression_macro_scope): New globals.
	(scan_macro_expansion): New function.
	(scanning_macro_expansion): Likewise.
	(finished_macro_expansion): Likewise.
	(scan_macro_cleanup): Likewise.
	(c_parse): Find macro scope.  Initialize obstack.
	* c-lang.h (scan_macro_expansion, scanning_macro_expansion,
	finished_macro_expansion, expression_macro_lookup_func,
	expression_macro_lookup_baton): Remove.
	* c-lang.c (scan_macro_expansion, scanning_macro_expansion,
	finished_macro_expansion, expression_macro_lookup_func,
	expression_macro_lookup_baton): Remove.
	(macro_original_text, macro_expanded_text,
	c_preprocess_and_parse): Remove.
	(c_language_defn, cplus_language_defn, asm_language_defn,
	minimal_language_defn): Use c_parse.

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

	* infcmd.c (until_next_command, finish_backward): Use get_frame_pc
	instead of read_pc.

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

	PR gdb/1815:
	* cli/cli-decode.c (delete_cmd): Forward declare.
	(delete_cmd): Now static.  Change return type.  Remove command
	from alias chain.  Rewrite.
	(add_cmd): Initialize new fields.  Update cmd_pointer on all
	aliases.
	(add_alias_cmd): Put command on alias chain.
	* command.h (delete_cmd): Don't declare.
	* cli/cli-decode.h (delete_cmd): Don't declare.
	(struct cmd_list_element) <aliases, alias_chain>: New fields.

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

	* config.in, configure: Rebuild.
	* configure.ac: Check for locale.h, setlocale.  Call
	AM_LC_MESSAGES.
	* acinclude.m4: Include lcmessage.m4.

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

	* remote.c (remote_parse_stop_reply): Use REG only after its NULL check.

2008-12-08  Joel Brobecker  <brobecker@adacore.com>

	* python/python-value.c (values_in_python): Add specific initialization
	to NULL to work-around a MacOS linker bug.

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

	Fix loc_type of `bp_location's created by update_watchpoint.
	* breakpoint.c (allocate_bp_location): Remove the bp_type parameter.
	Replace bp_type by bpt->type.  Update prototype.  All callers updated.
	(add_location_to_breakpoint):  Remove the bp_type parameter.
	Replace bp_type by b->type.  All callers updated.
	(set_breakpoint_location_function): Replace bptype by b->type.

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

	* breakpoint.c (update_global_location_list): Fix the comment.

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

	* infcmd.c (step_1, step_once): Look up the stepping range based
	on the current frame's PC, not on stop_pc.

2008-12-05  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix compilation on 32-bit host configurations.
	* ia64-tdep.c (ia64_breakpoint_from_pc): Suffix a constant by `LL'.

2008-12-05  Tristan Gingold  <gingold@adacore.com>

	* i386-darwin-nat.c (i386_darwin_sstep_at_sigreturn): New function.
	(amd64_darwin_sstep_at_sigreturn): New function.
	(darwin_set_sstep): The sigreturn is a special case: the trace flag
	must be set in the mcontext structure.

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

	* infcmd.c (step_once): Remove dead code.

2008-12-04  Doug Evans  <dje@google.com>

	* infcall.c (call_function_by_hand): Clean up use of local dummy_addr.

2008-12-02  Doug Evans  <dje@google.com>

	* infrun.c (handle_inferior_event): Remove redundant resetting of
	stepping_past_singlestep_breakpoint.

2008-12-02  Pedro Alves  <pedro@codesourcery.com>

	* target.h (target_get_osdata): Describe.
	* osdata.h (make_cleanup_osdata_free): Declare.
	* osdata.c (osdata_item_clear): Define even if HAVE_LIBEXPAT is
	not defined.
	(osdata_free_cleanup): New.
	(make_cleanup_osdata_free): New.
	(get_osdata): Fix leak.
	(info_osdata_command): Use make_cleanup_osdata_free.
	(info_processes_command): Delete.
	(_initialize_osdata): Drop undocumented "info processes" alias.
	* mi/mi-main.c (mi_cmd_list_thread_groups): Fix leak.

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

	Fix resolving external references to TLS variables.
	* findvar.c: Include `objfiles.h'.
	(read_var_value <LOC_UNRESOLVED>): New variable `obj_section'.  Handle
	SEC_THREAD_LOCAL variables.
	* printcmd.c (address_info <LOC_UNRESOLVED>): Handle SEC_THREAD_LOCAL
	variables.

2008-12-02  Doug Evans  <dje@google.com>

	* infrun.c (handle_inferior_event): Delete unused local tp.

2008-12-02  Pedro Alves  <pedro@codesourcery.com>
	    Vladimir Prus  <vladimir@codesourcery.com>

	Implement -list-thread-groups --available

        * Makefile.in (XMLFILES): Add osdata.dtd.
        (SFILES): Add osdata.c.
        (COMMON_OBS): Add osdata.o.
        * linux-nat.c: Include pwd.h, sys/types.h, gdb_dirent.h and xml-support.h.
        (linux_nat_xfer_osdata): New function.
        (linux_xfer_partial): Handle TARGET_OBJECT_OSDATA.
        * osdata.c: New file.
        * osdata.h: New file.
        * remote.c (PACKET_qXfer_osdata): New packet enum.
        (remote_protocol_features): Add "qXfer:osdata:read".
        (remote_read_qxfer): Handle TARGET_OBJECT_OSDATA.
        (extended_remote_can_run): New.
        (init_extended_remote_ops): Set to_can_run to
        extended_remote_can_run.
        (_initialize_remote): Add packet config command for
        "qXfer:osdata:read".
        * xml-support.c (obstack_xml_printf): New function.
        * xml-support.h (obstack_xml_printf): Declare.
        * target.c (target_get_osdata): New function.
        * target.h (enum target_object): Add TARGET_OBJECT_OSDATA.
        (target_os_data): Declare.
        * features/osdata.dtd: New file.
        * mi/mi-main.c (mi_list_thread_groups): Handle the --available
        option.

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

	* infrun.c (proceed): Delete unused local stop_signal.

2008-11-27  Tristan Gingold  <gingold@adacore.com>

	* NEWS: Add entry for new native configuration: Darwin.
	* configure.host: Add Darwin host.
	* configure.tgt: Add Darwin target.
	* defs.h (enum gdb_osabi): Add GDB_OSABI_DARWIN.
	* osabi.c (gdb_osabi_names): Add name for Darwin abi.
	* i386-darwin-nat.c: New file.
	* i386-darwin-tdep.c: New file.
	* machoread.c: New file.
	* darwin-nat-info.c: New file.
	* darwin-nat.c: New file.
	* darwin-nat.h: New file.
	* darwin.defs: New file.
	* config/i386/darwin.mh: New file.

2008-11-26  Tristan Gingold  <gingold@adacore.com>

	* MAINTAINERS: Add myself for write after approval privileges.

2008-11-26  Jerome Guitton  <guitton@adacore.com>

	* value.h (allocate_value_lazy): New function declaration.
	(value_free): Remove macro, make it a function.
	* value.c (value): Move actual content outside of the memory space
	of the struct; add a pointer to this actual content.
	(allocate_value_lazy, allocate_value_contents): New function.
	(allocate_value): Reimplement using these two new functions.
	(value_contents_raw, value_contents_all_raw): If no memory
	has been allocated yet for the actual content, allocate it.
	(value_contents_all): Resync with struct value's changes.
	(value_free): New function.
	(value_copy, value_primitive_field): Use new function
	allocate_value_lazy to allocate lazy values.
	(value_change_enclosing_type): Resync with struct value's changes.
	As the value is not reallocated, remove the special handling for
	the value chain (now obsolete).
	* valops.c (value_at_lazy): Use new function allocate_value_lazy.
	(value_fetch_lazy): Allocate value content. Use allocate_value_lazy
	to allocate lazy values.
	(value_slice): Use allocate_value_lazy to allocate lazy values.

2008-11-25  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix automatic restoration of breakpoints memory for ia64.
	* ia64-tdep.c: New #if check on BREAKPOINT_MAX vs. BUNDLE_LEN.  
	(ia64_memory_insert_breakpoint): New comment part for SHADOW_CONTENTS
	content.  Remove variable instr.  New variable cleanup.  Disable
	automatic breakpoints restoration.  PLACED_SIZE and SHADOW_LEN are now
	set larger, to BUNDLE_LEN - 2.  Variable `bundle' type update.  Return
	error if even just final target_write_memory has failed.
	(ia64_memory_remove_breakpoint): Rename variables bundle to bundle_mem
	and instr to instr_saved.  New variables bundle_saved and
	instr_breakpoint.  Comment new reasons why we need to disable automatic
	restoration of breakpoints.  Assert PLACED_SIZE and SHADOW_LEN.  New
	check of the original memory content.  Return error if even just final
	target_write_memory has failed.
	(ia64_breakpoint_from_pc): Implement the emulation of permanent
	breakpoints compatible with current bp_loc_is_permanent.
	(template_encoding_table): Make it `const'.
	* breakpoint.c (bp_loc_is_permanent): Support unsupported software
	breakpoints.  New variables `cleanup' and `retval'.

2008-11-24  Tom Tromey  <tromey@redhat.com>

	* ada-lang.c (value_from_contents_and_address): Move...
	* value.c: ... here.
	* ada-lang.h (value_from_contents_and_address): Move
	declaration...
	* value.h: ... here.

2008-11-24  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* valprint.c (val_print_array_elements): Pass correct
	element address to val_print.
	
2008-11-24  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix access of an already freed memory.
	* parse.c (parse_field_expression): Call xstrdup on `*name'.
	* completer.c (expression_completer): Free fieldname.

2008-11-24  Daniel Jacobowitz  <dan@codesourcery.com>

	PR gdb/2474
	* remote.c (remote_read_description_p): New function.
	(remote_start_remote): Try to fetch the target description
	before adding shared libraries.  Try again later if the
	target is running but stopped.
	(remote_open_1): Mark extended targets as exited by default.
	(remote_read_description): Check target_has_execution.

2008-11-24  Jerome Guitton  <guitton@adacore.com>

	* alpha-mdebug-tdep.c (alpha_mdebug_frame_unwind_cache): Use
        the frame address in block instead of the return address to
        locate the mdebug PDR of the frame.

2008-11-21  Joel Brobecker  <brobecker@adacore.com>

	Remove the unused BPSTAT_WHAT_CHECK_SHLIBS_RESUME_FROM_HOOK.

	* breakpoint.h (enum bpstat_what_main_action): Remove
	BPSTAT_WHAT_CHECK_SHLIBS_RESUME_FROM_HOOK.
	* breakpoint.c (bpstat_what): Delete catch_shlib_event from enum class.
	Remove the BPSTAT_WHAT_CHECK_SHLIBS_RESUME_FROM_HOOK column from
	variable table.
	* infrun.c (wait_for_inferior): Remove handling of
	BPSTAT_WHAT_CHECK_SHLIBS_RESUME_FROM_HOOK.

2008-11-21  Tom Tromey  <tromey@redhat.com>

	* configure: Rebuild.
	* configure.ac: Merge calls to AC_CHECK_FUNCS, AC_CHECK_HEADERS,
	AC_CHECK_DECLS, and AC_CHECK_MEMBERS.

2008-11-21  Tom Tromey  <tromey@redhat.com>

	* python/python-internal.h (PyGILState_Ensure): New define.
	(PyGILState_Release): Likewise.
	(PyEval_InitThreads): Likewise.
	(PyThreadState_Swap): Likewise.
	(PyEval_InitThreads): Likewise.
	* python/python.c (_initialize_python): Initialize threads.
	Release GIL.
	(eval_python_from_control_command): Acquire GIL.
	(python_command): Likewise.
	* python/python-internal.h (make_cleanup_py_restore_gil):
	Declare.
	* python/python-utils.c (py_gil_restore): New function.
	(make_cleanup_py_restore_gil): Likewise.

2008-11-20  Doug Evans  <dje@google.com>

	* frame.c (frame_debug_got_null_frame): Remove file arg.
	All callers updated.

2008-11-20  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (resume): If following a fork, also reset regcache,
	gdbarch and pc.

2008-11-20  Doug Evans  <dje@google.com>

	* printcmd.c (sym_info): Don't print the offset if it's zero.

2008-11-20  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (resume): If following a fork, reread the current
	thread.  Avoid dereferencing a possibly dangling pointer.

2008-11-19  Doug Evans  <dje@google.com>

	* inferior.h (proceed_to_finish): Delete, unused.
	(stop_registers): Tweak comment.
	* infrun.c (stop_registers): Tweak comment.

2008-11-19  Kevin Buettner  <kevinb@redhat.com>

	* frv-tdep.c (frv_skip_main_prologue): New function.
	(frv_gdbarch_init): Register frv_skip_main_prologue.
	* solib-frv.c (fetch_loadmap): Return early when no segments are
	found.
	(frv_relocate_main_executable): Return early when both interpreter
	and executable loadmap addresses are zero.

2008-11-19  Bob Wilson  <bob.wilson@acm.org>
	
	* xtensa-config.c (rmap): Remove entries for ar32 through ar63.  Add
	threadptr, scompare1, mmid, epc5, epc6, epc7, eps5, eps6, eps7,
	excsave5, excsave6, excsave7, cpenable, and vecbase registers.
	(xtensa_submask0, xtensa_submask1, xtensa_submask2)
	(xtensa_submask3, xtensa_submask4, xtensa_submask5, xtensa_submask6)
	(xtensa_submask7, xtensa_submask8, xtensa_submask9, xtensa_submask10)
	(xtensa_submask11, xtensa_submask12, xtensa_submask13, xtensa_submask14)
	(xtensa_submask15): Adjust register numbers.
	* xtensa-xtregs.c (XTENSA_ELF_XTREG_SIZE): Change to 4.
	(xtensa_regmap_table): Add entry for scompare1.
	* regformats/reg-xtensa.dat: Remove ar32 through ar63.  Add threadptr
	and scompare1.
	
2008-11-19  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (escape_buffer): New.
	(putpkt_binary, read_frame, getpkt_or_notif_sane_1): Use it.  Make
	sure debug output printing a packet buffer goes through a single
	fprintf_unfiltered call.
	* utils.c (vfprintf_unfiltered): If outputting timestamps, end
	output with a newline if it wasn't going to already.

2008-11-18  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* maint.c (maintenance_translate_address): Fix a buglet.
	
2008-11-18  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* features/Makefile (rs6000/powerpc-isa205-32l-expedite,
	rs6000/powerpc-isa205-altivec32l-expedite,
	powerpc-isa205-vsx32l-expedite, rs6000/powerpc-isa205-64l-expedite,
	rs6000/powerpc-isa205-altivec64l-expedite,
	powerpc-isa205-vsx64l-expedite): New variables.
	* regformats/rs6000/powerpc-isa205-32l.dat: Generate.
	* regformats/rs6000/powerpc-isa205-altivec32l.dat: Generate.
	* regformats/rs6000/powerpc-isa205-vsx32l.dat: Generate.
	* regformats/rs6000/powerpc-isa205-64l.dat: Generate.
	* regformats/rs6000/powerpc-isa205-altivec64l.dat: Generate.
	* regformats/rs6000/powerpc-isa205-vsx64l.dat: Generate.

2008-11-18  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* ppc-linux-nat.c (ppc_register_u_addr): Add special case to return
	offset for full 64-bit slot of FPSCR when in 32-bits.
	(ppc_linux_read_description): Return target description with 64-bit
	FPSCR when inferior is running on an ISA 2.05 or later processor.
	* ppc-linux-tdep.c (_initialize_ppc_linux_tdep): Call
	initialize_tdec_powerpc_isa205_32l,
	initialize_tdec_powerpc_isa205_altivec32l,
	initialize_tdec_powerpc_isa205_vsx32l,
	initialize_tdec_powerpc_isa205_64l,
	initialize_tdec_powerpc_isa205_altivec64l and
	initialize_tdec_powerpc_isa205_vsx64l.
	* ppc-linux-tdep.h: Add external declaration for
	tdesc_powerpc_isa205_32l, tdesc_powerpc_isa205_altivec32l,
	tdesc_powerpc_isa205_vsx32l, tdesc_powerpc_isa205_64l,
	tdesc_powerpc_isa205_altivec64l and tdesc_powerpc_isa205_vsx64l.
	* features/rs600/powerpc-fpu-isa205.xml: New file.
	* features/rs600/powerpc-isa205-32l.xml: New file.
	* features/rs600/powerpc-isa205-64l.xml: New file.
	* features/rs600/powerpc-isa205-altivec32l.xml: New file.
	* features/rs600/powerpc-isa205-altivec64l.xml: New file.
	* features/rs600/powerpc-isa205-vsx32l.xml: New file.
	* features/rs600/powerpc-isa205-vsx64l.xml: New file.
	* features/rs600/powerpc-isa205-32l.c: Generate.
	* features/rs600/powerpc-isa205-64l.c: Generate.
	* features/rs600/powerpc-isa205-altivec32l.c: Generate.
	* features/rs600/powerpc-isa205-altivec64l.c: Generate.
	* features/rs600/powerpc-isa205-vsx32l.c: Generate.
	* features/rs600/powerpc-isa205-vsx64l.c: Generate.

2008-11-18  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* objfiles.h: New MULTI_OBJFILE_P macro.
	* printcmd.c (sym_info): Print object name.
	* maint.c (maintenance_translate_address): Likewise.
	
2008-11-18  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Document the removal of "catch load" and "catch unload".

2008-11-17  Doug Evans  <dje@google.com>

	* infcall.c (call_function_by_hand): Fix punctuation and capitalization
	on error messages.

2008-11-17  Ulrich Weigand  <uweigand@de.ibm.com>

	PR gdb/2250
	* infrun.c (clear_proceed_status_thread): New function.
	(clear_proceed_status_callback): New function.
	(clear_proceed_status): In all-stop mode, clear per-thread
	proceed status of *all* threads, not only the current.
	(handle_inferior_event): In all-stop mode, if we're stepping
	one thread, but got some inferior event in another thread
	that does not cause GDB to break to the user interface,
	ensure the interrupted stepping operation continues in the
	original thread.
	(currently_stepping): Move thread-related tests to ...
	(currently_stepping_thread): ... this new function.
	(currently_stepping_callback): New function.

2008-11-17  Vladimir Prus  <vladimir@codesourcery.com>

	Implement =thread-selected notification.

        * mi/mi-common.h (struct mi_interp): New, moved from ...
        * mi/mi-interp.c: ...here.
        * mi/mi-main.c (mi_execute_command): If the thread changed
        as result of command, report that.

2008-11-17  Vladimir Prus  <vladimir@codesourcery.com>

	Implement continue/interrupt of thread groups.

        * mi/mi-main.c (proceed_thread_callback): New.
        (mi_cmd_exec_continue): If --thread-group is specified, resume all
        threads in that group.
        (interrupt_thread_callback): New.
        (mi_cmd_exec_interrupt): If --thread-group is specified, interrupt
        all threads in that group.

2008-11-17  Vladimir Prus  <vladimir@codesourcery.com>

	Implement '-target-detach pid'.

        * infcmd.c (detach_command): Make nonstatic.
        * inferior.h (detach_command): Declare.
        * mi/mi-cmds.c (mi_cmds): Don't route -target-detach via CLI.
        * mi/mi-cmds.h (mi_cmd_target_detach): Declare.
        * mi/mi-main.c (find_thread_of_process, mi_cmd_target_detach): New.

2008-11-17  Vladimir Prus  <vladimir@codesourcery.com>

	Include group-id in thread-created notification.

        * mi/mi-interp.c (mi_new_thread, mi_thread_exit): Include
        group id in the output.

2008-11-17  Vladimir Prus  <vladimir@codesourcery.com>

	Notification for attach/detach.

        * inferior.c: Call the process observers.
        * mi/mi-interp.c (mi_new_inferior, mi_inferior_exit): New.
        (mi_interpreter_init): Register the above.

2008-11-17  Vladimir Prus  <vladimir@codesourcery.com>

	Implement -list-thread-groups.

        * thread.c (print_thread_info): New parameter pid, to print
        threads of specific process.
        * gdbthread.h (print_thread_info): New parameter pid.
        * mi/mi-cmds.c (mi_cmds): Register -list-thread-groups.
        * mi/mi-cmds.h (mi_cmd_list_thread_groups): New.
        * mi/mi-main.c (mi_cmd_thread_info): Adjust.
        (print_one_process, mi_cmd_list_thread_groups): New.

2008-11-16  Joel Brobecker  <brobecker@adacore.com>

	Remove some unused macros related to the old load/unload catchpoints.

	* breakpoint.c (SOLIB_LOADED_LIBRARY_PATHNAME)
	(SOLIB_UNLOADED_LIBRARY_PATHNAME, SOLIB_CREATE_CATCH_LOAD_HOOK)
	(SOLIB_CREATE_CATCH_UNLOAD_HOOK): Delete. No longer used.

2008-11-16  Joel Brobecker  <brobecker@adacore.com>

	Remove support for catch load and catch unload commands.

	* breakpoint.h (enum bptype): Remove bp_catch_load and bp_catch_unload.
	(struct breakpoint): Remove fields dll_pathname and
	triggered_dll_pathname.
	(bpstat_get_triggered_catchpoints, ep_is_shlib_catchpoint): Delete.
	* breakpoint.c (ep_is_catchpoint): Remove handling of
	bp_catch_load and bp_catch_unload.
	(print_it_typical, bpstat_check_location, bpstat_what)
	(print_one_breakpoint_location, print_one_breakpoint_location)
	(user_settable_breakpoint, allocate_bp_location)
	(set_raw_breakpoint_without_location, mention, delete_breakpoint,
	(breakpoint_re_set_one, disable_command, enable_command): Likewise.
	(ep_is_shlib_catchpoint, bpstat_get_triggered_catchpoints)
	(catch_load_command_1, catch_unload_command_1): Delete.
	(_initialize_breakpoint): Remove the "catch load" and "catch unload"
	command creation.
	* infrun.c (handle_inferior_event): Remove the handling of
	load/unload catchpoint events.

2008-11-15  Joel Brobecker  <brobecker@adacore.com>

	From  Jerome Guitton  <guitton@adacore.com>
	* dwarf2read.c (dwarf2_debug_line_missing_end_sequence_complaint):
	New function.
	(dwarf_decode_lines): Detect null file numbers. Detect the end of
	the line program sequence when no end sequence is emitted.

2008-11-15  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_evaluate_subexp): Improve handling of integer
	type dereferencing.

2008-11-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* NEWS: Mention sparc64-linux-gnu gdbserver support.

2008-11-14  Daniel Gutson  <dgutson@codesourcery.com>

	* configure.tgt (sparc64-*-linux*): Added gdbserver support.
	* regformats/reg-sparc64.dat: New file.

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

	PR mi/2549:
	* mi/mi-main.c (get_register): Use get_formatted_print_options.

2008-11-13  Joel Brobecker  <brobecker@adacore.com>

	* printcmd.c: define PRINTF_HAS_LONG_LONG only if not yet defined.

2008-11-13  Ulrich Weigand  <uweigand@de.ibm.com>

	* auxv.c (fprint_target_auxv): Handle AT_BASE_PLATFORM and
	AT_EXECFN.  Re-sort AT_SECURE.

2008-11-13  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* monitor.c (monitor_insert_breakpoint): Remove unused variable `bp'.

2008-11-13  Joel Brobecker  <brobecker@adacore.com>

	* ia64-tdep.c: Remove commented out #define.

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

	From Joel Sherrill  <joel.sherrill@oarcorp.com>
	* remote-sim.c (gdbsim_mourn_inferior): Use "target" parameter
	instead of the "gdbsim_ops" global.

2008-11-11  Doug Evans  <dje@google.com>

	* infcall.c (call_function_by_hand): Handle inferior exit.

2008-11-11  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* remote-sim.c (gdbsim_create_inferior, gdbsim_mourn_inferior): Add
	missing struct target_ops argument.

2008-11-11  Joel Sherrill <joel.sherrilL@oarcorp.com>

	* MAINTAINERS: Add myself for write after approval privileges.

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

	* gdbtypes.c (copy_type_recursive): Clear new fields.

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

	* cli/cli-cmds.c (source_script): Clean up full_pathname.  Run
	cleanups on early return.

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

	Kill pthread_ops_hack

	* target.h (struct target_ops): Make to_attach, to_detach,
	to_create_inferior and to_mourn_inferior accept a pointer
    	to struct target_ops.
	(target_attach, target_create_inferior, target_create_inferior):
	Convert from macros to function.  Find the right target to
	invoke a method of.
	(find_default_attach, find_default_create_inferior): New parameter
	ops.
	* corefile.c (core_file_command): Pass target to to_detach.
	* corelow.c (core_detach): Add 'ops' parameter.
	* fork-child.c (fork_inferior): Return the pid.  Allow
	init_trace_fun to be NULL.
	* inf-ptrace (ptrace_ops_hack): Remove.
	(inf_ptrace_him): Remove, moving all logic into....
	(inf_ptrace_create_inferior): ... here.  Push the target
	passed as parameter.
	(inf_ptrace_mourn_inferior, inf_ptrace_attach, inf_ptrace_detach):
	Push/pop target passed as parameter, no ptrace_ops_hack.
	(inf_ptrace_target): Don't remember result.
	* inferior.h (fork_inferior): Adjust prototype.
	* linux-nat.c (linux_nat_create_inferior, linux_nat_attach)
	(linux_nat_detach, linux_nat_mourn_inferior): New parameter ops.
	Pass it to linux_ops target.
	* linux-thread-db.c (thread_db_detach, thread_db_mourn_inferior):
	New parameter ops. Pass it to the target beneath.
	* remote.c (remote_mourn, extended_remote_mourn, remote_detach)
	(extended_remote_create_inferior): New parameter ops. Pass it
	further.
	* target.c (debug_to_attach, debug_to_detach)
	(debug_to_mourn_inferior): New parameter ops.
	(target_create_inferior): New.
	(update_current_target): Do not inherit to_attach, to_detach,
	to_create_inferiour, to_mourn_inferior.  Do not default
	to_detach and to_mourn_inferior.
	(target_detach): Find the right target to use.
	(target_mourn_inferior): New.
	(find_default_attach, find_default_create_inferior): New parameter
	ops.  Pass the found target when calling its method.
	(init_dummy_target): Provide fallback definition of to_detach.
	(target_attach): New.
	(debug_to_attach, debug_to_detach, debug_to_create_inferior)
	(debug_to_mourn_inferiour): New parameter ops.
        * aix-thread.c: Adjust.
        * bsd-uthread.c: Adjust.
        * gnu-nat.c: Adjust.
        * go32-nat.c: Adjust.
        * hpux-thread.c: Adjust.
        * inf-ttrace.c: Ajust.
        * monitor.c: Adjust.
        * nto-procfs.c: Adjust.
        * procfs.c: Adjust.
        * remote-m32r-sdi.c: Adjust.
        * remote-mips.c: Adjust.
        * remote-sim.c: Adjust.
        * rs6000-nat.c: Adjust.
        * sol-thread.c: Adjust.
        * win32-nat.c: Adjust.
	* dec-thread.c: Adjust.

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

	* thread.c (print_thread_info): Eliminate now useless checks
	for exited threads.

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

	* i386-dicos-tdep.c (i386_dicos_init_abi): Set decr_pc_after_break
	to 0.

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

	* remote.c (notice_new_inferiors): Add a new inferior only when
	we're going to add a new thread.

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

	* defs.h (add_inferior_continuation)
	(do_all_inferior_continuations)
	(discard_all_inferior_continuations): Declare.
	* utils.c (add_inferior_continuation)
	(do_all_inferior_continuations)
	(discard_all_inferior_continuations): New.
	* inferior.h (struct inferior) <continuations>: New field.
	* inferior.c (free_inferior): Discard all the inferior
	continuations.
	* inf-loop.c (inferior_event_handler): Do all current inferior
	continuations.
	* infcmd.c (attach_command): Register an inferior continuation
	instead of a thread continuation.
	* infrun.c (handle_inferior_event): If stop_soon is
	STOP_QUIETLY_NO_SIGSTOP, also expect a TARGET_SIGNAL_0.

2008-11-04  Pedro Alves  <pedro@codesourcery.com>

	* inf-loop.c (inferior_event_handler): On INF_ERROR and
	INF_REG_EVENT throwing, don't call target_async or pop_target.
	Call pop_all_targets_above.
	* remote.c (remote_close): Call remote_terminal_ours.  Don't call
	signal or target_async.

2008-11-04  Daniel Jacobowitz  <dan@codesourcery.com>

	* eval.c (evaluate_subexp_standard): Assert that there is at
	least one array dimension.

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

	Make attach_command exception-safe
        * infcmd.c (attach_command): Call async_enable_stdin
        if exception is thrown.

2008-11-03  Pedro Alves  <pedro@codesourcery.com>

	* gdbarch.sh (has_global_solist): Mention global breakpoints.
	* gdbarch.h: Regenerate.

2008-11-03  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (remote_start_remote): If the solib list is global,
	fetch libraries and insert breakpoints after connecting.
	* infcmd.c (post_create_inferior): If the solist is shared between
	inferiors, no need to refetch it on every new inferior.
	(detach_command): If the shared library list is shared between
	inferiors, then don't clear it on every inferior detach.
	* gdbarch.sh (has_global_solist): New.
	* i386-dicos-tdep.c (i386_dicos_init_abi): Set
	gdbarch_has_global_solist.
	* target.c (target_pre_inferior): If the shared library list is
	shared between inferiors, then don't clear it here, neither
	invalidate the memory regions or clear the target description.
	(target_detach): If the shared library list is shared between
	inferiors, then don't remove breakpoints from the target here.
	(target_disconnect): Comment.
	* solib.c (update_solib_list): Check for null_ptid.
	* breakpoint.c (insert_breakpoints, update_global_location_list):
	If the shared library list is shared between inferiors, insert
	breakpoints even if there's no execution.
	(breakpoint_init_inferior): If the shared library list is shared
	between inferiors, don't delete breakpoints or mark them
	uninserted here.

	* gdbarch.c, gdbarch.h: Regenerate.

2008-10-31  Pedro Alves  <pedro@codesourcery.com>

	* inferior.h (inferior_ignoring_leading_exec_events): Delete
	declaration.

2008-10-31  Pedro Alves  <pedro@codesourcery.com>

	* inferior.h (write_inferior_status_register): Delete.
	* infrun.c (write_inferior_status_register): Delete.

2008-10-30  Tom Tromey  <tromey@redhat.com>

	* value.c (coerce_array): Use check_typedef.

2008-10-30  Tom Tromey  <tromey@redhat.com>

	* cli/cli-logging.c (handle_redirections): Make a cleanup.
	* reggroups.c (maintenance_print_reggroups): Make a cleanup.
	* regcache.c (regcache_print): Make a cleanup.
	* maint.c (maintenance_print_architecture): Make a cleanup.
	* dummy-frame.c (maintenance_print_dummy_frames): Make a cleanup.

2008-10-30  Tom Tromey  <tromey@redhat.com>

	* utils.c (make_cleanup_close): Use make_cleanup_dtor.
	(do_close_cleanup): Don't free 'fd'.

2008-10-30  Tom Tromey  <tromey@redhat.com>

	* source.c (symtab_to_fullname): Test 'r >= 0'.
	(psymtab_to_fullname): Likewise.
	(get_filename_and_charpos): Make a cleanup.
	(forward_search_command): Likewise.
	(reverse_search_command): Likewise.
	* exec.c (exec_file_attach): Close scratch_chan on failure.
	* nto-procfs.c (procfs_open): Make a cleanup.
	(procfs_pidlist): Likewise.
	(do_closedir_cleanup): New function.

2008-10-30  Andreas Schwab  <schwab@suse.de>

	* infcmd.c (construct_inferior_arguments): Handle newlines
	specially.

2008-10-30  Joel Brobecker  <brobecker@adacore.com>

	* breakpoint.h (enum bptype): Delete bp_catch_exec.
	* breakpoint.c (insert_catchpoint): Remove handling for
	bp_catch_exec breakpoint kinds.
	(insert_bp_location, update_breakpoints_after_exec, remove_breakpoint)
	(ep_is_catchpoint, print_it_typical, bpstat_check_location),
	(bpstat_check_location, bpstat_what, print_one_breakpoint_location)
	(print_one_breakpoint_location, user_settable_breakpoint)
	(breakpoint_address_is_meaningful, adjust_breakpoint_address)
	(allocate_bp_location, mention, breakpoint_re_set_one)
	(disable_command, enable_command): Likewise.
	(create_exec_event_catchpoint): Delete.
	(insert_catch_exec, remove_catch_exec, breakpoint_hit_catch_exec)
	(print_it_catch_exec, print_one_catch_exec, print_mention_catch_exec):
	New functions.
	(catch_exec_breakpoint_ops): New static global.
	(catch_exec_command_1): Use create_catchpoint instead of
	create_exec_event_catchpoint to create the exec catchpoint.

2008-10-28  Tom Tromey  <tromey@redhat.com>

	* Makefile.in (SUBDIR_CLI_OBS): Don't mention cli-utils.o.
	(SUBDIR_CLI_DEPS): Don't mention cli-utils.c.
	(HFILES_NO_SRCDIR): Don't mention cli-utils.h.
	(cli-utils.o): Remove.
	* cli/cli-utils.c: Remove.
	* cli/cli-utils.h: Remove.

2008-10-28  Tom Tromey  <tromey@redhat.com>

	* varobj.c (value_get_print_value): Include valprint.h.
	(value_get_print_value): Use get_formatted_print_options.
	* value.h (struct value_print_options): Declare.
	(value_print, val_print, common_val_print, val_print_string):
	Update.
	* value.c: Include valprint.h.
	(show_values): Use get_user_print_options.
	(show_convenience): Likewise.
	* valprint.h (prettyprint_arrays, prettyprint_structs): Don't
	declare.
	(struct value_print_options): New type.
	(vtblprint, unionprint, addressprint, objectprint, print_max,
	inspect_it, repeat_count_threshold, output_format,
	stop_print_at_null): Don't declare.
	(user_print_options, get_user_print_options,
	get_raw_print_options, get_formatted_print_options): Declare.
	(print_array_indexes_p): Don't declare.
	(maybe_print_array_index, val_print_array_elements): Update.
	* valprint.c (print_max): Remove.
	(user_print_options): New global.
	(get_user_print_options, get_raw_print_options,
	get_formatted_print_options): New functions.
	(print_array_indexes, repeat_count_threshold, stop_print_at_null,
	prettyprint_structs, prettyprint_arrays, unionprint,
	addressprint): Remove.
	(val_print): Remove format, deref_ref, pretty arguments; add
	options.  Update.
	(common_val_print): Likewise.
	(print_array_indexes_p): Remove.
	(maybe_print_array_index): Remove format, pretty arguments; add
	options.  Update.
	(val_print_array_elements): Remove format, deref_ref, pretty
	arguments; add options.  Update.
	(val_print_string): Add options argument.  Update.
	(_initialize_valprint): Use user_print_options.
	(output_format): Remove.
	(set_output_radix_1): Use user_print_options.
	* typeprint.c: Include valprint.h.
	(objectprint): Don't declare.
	(whatis_exp): Use get_user_print_options.
	* tui/tui-regs.c: Include valprint.h.
	(tui_register_format): Use get_formatted_print_options.
	* tracepoint.c: Include valprint.h.
	(addressprint): Don't declare.
	(trace_mention): Use get_user_print_options.
	(tracepoints_info): Likewise.
	* stack.c (print_frame_args): Use get_raw_print_options.
	(print_frame_info): Use get_user_print_options.
	(print_frame): Likewise.
	* sh64-tdep.c: Include valprint.h
	(sh64_do_register): Use get_formatted_print_options.
	* scm-valprint.c (scm_inferior_print): Remove format, deref_ref,
	pretty arguments; add options.
	(scm_scmlist_print): Likewise.  Update.
	(scm_scmval_print): Likewise.
	(scm_val_print): Likewise.
	(scm_value_print): Remove format, pretty arguments; add options.
	Update.
	* scm-lang.h (scm_value_print, scm_val_print, scm_scmval_print):
	Update.
	* scm-lang.c (scm_printstr): Add options argument.
	* python/python-value.c: Include valprint.h.
	(valpy_str): Use get_user_print_options.
	* printcmd.c: Include valprint.h.
	(addressprint): Don't declare.
	(inspect_it): Remove.
	(print_formatted): Remove format option; add options.  Update.
	(print_scalar_formatted): Likewise.
	(print_address_demangle): Use get_user_print_options.
	(do_examine): Use get_formatted_print_options.
	(print_command_1): Likewise.
	(output_command): Use get_formatted_print_options.
	(do_one_display): Likewise.
	(print_variable_value): Use get_user_print_options.
	* p-valprint.c (pascal_val_print): Remove format, deref_ref,
	pretty arguments; add options.  Update.
	(pascal_value_print): Remove format, pretty arguments; add
	options.  Update.
	(vtblprint, objectprint): Don't declare.
	(pascal_static_field_print): Remove.
	(pascal_object_print_value_fields): Remove format, pretty
	arguments; add options.  Update.
	(pascal_object_print_static_field): Likewise.
	(_initialize_pascal_valprint): Use user_print_options.  Update.
	* p-lang.h (pascal_val_print, pascal_value_print,
	pascal_printstr, pascal_object_print_value_fields): Update.
	(vtblprint, static_field_print): Don't declare.
	* p-lang.c (pascal_printstr): Add options argument.  Update.
	* objc-lang.c (objc_printstr): Add options argument.  Update.
	* mt-tdep.c: Include valprint.h.
	(mt_registers_info): Use get_raw_print_options.
	* mips-tdep.c: Include valprint.h.
	(mips_print_fp_register): Use get_formatted_print_options.
	(mips_print_register): Likewise.
	* mi/mi-main.c: Include valprint.h.
	(get_register): Use get_user_print_options.
	(mi_cmd_data_evaluate_expression): Likewise.
	(mi_cmd_data_read_memory): Use get_formatted_print_options.
	* mi/mi-cmd-stack.c: Include valprint.h.
	(list_args_or_locals): Use get_raw_print_options.
	* m2-valprint.c (print_function_pointer_address): Add addressprint
	argument.
	(m2_print_long_set): Remove format, pretty arguments.
	(m2_print_unbounded_array): Remove format, deref_ref, pretty
	arguments; add options.  Update.
	(print_unpacked_pointer): Remove format argument; add options.
	Now static.  Update.
	(print_variable_at_address): Remove format, deref_ref, pretty
	arguments; add options.  Update.
	(m2_print_array_contents): Likewise.
	(m2_val_print): Likewise.
	* m2-lang.h (m2_val_print): Update.
	* m2-lang.c (m2_printstr): Add options argument. Update.
	* language.h (struct value_print_options): Declare.
	(struct language_defn) <la_printstr>: Add options argument.
	<la_val_print>: Remove format, deref_ref, pretty argument; add
	options.
	<la_value_print>: Remove format, pretty arguments; add options.
	<la_print_array_index>: Likewise.
	(LA_VAL_PRINT, LA_VALUE_PRINT, LA_PRINT_STRING,
	LA_PRINT_ARRAY_INDEX): Update.
	(default_print_array_index): Update.
	* language.c (default_print_array_index): Remove format, pretty
	arguments; add options.  Update.
	(unk_lang_printstr): Add options argument.
	(unk_lang_val_print): Remove format, deref_ref, pretty arguments;
	add options.
	(unk_lang_value_print): Remove format, pretty arguments; add
	options.
	* jv-valprint.c (java_value_print): Remove format, pretty
	arguments; add options.  Update.
	(java_print_value_fields): Likewise.
	(java_val_print): Remove format, deref_ref, pretty arguments; add
	options.  Update.
	* jv-lang.h (java_val_print, java_value_print): Declare.
	* infcmd.c: Include valprint.h.
	(print_return_value): Use get_raw_print_options.
	(default_print_registers_info): Use get_user_print_options,
	get_formatted_print_options.
	(registers_info): Use get_formatted_print_options.
	* gdbtypes.h (struct value_print_options): Declare.
	(print_scalar_formatted): Update.
	* f-valprint.c (f77_print_array_1): Remove format, deref_ref,
	pretty arguments; add options.  Update.
	(f77_print_array): Likewise.
	(f_val_print): Likewise.
	* f-lang.h (f_val_print): Update.
	* f-lang.c (f_printstr): Add options argument.  Update.
	(c_value_print): Update declaration.
	* expprint.c: Include valprint.h.
	(print_subexp_standard): Use get_raw_print_options,
	get_user_print_options.
	* eval.c: Include valprint.h.
	(objectprint): Don't declare.
	(evaluate_subexp_standard): Use get_user_print_options.
	* cp-valprint.c (vtblprint, objectprint, static_field_print):
	Remove.
	(cp_print_value_fields): Remove format, pretty arguments; add
	options.  Update.
	(cp_print_value): Likewise.
	(cp_print_static_field): Likewise.
	(_initialize_cp_valprint): Use user_print_options.  Update.
	* c-valprint.c (print_function_pointer_address): Add addressprint
	argument.
	(c_val_print): Remove format, deref_ref, pretty arguments; add
	options.  Update.
	(c_value_print): Add options argument.  Update.
	* c-lang.h (c_val_print, c_value_print, c_printstr): Update.
	(vtblprint, static_field_print): Don't declare.
	(cp_print_value_fields): Update.
	* c-lang.c (c_printstr): Add options argument.  Update.
	* breakpoint.c: Include valprint.h.
	(addressprint): Don't declare.
	(watchpoint_value_print): Use get_user_print_options.
	(print_one_breakpoint_location): Likewise.
	(breakpoint_1, print_it_catch_fork, print_it_catch_vfork, mention,
	print_exception_catchpoint): Likewise.
	* auxv.c (fprint_target_auxv): Don't declare addressprint.  Use
	get_user_print_options.
	* ada-valprint.c (struct ada_val_print_args): Remove format,
	deref_ref, and pretty; add options.
	(print_optional_low_bound): Add options argument.
	(val_print_packed_array_elements): Remove format and pretty
	arguments; add options.  Update.
	(printstr): Add options argument.  Update.
	(ada_printstr): Likewise.
	(ada_val_print): Remove format, deref_ref, pretty arguments; add
	options argument.  Update.
	(ada_val_print_stub): Update.
	(ada_val_print_array): Remove format, deref_ref, pretty arguments;
	add options.  Update.
	(ada_val_print_1): Likewise.
	(print_variant_part): Likewise.
	(ada_value_print): Remove format, pretty arguments; add options.
	Update.
	(print_record): Likewise.
	(print_field_values): Likewise.
	* ada-lang.h (ada_val_print, ada_value_print, ada_printstr):
	Update.
	* ada-lang.c (ada_print_array_index): Add options argument; remove
	format and pretty arguments.
	(print_one_exception): Use get_user_print_options.

2008-10-28  Tom Tromey  <tromey@redhat.com>

	* cli/cli-script.c (do_fclose_cleanup): Remove.
	(script_from_file): Use make_cleanup_fclose.
	* xml-tdesc.c (do_cleanup_fclose): Remove.
	(fetch_xml_from_file): Use make_cleanup_fclose.
	* tracepoint.c (tracepoint_save_command): Use
	make_cleanup_fclose.  Always free pathname.
	* source.c (print_source_lines_base): Use make_cleanup_fclose.
	* remote.c (fclose_cleanup): Remove.
	(remote_file_put): Use make_cleanup_fclose.
	(remote_file_get): Likewise.
	* linux-nat.c (linux_nat_find_memory_regions): Use
	make_cleanup_fclose.
	(linux_nat_info_proc_cmd): Likewise.
	(linux_proc_pending_signals): Likewise.
	* fbsd-nat.c (fbsd_find_memory_regions): Use make_cleanup_fclose.
	Free file name.
	* cli/cli-dump.c (do_fclose_cleanup): Remove.
	(make_cleanup_fclose): Remove.
	* defs.h (make_cleanup_fclose): Declare.
	* utils.c (do_fclose_cleanup): New function.
	(make_cleanup_fclose): Likewise.

2008-10-27  Pedro Alves  <pedro@codesourcery.com>

	* inflow.c (kill_command): If the target claims there is still
	execution, don't clear the thread list.

2008-10-27  Pedro Alves  <pedro@codesourcery.com>

	* cp-name-parser.y: Include defs.h instead of config.h.
	(parse_escape): Rename to ...
	(cp_parse_escape): ... this.
	(yylex): Update.
	(xfree) [TEST_CPNAMES]: New.

2008-10-27  Pedro Alves  <pedro@codesourcery.com>

	* CONTRIBUTE: Mention autoconf 2.59 and configure.ac instead of
	2.13 and configure.in.

2008-10-27  Pedro Alves  <pedro@codesourcery.com>

	* target.h (struct target_ops) <to_supports_multi_process>: New
	field.
	(target_supports_multi_process): New define.
	* target.c (update_current_target): Inherit and de_fault
	to_supports_multi_process.
	* infcmd.c (attach_command): Allow attaching to multiple processes
	if the target supports it.
	(detach_command): If the target claims there is still execution,
	don't clear the thread list.
	* remote.c (remote_supports_multi_process): New.
	(init_remote_ops): Register remote_supports_multi_process.

2008-10-27  Pedro Alves  <pedro@codesourcery.com>

	* Makefile.in (.y.c, .l.c): sed free to xfree.

2008-10-27  Pedro Alves  <pedro@codesourcery.com>

	* Makefile.in (INSTALLED_LIBS, CLIBS): Remove reference to
	$(TM_CLIBS).
	(CDEPS): Remove reference to $(TM_CDEPS).

2008-10-26  Michael Snyder  <msnyder@vmware.com>

	* infrun.c (handle_inferior_event): Handle dynamic symbol
	resolution in reverse.

2008-10-25  Joel Brobecker  <brobecker@adacore.com>

	* infrun.c: Minor comment reformatting.

2008-10-25  Pedro Alves  <pedro@codesourcery.com>

	* ada-exp.y (write_object_renaming): Use malloc instead of
	xmalloc.
	* p-exp.y (pop_current_type): Use free instead of xfree.

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

	* fork-child.c (startup_inferior): Only set threads not-executing
	after getting all the pending execs.  On TARGET_WAITKIND_IGNORE,
	keep waiting, don't resume.  On all other cases but
	TARGET_WAITKIND_SIGNALLED and TARGET_WAITKIND_EXITED, switch to
	the event ptid.

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

	Remote non-stop mode support.

	* remote.c (pending_stop_reply): New.
	(struct remote_state) <non_stop_aware, support_vCont_t>: New
	fields.
	(remote_async_inferior_event_token)
	(remote_async_get_pending_events_token): New.
	(notice_new_inferiors): New, abstracted out from record_currthread.
	(record_currthread): Call it.
	(remote_threads_info): Default threads to running in non-stop
	mode.  In non-stop mode, only qfThreadInfo is supported.
	(remote_close): Discard all pending stop_replies.  Close the event
	sources.
	(set_stop_requested_callback): New.
	(remote_start_remote): Implement non-stop mode startup.  In
	all-stop, don't clear the thread list here.
	(remote_non_stop_feature): New.
	(remote_protocol_features): Add a "QNonStop" feature.
	(remote_open_1): Clear cached_wait_status and non_stop_aware.
	Clear the thread list here.
	(remote_detach_1): Discard pending stop replies of the process we
	detached from.
	(extended_remote_attach_1): Implement non-stop mode.
	(remote_vcont_probe): Recognize `vCont;t'.
	(remote_vcont_resume): Implement non-stop mode.
	(remote_resume): Don't set waiting_for_stop_reply in non-stop
	mode.
	(remote_stop_ns): New.
	(remote_stop): Rename to ...
	(remote_stop_as): ... this.  If we have a cached wait status,
	don't bother interrupting the remote.
	(remote_stop): Reimplement as wrapper around remote_stop_as and
	remote_stop_ns.
	(interrupt_query): Don't query in async mode.
	(struct cached_reg, cahed_reg_t): New.
	(struct stop_reply): New.
	(stop_reply_queue): New.
	(stop_reply_xmalloc, stop_reply_xfree)
	(discard_pending_stop_replies, do_stop_reply_xfree)
	(queued_stop_reply, push_stop_reply, peek_stop_reply)
	(remote_parse_stop_reply, remote_get_pending_stop_replies)
	(process_stop_reply): New.
	(remote_wait_ns): New.
	(remote_wait_as): Use remote_parse_stop_reply.  Invalidate the
	notion of current general thread is a process exit was reported.
	(remote_wait): Call remote_wait_ns in non-stop mode.
	(handle_notification): New.
	(putpkt_binary): Handle notifications.  Don't care for
	waiting_for_stop_reply in non-stop mode.
	(getpkt_sane): Rename to ...
	(getpkt_or_notif_sane_1): ... this.  Add `expecting_notif'
	argument.  Handle it.  Handle notifications.
	(getpkt_sane): Reimplement as wrapper around getpkt_or_notif_sane_1.
	(getpkt_or_notif_sane): New.
	(select_new_thread_callback): Check for exited state instead of
	comparing the ptid against minus_one_ptid.
	(extended_remote_create_inferior_1): Query the remote about the
	current thread.
	(remote_supports_non_stop): New.
	(init_remote_ops): Register it.
	(remote_async_inferior_event_handler): New.
	(remote_async_get_pending_events_handler): New.

	* infcmd.c (proceed_thread_callback): Comment.
	(proceed_after_attach_callback, proceed_after_attach): New.
	(attach_command_post_wait): In background attach, resume all
	threads, but only if they are unsignalled, and not explicitly
	stopped.  In foreground attach, in non-stop mode, make sure to
	stop all threads of the just attached to process.
	(attach_command): In non-stop mode: If doing a background attach,
	stop at least one thread.  If a foreground attach, stop all
	threads.

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

	* event-loop.h: Mention async_event_handlers.
	(async_event_handler): Forward declare.
	(async_event_handler_func): New typedef.
	(create_async_event_handler, delete_async_event_handler)
	(mark_async_event_handler): Declare.
	* event-loop.c (event_data): New.
	(event_handler_func): Take an event_data instead of an integer.
	(struct gdb_event): Replace the integer file descriptor by a
	generic event_data.
	(async_event_handler): New.
	(async_handler_ready): Delete.
	(async_event_handler_list): New.
	(create_event): New.
	(create_file_event): Use it.
	(process_event): Adjust.
	(gdb_do_one_event): Poll from the event sources in round-robin
	fashion across calls.  Be sure to consult all sources before
	blocking.
	(handle_file_event): Take an event_data instead of an integer.
	Adjust.
	(gdb_wait_for_event): Add `block' argument.  Handle it.
	(mark_async_signal_handler): Remove unneeded cast.
	(invoke_async_signal_handler): Rename to ...
	(invoke_async_signal_handlres): ... this.  Return true if any was
	handled.
	(check_async_ready): Delete
	(create_async_event_handler): New.
	(mark_async_event_handler): New.
	(struct async_event_handler_data): New.
	(invoke_async_event_handler): New.
	(check_async_event_handlers): New.
	(delete_async_event_handler): New.
	(handle_timer_event): Adjust.

2008-10-24  Doug Evans  <dje@google.com>

	* dwarf2read.c (typename_concat): Don't segv if prefix or suffix
	is NULL.  Simplify obs == NULL case.

2008-10-24  Hui Zhu  <teawater@gmail.com>
	    Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (can_use_displaced_stepping): Change type to
	const char pointer.
	(can_use_displaced_stepping_auto): New string.
	(can_use_displaced_stepping_on): New string.
	(can_use_displaced_stepping_off): New string.
	(can_use_displaced_stepping_enum): New array.
	(show_can_use_displaced_stepping): In auto mode, also show
	the current effect of the option.
	(use_displaced_stepping): Return non-zero if displaced
	stepping is auto, and can be used with GDBARCH, and in
	non-stop mode.  Return non-zero if displaced stepping is on,
	and can be used with GDBARCH.  Return zero otherwise.
	(_initialize_infrun): Make the "set displaced-stepping"
	command an enum command.  Change its class to class_run.
	Place it in the top level set list.  Extend help to describe
	the auto mode.

2008-10-23  Pedro Alves  <pedro@codesourcery.com>

	* defs.h: Mention ptid_is_pid.
	* inferior.h (ptid_is_pid): Declare.
	* gdbthread.h (struct thread_info) <stop_requested>: New field.
	(set_stop_requested): Declare.
	* infcmd.c (interrupt_target_1): Call set_stop_requested.
	* infrun.c (clear_proceed_status): Clear stop_requested.
	(infrun_thread_stop_requested_callback,
	infrun_thread_stop_requested): New.
	(handle_inferior_event): If a TARGET_SIGNAL_TRAP is reported on a
	thread that had an explicit stop request, pretend we got a
	TARGET_SIGNAL_0.  Always stop if the thread had an explicit stop
	request.
	(print_stop_reason): In the SIGNAL_RECEIVED case, if we're not
	outputting to MI, and we got a TARGET_SIGNAL_0, print "# Stopped",
	instead of mentioning signal 0.
	(ptid_is_pid): New.
	* thread.c (set_stop_requested): New.

	* linux-nat.c (queued_waitpid): Rename to ...
	(queued_waitpid_1): ... this.  Add `peek' argument.  Handle it.
	(queued_waitpid): New, as wrapper to queued_waitpid_1.
	(push_waitpid): Push the SIGTRAP to the local event queue, to the
	kernel's.
	(send_sigint_callback): Delete.
	(linux_nat_stop_lwp): New.
	(linux_nat_stop): Use it.

2008-10-23  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* python/python-value (valpy_getitem): Fix heap corruption.
	
2008-10-23  Aleksandar Ristovski  <aristovski@qnx.com>

	* nto-procfs.c (do_attach): Form proper ptid including pid and tid.
	(procfs_create_inferior): Fetch list of threads.

2008-10-23  Aleksandar Ristovski  <aristovski@qnx.com>

	* nto-procfs.c (procfs_files_info): Fix a typo.
	(procfs_create_inferior): Make attach_flag per-inferior.

2008-10-23  Tom Tromey  <tromey@redhat.com>

	* python/python-value.c (value_to_value_object): Initialize
	owned_by_gdb field.
	(valpy_new): Likewise.
	
2008-10-23  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Joel Brobecker  <brobecker@adacore.com>

	* ada-tasks.c (task_states, long_task_states): Use constant N_()
	initializer.  Define the strings as const.
	(short_task_info, info_task): Translate the strings above.

2008-10-22  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Add entry for new feature (Ada tasking support).

2008-10-22  Joel Brobecker  <brobecker@adacore.com>

	* configure.ac: On alpha-osf, error out if enable_tui is set to
	"yes", and set enable_tui to "no" if previously set to "auto".
	Check for waddstr only if TUI support was requested. Move the
	part of the configure script that updates various Makefile
	variables up, together with the check for waddstr.
	* configure: Regenerate.

2008-10-22  Joel brobecker  <brobecker@adacore.com>

	* gdbtypes.c (copy_type): New function.
	* gdbtypes.h (copy_type): Add declaration.
	* ada-lang.c (ada_to_fixed_type_1): If there is a parallel XVZ
	variable, then use it.

2008-10-22  Joel Brobecker  <brobecker@adacore.com>

	* target.h (struct target_ops): Add new field to_get_ada_task_ptid.
	(target_get_ada_task_ptid): New macro.
	* target.c (default_get_ada_task_ptid): New function.
	(update_current_target): Inherit field default_get_ada_task_ptid.
	(update_current_target): Make default_get_ada_task_ptid the default
	value for field to_get_ada_task_ptid.
	* ada-lang.h (struct task_control_block): Delete. Never used.
	(struct task_ptid, task_ptid_t, struct task_entry, task_list):
	Likewise.
	(struct ada_task_info): New.
	(ada_task_is_alive, ada_find_printable_frame)
	(ada_task_list_iterator_ftype, iterate_over_live_ada_tasks): Add
	declarations.
	(ada_build_task_list): Update prototype.
	(init_task_list, ada_is_exception_breakpoint): Remove prototypes.
	* ada-lang.c (ada_find_printable_frame): Make non-static.
	* ada-tasks.c: New file.
	* Makefile.in (SFILES): Add ada-tasks.c.
	(COMMON_OBS): Add ada-tasks.o.
	* linux-thread-db.c (thread_db_find_thread_from_tid)
	(thread_db_get_ada_task_ptid): New functions.
	(init_thread_db_ops): Set thread_db_ops.to_get_ada_task_ptid.

2008-10-22  Tom Tromey  <tromey@redhat.com>

	PR gdb/2506:
	* c-exp.y (string_exp): New production.
	(exp): Use it.

2008-10-21  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* mips-tdep.c (mips_n32n64_fp_arg_chunk_p): Update TYPE_FIELD_STATIC
	removed before.

2008-10-20  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Add entry mentioning thread-support on Tru64

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

	* dec-thread.c: New file.
	* config/alpha/alpha-osf3.mh (NATDEPFILES): Add dec-thread.o.
	(NAT_CLIBS): Define.

2008-10-19  Hui Zhu  <teawater@gmail.com>

	* infrun.c (handle_inferior_event): Set "stop_pc" when
	TARGET_WAITKIND_NO_HISTORY.

2008-10-19  Pedro Alves  <pedro@codesourcery.com>

	* python/python-value.c (value_object_methods)
	(value_object_as_number, value_object_as_mapping): Move to bottom
	of file.
	(valpy_dealloc, valpy_new, valpy_length, valpy_getitem)
	(valpy_setitem, valpy_str, valpy_add, valpy_subtract)
	(valpy_multiply, valpy_divide, valpy_remainder, valpy_power)
	(valpy_negative, valpy_positive, valpy_absolute, valpy_nonzero)
	(valpy_richcompare, valpy_dereference): Don't forward-declare.
	(valpy_length) [HAVE_LIBPYTHON2_4]: Change return type to `int'.

2008-10-18  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (adjust_pc_after_break): Do nothing if executing in
	reverse.

2008-10-17  Pedro Alves  <pedro@codesourcery.com>

	* infcmd.c (GO_USAGE): Delete.
	(go_command): Adjust.

2008-10-17  Michael Snyder  <msnyder@vmware.com>
	Target interface for reverse debugging.
	* target.h (enum target_waitkind): 
	Add new wait event, TARGET_WAITKIND_NO_HISTORY.
	(struct target_ops): New method to_can_execute_reverse.
	(target_can_execute_reverse): New macro.
	* target.c (update_current_target): Inherit to_can_execute_reverse.

	Remote interface for reverse debugging.
	* remote.c (remote_can_execute_reverse): New target method.
	(remote_resume): Check for reverse exec direction, and send 
	appropriate command to target.
	(remote_wait_as): Check target response for NO_HISTORY status.
	Also check for empty reply (target doesn't understand "bs" or "bc).
	(remote_vcont_resume): Jump out if attempting reverse execution.

	Event handling interface for reverse debugging.
	* infrun.c (execution_direction): New state variable.
	(enum inferior_stop_reason): Add NO_HISTORY reason.
	(handle_inferior_event): Handle TARGET_WAITKIND_NO_HISTORY.
	Handle stepping over a function call in reverse.
	Handle stepping thru a line range in reverse.
	Handle setting a step-resume breakpoint in reverse.
	Handle stepping into a function in reverse.
	Handle stepping between line ranges in reverse.
	(print_stop_reason): Print reason for NO_HISTORY.
	(step_into_function): Rename to handle_step_into_function.
	(handle_step_into_function_backward): New function.
	(set_exec_direction_func, show_exec_direction_func): New funcs.
	(proceed): No need to singlestep over a breakpoint
	when resuming in reverse.
	
	* inferior.h (enum exec_direction_kind): New enum.
	(execution_direction): Export new execution state variable.

	* breakpoint.c (make_breakpoint_silent): New function.
	* breakpoint.h (make_breakpoint_silent): Export.
	* infcmd.c (finish_command): Check for reverse exec direction.
	(finish_backward): New function, handle finish cmd in reverse.

	User interface for reverse execution.
	* Makefile.in (reverse.c): New file.
	* reverse.c: New file.  User interface for reverse execution.

2008-10-17  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (record_currthread): Add inferior before child threads.
	(remote_threads_info): Check for exited threads.  Mention
	notification order.

2008-10-16  Joel Brobecker  <brobecker@adacore.com>

	* breakpoint.h (enum bptype): New enum bp_catchpoint.
	Delete bp_catch_fork and bp_catch_vfork.
	(struct breakpoint_ops): Add new methods "insert", "remove"
	and "breakpoint_hit".
	* breakpoint.c (create_fork_vfork_event_catchpoint)
	(create_fork_event_catchpoint, create_vfork_event_catchpoint): Remove.
	(insert_catchpoint): Remove handling of bp_catch_fork and
	bp_catch_vfork catchpoints, and handle them as bp_catchpoint
	catchpoints instead.
	(insert_bp_location, update_breakpoints_after_exec)
	(remove_breakpoint, bpstat_check_location, bpstat_what)
	(allocate_bp_location): Likewise.
	(print_it_typical, print_one_breakpoint_location, mention): Remove
	handling of bp_catch_fork and bp_catch_vfork breakpoints.
	(ep_is_catchpoint, user_settable_breakpoint)
	(breakpoint_address_is_meaningful, adjust_breakpoint_address)
	(breakpoint_re_set_one, disable_command, enable_command):
	Remove use of bp_catch_fork and bp_catch_vfork.  Add handling of
	bp_catchpoint breakpoints.
	(insert_catch_fork, remove_catch_fork, breakpoint_hit_catch_fork)
	(print_it_catch_fork, print_one_catch_fork, print_mention_catch_fork):
	New functions.
	(catch_fork_breakpoint_ops): New static constant.
	(insert_catch_vfork, remove_catch_vfork, breakpoint_hit_catch_vfork)
	(print_it_catch_vfork, print_one_catch_vfork)
	(print_mention_catch_vfork): New functions.
	(catch_vfork_breakpoint_ops): New static constant.
	(create_catchpoint, create_fork_vfork_event_catchpoint): New functions.
	(catch_fork_command_1): Use create_fork_vfork_event_catchpoint
	to create the fork and vfork catchpoints.
	(gnu_v3_exception_catchpoint_ops): Set new breakpoint_ops fields.
	* ada-lang.c (catch_exception_breakpoint_ops): Set new breakpoint_ops
	fields.
	(catch_exception_unhandled_breakpoint_ops): Likewise.
	(catch_assert_breakpoint_ops): Likewise.

2008-10-16  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (set_general_process): New.
	(remote_check_symbols): Use it.

2008-10-16  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (push_remote_target): Delete.
	* target.h (push_remote_target): Delete declaration.

2008-10-15  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (remote_close): Unregister remote_desc from the event
	loop.  Always restore the SIGINT handler.  Discard all inferiors
	here.
	(remote_detach_1, remote_disconnect): Don't unregister the file
	descriptor from the event loop here.
	(interrupt_query, readchar, getpkt_sane): Pop the target instead
	of morning the current inferior.
	(remote_kill): Don't unregister the file descriptor from the event
	loop here.
	(remote_mourn_1): Don't discard inferiors here.

2008-10-15  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (breakpoint_init_inferior): Clean up the moribund
	locations list.
	(moribund_breakpoint_here_p): Record the moribund
	location in the moribund_locations vector.
	* breakpoint.h (moribund_breakpoint_here_p): Declare.
	(displaced_step_fixup): Check if the breakpoint the thread was
	trying to step over has been removed since having been placed in
	the displaced stepping queue.
	(adjust_pc_after_break): In non-stop mode, check for a moribund
	breakpoint at the stop pc.
	(handle_inferior_event): Don't retire moribund breakpoints on
	TARGET_WAITKIND_IGNORE.

2008-10-15  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (displaced_step_prepare): Switch thread temporarily
	while we're here.
	(displaced_step_fixup): Make sure target_resume sees ptid as
	inferior_ptid.  Add debug output.

2008-10-14  Pedro Alves  <pedro@codesourcery.com>

	Remove dead code.

	* breakpoint.c (show_breakpoint_hit_counts): Delete.
	(print_one_breakpoint_location): Adjust.
	(breakpoint_clear_ignore_counts): Delete.
	* breakpoint.h (breakpoint_clear_ignore_counts): Remove
	declaration.
	* target.c (generic_mourn_inferior): Don't clear ignore
	counts (never reached).

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

	* dwarf2read.c (comp_unit_head): Use unsigned int consistently
	for dwarf section offsets and sizes.
	(dwarf2_cu): Ditto.
	(dwarf2_per_cu_data): Ditto.
	(create_all_comp_units): Change offset to unsigned int.
	(load_full_comp_unit,find_partial_die_in_comp_unit,find_partial_die,
	dwarf2_find_containing_comp_unit,dwarf2_find_comp_unit): Ditto.

	* dwarf2read.c (read_initial_length): Delete cu_header arg.
	All callers updated.
	(read_checked_initial_length_and_offset): New function.
	(read_offset_1): New function.
	(read_offset): Call it.
	(dwarf_decode_line_header): Call read_checked_initial_length_and_offset
	instead of read_initial_length.  Call read_offset_1 instead of
	read_offset.

	* dwarf2read.c (dwarf2_get_ref_die_offset): Remove unused arg `cu'.
	All callers updated.

	* dwarf2read.c (dwarf_attr_name): Unconditionally support all
	DW_AT_MIPS_* except DW_AT_MIPS_fde which collides with
	DW_AT_HP_block_index.

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

	* remote.c (remote_start_remote): Always tell the stub if we're in
	extended-remote.

2008-10-09  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (remote_wait): Rename to...
	(remote_wait_as): ... this.  Don't loop here.  If the remote
	didn't stop, return TARGET_WAITKIND_IGNORE.
	(remote_wait): New, reimplemented on top of remote_wait_as.

2008-10-09  Thomas Schwinge  <tschwinge@gnu.org>

	* Makefile.in (gnu-nat.o): Revert the 2008-09-10 change, as the problem
	is fixed upstream.

	* reply_mig_hack.awk: Use the `BAD_TYPECHECK' macro.

	* MAINTAINERS (Write After Approval): Add myself.

2008-10-09  Pedro Alves  <pedro@codesourcery.com>

	Make it compile without warnings.

	* procfs.c (create_procinfo): Initialize `parent'.
	(dead_procinfo): Pass a constant string as format to error.
	(procfs_address_to_host_pointer): Add cast to gdb_type *.
	(procfs_find_LDT_entry): Adjust format string to long int
	ptid.tid.
	(procfs_xfer_partial): Adjust prototype.  Add gdb_byte* cast.
	(procfs_xfer_memory): Adjust prototype.
	(info_mappings_callback, info_proc_mappings): Adjust to not pass a
	variable as printf_filtered format.
	(procfs_make_note_section): Change type of auxv local to gdb_byte.
	* Makefile.in: Remove special rule.

2008-10-09  Pedro Alves  <pedro@codesourcery.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (remote_open_1): Move acknowledging any pending ack,
	querying supported features, activating noack mode, finding the
	target description, enabling extended remote, and checking remote
	symbols from here ...
	(remote_start_remote): ... to here.
	(remote_open_1): Don't pop the target if it is already gone.
	* target.c (unpush_target): Check for the dummy target.

2008-10-09  Pedro Alves  <pedro@codesourcery.com>

	* ser-mingw.c: Include "command.h".
	(pipe_windows_open): Declare locals at the beginning of the scope.

2008-10-08  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (struct remote_state) <waiting_for_stop_reply>: New
	field.
	(remote_open_1): Clear waiting_for_stop_reply.
	(remote_resume): Set waiting_for_stop_reply.
	(remote_wait): Clear or set waiting_for_stop_reply accordingly.
	(putpkt_binary): If we're in async mode and waiting for a stop
	reply, bail out with an error.
	(extended_remote_mourn_1): Clear waiting_for_stop_reply.

2008-10-08  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (remote_get_thread_info): If the remote doesn't support
	the query, bail out.

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

	Convert static_kind into loc_kind enum.
	* gdbtypes.h (enum field_loc_kind): New.
	(union field_location): New field dwarf_block.
	(struct field): Rename static_kind as loc_kind.
	(FIELD_STATIC_KIND): Rename to ...
	(FIELD_LOC_KIND): ... here.
	(TYPE_FIELD_STATIC_KIND): Rename to ...
	(TYPE_FIELD_LOC_KIND): ... here and use there now new FIELD_LOC_KIND.
	(TYPE_FIELD_STATIC_HAS_ADDR): Remove.
	(TYPE_FIELD_STATIC): Remove.
	(TYPE_FIELD_BITPOS): Reformat.
	(SET_FIELD_BITPOS): New.
	(FIELD_PHYSADDR): Rename to ...
	(FIELD_STATIC_PHYSADDR): ... here.
	(TYPE_FIELD_STATIC_PHYSADDR): Follow the FIELD_PHYSADDR rename.
	(SET_FIELD_PHYSADDR): Use new FIELD_LOC_KIND.
	(FIELD_PHYSNAME): Rename to ...
	(FIELD_STATIC_PHYSNAME): ... here.
	(TYPE_FIELD_STATIC_PHYSNAME): Follow the FIELD_PHYSNAME rename.
	(SET_FIELD_PHYSNAME): Use new FIELD_LOC_KIND.
	(FIELD_DWARF_BLOCK, TYPE_FIELD_DWARF_BLOCK, SET_FIELD_DWARF_BLOCK): New.
	(field_is_static): New declaration.
	* gdbtypes.c (field_is_static): New function.
	(copy_type_recursive): Update throughout.
	* amd64-tdep.c, c-typeprint.c, coffread.c, cp-valprint.c, dwarf2read.c,
	eval.c, jv-typeprint.c, jv-valprint.c, mdebugread.c, p-typeprint.c,
	p-valprint.c, valops.c, value.c, varobj.c: Update throughout.

2008-10-07  Thomas Schwinge  <tschwinge@gnu.org>
	    Pedro Alves  <pedro@codesourcery.com>

	* gnu-nat.h: Rename `current_inferior' to `gnu_current_inf' to
	avoid a name collision.
	* gnu-nat.c: Likewise.
	* i386gnu-nat.c: Likewise.

2008-10-07  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_evaluate_subexp) [OP_ATR_SIZE]: Add handling
	of arguments that are references.

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

	* dwarf2read.c (dwarf2_die_debug): New static global.
	(dump_die_shallow): Renamed from dump_die, New args f, indent.
	Print to specified file, indented by the specified amount.
	(dump_die_for_error): New fn.  Point all existing callers of
	dump_die here.
	(dump_die_die_1,dump_die): New fns, replaces ...
	(dump_die_list): ... deleted.
	(read_die_and_children_1): Old contents of read_die_and_children
	moved here.
	(read_die_and_children): Rewrite.
	(read_die_and_siblings): Call read_die_and_children_1 instead of
	read_die_and_children.
	(_initialize_dwarf2_read): New option "debug dwarf2-die".
	* gdbinit.in (pdie): New macro.

	* dwarf2read.c (offset_in_cu_p): New function.
	(find_partial_die,follow_die_ref): Use it.

	* symmisc.c (maintenance_info_symtabs): Watch for ^c.
	(maintenance_info_psymtabs): Ditto.

2008-10-05  Michael Snyder  <msnyder@vmware.com>

	* infrun.c (handle_inferior_event): Fix typo in comment.

2008-10-04  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-interp.c (mi_on_resume): Flush raw_stdout.

2008-10-03  Paul Pluzhnikov  <ppluzhnikov@google.com>

	PR gdb/2384:
	* gdbtypes.c (get_vptr_fieldno): baseclass and basetype may have
	different lifetimes.
	
2008-10-03  Joel Brobecker  <brobecker@adacore.com>

	* solib-osf.c: Include "solib.h".

2008-10-03  Paul Pluzhnikov  <ppluzhnikov@google.com>
	
	* utils.c, defs.h (gdb_buildargv): New fn. Wrap buildargv
	and check for out-of-memory condition.
	* exec.c (exec_file_command): Call it.
	* infrun.c (handle_command, xdb_handle_command): Likewise.
	* interps.c (interpreter_exec_cmd): Likewise.
	* linux-nat.c (linux_nat_info_proc_cmd): Likewise.
	* procfs.c (info_proc_cmd): Likewise.
	* remote-mips.c (common_open): Likewise.
	* remote-sim.c (gdbsim_kill, gdbsim_create_inferior)
	(gdbsim_open): Likewise.
	* remote.c (extended_remote_run, remote_put_command)
	(remote_get_command, remote_delete_command): Likewise.
	* ser-mingw.c (pipe_windows_open): Likesise.
	* source.c (add_path, show_substitute_path_command)
	(unset_substitute_path_command, set_substitute_path_command):
	Likewise.
	* stack.c (backtrace_command): Likewise.
	* symfile.c (symbol_file_command, generic_load)
	(add_symbol_file_command): Likesise.
	* symmisc.c (maintenance_print_symbols, maintenance_print_psymbols)
	(maintenance_print_msymbols): Likewise.

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

	Replace TYPE_ARRAY_{UPPER,LOWER}_BOUND_TYPE by a bit if {un,}defined.
	* c-typeprint.c (c_type_print_varspec_suffix), m2-typeprint.c
	(m2_array), p-typeprint.c (pascal_type_print_varspec_prefix),
	valops.c (value_cast), varobj.c (c_number_of_children): Replace
	TYPE_ARRAY_UPPER_BOUND_TYPE compared to BOUND_CANNOT_BE_DETERMINED by
	TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED.
	* parse.c (follow_types): Use TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED.
	* f-valprint.c (f77_get_dynamic_upperbound): Replace with ...
	(f77_get_upperbound): ... this function handling now only
	TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED.
	(f77_get_dynamic_lowerbound): Replace with ...
	(f77_get_lowerbound): ... this function handling now only
	TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED.
	(f77_get_dynamic_length_of_aggregate, f77_create_arrayprint_offset_tbl):
	Update their callers.
	* eval.c (evaluate_subexp_standard): Update their callers.
	* f-lang.h (f77_get_dynamic_upperbound, f77_get_upperbound)
	(f77_get_dynamic_lowerbound, f77_get_lowerbound): Update their
	prototypes.
	(BOUND_FETCH_OK, BOUND_FETCH_ERROR): Remove.
	* f-typeprint.c (f_type_print_varspec_suffix, f_type_print_base): Remove
	the lower_bound_was_default variable.  Update the
	f77_get_dynamic_upperbound, f77_get_upperbound and
	TYPE_ARRAY_UPPER_BOUND_TYPE calls.
	* gdbtypes.c (print_bound_type): Remove the function.
	(recursive_dump_type): Remove its calls printing UPPER_BOUND_TYPE and
	LOWER_BOUND_TYPE.
	* gdbtypes.h (enum array_bound_type): Remove.
	(struct main_type): Remove the fields upper_bound_type and
	lower_bound_type.  Comment the new overload of the field artificial.
	(TYPE_ARRAY_UPPER_BOUND_TYPE): Replace by ...
	(TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED): ... this macro.
	(TYPE_ARRAY_LOWER_BOUND_TYPE): Replace by ...
	(TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED): ... this macro.

2008-10-02  Tom Tromey  <tromey@redhat.com>

	* Makefile.in (HFILES_NO_SRCDIR): Remove gdb-events.h, gstdint.h.

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

	* mips-linux-tdep.c (mips_linux_in_dynsym_resolve_code): Update
	comments.
	(mips_linux_skip_resolver): Also use glibc_skip_solib_resolver.
	(mips_linux_init_abi): Do not override skip_trampoline_code.
	* configure.tgt (mips*-*-linux*): Add glibc-tdep.o.
	* mips-tdep.c (mips32_scan_prologue): Stop scanning at branches.
	(mips_stub_frame_sniffer): Use the stub frame sniffer for PIC stubs.
	(mips_skip_mips16_trampoline_code): Rename from
	mips_skip_trampoline_code.
	(mips_skip_pic_trampoline_code, mips_skip_trampoline_code): New.
	* infrun.c (handle_inferior_event): Do not pass zero to
	in_solib_dynsym_resolve_code.

2008-10-02  Pierre Muller  <muller@ics.u-strasbg.fr>
	    Pedro Alves  <pedro@codesourcery.com>

	* win32-nat.c (do_initial_win32_stuff): Set inferior_ptid.


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

	* symtab.c (search_symbols): Update.
	* symtab.h (domain_enum_tag) <METHODS_DOMAIN>: Remove.

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

	* symfile.c (syms_from_objfile): Update.
	(reread_symbols): Update.
	* objfiles.h (OBJF_SYMS): Remove.
	(OBJF_REORDERED): Renumber.
	(OBJF_SHARED): Likewise.
	(OBJF_READNOW): Likewise.
	(OBJF_USERLOADED): Likewise.

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

	* symtab.c (find_pc_sect_psymtab): Use MSYMBOL_TYPE.
	(find_pc_sect_symtab): Likewise.
	* symmisc.c (dump_msymbols): Use MSYMBOL_TYPE.
	* solib-som.c (som_solib_desire_dynamic_linker_symbols): Use
	MSYMBOL_TYPE, not SYMBOL_TYPE.
	* parse.c (write_exp_msymbol): Use MSYMBOL_TYPE.
	* objc-lang.c (find_methods): Use MSYMBOL_TYPE.
	* minsyms.c (lookup_minimal_symbol_by_pc_section_1): Use
	MSYMBOL_TYPE.
	* m2-exp.y (yylex): Use SYMBOL_CLASS.

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

	* xcoffread.c (RECORD_MINIMAL_SYMBOL): Update.
	(scan_xcoff_symtab): Update.
	* mdebugread.c (record_minimal_symbol): Update.
	(parse_partial_symbols): Update.
	* elfread.c (record_minimal_symbol): Update.
	* dbxread.c (record_minimal_symbol): Update.
	* coffread.c (record_minimal_symbol): Update.
	* sh64-tdep.c (MSYMBOL_IS_SPECIAL): Redefine.
	(sh64_elf_make_msymbol_special): Update.
	* mips-tdep.c (mips_elf_make_msymbol_special): Use
	MSYMBOL_TARGET_FLAG_1.
	(mips_elf_make_msymbol_special): Likewise.
	(msymbol_is_special): Likewise.
	* minsyms.c (prim_record_minimal_symbol_and_info): Update.
	(install_minimal_symbols): Likewise.
	(prim_record_minimal_symbol): Update.
	(prim_record_minimal_symbol_and_info): Remove 'info' argument.
	* m68hc11-tdep.c (MSYMBOL_SET_RTC): Redefine.
	(MSYMBOL_SET_RTI): Redefine.
	(MSYMBOL_IS_RTC): Redefine.
	(MSYMBOL_IS_RTI): Redefine.
	* arm-tdep.c (MSYMBOL_SET_SPECIAL): Redefine.
	(MSYMBOL_IS_SPECIAL): Redefine.
	* symtab.h (struct minimal_symbol) <info>: Remove.
	<target_flag_1, target_flag_2>: New fields.
	(MSYMBOL_INFO): Remove.
	(MSYMBOL_TARGET_FLAG_1): New macro.
	(MSYMBOL_TARGET_FLAG_2): Likewise.
	(prim_record_minimal_symbol_and_info): Update.

2008-09-30  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (is_digits_suffix): Delete unused function.

2008-09-30  Paul Hilfinger  <hilfinger@adacore.com>

	* ada-lang.c (ada_modulus): Correct to avoid sign problem with
	moduli >= 2**31.

2008-09-30  Paul Hilfinger  <hilfinger@adacore.com>

	* ada-lang.c (ada_lookup_struct_elt_type): Handle case of a "naked"
	variant branch.
	(empty_record): Use INIT_CPLUS_SPECIFIC, since this field is not
	supposed to be null.  Fixes debugger segfaults.
	(is_unchecked_variant): New function.
	(to_fixed_variant_branch_type): Modify to leave unchecked unions
	untouched.
	(ada_template_to_fixed_record_type_1): Fix comment.

2008-09-30  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (standard_exc): New static constant.
	(ada_exception_catchpoint_cond_string): Add special handling
	for the predefined exceptions.

2008-09-30  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ADA_RETAIN_DOTS): Delete this dead macro.  Update
	the code accordingly.

2008-09-30  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_evaluate_subexp) [UNOP_IND]: Remove strange
	treatment of expect_type. Return the correct type when dereferencing
	an integer.

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

	PR gdb/2484:
	* symtab.c (struct add_macro_name_data): New struct.
	(add_macro_name): New function.
	(default_make_symbol_completion_list): Complete macro names.
	* scm-lang.c (scm_language_defn): Update.
	* p-lang.c (pascal_language_defn): Update.
	* objc-lang.c (objc_language_defn): Update.
	* macrotab.h (macro_callback_fn): Add user_data argument.
	(macro_for_each): Likewise.
	(macro_for_each_in_scope): Declare.
	* macrotab.c: (struct macro_for_each_data): New struct.
	(foreach_macro): Use it.
	(macro_for_each): Likewise.
	(foreach_macro_in_scope): New function.
	(macro_for_each_in_scope): Likewise.
	* macrocmd.c (print_one_macro): Add argument.
	(macro_list_command): Pass NULL to macro_for_each.
	* m2-lang.c (m2_language_defn): Update.
	* language.h (struct language_defn) <la_macro_expansion>: New
	field.
	(macro_expansion): New enum.
	* language.c (unknown_language_defn): Update.  Fix order of
	initializers.
	(auto_language_defn): Likewise.
	(local_language_defn): Update.
	* jv-lang.c (java_language_defn): Update.
	* f-lang.c (f_language_defn): Update.
	* c-lang.c (c_language_defn): Update.
	(cplus_language_defn): Likewise.
	(asm_language_defn): Likewise.
	(minimal_language_defn): Likewise.
	* ada-lang.c (ada_language_defn): Update.

2008-09-30  Joel Brobecker  <brobecker@adacore.com>

	* dwarf2read.c (dwarf2_get_subprogram_pc_bounds): New function.
	(get_scope_pc_bounds): Use it.

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

	* NEWS: Update.
	* macrocmd.c (extract_identifier): Add is_parameter argument.
	(macro_define_command): Update.
	(macro_undef_command): Likewise.
	* macroexp.c (stringify): New function.
	(find_parameter): Likewise.
	(gather_arguments): Add nargs argument.  Handle varargs.
	(substitute_args): Add is_varargs and va_arg_name arguments.
	Handle varargs, splicing, stringification.  Use find_parameter.
	(expand): Handle varargs.

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

	* scm-lang.c (scm_language_defn): Update.
	* p-typeprint.c (pascal_print_typedef): New function.
	* p-lang.h: (pascal_print_typedef): Declare.
	* p-lang.c (pascal_language_defn): Update.
	* objc-lang.c (objc_language_defn): Update.
	* m2-typeprint.c (m2_print_typedef): New function.
	* m2-lang.h (m2_print_typedef): Declare.
	* m2-lang.c (m2_language_defn): Update.
	* language.h (_LANG_c, _LANG_m2, _LANG_fortran, _LANG_pascal):
	Remove.
	(struct language_defn) <la_print_typedef>: New field.
	(default_print_typedef): Declare.
	(LA_PRINT_TYPEDEF): New define.
	* language.c (unknown_language_defn): Update.
	(auto_language_defn): Update.
	(local_language_defn): Update.
	* jv-lang.c (java_language_defn): Update.
	* f-lang.c (f_language_defn): Update.
	* c-typeprint.c (c_print_typedef): New function.
	* c-lang.h (c_print_typedef): Declare.
	* c-lang.c (c_language_defn): Update.
	(cplus_language_defn): Update.
	(asm_language_defn): Update.
	(minimal_language_defn): Update.
	* ada-lang.c (ada_language_defn): Update.
	* typeprint.c (default_print_typedef): New function.

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

	* jv-exp.y (insert_exp): Define using ISO syntax.
	(copy_exp): Likewise.
	(push_expression_name): Likewise.
	(push_fieldnames): Likewise.
	(java_type_from_name): Likewise.
	(yyerror): Likewise.
	(yylex): Likewise.
	(parse_number): Likewise.

2008-09-26  Joel Brobecker  <brobecker@adacore.com>

	* MAINTAINERS (GLOBAL MAINTAINERS): Add Pedro Alves.

2008-09-25  Stephan Springl  <springl-gdb@bfw-online.de> (tiny change)

	* stack.c (print_frame_args): Fix typos in comments.

2008-09-25  Sérgio Durigan Júnior  <sergiodj@linux.vnet.ibm.com>

	* linux-nat.c (get_pending_status): Fix argument to WIFSTOPPED.

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

	* remote-sim.c (gdbsim_create_inferior): Fix missing parenthesis.
	
2008-09-24  Andreas Schwab  <schwab@suse.de>

	* frame.c (get_frame_register_bytes): Take pseudo registers into
	account.  Avoid excessive function calls.

2008-09-23  Doug Evans  <dje@google.com>

	* dcache.c (state_chars): New static global.
	(ENTRY_INVALID,ENTRY_VALID): Renamed from ENTRY_BAD,ENTRY_OK.
	All uses updated.
	(dcache_info): Print cache state as mnemonically useful letters instead
	of magic numbers.

	* dwarf2read.c (comp_unit_head): Reorganize for better packing.

2008-09-22  Tom Tromey  <tromey@redhat.com>

	* symfile.c (symbol_file_add_with_addrs_or_offsets): Don't use
	printf_filtered.

2008-09-22  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (follow_exec): Don't do a generic mourn.  Instead
	inline the required bits.
	* breakpoint.h (enum inf_context): Add inf_execd.

2008-09-22  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (handle_inferior_event): In the follow exec case,
	context-switch before doing anything else.

2008-09-22  Pedro Alves  <pedro@codesourcery.com>

	* top.c (any_thread_of, kill_or_detach): New functions.
	(quit_target): Iterate over all inferiors, killing or detaching
	accordingly.

2008-09-22  Pedro Alves  <pedro@codesourcery.com>

	Remove the attach_flag global, and make it per-inferior.

	* inferior.h (attach_flag): Delete.
	(inferior_process): Declare.
	* solib.c (update_solib_list): Adjust.
	* gnu-nat.c (gnu_create_inferior, gnu_attach): Adjust.
	* inf-ptrace.c (inf_ptrace_detach): Adjust.
	(inf_ptrace_files_info): Get it from the current inferior.
	* inf-ttrace.c (inf_ttrace_attach): Adjust.
	(inf_ttrace_files_info): Get it from the current
	inferior.
	* inflow.c (terminal_inferior, terminal_ours_1, set_sigint_trap)
	(clear_sigint_trap): Get it from the current process.
	* remote.c (extended_remote_attach_1)
	(extended_remote_create_inferior_1): Adjust.
	* top.c (quit_confirm, quit_target): Get it from the current inferior.
	* procfs.c (do_detach): Adjust.
	(procfs_wait): Get it from the event inferior.
	(procfs_files_info): Get it from the current inferior.
	* nto-procfs.c (procfs_files_info): Likewise.
	(procfs_attach): Adjust.  Set the attach_flag here.
	(do_attach): Don't set it here.
	(procfs_detach): Don't clear it.
	(procfs_mourn_inferior): Don't clear it.
	* solib-osf.c (osf_solib_create_inferior_hook): Adjust.
	* target.c (attach_flag): Delete.
	(generic_mourn_inferior): Don't clear it.
	* win32-nat.c (get_win32_debug_event): Get it from the event
	process.
	(do_initial_win32_stuff): Add attaching argument.  Set attach_flag
	in the inferior accordingly.
	(win32_attach): Don't set the attach_flag here.  Pass 1 to
	do_intial_win32_stuff.
	(win32_files_info): Get it from the current inferior.
	(win32_create_inferior): Dont clear attach_flag here.  Pass 0 to
	do_intial_win32_stuff.

2008-09-22  Pedro Alves  <pedro@codesourcery.com>

	Make the stop_soon global be per-inferior instead.

	* infcmd.c (attach_command_post_wait): Adjust.
	(attach_command): Likewise.

	* inferior.h (stop_soon): Delete.
	(struct inferior): Add stop_soon member.

	* infrun.c (stop_soon): Delete.
	(clear_proceed_status, start_remote)
	(fetch_inferior_event, handle_inferior_event): Adjust.
	(signal_stop_state): Don't check stop_soon here.  Check in callers
	instead.
	(save_inferior_status, restore_inferior_status): Adjust.

	* linux-nat.c (linux_nat_resume, linux_nat_wait): Always pass
	signals to common code if starting up the inferior.
	
	* inferior.h (struct inferior_info): Added stop_soon member.
	* inferior.c (add_inferior) Clear stop_soon.

	* mips-tdep.c (heuristic_proc_start): Adjust.
	* nto-procfs.c (procfs_create_inferior): Adjust.
	* solib-irix.c (irix_solib_create_inferior_hook): Adjust.
	* solib-osf.c (osf_solib_create_inferior_hook): Adjust.
	* solib-sunos.c (sunos_solib_create_inferior_hook): Adjust.
	* solib-svr4.c (svr4_solib_create_inferior_hook): Adjust.

	* win32-nat.c (do_initial_win32_stuff): Adjust.

	* alpha-tdep.c (alpha_heuristic_proc_start): Adjust.

2008-09-22  Pedro Alves  <pedro@codesourcery.com>

	Implement remote multi-process extensions.

	* remote.c (struct remote_state): Add extended and
	multi_process_aware fields.
	(remote_multi_process_p): New.
	(PACKET_vKill): New.
	(record_currthread): Use thread_change_ptid.  Notice new
	inferiors.
	(set_thread, remote_thread_alive): Use write_ptid.
	(write_ptid, read_ptid): New.
	(remote_current_thread, remote_threads_extra_info): Use them.
	(remote_threads_info): Likewise.  Detect new inferiors.
	(remote_start_remote): Add inferior to inferior list.
	(remote_multi_process_feature): New.
	(remote_protocol_features): Add "multiprocess" feature.
	(remote_query_supported): Pass "multiprocess+" as supported
	features.
	(remote_open_1): Clear multi_process_aware.  Set extended
	accordingly.
	(remote_detach_1): Detach current process.  Use extended packet
	format for extended-remote multi-process.  Detach process from the
	inferior list.  Only mourn after printing output.
	(extended_remote_attach_1): Add process to the inferior list.
	(remote_vcont_resume): Use write_ptid to pass the thread ids.
	(remote_wait): Use read_ptid.  Implement the extended
	multi-process extension format of the 'W' and 'X' reply packets.
	Remove exited inferiors from inferior list.
	(remote_xfer_memory): Set general thread.
	(remote_vkill): New.
	(extended_remote_kill): New.
	(remote_mourn_1): Discard all inferiors.
	(select_new_thread_callback): New.
	(extended_remote_mourn_1): If there are more processes to debug,
	switch to a thread in another process, and don't pop the target.
	(extended_remote_create_inferior_1): Add the new process to the
	inferior list.
	(remote_stopped_by_watchpoint): Indenting.
	(remote_xfer_partial): Set the general thread.
	(remote_pid_to_str): If the remote is multi-process aware, print
	the process id as well as the thread id.
	(remote_get_thread_local_address): Use write_ptid.
	(init_extended_remote_ops): Register extended_remote_kill.
	(_initialize_remote): Register new packets.  Change
	magic_null_ptid's, not_sent_ptid's and any_thread_ptid's pid
	member to 42000.

	* thread.c (thread_change_ptid): Also account for the inferior pid
	changing.

	* inferior.h (discard_all_inferiors): Declare.
	* inferior.c (discard_all_inferiors): New.

2008-09-22  Pedro Alves  <pedro@codesourcery.com>

	* gnu-nat.c (gnu_attach): Add process to inferiors table.
	(gnu_detach): Remove it.
	* go32-nat.c (go32_create_inferior): Add process to gdb's inferior
	table.
	* inf-ptrace.c (inf_ptrace_follow_fork): Delete and add inferiors
	to inferior table accordingly.
	(inf_ptrace_attach): Add new process to inferior table.
	(inf_ptrace_detach): Remove it.
	* inf-ttrace.c (inf_ttrace_follow_fork): Delete and add inferiors
	to inferior table accordingly.
	(inf_ttrace_attach): Add process to inferior table.
	(inf_ttrace_detach): Remove it.
	* linux-fork.c (init_fork_list): Delete any left over inferior.
	(linux_fork_mourn_inferior, detach_fork_command): Also delete
	processes from inferior list.
	* monitor.c (monitor_open): Add process to inferior list.
	(monitor_close): Remove it.
	* nto-procfs.c (procfs_attach): Add process to inferior list.
	Find threads after pushing the target.
	(procfs_detach): Remove process from inferior list.
	(procfs_create_inferior): Add process to inferior list.
	* procfs.c (procfs_detach): Remove process from inferior list.
	(do_attach): Add process to inferior list.
	* remote-sim.c (sim_create_inferior): Add process to inferior list.
	(gdbsim_close): Remove it.
	* target.c (generic_mourn_inferior): If inferior_ptid is not
	null_ptid, remove the corresponding inferior from inferior list.
	* win32-nat.c (do_initial_win32_stuff): Add process to inferior list.
	(win32_detach): Remove it.
	* linux-nat.c (linux_child_follow_fork): Delete and add inferiors
	to inferior list accordingly.
	* fork-child.c (fork_inferior): Add process to inferior list.
	* corelow.c (CORELOW_PID): Define.
	(core_close): Remove core from inferior list.
	(core_open): Add it.

2008-09-22  Pedro Alves  <pedro@codesourcery.com>

	* inferior.h: Forward declare struct ui_out.
	Forward declare struct private_inferior.
	(struct inferior): New.
	(init_inferior_list, add_inferior, add_inferior_silent)
	(delete_inferior, delete_inferior_silent, detach_inferior)
	(gdb_inferior_id_to_pid, pid_to_gdb_inferior_id, in_inferior_list)
	(valid_inferior_id, find_inferior_pid): New functions.
	(inferior_callback_func): New typedef.
	(iterate_over_inferiors, print_inferior, have_inferiors)
	(current_inferior): New functions.
	* inferior.c: New file.

	* Makefile.in (SFILES): Add inferior.c.
	(COMMON_OBS): Add inferior.o.

2008-09-22  Jonathan Larmour  <jifl@eCosCentric.com>

	* arm-tdep.c (arm_skip_prologue): Call skip_prologue_using_sal
	instead of determining symbol and line info directly.
	* MAINTAINERS: Update my email address.

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

	* symtab.c (skip_prologue_using_sal): Treat two consecutive lines
	at the same address as a prologue marker.  Do not skip an entire
	function.

2008-09-22  Andrew Stubbs  <ams@codesourcery.com>

	* frame.c (get_frame_register_bytes): Comment improvments.

2008-09-22  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (linux_nat_wait): Only use set_ignore_sigint in
	all-stop mode.

2008-09-19  Andrew Stubbs  <ams@codesourcery.com>

	* MAINTAINERS: Update my email address.

2008-09-19  Andrew Stubbs  <ams@codesourcery.com>

	* frame.c (get_frame_register_bytes): Detect bad debug info.

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

	Fix a crash on uninitialized ECS->EVENT_THREAD for a newly found thread.
	* infrun.c (wait_for_inferior): Move this ECS->EVENT_THREAD
	initialization ...
	(fetch_inferior_event): ... and this ECS->EVENT_THREAD initialization
	...
	(handle_inferior_event): ... here after the add_thread call together
	with the local adjust_pc_after_break and reinit_frame_cache calls.

2008-09-16  David Daney  <ddaney@avtrex.com>

	* breakpoint.c (bpstat_stop_status): Clear breakpoint_at for
	all hardware bpstats.

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

	* gstdint.h: Delete.

2008-09-15  Mark Kettenis  <kettenis@gnu.org>

	* infcall.c (generic_push_dummy_code): Remove.
	(push_dummy_code): Unconditionally call gdbarch_push_dummy_code.

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

	* dwarf2read.c (struct abbrev_info): Make members name, form 16 bits.
	(struct attribute): Ditto.

2008-09-14  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* hppa-linux-tdep.c (hppa_linux_sigtramp_frame_unwind_cache): Record
	HPPA_IPSW_REGNUM and HPPA_SAR_REGNUM values.

	* hppa-linux-tdep.c (hppa_dwarf_reg_to_regnum): Remove surrounding
	"#if 0" "#endif".  Fix mapping of DWARF DBX registers to GDB registers.
	Correct arguments and improve comments.
	(hppa_linux_init_abi): Call set_gdbarch_dwarf2_reg_to_regnum.  Delete
	disabled code.
	* hppa-tdep.c (hppa64_dwarf_reg_to_regnum): Fix check for floating
	point DBX register, change error to warning, and improve comments.

2008-09-14  Doug Evans  <dje@google.com>

	* dwarf2read.c (struct die_info): Make members tag, num_attrs 16 bits.

2008-09-14  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* hppa-linux-tdep.c (hppa_linux_supply_fpregset): Correct iteration.

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

	* defs.h (GCC_GENERATED_STDINT_H): Define.

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

	* varobj.c (varobj_set_display_format): Use xfree.
	* tracepoint.c (stringify_collection_list): Use xfree.
	* remote-fileio.c (remote_fileio_reset): Use xfree.
	* mipsread.c (read_alphacoff_dynamic_symtab): Use xfree.
	* dfp.c (decimal_from_floating): Use xfree, xstrprintf.  Don't use
	asprintf.
	* cp-support.c (mangled_name_to_comp): Use xfree.

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

	* ada-lang.c (remove_extra_symbols): Remove stub symbols if
	the associated complete symbol is also in the list.
	(ada_add_local_symbols, ada_add_non_local_symbols): New functions,
	extracted out from ada_lookup_symbol_list.
	(ada_lookup_symbol_list): Use them.  Remove the search through
	the minimal symbols.

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

        * dwarf2read.c (add_partial_subprogram): New procedure.
        (scan_partial_symbols): Use it.
        (load_partial_dies): Read in children of subprogram and lexical
        blocks for Ada compilation units.

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

	* symfile.c (build_id_verify): Free 'found'.
	(find_separate_debug_file): Use xfree, not free.

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

	* corefile.c (write_memory): Remove unnecessary copying.

	* sol-thread.c (_initialize_sol_thread): Add FIXME regarding
	order of _initialize_* fns.

	* dwarf2read.c (comp_unit_head): Rename first_die_ptr to
	first_die_offset.  All uses updated.
	Delete unused members cu_head_ptr, next.
	Move members base_known, base_address to ...
	(dwarf2_cu) ... here.  All uses updated.

2008-09-12  Pedro Alves  <pedro@codesourcery.com>

	* Makefile.in (generated_files): Add $(NAT_GENERATED_FILES).
	* config/i386/i386gnu.mh (NAT_GENERATED_FILES): New.

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

	* fork-child.c (startup_inferior): Use target_wait and target_resume
	directly instead of calling wait_for_inferior / resume.

	* infcmd.c (kill_if_already_running): Do not call no_shared_libraries
	or init_wait_for_inferior.
	(run_command_1): Call init_wait_for_inferior.

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

	* gdbtypes.h (builtin_type_void_data_ptr, builtin_type_void_func_ptr,
	builtin_type_CORE_ADDR, builtin_type_char, builtin_type_short,
	builtin_type_int, builtin_type_long, builtin_type_signed_char,
	builtin_type_unsigned_char, builtin_type_unsigned_short,
	builtin_type_unsigned_int, builtin_type_unsigned_long,
	builtin_type_float, builtin_type_double, builtin_type_long_double,
	builtin_type_complex, builtin_type_double_complex, builtin_type_string,
	builtin_type_bool, builtin_type_long_long,
	builtin_type_unsigned_long_long): Remove macros.

	(builtin_type_f_character, builtin_type_f_integer,
	builtin_type_f_integer_s2, builtin_type_f_logical,
	builtin_type_f_logical_s1, builtin_type_f_logical_s2,
	builtin_type_f_real, builtin_type_f_real_s8, builtin_type_f_real_s16,
	builtin_type_f_complex_s8, builtin_type_f_complex_s16,
	builtin_type_f_complex_s32): Likewise.

	(builtin_type_m2_char, builtin_type_m2_int, builtin_type_m2_card,
	builtin_type_m2_real, builtin_type_m2_bool): Likewise.

	(struct builtin_f_type, builtin_f_type): Move to f-lang.h.
	(struct builtin_m2_type, builtin_m2_type): Move to m2-lang.h.

	* f-lang.h (struct builtin_f_type, builtin_f_type): Move here.
	* m2-lang.h (struct builtin_m2_type, builtin_m2_type): Move here.

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

	* solib-svr4.c (LM_ADDR_FROM_LINK_MAP): Use builtin types of
	target_gdbarch instead of builtin_type_void_data_ptr.
	(LM_DYNAMIC_FROM_LINK_MAP, LM_NEXT, LM_NAME,
	IGNORE_FIRST_LINK_MAP_ENTRY, scan_dyntag, elf_locate_base,
	solib_svr4_r_map, solib_svr4_r_brk, solib_svr4_r_ldsomap,
	open_symbol_file_object): Likewise.
	* nto-tdep.c (LM_ADDR): Likewise.

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

	* bsd-uthread.c (bsd_uthread_read_memory_address): New function.
	(bsd_uthread_fetch_registers, bsd_uthread_store_registers,
	bsd_uthread_wait, bsd_uthread_find_new_threads): Use it.

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

	* procfs.c (procfs_address_to_host_pointer): Use target_gdbarch
	and its associated types to perform pointer conversion.
	(procfs_can_use_hw_breakpoint): Likewise.
	(procfs_auxv_parse): Remove unused variable.

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

	* auxv.c (default_auxv_parse): Use gdbarch_ptr_bit (target_gdbarch)
	instead of builtin_type_void_data_ptr.
	* target.c (default_region_ok_for_hw_watchpoint): Likewise.

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

	* expprint.c (print_subexp_standard): Compare against builtin type
	associated with exp->gdbarch instead of builtin_type_char.

	* f-valprint.c (f_val_print): Use extract_unsigned_integer to
	extract values of arbitrary logical type.  Handle arbitrary
	complex types.

	* printcmd.c (float_type_from_length): New function.
	(print_scalar_formatted, printf_command): Use it.

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

	* valops.c: Include "objfiles.h" and "symtab.h".
	(find_function_in_inferior): New argument OBJF_P.  Use it to return
	objfile where function is defined.  Use per-objfile arch types
	instead of builtin_type_ to define default return type.

	* linux-fork.c (checkpoint_command): Update calls.  Use per-objfile
	architecture to define inferior call argument types.
	* gcore.c (derive_heap_segment): Likewise.
	* objc-lang.c (value_nsstring): Likewise.
	* scm-lang.c (scm_lookup_name): Likewise.
	* scm-valprint.c (scm_inferior_print): Likewise.
	* valops.c (value_allocate_space_in_inferior): Likewise.

	* eval.c (evaluate_subexp_standard): Update calls.
	* objc-lang.c (lookup_objc_class, print_object_command): Likewise.

	* linux-fork.c: Include "objfiles.h".
	* scm-lang.c: Include "objfiles.h".
	* scm-valprint.c: Include "objfiles.h".

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

	* gdbarch.sh (name_of_malloc): Remove.
	* gdbarch.c, gdbarch.h: Re-generate.
	* valops.c (value_allocate_space_in_inferior): Do not call
	gdbarch_name_of_malloc.

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

	* valarith.c (value_x_unop): Use builtin_type_int8 as type for
	UNOP_POSTINCREMENT/UNOP_POSTDECREMENT constant 0 argument.
	(value_bit_index): Use extract_unsigned_integer
	instead of unpack_long to read single byte.

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

	* infcall.c (value_arg_coerce): Add GDBARCH parameter.  Use its
	associates types instead of builtin_type_ macros.
	(find_function_addr): Leave output VALUE_TYPE NULL if unknown.
	(call_function_by_hand): Use per-architecture "int" type as
	fall-back if find_function_addr returns NULL VALUE_TYPE.
	Update call to value_arg_coerce.

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

	* cp-abi.h (cplus_method_ptr_size): Add TO_TYPE parameter.
	(cplus_make_method_ptr): Add TYPE parameter.
	* cp-abi.c (cplus_method_ptr_size): Add TO_TYPE parameter.  Pass it
	on to current_cp_abi.method_ptr_size callback.
	(cplus_make_method_ptr): Add TYPE parameter.  Pass it on to
	current_cp_abi.make_method_ptr callback.

	* gdbtypes.c (lookup_methodptr_type): Pass target type
	argument to cplus_method_ptr_size.
	* valops.c (value_cast): Pass type argument to cplus_make_method_ptr.
	(value_struct_elt_for_reference): Likewise.

	* gnu-v3-abi.c (get_class_arch): New function.
	(vtable_address_point_offset): Add GDBARCH parameter.  Use it
	instead of current_gdbarch.  Update all callers.
	(gnuv3_get_vtable): Likewise.
	(gnuv3_get_virtual_fn): Likewise.
	(gnuv3_decode_method_ptr): Likewise.
	(gnuv3_rtti_type): Call get_class_arch to determine architecture.
	Use it instead of current_gdbarch.
	(gnuv3_virtual_fn_field): Likewise.
	(gnuv3_baseclass_offset): Likewise.
	(gnuv3_print_method_ptr): Likewise.
	(gnuv3_method_ptr_to_value): Likewise.
	(gnuv3_method_ptr_size): Add TYPE parameter.  Use it to determine
	class architecture.  Use architecture types instead of builtin types.
	(gnuv3_make_method_ptr): Likewise.

	* cp-valprint.c (cp_print_class_member): Expect pointer type
	instead of class type.  Use its length when extracting value.
	* c-valprint.c (c_val_print): Update call to cp_print_class_member.

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

	* stack.c (return_command): Use frame architecture to determine
	default integer return type.

	* f-valprint.c (f77_get_dynamic_lowerbound): Use frame architecture
	to determine pointer types.
	(f77_get_dynamic_upperbound): Likewise.

	* objc-lang.c (OBJC_FETCH_POINTER_ARGUMENT): Remove.
	(resolve_msgsend): Use architecture of current frame to determine
	pointer types.  Inline OBJC_FETCH_POINTER_ARGUMENT.
	(resolve_msgsend_stret, resolve_msgsend_super,
	resolve_msgsend_super_stret): Likewise.

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

	* alpha-tdep.c (alpha_register_type): Use builtin_type (gdbarch)
	instead of builtin_type_ macros.
	* amd64-tdep.c (amd64_register_type): Likewise.
	(amd64_get_longjmp_target): Likewise.
	* arm-tdep.c (arm_register_type): Likewise.
	* avr-tdep.c (avr_register_type): Likewise.
	* cris-tdep.c (cris_register_type, crisv32_register_type): Likewise.
	* frv-tdep.c (frv_register_type): Likewise.
	* h8300-tdep.c (h8300_register_type): Likewise.
	* hppa-tdep.c (hppa32_convert_from_func_ptr_addr, 
	hppa_skip_trampoline_code): Likewise.
	* i386-tdep.c (i386_register_type): Likewise.
	(i386_unwind_pc, i386_sse_type): Likewise.
	* ia64-tdep.c (ia64_register_type): Likewise.
	* m32r-tdep.c (m32r_register_type): Likewise.
	* m68k-tdep.c (m68k_register_type, m68k_unwind_pc): Likewise.
	* m88k-tdep.c (m88k_register_type): Likewise.
	* mep-tdep.c (mep_register_type): Likewise.
	* mips-tdep.c (mips_pseudo_register_type): Likewise.
	* mn10300-tdep.c (mn10300_register_type): Likewise.
	* mt-tdep.c (mt_copro_register_type): Likewise.
	* rs6000-tdep.c (rs6000_builtin_type_vec64): Likewise.
	(rs6000_convert_register_p, rs6000_register_to_value,
	rs6000_value_to_register): Likewise.
	* s390-tdep.c (s390_register_type): Likewise.
	* sh64-tdep.c (sh64_register_type): Likewise.
	(sh64_build_float_register_type, sh64_do_fp_register): Likewise.
	* sh-tdep.c (sh_sh2a_register_type, sh_sh3e_register_type,
	sh_sh4_build_float_register_type, sh_sh4_register_type,
	sh_default_register_type): Likewise.
	* sparc64-tdep.c (sparc64_register_type): Likewise.
	* sparc-tdep.c (sparc32_register_type): Likewise.
	* spu-tdep.c (spu_builtin_type_vec128, spu_register_type): Likewise.
	* v850-tdep.c (v850_register_type): Likewise.
	* vax-tdep.c (vax_register_type): Likewise.
	* xtensa-tdep.c (xtensa_register_type, xtensa_unwind_pc,
	xtensa_push_dummy_call): Likewise.

	* std-regs.c (value_of_builtin_frame_fp_reg,
	value_of_builtin_frame_pc_reg): Likewise.
	* target-descriptions.c (tdesc_register_type): Likewise.

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

	* ada-lang.c (ada_coerce_to_simple_array_type): Use builtin_type_int32
	instead of builtin_type_int as default unspecified integral type.
	(ada_index_type, ada_array_bound_from_type, ada_variant_discrim_type,
	assign_component, to_fixed_range_type): Likewise.
	* ada-typeprint.c (print_range, print_range_bound,
	print_range_type_named): Likewise.
	* ada-valprint.c (print_optional_low_bound, ada_val_print_1): Likewise.
	* eval.c (evaluate_subexp_standard): Likewise.
	* gnu-v2-abi.c (gnuv2_virtual_fn_field): Likewise.
	* gnu-v3-abi.c (gnuv3_get_virtual_fn, gnuv3_baseclass_offset,
	build_gdb_vtable_type): Likewise.
	* jv-lang.c (java_array_type): Likewise.
	* m2-typeprint.c (m2_print_bounds, m2_is_long_set_of_type): Likewise.
	* m2-valprint.c (m2_print_long_set): Likewise.
	* parse.c (follow_types): Likewise.
	* p-typeprint.c (pascal_type_print_base): Likewise.
	* valops.c (value_one, value_array, value_string,
	value_bitstring): Likewise.
	* value.c (allocate_repeat_value, value_from_string): Likewise.
	* varobj.c (c_describe_child): Likewise.
	* mt-tdep.c (mt_register_type): Likewise.
	* sh-tdep.c (sh_sh4_build_float_register_type): Likewise.
	* sh64-tdep.c (sh64_build_float_register_type): Likewise.

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

	* defs.h (struct gdbarch): Add forward declaration.
	(set_next_address): Add GDBARCH argument.
	* printcmd.c (set_next_address): Use it to find pointer type.
	* breakpoint.c (breakpoint_1): Update call.
	* source.c (line_info): Likewise.
	* findcmd.c (find_command): Use current_gdbarch to find pointer type.

	* breakpoint.c (set_breakpoint_count): Use platform-neutral
	types for internal variable values.
	* infrun.c (handle_inferior_event): Likewise.
	* source.c (forward_search_command, reverse_search_command): Likewise.
	* tracepoint.c (set_tracepoint_count, set_traceframe_num,
	set_tracepoint_num, set_traceframe_context): Likewise.

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

	* gdbtypes.h (struct builtin_type): Remove builtin_true_char
	and builtin_true_unsigned_char.
	(builtin_type_true_char): Remove macro, add extern declaration.
	(builtin_type_true_unsigned_char): Add extern declaration.
	* gdbtypes.c (builtin_type_true_char): New global variable.
	(builtin_type_true_unsigned_char): Likewise.
	(_initialize_gdbtypes): Initialize them.
	(gdbtypes_post_init): Do not initialize builtin_true_char
	and builtin_true_unsigned_char members of struct builtin_type.

	* printcmd.c (print_scalar_formatted): Do not use builtin_type;
	use builtin_type_true_unsigned_char instead.

	* ada-valprint.c (ada_val_print_1): Use builtin_type_true_char
	instead of builtin_type_char for internal string.

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

	* gdbtypes.h (builtin_type_void): Remove macro, add declaration.
	(builtin_type_f_void): Remove macro.
	* gdbtypes.c (builtin_type_void): New global variable.
	(_initialize_gdbtypes): Initialize it.

	* gnu-v3-abi.c (build_gdb_vtable_type): Do not call
	lookup_pointer_type or lookup_function_type on builtin_type_void.
	* printcmd.c (set_next_address): Likewise.
	* objc-lang.c (value_nsstring): Likewise.
	* mt-tdep.c (mt_copro_register_type): Likewise.
	* xtensa-tdep.c (xtensa_register_type): Likewise.

	* symfile.c (syms_from_objfile): Remove special handling
	of builtin_type_void and builtin_type_char.

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

	* eval.c (evaluate_subexp_standard): Use exp->gdbarch types instead
	of builtin_type_ macros when handling OP_OBJC_ operations.
	* objc-lang.c (print_object_command): Likewise.

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

	* ada-valprint.c: Include "objfiles.h".
	(ada_val_print_1): Use the gdbarch associated with the objfile whether
	a System.Address type is defined to retrieve the proper pointer type
	to use to print it.

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

	* ada-lang.c (value_pos_atr): Add TYPE argument.  Use it as
	result type instead of builtin_type_int.
	(value_subscript_packed): Use pos_atr instead of value_pos_atr.
	(ada_value_subscript): Update call to value_pos_atr.
	(ada_value_ptr_subscript): Likewise.
	(ada_evaluate_subexp): Likewise.

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

	* ada-lang.c (cast_to_fixed): Do not cast to builtin_type_double.
	(cast_from_fixed_to_double): Rename to ...
	(cast_from_fixed): ... this.  Add TYPE parameter.  Use it instead
	of builtin_type_double.
	(ada_value_cast): Use cast_from_fixed instead of casting result
	of cast_from_fixed_to_double.
	(ada_evaluate_subexp): Update calls to cast_from_fixed_to_double. 

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

	* valops.c (value_ind): No longer allow dereferencing an
	integer type.
	* eval.c (evaluate_subexp_standard): Handle deferencing an
	integer type here.
	* ada-lang.c (ada_evaluate_subexp): Likewise.

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

	* ada-valprint.c (ada_val_print_1): When implicitly dereferencing
	a reference type, pass the reference type directly to unpack_pointer.
	* c-valprint.c (c_val_print): Likewise.
	* f-valprint.c (f_val_print): Likewise.
	* m2-valprint.c (print_variable_at_address, m2_val_print): Likewise.
	* p-valprint.c (pascal_val_print): Likewise.

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

	* eval.c (evaluate_subexp_standard): Use builtin_type_int8
	to construct the EVAL_SKIP dummy return value.
	* ada-lang.c (ada_evaluate_subexp): Likewise.
	* jv-lang.c (evaluate_subexp_java): Likewise.
	* m2-lang.c (evaluate_subexp_modula2): Likewise.
	* scm-lang.c (evaluate_exp): Likewise.

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

	* value.h (coerce_enum, coerce_number): Remove prototypes.
	* value.c (coerce_enum, coerce_number): Remove.
	* valarith.c (value_x_binop): Do not call coerce_enum.
	(value_x_unop): Likewise.
	(value_logical_not): Call coerce_array instead of coerce_number.

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

	* ax-gdb.c: Include "language.h".
	(gen_frame_args_address): Add GDBARCH parameter; use it
	instead of current_gdbarch.
	(gen_frame_locals_address): Likewise.
	(gen_var_ref): Add GDBARCH parameter.  Update calls to
	gen_frame_args_address and gen_frame_locals_address.  Use
	pointer type from gdbarch.
	(gen_usual_unary): Add EXP parameter.  Use integer type
	from exp->gdbarch.
	(gen_usual_arithmetic): Likewise.
	(gen_integral_promotions): Likewise.
	(gen_add, gen_sub): Remove.
	(gen_ptradd, gen_ptrsub, gen_ptrdiff): New functions.
	(gen_logical_not): Use passed-in boolean result type
	instead of builtin_type_int.
	(gen_complement): Do not call gen_usual_unary or
	gen_integral_promotions.
	(gen_struct_ref): Call require_rvalue instead of gen_usual_unary.
	(gen_repeat): Add EXP parameter.  Update call to gen_expr.
	Use builtin_type_int32 as internal range type.
	(gen_sizeof): Add EXP and SIZE_TYPE parameters.  Use SIZE_TYPE
	as result type.  Update call to gen_expr.
	(gen_expr): Add EXP parameter.  Update calls to gen_expr,
	gen_repeat, gen_var_ref, gen_usual_unary, gen_usual_arithmetic,
	and gen_integral_promotions.  Call gen_ptradd, gen_ptrsub,
	gen_ptrdiff, or gen_binop instead of gen_add or gen_sub.
	Use exp->gdbarch instead of current_gdbarch.
	Call language_bool_type to determine result type of UNOP_LOGICAL_NOT.

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

	* eval.c (evaluate_subexp_standard): Add calls to binop_promote
	and unop_promote before calling value_binop et. al.
	* ada-lang.c (ada_evaluate_subexp): Add calls to binop_promote
	and unop_promote before calling value_binop et. al.

	* valarith.c (value_binop): Do not call binop_promote or unop_promote.
	(value_pos): Do not call unop_promote.
	(value_neg, value_complement): Likewise.

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

	* value.h (unop_promote, binop_promote): Add prototypes.
	* eval.c (unop_promote, binop_promote): New functions.
	* valarith.c (unop_result_type, binop_result_type): Remove.
	(value_binop): Call binop_promote or unop_promote.
	Inline remaining parts of binop_result_type.  Remove special
	code to truncate integer values for unsigned operations.
	(value_pos): Call unop_promote.  Inline remaining parts of
	unop_result_type.
	(value_neg, value_complement): Likewise.

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

	* value.h (value_add, value_sub): Remove.
	(value_ptradd, value_ptrsub, value_ptrdiff): Add prototypes.
	* valarith.c (value_add, value_sub): Remove.
	(value_ptradd, value_ptrsub, value_ptrdiff): New functions.
	(find_size_for_pointer_math): Add assertion.  Update comment.
	(value_binop): Update comment.

	* eval.c (ptrmath_type_p): New function.
	(evaluate_subexp_standard): Replace value_add and value_sub
	by value_ptradd, value_ptrsub, value_ptrdiff or value_binop.
	Use builtin_type_uint8 instead of builtin_type_char to hold
	the increment for BINOP_{PRE,POST}{IN,DE}CREMENT operations.
	* valarith.c (value_subscript): Replace value_add by
	value_ptradd.  Replace value_sub by value_binop.
	* ada-lang.c (ada_value_ptr_subscript): Likewise.
	(ada_tag_name_2): Replace value_add by value_ptradd.
	(ada_evaluate_subexp): Replace value_add and value_sub by
	value_binop.
	* m2-lang.c (evaluate_subexp_modula2): Replace value_add
	by value_ptradd.
	* gnu-v2-abi.c (gnuv2_virtual_fn_field): Likewise.
	* gnu-v3-abi.c (gnuv3_method_ptr_to_value): Likewise.

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

	* eval.c (evaluate_subexp_for_sizeof): Use builtin_int type of
	the expression architecture instead of builtin_type_int as the
	sizeof return type.

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

	* expression.h (enum exp_opcode): Document OP_COMPLEX to take
	a type parameter as expression element.
	* eval.c (evaluate_subexp_standard) [OP_COMPLEX]: Retrieve result
	type as expression element.
	* f-exp.y: Pass in type when buildin OP_COMPLEX expression.
	* parse.c (operator_length_standard): Update length of OP_COMPLEX.

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

	* language.h (struct language_arch_info): New members
	bool_type_default and bool_type_symbol.
	(lang_bool_type): Remove prototype.
	(LA_BOOL_TYPE): Remove macro.
	(language_bool_type): Add prototype.
	* language.c (lang_bool_type): Remove.
	(language_bool_type): New function.

	* value.h (value_in): Change return value to int.
	* value.c (value_in): Return int instead of struct value *.

	* eval.c (evaluate_subexp_standard): Call language_bool_type instead
	of using LA_BOOL_TYPE.  Update call to value_in.
	* ada-lang.c (ada_evaluate_subexp): Call language_bool_type instead
	of using LA_BOOL_TYPE or builtin_type_int for boolean values.

	* language.c (unknown_language_arch_info): Set bool_type_default member
	of struct language_arch_info.
	* ada-lang.c (ada_language_arch_info): Set bool_type_symbol and
	bool_type_default members of struct language_arch_info.
	* c-lang.c (c_language_arch_info): Set bool_type_default member
	of struct language_arch_info.
	(cplus_language_arch_info): Set bool_type_symbol and bool_type_default
	members of struct language_arch_info.
	* f-lang.c (f_language_arch_info): Set bool_type_symbol and
	bool_type_default members of struct language_arch_info.
	* jv-lang.c (java_language_arch_info): Set bool_type_symbol and
	bool_type_default members of struct language_arch_info.
	* m2-lang.c (m2_language_arch_info): Set bool_type_symbol and
	bool_type_default members of struct language_arch_info.
	* p-lang.c (p_language_arch_info): Set bool_type_symbol and
	bool_type_default members of struct language_arch_info.

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

	* jv-lang.c (enum java_primitive_types): New type.
	(java_language_arch_info): New function.
	(java_language): Use it instead of c_language_arch_info.

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

	* value.h (value_bitstring_subscript): New prototype.
	* valarith.h (value_bitstring_subscript): New function.
	(value_subscript): No longer handle TYPE_CODE_BITSTRING.
	* eval.c (evaluate_subexp_standard): Call value_bitstring_subscript
	instead of value_subscript to handle TYPE_CODE_BITSTRING.

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

	* expression.h (struct expression): New member GDBARCH.
	* parse.c (parse_exp_in_context): Initialize it.
	* parser-def.h (parse_gdbarch, parse_language): New macros.

	* ada-exp.y (parse_type): New macro.
	Replace builtin_type_ macros by using parse_type.
	Replace current_language by parse_language.
	* ada-lex.l (processInt): Replace current_gdbarch by parse_gdbarch.
	Replace builtin_type_ macros.

	* c-exp.y (parse_type): New macro.
	Replace builtin_type_ macros by using parse_type.
	(parse_number): Replace current_gdbarch by parse_gdbarch.
	(yylex): Replace current_language by parse_language.

	* f-exp.y (parse_type, parse_f_type): New macros.
	Replace builtin_type_ macros by using parse_{f_,}type.
	(parse_number): Replace current_gdbarch by parse_gdbarch.
	(yylex): Replace current_language by parse_language.

	* jv-exp.y (parse_type): New macro.
	(parse_number): Replace builtin_type_ macros by using parse_type.

	* m2-exp.y (parse_type, parse_m2_type): New macros.
	Replace builtin_type_ macros by using parse_{m2_,}type.

	* objc-exp.y (parse_type): New macro.
	Replace builtin_type_ macros by using parse_type.
	(parse_number): Replace current_gdbarch by parse_gdbarch.
	(yylex): Replace current_language by parse_language.

	* p-exp.y (parse_type): New macro.
	Replace builtin_type_ macros by using parse_type.
	(parse_number): Replace current_gdbarch by parse_gdbarch.
	(yylex): Replace current_language by parse_language.

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

	* parser-defs.h (write_exp_msymbol): Remove TEXT_SYMBOL_TYPE
	and DATA_SYMBOL_TYPE arguments.
	* parse.c (write_exp_msymbol): Remove TEXT_SYMBOL_TYPE and
	DATA_SYMBOL_TYPE arguments.  Replace use of builtin_type_CORE_ADDR.
	(write_dollar_variable): Update call.

	* ada-exp.y (write_var_or_type): Update call.
	* c-exp.y: Likewise.
	* f-exp.y: Likewise.
	* jv-exp.y: Likewise.
	* m2-exp.y: Likewise.
	* objc-exp.y: Likewise.
	* p-exp.y: Likewise.

2008-09-10  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_parent_type): Add handling of the case where
	the _parent field is a pointer and/or has a parallel XVS type.
	(ada_evaluate_subexp) [OP_VAR_VALUE]: When doing an
	EVAL_AVOID_SIDE_EFFECTS evaluation of a tagged type, return
	the type of the tag instead of doing forcing an EVAL_NORMAL
	expression evaluation.

2008-09-10  Paul N. Hilfinger  <hilfinger@adacore.com> 
	    Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (is_digits_suffix): New function.
	(is_dot_digits_suffix): Remove.
	(ada_lookup_symbol_list): Remove digits suffix from minimal symbols
	before looking up in symbol table, and do not use wild matches on them.
	(wild_match): Reimplement for speed and to allow matching of operator
	symbols.
	(is_valid_name_for_wild_match): Return zero for names that do not
	follow the GNAT encoding.

	(is_name_suffix): Fix typo in comment.
	(to_record_with_fixed_variant_part): Ditto.

2008-09-10  Pedro Alves  <pedro@codesourcery.com>

	* Makefile.in (gnu-nat.o): New rule.

2008-09-10  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_evaluate_subexp) [OP_ATR_SIZE]: Use
	archecture-neutral builtin_type_int32 instead of builtin_type_int.

2008-09-10  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_evaluate_subexp) [BINOP_ADD, BINOP_SUB]:
	Add special handling for pointer types.

2008-09-10  Pedro Alves  <pedro@codesourcery.com>

	* inf-ttrace.c (inf_ttrace_follow_fork): Declare locals at the
	right scope level.
	(inf_ttrace_resume, inf_ttrace_wait): Typos.

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

	* ada-lang.c (ada_array_length): Use builtin_type_int32 instead
	of builtin_type_int.
	(ada_evaluate_subexp) [UNOP_IN_RANGE]: Use operand range type
	instead of builtin_type_int.

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

	* infrun.c (normal_stop): Run hook-stop last.

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

	* gnu-nat.c (gnu_pid_to_exec_file): Delete.
	(init_gnu_ops): Don't register it.

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

	* gnu-nat.c (gnu_attach): Push target before fetching the list of
	threads.

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

	* valops.c (value_cast_structs): Return NULL for failure.
	(value_cast): Handle NULL from value_cast_structs.
	(value_fetch_lazy): Call check_typedef.  Remove unused variable.

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

	* inferior.h (context_switch_to): Delete.
	* infrun.c (context_switch): Don't save and load infrun state.
	(context_switch_to): Delete.

	* infcmd.c (proceed_thread_callback): Replace context_switch_to
	calls by switch_to_thread calls.

	* gdbthread.h (save_infrun_state, load_infrun_state): Delete.
	* thread.c (main_thread_state, main_thread_executing): Delete.
	(inferior_thread): Delete references to them.
	(add_thread_silent): Fix case where we're adding a thread with the
	same ptid as an exited thread.  Remove references to
	context-switching.
	(load_infrun_state, save_infrun_state): Delete.
	(thread_alive, is_thread_state, any_running, is_executing)
	(set_executing): Remove the special handling for targets that
	don't register any thread.
	(restore_current_thread, thread_apply_all_command)
	(do_captured_thread_select): Unconditionally call
	switch_to_thread.

	* mi/mi-main.c (mi_cmd_execute): Check for exited threads.
	Call switch_to_thread instead of context_switch_to.

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

	Remove global continuations in favour of a per-thread
	continuations.

	* gdbthread.h (struct thread_info): Add comments around
	continuations and intermediate_continuations.
	(save_infrun_state, load_infrun_state): Delete continuations and
	intermediate_continuations arguments.
	* infrun.c (context_switch): Don't context-switch the continuations.
	* thread.c (clear_thread_inferior_resources): Discard all
	continuations of the thread we're clearing.
	(save_infrun_state, load_infrun_state): Delete continuations and
	intermediate_continuations arguments, and the code referencing
	them.
	* utils.c: Include "gdbthread.h".
	(cmd_continuation, intermediate_continuation): Delete.
	(add_continuation): Add thread_info* argument.  Install the
	continuation on it.
	(restore_thread_cleanup): New.
	(do_all_continuations_ptid, do_all_continuations_thread_callback):
	New.
	(do_all_continuations): Reimplement.
	(discard_all_continuations_thread_callback,
	discard_all_continuations_thread): New.
	(discard_all_continuations): Reimplement.
	(add_intermediate_continuation): Add thread_info* argument.
	Install the continuation on it.
	(do_all_intermediate_continuations_thread_callback)
	(do_all_intermediate_continuations_thread): New.
	(do_all_intermediate_continuations): Reimplement.
	(discard_all_intermediate_continuations_thread_callback): New.
	(discard_all_intermediate_continuations_thread): New.
	(discard_all_intermediate_continuations): Reimplement.

	* breakpoint.c (until_break_command): Install the continuation on
	the current thread.

	* defs.h (cmd_continuation, intermediate_continuation): Delete.
	(struct thread_info): Forward declare.
	(add_continuation, add_intermediate_continuation): Add
	thread_info* argument.
	(do_all_continuations_thread, discard_all_continuations_thread)
	(do_all_intermediate_continuations_thread)
	(discard_all_intermediate_continuations_thread): Declare.
	* inf-loop.c (inferior_event_handler): In non-stop only run
	continuations on the thread that stopped.  In all-stop, run
	continuations on all threads.
	* infcmd.c (step_once, finish_command): Adjust.

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

	Remove the global stop_step in favour of a per-thread
	stop_step.

	* inferior.h (stop_step): Delete.

	* gdbthread.h (struct thread_info): Add comments to stop_step.
	(save_infrun_state, load_infrun_state): Remove stop_step argument.
	* thread.c (load_infrun_state, save_infrun_state): Remove
	stop_step argument, and references to it.

	* infrun.c (clear_proceed_status): Clear stop_step.
	(fetch_inferior_event): Adjust.
	(context_switch): Don't context-switch stop_step.
	(handle_inferior_event): Adjust.
	(normal_stop): Adjust.
	(save_inferior_status, restore_inferior_status): Adjust.

	* infcmd.c (stop_step): Delete.
	(step_1, step_1_continuation, step_once, until_next_command):
	Adjust.

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

	Remove the global step_multi in favour of a per-thread
	step_multi.

	* inferior.h (step_multi): Delete.
	* gdbthread.h (struct thread_info): Add comments around
	step_multi.
	(save_infrun_state, load_infrun_state): Remove step_multi
	parameter.
	* thread.c (load_infrun_state, save_infrun_state): Remove
	step_multi argument, and references to it.
	* infcmd.c (step_multi): Delete.
	(step_1): Adjust.
	(step_1_continuation, until_next_command): Adjust.
	* infrun.c (fetch_inferior_event): Adjust.
	(context_switch): Don't context-switch step_multi.
	(print_stop_reason, normal_stop): Adjust.

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

	Remove the global stop_signal in favour of a per-thread
	stop_signal.

	* inferior.h (stop_signal): Delete.
	* gdbthread.h (save_infrun_state, load_infrun_state): Remove
	stop_signal argument.
	* thread.c (load_infrun_state, save_infrun_state): Remove
	stop_signal argument.  Don't reference it.

	* infcmd.c (stop_signal): Delete.
	(program_info): Adjust.
	* infrun.c (resume): Clear stop_signal.
	(proceed): Adjust.  Pass the last stop_signal to the thread we're
	resuming.
	(context_switch): Don't context-switch stop_signal.
	(handle_inferior_event, keep_going): Adjust.
	(save_inferior_status, restore_inferior_status): Adjust.

	* fbsd-nat.c: Include "gdbthread.h".
	(find_signalled_thread, find_stop_signal): New.
	(fbsd_make_corefile_notes): Use it.
	* fork-child.c (startup_inferior): Adjust.

	* linux-nat.c (get_pending_status): Adjust.
	(linux_nat_do_thread_registers): Adjust.
	(find_signalled_thread, find_stop_signal): New.
	(linux_nat_do_thread_registers): Add stop_signal parameter.
	(struct linux_nat_corefile_thread_data): Add stop_signal member.
	(linux_nat_corefile_thread_callback): Pass stop_signal.
	(linux_nat_do_registers): Delete.
	(linux_nat_make_corefile_notes): Use find_stop_signal.  Assume
	there's always a thread.

	* procfs.c (find_signalled_thread, find_stop_signal): New.
	(find_stop_signal): New.
	(procfs_do_thread_registers): Add stop_signal parameter.
	(struct procfs_corefile_thread_data): Add stop_signal member.
	(procfs_corefile_thread_callback): Pass args->stop_signal.
	(procfs_make_note_section): Find the last stop_signal.

	* solib-irix.c: Include gdbthread.h.
	(irix_solib_create_inferior_hook): Adjust.
	* solib-osf.c: Include gdbthread.h.
	(osf_solib_create_inferior_hook): Adjust.
	* solib-sunos.c: Include gdbthread.h.
	(sunos_solib_create_inferior_hook): Adjust.
	* solib-svr4.c: Include gdbthread.h.
	(svr4_solib_create_inferior_hook): Adjust.

	* win32-nat.c (do_initial_win32_stuff): Adjust.

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

	* gdbthread.h (struct thread_info): Add comments around
	proceed_to_finish.
	(save_infrun_state, load_infrun_state): Remove proceed_to_finish
	argument.
	* thread.c (load_infrun_state, save_infrun_state): Delete
	proceed_to_finish argument and references to it.

	* infcall.c (call_function_by_hand): Adjust.
	* infcmd.c (finish_command): Adjust.
	* infrun.c (proceed_to_finish): Delete.
	(clear_proceed_status): Adjust.
	(context_switch): Don't context-switch proceed_to_finish.
	(normal_stop, save_inferior_status, restore_inferior_status):
	Adjust.

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

	* inferior.h (stop_bpstat): Delete.

	* breakpoint.h (bpstat_do_actions): Remove bpstat* argument.
	
	* breakpoint.c (bpstat_do_actions): Rename to ...
	(bpstat_do_actions_1): ... this.  Make static.  Change return type
	to int.  Return true if a breakpoint proceeded.
	(bpstat_do_actions): New, as wrapper around bpstat_do_actions_1.
	(delete_breakpoint): Don't reference the global stop_bpstat; it's
	gone.

	* gdbthread.h (struct thread_info): Add stop_bpstat.
	(save_infrun_state, load_infrun_state): Remove stop_bpstat
	argument.
	* thread.c (load_infrun_state, save_infrun_state): Remove
	stop_bpstat argument, and the code referencing it.

	* infcall.c: Include "gdbthread.h".
	(call_function_by_hand): Adjust.
	* exceptions.c: Include "gdbthread.h".
	(throw_exception): Adjust.
	* infcmd.c (stop_bpstat): Delete.
	(continue_command): In all-stop, set the ignore count on the
	thread that reported the stop.  In non-stop, set it on the current
	thread.
	(finish_command_continuation): Adjust.
	(program_info): Adjust.
	* infrun.c (clear_proceed_status): Adjust.
	(context_switch): Don't context-switch stop_bpstat.
	(handle_inferior_event): Adjust.
	(normal_stop): Adjust.
	(save_inferior_status, restore_inferior_status): Adjust.

	* inf-loop.c (inferior_event_handler): Remove parameter to
	bpstat_do_actions call.
	* top.c (command_loop): Remove parameter to bpstat_do_actions
	call.  Call it unconditionally.
	* event-top.c (command_handler): Ditto.
	* python/python.c (execute_gdb_command): Ditto.

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

	* inferior.h (step_over_calls): Delete.

	* gdbthread.h (save_infrun_state, load_infrun_state): Remove
	step_over_calls argument.
	* thread.c (save_infrun_state, load_infrun_state): Remove
	step_over_calls argument.  Adjust.

	* infcmd.c (step_over_calls): Delete.
	(step_1): Adjust.
	* infrun.c (clear_proceed_status): Adjust.
	(context_switch): Don't context-switch step_over_calls.
	(handle_inferior_event, save_inferior_status)
	(restore_inferior_status): Adjust.

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

	Remove context switching in favour of accessing thread_info fields
	directly.

	* infrun.c (stepping_over_breakpoint, step_resume_breakpoint):
	Delete.
	(struct thread_stepping_state): Delete.
	(gtss, tss): Delete.
	(follow_inferior_reset_breakpoints, follow_exec)
	(resume, clear_proceed_status): Adjust.
	(prev_pc): Delete.
	(proceed, start_remote, init_wait_for_inferior): Adjust.
	(struct execution_control_state): Add event_thread member.
	(delete_step_resume_breakpoint_callback)
	(delete_step_thread_step_resume_breakpoint)
	(delete_step_thread_step_resume_breakpoint_cleanup)
	(delete_step_thread_step_resume_breakpoint): New.
	(wait_for_inferior, init_execution_control_state): Use
	delete_step_thread_step_resume_breakpoint_cleanup.
	(wait_for_inferior): Set the event_thread.
	(fetch_inferior_event): Ditto.  Delete the step-resume breakpoint
	with delete_step_thread_step_resume_breakpoint.
	(init_thread_stepping_state): Change parameter type to
	thread_info.  Adjust.
	(context_switch): Don't context switch prev_pc,
	stepping_over_breakpoint, step_resume_breakpoint,
	step_range_start, step_range_end, step_frame_id,
	tss->stepping_over_breakpoint,
	tss->stepping_through_solib_after_catch,
	tss->stepping_through_solib_catchpoints, tss->current_line, or
	tss->current_symtab.
	(adjust_pc_after_break, handle_inferior_event)
	(currently_stepping, step_into_function)
	(insert_step_resume_breakpoint_at_sal)
	(insert_longjmp_resume_breakpoint, keep_going): Adjust.
	(clear_stepping_state): New.
	(normal_stop): Adjust.
	(save_inferior_status, restore_inferior_status): Adjust.

	* gdbthread.h (struct thread_info): Comments describing the
	members moved here.  Add step_after_step_resume_breakpoint.
	(delete_step_resume_breakpoint): Add thread_info argument.
	(save_infrun_state, load_infrun_state): Remove prev_pc,
	trap_expected, step_resume_breakpoint, step_range_start,
	step_range_end, step_frame_id, another_trap,
	stepping_through_solib_after_catch,
	stepping_through_solib_catchpoints, current_line and
	current_symtab function arguments.
	(inferior_thread): Declare.

	* thread.c (inferior_thread): New.
	(delete_step_resume_breakpoint): Add a thread_info parameter and
	rewrite.
	(load_infrun_state, save_infrun_state): Remove prev_pc,
	trap_expected, step_resume_breakpoint, step_range_start,
	step_range_end, step_frame_id, stepping_over_breakpoint,
	stepping_through_solib_after_catch,
	stepping_through_solib_catchpoints, current_line and
	current_symtab args.  Remove code referencing them.

	* infcmd.c (step_range_start, step_range_end, step_frame_id):
	Delete.
	(step_1, step_once, until_next_command): Adjust.

	* inferior.h (step_range_start, step_range_end, step_frame_id):
	Delete.

	* linux-nat.c (linux_child_follow_fork): If following the child,
	move the step state to it.  Adjust.
	* inf-ptrace.c (inf_ptrace_follow_fork): Ditto.
	* inf-ttrace.c (inf_ttrace_follow_fork): Ditto.

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

	* bsd-uthread.c (bsd_uthread_find_new_threads): Claim the main
	thread.

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

	* corelow.c (add_to_thread_list): If this is the first time we
	hear about thread info, update inferior_ptid.
	(core_open): Clear the thread list and set inferior_ptid before
	acknowledging a new inferior.  Find threads before fetching
	register info.  Give an upper target layer a chance to find and
	claim new threads.  Print core generation and stop signal info
	after finding new threads.
	(get_core_register_section): Look at the lwp member of
	inferior_ptid for detecting if we have threads info, instead of
	the pid member.
	(core_pid_to_str): New.
	(init_core_ops): Register core_pid_to_str.

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

	* spu-linux-nat.c (spu_child_post_startup_inferior)
	(spu_child_post_attach): Don't add the main thread here.

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

	Use ptid_t.tid to store thread ids instead of ptid_t.pid.

	* gnu-nat.c (inf_validate_procs): If this is the first time we're
	seeing a thread id, extend the main thread's ptid.  If we still
	have pending execs, don't be verbose about new threads.
	(gnu_wait, gnu_resume, gnu_attach, gnu_thread_alive)
	(gnu_pid_to_str, cur_thread, sig_thread_cmd): Adjust.
	* i386gnu-nat.c (gnu_fetch_registers, gnu_store_registers):
	Adjust.

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

	* procfs.c (to_attach): Create a procinfo for the current lwp.
	Add it to gdb's thread list.
	(procfs_fetch_registers, procfs_store_registers): Assume there's
	always an lwp.
	(procfs_wait): Don't add the main thread here.
	(procfs_init_inferior): Create a procinfo for the main lwp here.
	Change main thread's ptid with thread_change_ptid.
	(procfs_notice_thread): Check for exited threads.
	(procfs_corefile_thread_callback): Remove check for the main
	process.
	(procfs_make_note_section): Assume there is always a thread.

	* sol-thread.c (sol_thread_attach): Clear sol_thread_active before
	attaching.  Change the main thread ptid with thread_change_ptid.
	(sol_thread_detach): Clear sol_thread_active.
	(sol_thread_wait): Check for exited threads.
	(sol_thread_create_inferior): Clear sol_thread_active before
	creating a new inferior.  Change the main thread ptid with
	thread_change_ptid.
	(sol_thread_mourn_inferior): Clear sol_thread_active.
	(sol_find_new_threads_callback): Check for exited threads.

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

	* inf-ttrace.c (inf_ttrace_wait): On TTEVT_LWP_CREATE and
	LWP_TERMINATE, resume the caller thread.  On TTEVT_LWP_CREATE,
	TTEVT_LWP_EXIT and TTEVT_LWP_TERMINATE, don't stop the whole
	process, and return TARGET_WAITKIND_IGNORE.

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

	* inf-ttrace.c: Include <signal.h>
	(inf_ttrace_delete_dead_threads_callback): New.
	(inf_ttrace_resume_lwp): New.
	(inf_ttrace_resume_callback, inf_ttrace_resume): Rewrite.  Don't
	delete dying threads until they are really dead.
	(inf_ttrace_wait): After stopping the whole process, delete any
	dying thread that is really dead by now.
	(inf_ttrace_thread_alive): Return 1.
	(inf_ttrace_extra_thread_info): New.
	(inf_ttrace_target): Register inf_ttrace_extra_thread_info.

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

	* inf-ttrace.c (inf_ttrace_follow_fork): Register the main thread
	of the child fork.
	(inf_ttrace_attach): Add the main thread.
	(inf_ttrace_resume_callback): Check for exited threads.  Adjust
	for always a thread.
	(inf_ttrace_wait): Decorate the main thread's ptid with lwp info
	using thread_change_ptid, and set its private data.  Don't add the
	main thread here.
	(inf_ttrace_pid_to_str): Adjust.

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

	* bsd-uthread.c (bsd_uthread_wait): Decorate the main thread with
	thread_change_ptid.  Check for exited threads.
	(bsd_uthread_find_new_threads): Check for exited threads.

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

	* inf-ptrace.c: Include "gdbthread.h".
	(inf_ptrace_attach): Add the main thread here.
	* linux-nat.c (linux_nat_attach): Don't add the main thread here.
	Decorate the main thread id with the lwp id.

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

	* linux-nat.c (linux_nat_wait): Update inferior_ptid's ptid with
	thread_change_ptid.  Don't add or mark the main thread as running
	and executing here.
	* fork-child.c (fork_inferior): Add the main thread here.

2008-09-08  Jerome Guitton  <guitton@adacore.com>

	* rs6000-tdep.c (rs6000_fetch_instruction)
	(rs6000_skip_stack_check): New functions.
	(skip_prologue): Skip stack check sequence.
	
2008-09-08  David Daney  <ddaney@avtrex.com>

	* dummy-frame.h (frame.h): Include it.
	(struct frame_id): Remove declaration.

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

	* spu-tdep.c (spu_push_dummy_code): New function.
	(spu_gdbarch_init): Install it.

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

	* gdbarch.sh (gdbarch_dump): Use core_addr_to_string_nz
	instead of paddr_nz.
	* gdbarch.c: Regenerate.

	* target.c (target_xfer_partial, debug_print_register): Use
	core_addr_to_string_nz instead of paddr_nz.

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

	* rs6000-tdep.c (rs6000_gdbarch_init): Setup displaced stepping
	*before* calling gdbarch_init_osabi.
	(rs6000_aix_init_osabi): Disable displaced stepping.

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

	* target.c (update_current_target): Do not inherit to_open
	or to_close.
	(pop_target): Call target_close on target_stack instead
	of current_target.
	(pop_all_targets_above): Likewise.

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

	* gnu-v3-abi.c (gnuv3_decode_method_ptr): New function.
	(gnuv3_print_method_ptr): Use it.
	(gnuv3_method_ptr_to_value): Likewise.

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

	* nto-tdep.h (struct nto_target_ops): Add gdbarch parameter to
	register_area callback function.
	* i386-nto-tdep.c (i386nto_register_area): Add gdbarch parameter.
	Use it instead of current_gdbarch.
	* nto-procfs.c (procfs_store_registers): Update call.

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

	* mips-tdep.c (deprecated_mips_set_processor_regs_hack): Use
	regcache architecture instead of current_gdbarch.

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

	* mep-tdep.c (struct mep_prologue): Add gdbarch member.
	(check_for_saved): Use it instead of current_gdbarch.
	(is_arg_spill): Add gdbarch paramter.  Use it instead
	of current_gdbarch.
	(mep_analyze_prologue): Add gdbarch parameter.  Pass it
	to is_arg_spill and check_for_saved.
	(mep_skip_prologue, mep_analyze_frame_prologue): Update calls.

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

	* hppa-tdep.c (internalize_unwinds): Use objfile architecture
	instead of current_gdbarch.

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

	* m68k-tdep.h (m68kbsd_fpreg_offset): Add gdbarch parameter.
	* m68kbsd-tdep.c (m68kbsd_fpreg_offset): Add gdbarch paramter.
	Use it instead of current_gdbarch.
	(m68kbsd_supply_fpregset): Update call.
	* m68kbsd-nat.c (m68kbsd_supply_fpregset): Likewise.
	(m68kbsd_collect_fpregset): Likewise.

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

	* cris-tdep.c (cris_version, cris_mode): Remove.
	(crisv32_single_step_through_delay): Use tdep->cris_mode.
	(cris_breakpoint_from_pc): Likewise.
	(cris_frame_unwind_cache): Use tdep->cris_version.
	(crisv32_scan_prologue): Likewise.
	(cris_spec_reg_applicable): Add gdbarch argument.
	Use tdep->cris_version.
	(cris_register_size, cris_special_register_name): Update calls.
	(cris_special_register_name): Add gdbarch argument.
	(cris_register_name, crisv32_register_name): Update calls.

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

	* m68hc11-tdep.c (gdb_print_insn_m68hc11): Use info->arch
	instead of current_gdbarch.

	* sh64-tdep.c (gdb_print_insn_sh64): Remove.
	(sh64_gdbarch_init): Install print_insn_sh64 directly.
	* sh-tdep.c (gdb_print_insn_sh): Remove.
	(sh_gdbarch_init): Install print_insn_sh directly.

	* mips-tdep.c (gdb_print_insn_mips): Do not check mips_abi
	from current_gdbarch.
	(gdb_print_insn_mips_n32, gdb_print_insn_mips_n64): New functions.
	(mips_gdbarch_init): Install them instead of gdb_print_insn_mips
	depending on mips_abi.

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

	* gdbarch.sh (addr_bits_remove): Change type to 'm'.
	(smash_text_address): Likewise.
	* gdbarch.c, gdbarch.h: Regenerate.

	* arch-utils.c (core_addr_identity): Add gdbarch parameter.
	* arch-utils.h (core_addr_identity): Likewise.
	* arm-tdep.c (arm_addr_bits_remove): Likewise.
	(arm_smash_text_address): Likewise.
	* hppa-tdep.c (hppa_smash_text_address): Likewise.
	* m88k-tdep.c (m88k_addr_bits_remove): Likewise.
	* s390-tdep.c (s390_addr_bits_remove): Likewise.

	* mips-tdep.c (mips_addr_bits_remove): Add gdbarch parameter.
	Use it instead of current_gdbarch.

	* arm-tdep.c (arm_prologue_prev_register, arm_unwind_pc,
	arm_dwarf2_prev_register): Update calls.
	* m88k-tdep.c (m88k_unwind_pc): Update call.

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

	* dwarf2expr.h (dwarf2_read_address): Add gdbarch argument.
	* dwarf2expr.c (dwarf2_read_address): Add gdbarch argument.
	Call gdbarch_integer_to_address directly instead of converting
	to value and back.  Update comment.
	(execute_stack_op): Update call site.
	* dwarf2loc.c (find_location_expression): Likewise.
	(locexpr_describe_location): Update

	* dwarf2expr.h (struct dwarf_expr_context): Add gdbarch member.
	* dwarf2-frame.c (execute_stack_op): Initialize ctx->gdbarch.
	* dwarf2loc. (dwarf2_evaluate_loc_desc): Likewise.
	(dwarf2_loc_desc_needs_frame): Likewise.

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

	* breakpoint.h (struct bp_location): Change type of section
	member to "struct obj_section *".
	* tracepoint.h (struct tracepoint): Likewise.
	* symtab.h (struct general_symbol_info): Replace bfd_section
	member with obj_section.
	(struct symtab_and_line): Change type of section member to
	"struct obj_section *".
	(SYMBOL_BFD_SECTION): Remove macro, replace by ...
	(SYMBOL_OBJ_SECTION): ... this.

	* minsym.c (prim_record_minimal_symbol_and_info): Record symbol
	section as obj_section instead of bfd_section.

	* ada-lang.c (ada_decode_symbol): Use gsymbol->obj_section
	directly instead of looking of obj_section from bfd_section.

	* objfiles.h (find_pc_sect_section): Remove.
	* objfiles.c (find_pc_sect_section): Remove.
	(find_pc_section): Inline find_pc_sect_section code.

	* symfile.h (find_pc_overlay): Return struct obj_section *.
	(find_pc_mapped_section): Likewise.
	(section_is_overlay, section_is_mapped): Change type of section
	argument to struct obj_section *.
	(pc_in_mapped_range, pc_in_unmapped_range): Likewise.
	(overlay_mapped_address, overlay_unmapped_address): Likewise.
	(symbol_overlayed_address): Likewise.
	* symtab.h (symbol_overlayed_address): Likewise.
	* symfile.c (overlay_is_mapped): Remove.
	(section_is_mapped): Inline overlay_is_mapped code.  Update.
	(overlay_invalidate_all): Update.
	(section_is_overlay): Change section argument to type
	"struct obj_section *".  Use bfd_ methods.
	(pc_in_unmapped_range): Likewise.  Handle relocated sections.
	(pc_in_mapped_range): Likewise.  Handle relocated sections.
	(sections_overlap): Likewise.
	(overlay_unmapped_address): Likewise.
	(overlay_mapped_address): Likewise.
	(symbol_overlayed_address): Likewise.
	(find_pc_overlay): Return struct obj_section *.
	(find_pc_mapped_section): Likewise.
	(list_overlays_command): Update.
	(map_overlay_command, unmap_overlay_command): Update.
	(simple_overlay_update): Update.

	* block.h (blockvector_for_pc_sect): Change section argument
	to type "struct obj_section *".
	(block_for_pc_sect): Likewise.
	* block.c (blockvector_for_pc_sect): Change section argument
	to type "struct obj_section *".
	(block_for_pc_sect): Likewise.
	* symtab.h (find_pc_sect_function, find_pc_sect_psymtab,
	find_pc_sect_symtab, find_pc_sect_psymbol, find_pc_sect_line,
	lookup_minimal_symbol_by_pc_section, find_function_start_pc): Likewise.
	(matching_bfd_sections): Rename to ...
	(matching_obj_sections): ... this.  Update argument types.
	* blockframe.c (find_pc_sect_function): Likewise.
	* breakpoint.c (describe_other_breakpoints): Likewise.
	(breakpoint_has_pc, check_duplicates_for): Likewise.
	* minsyms.c (lookup_minimal_symbol_by_pc_section_1): Likewise.
	(lookup_minimal_symbol_by_pc_section): Likewise.
	* symtab.c (find_pc_sect_psymtab_closer): Likewise.
	(find_pc_sect_psymtab, find_pc_sect_psymbol, find_pc_sect_symtab,
	find_pc_sect_line, find_function_start_pc): Likewise.
	(matching_bfd_sections): Rename to ...
	(matching_obj_sections): ... this.  Update argument types.

	* blockframe.c (find_pc_partial_function): Update to section
	type changes.  No longer call find_pc_sect_section.
	(cache_pc_function_section): Change to type "struct obj_section *".
	* breakpoint.c (resolve_sal_pc): Update to section type changes.
	* exec.c (xfer_memory): Likewise.
	* findvar.c (read_var_value): Likewise.
	* infcmd.c (jump_command): Likewise.
	* linespec.c (minsym_found): Likewise.
	* maint.c (maintenance_translate_address): Likewise.
	* minsyms.c (lookup_minimal_symbol_by_pc_section_1): Likewise.
	(lookup_solib_trampoline_symbol_by_pc): Likewise.
	* parse.c (write_exp_msymbol): Likewise.
	* printcmd.c (build_address_symbolic): Likewise.
	(address_info, sym_info): Likewise.
	* symmisc.c (dump_msymbols, print_symbol): Likewise.
	* symtab.c (fixup_section): Likewise.
	(fixup_symbol_section, fixup_psymbol_section): Likewise.
	(find_pc_line, find_function_start_sal): Likewise.
	* target.c (memory_xfer_partial): Likewise.
	* hppa-hpux-tdep.c (hppa64_hpux_in_solib_call_trampoline): Likewise.
	* spu-tdep.c (spu_overlay_update): Likewise.

2008-09-04  Doug Evans  <dje@google.com>

	* defs.h (plongest,pulongest): Renamed from paddr_u,paddr_d.
	Change argument of pulongest from CORE_ADDR to ULONGEST.
	All callers updated.
	* utils.c (plongest): Renamed from paddr_d.
	(pulongest): Renamed from paddr_u, change arg type to ULONGEST.
	* remote-mips.c (send_srec): Use paddr_nz instead of paddr_u in
	`CORE_ADDR addr' arg of error message.

2008-09-03  Angela Marie Thomas <angela@releasedominatrix.com>

	* ser-tcp.c (ser_tcp_send_break): New function.
	(_initialize_ser_tcp): Use ser_tcp_send_break.
	* ser-tcp.h (ser_tcp_send_break): New prototype.

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

	* spu-tdep.c (spu_push_dummy_call): Update all stack pointer slots
	when allocating stack frame for inferior call.

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

	* spu-tdep.c (spu_frame_unwind_cache): Do not attempt to unwind
	SP or return address if we failed to find a valid frame.

2008-09-03  Aleksandar Ristovski  <aristovski@qnx.com>

	* breakpoint.c (breakpoint_init_inferior): Mark as not inserted only
	non-permanent breakpoints.
	(bpstat_stop_status): Change enable_state to bp_disabled only for
	non-permanent breakpoints.
	(bp_loc_is_permanent): New function.
	(create_breakpoint): Check if the location points to a permanent
	breakpoint and if it does, make breakpoint permanent.
	(update_breakpoint_locations): Make sure new locations of permanent
	breakpoints are properly initialized.
	* i386-tdep.c (i386_skip_permanent_breakpoint): New function.
	(i386_gdbarch_init): Set gdbarch_skip_permanent_breakpoint.

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

	* breakpoint.c (insert_breakpoints, update_global_location_list):
	Check breakpoints_always_inserted_mode instead of
	always_inserted_mode directly.

2008-09-02  Andreas Schwab  <schwab@suse.de>

	* ia64-tdep.c (ia64_get_dyn_info_list): Use obj_section_addr.

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

	Stay compatible after the GCC PR fortran/29635 fix.
	* dwarf2read.c (process_die <DW_TAG_imported_module>)
	(process_die <DW_TAG_imported_module>): Do not assert anything about
	these unsupported tags.

2008-08-29  Tom Tromey  <tromey@redhat.com>

	* maint.c (_initialize_maint_cmds): Fix typo.

2008-08-29  Tom Tromey  <tromey@redhat.com>

	* dwarf2read.c (dwarf2_build_psymtabs_hard): Copy dirname on
	obstack.

2008-08-27  Ulrich Weigand  <uweigand@de.ibm.com>

	* remote.c: Include "gdb_stat.h".

2008-08-26  Ulrich Weigand  <uweigand@de.ibm.com>

	* dummy-frame.h (dummy_frame_pop): Add prototype.
	* dummy-frame.c: Include "observer.h".
	(dummy_frame_push): Do not check for stale frames.
	(dummy_frame_pop): New function.
	(cleanup_dummy_frames): New function.
	(_initialize_dummy_frame): Install it as inferior_created observer.

	* frame.h (struct frame_id): Update comments.
	(frame_id_inner): Remove prototype.
	* frame.c (frame_id_inner): Make static.  Add comments.
	(frame_find_by_id): Update frame_id_inner safety net check to avoid
	false positives for targets using non-contiguous stack ranges.
	(get_prev_frame_1): Update frame_id_inner safety net check.
	(frame_pop): Call dummy_frame_pop when popping a dummy frame.

	* stack.c (return_command): Directly pop the selected frame.
	* infrun.c (handle_inferior_event): Remove dead code.
	* i386-tdep.c (i386_push_dummy_call): Update comment.

2008-08-26  Ulrich Weigand  <uweigand@de.ibm.com>

	* breakpoint.c (remove_breakpoint): Do not fail if unable to remove
	breakpoint from shared library.

2008-08-26  Ulrich Weigand  <uweigand@de.ibm.com>

	* solib-svr4.c (read_program_header): New function.
	(scan_dyntag_auxv): New function.
	(elf_locate_base): Use it if scan_dyntag fails.
	(find_program_interpreter): New function.
	(enable_break): Use it instead of .interp section.

2008-08-26  Ulrich Weigand  <uweigand@de.ibm.com>

	* remote.h (remote_filename_p, remote_bfd_open): Add prototypes.
	* remote.c (remote_bfd_iovec_open, remote_bfd_iovec_close,
	remote_bfd_iovec_pread, remote_bfd_iovec_stat, remote_filename_p,
	remote_bfd_open): New functions.
	(remote_hostio_send_command): Fail safely if remote connection
	is not set up.

	* solist.h (solib_open): Remove prototype.
	(solib_bfd_open): Add prototype.
	* solib.c: Include "remote.h".
	(solib_open): Remove, replace by ...
	(solib_bfd_open): ... this new function.  Handle remote BFDs.
	(solib_map_sections): Replace solib_open by solib_bfd_open.
	* solib-frv.c: Include "exceptions.h".
	(enable_break2): Replace solib_open by solib_bfd_open.
	* solib-svr4.c: Include "exceptions.h".
	(enable_break): Replace solib_open by solib_bfd_open.

	* symfile.c: Include "remote.h".
	(build_id_verify): Handle remote BFDs.
	(separate_debug_file_exists): Use BFD to access file.  Handle
	remote BFDs.
	(symfile_bfd_open): Handle remote BFDs.
	(reread_symbols): Handle remote BFDs.

	* NEWS: Mention "remote:" argument prefix to "set sysroot".

2008-08-26  Ulrich Weigand  <uweigand@de.ibm.com>

	* gdbarch.sh (target_gdbarch): New global variable.
	(deprecated_current_gdbarch_select_hack): Set it.
	* gdbarch.c, gdbarch.h: Regenerate.

	* arch-utils.c (gdbarch_update_p): Use target_gdbarch instead
	of current_gdbarch.
	* target-descriptions.c (target_find_description): Likewise.
	* arm-tdep.c (arm_update_current_architecture): Likewise.
	(show_fp_model, arm_show_abi, arm_show_fallback_mode, 
	arm_show_force_mode): Likewise.
	* mips-tdep.c (show_mask_address, show_mipsfpu_command,
	show_mips_abi): Likewise.
	* mep-tdep.c (me_module_register_set, current_me_module): Likewise.

	* target.c (target_translate_tls_address): Use target_gdbarch
	instead of current_gdbarch.
	* remote.c (struct packet_reg): Likewise.
	(get_remote_arch_state, packet_reg_from_regnum,
	packet_reg_from_pnum, remote_check_symbols, remote_wait,
	remote_address_masked, remote_insert_breakpoint,
	remote_insert_hw_breakpoint, remote_read_description): Likewise.
	* remote-m32r-sdi.c (m32r_resume, m32r_wait): Likewise.
	* remote-mips.c (mips_open, mips_common_breakpoint): Likewise.
	* cris-tdep.c (cris_can_use_hardware_watchpoint): Likewise.

	* solib.c (solib_open, solib_map_sections, solib_read_symbols,
	solib_add, info_sharedlibrary_command, solib_address, 
	solib_create_inferior_hook, in_solib_dynsym_resolve_code,
	solib_global_lookup): Likewise.
	* solib-frv.c (enable_break2, frv_relocate_main_executable): Likewise.
	* solib-irix.c (irix_current_sos, irix_open_symbol_file_object):
	Likewise.
	* solib-sunos.c (sunos_solib_create_inferior_hook): Likewise.
	* solib-svr4.c (exec_entry_point, enable_break, svr4_free_so,
	set_solib_svr4_fetch_link_map_offsets, svr4_fetch_link_map_offsets):
	Likewise.
	* nto-tdep.c (nto_find_and_open_solib, nto_init_solib_absolute_prefix,
	nto_truncate_ptr): Likewise.
	* mips-linux-tdep.c (mips_linux_in_dynsym_stub): Likewise.

2008-08-26  Luis Machado  <luisgpm@br.ibm.com>

	* ppc-linux-tdep.c (ppc_linux_vsx_regset_sections) New structure.
	(ppc_linux_vmx_regset_sections): New structure.
	(ppc_linux_fp_regset_sections): New structure.
	(ppc_linux_init_abi): Select core-file regset  based on target
	features.

2008-08-26  Ulrich Weigand  <uweigand@de.ibm.com>

	* target.c (debug_print_register): Use regcache_raw_collect
	instead of regcache_cooked_read.  Only handle raw registers.

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

	* cp-name-parser.y: Include config.h before system headers.

2008-08-25  Ulrich Weigand  <uweigand@de.ibm.com>

	* m88k-tdep.c: Update for unwinder changes.

2008-08-24  Tom Tromey  <tromey@redhat.com>

	* s390-tdep.c (s390_address_class_type_flags): Use
	TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1.
	(s390_address_class_type_flags_to_name): Likewise.
	(s390_address_class_name_to_type_flags): Likewise.

2008-08-24  Tom Tromey  <tromey@redhat.com>

	* rs6000-tdep.c (rs6000_builtin_type_vec128): Don't use
	TYPE_FLAGS.
	* features/rs6000/powerpc-vsx32l.c
	(initialize_tdesc_powerpc_vsx32l): Update.
	* features/rs6000/powerpc-vsx32.c
	(initialize_tdesc_powerpc_vsx32): Update.
	* features/rs6000/powerpc-vsx64.c
	(initialize_tdesc_powerpc_vsx64): Update.
	* features/rs6000/powerpc-vsx64l.c
	(initialize_tdesc_powerpc_vsx64l): Update.
	* target-descriptions.c (maint_print_c_tdesc_cmd): Emit
	TYPE_VECTOR, not TYPE_FLAGS.

2008-08-24  Tom Tromey  <tromey@redhat.com>

	* xml-tdesc.c (tdesc_end_union): Update.
	* stabsread.c (define_symbol): Update.
	(read_type): Update.
	(read_struct_type): Update.
	(read_enum_type): Update.
	* spu-tdep.c (spu_builtin_type_vec128): Update.
	* sh-tdep.c (sh_push_dummy_call_fpu): Update.
	(sh_push_dummy_call_nofpu): Update.
	* mdebugread.c (parse_symbol): Update.
	(parse_symbol): Update.
	(parse_symbol): Update.
	(upgrade_type): Update.
	* jv-lang.c (java_lookup_class): Update.
	* iq2000-tdep.c (iq2000_pointer_to_address): Update.
	* i386-tdep.c (i386_mmx_type): Update.
	(i386_sse_type): Update.
	* gdbtypes.h (enum type_flag_value): New enum.
	(enum type_instance_flag_value): New enum.
	(TYPE_FLAG_UNSIGNED, TYPE_FLAG_NOSIGN, TYPE_FLAG_STUB,
	TYPE_FLAG_TARGET_STUB, TYPE_FLAG_STATIC, TYPE_FLAG_PROTOTYPED,
	TYPE_FLAG_INCOMPLETE, TYPE_FLAG_VARARGS, TYPE_FLAG_VECTOR,
	TYPE_FLAG_FIXED_INSTANCE, TYPE_FLAG_STUB_SUPPORTED,
	TYPE_FLAG_NOTTEXT): Now enum constants.
	(TYPE_FLAG_CONST, TYPE_FLAG_VOLATILE, TYPE_FLAG_CODE_SPACE,
	TYPE_FLAG_DATA_SPACE, TYPE_FLAG_ADDRESS_CLASS_1,
	TYPE_FLAG_ADDRESS_CLASS_2): Remove.
	(TYPE_INSTANCE_FLAG_CONST, TYPE_INSTANCE_FLAG_VOLATILE,
	TYPE_INSTANCE_FLAG_CODE_SPACE, TYPE_INSTANCE_FLAG_DATA_SPACE,
	TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1,
	TYPE_INSTANCE_FLAG_ADDRESS_CLASS_2): New constants.
	(TYPE_UNSIGNED, TYPE_NOSIGN, TYPE_STUB, TYPE_TARGET_STUB,
	TYPE_STATIC, TYPE_PROTOTYPED, TYPE_INCOMPLETE, TYPE_VARARGS,
	TYPE_VECTOR, TYPE_FIXED_INSTANCE, TYPE_STUB_SUPPORTED,
	TYPE_NOTTEXT): Update.
	(TYPE_FLAG_ADDRESS_CLASS_ALL): Remove.
	(TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL): New define.
	(TYPE_VOLATILE, TYPE_CODE_SPACE, TYPE_DATA_SPACE,
	TYPE_ADDRESS_CLASS_1, TYPE_ADDRESS_CLASS_2,
	TYPE_ADDRESS_CLASS_ALL): Update.
	(struct main_type) <flags>: Remove.
	<flag_unsigned, flag_nosign, flag_stub, flag_target_stub,
	flag_static, flag_prototyped, flag_incomplete, flag_varargs,
	flag_vector, flag_stub_supported, flag_nottext,
	flag_fixed_instance>: New fields.
	<nfields, vptr_fieldno>: Move earlier.
	(TYPE_FLAGS): Remove.
	* gdbtypes.c (make_pointer_type): Update.
	(address_space_name_to_int): Update.
	(address_space_int_to_name): Update.
	(make_type_with_address_space): Update.
	(make_cv_type): Update.
	(create_range_type): Update.
	(get_discrete_bounds): Update.
	(create_set_type): Update.
	(make_vector_type): Update.
	(smash_to_method_type): Update.
	(check_typedef): Update.
	(check_stub_method): Update.
	(init_type): Individually assign flag fields.
	(recursive_dump_type): Don't print entire TYPE_FLAGS field.  Do
	print TYPE_FIXED_INSTANCE, TYPE_STUB_SUPPORTED, and TYPE_NOTTEXT.
	(copy_type_recursive): Copy the entire main type.  Don't use
	TYPE_FLAGS.
	* features/rs6000/powerpc-altivec64l.c
	(initialize_tdesc_powerpc_altivec64l): Update.
	* features/rs6000/powerpc-altivec64.c
	(initialize_tdesc_powerpc_altivec64): Update.
	* features/rs6000/powerpc-altivec32l.c
	(initialize_tdesc_powerpc_altivec32l): Update.
	* features/rs6000/powerpc-altivec32.c
	(initialize_tdesc_powerpc_altivec32): Update.
	* features/rs6000/powerpc-7400.c (initialize_tdesc_powerpc_7400):
	Update.
	* features/arm-with-iwmmxt.c (initialize_tdesc_arm_with_iwmmxt):
	Update.
	* dwarf2read.c (read_structure_type): Update.
	(read_enumeration_type): Likewise.
	(process_enumeration_scope): Likewise.
	(read_tag_pointer_type): Likewise.
	(read_subroutine_type): Likewise.
	(read_subroutine_type): Likewise.
	(read_base_type): Likewise.
	* coffread.c (coff_read_enum_type): Update.
	* ada-valprint.c (adjust_type_signedness): Update.
	* ada-typeprint.c (print_record_field_types): Update.
	* ada-lang.c (packed_array_type): Update.
	(empty_record): Don't reset TYPE_FLAGS.
	(ada_template_to_fixed_record_type_1): Update.
	(ada_template_to_fixed_record_type_1): Likewise.
	(template_to_static_fixed_type): Likewise.
	(to_record_with_fixed_variant_part): Likewise.
	(to_fixed_record_type): Likewise.
	(to_fixed_array_type): Likewise.
	(to_static_fixed_type): Likewise.

2008-08-23  Jim Blandy  <jimb@redhat.com>

	PR macros/607:
	* symmisc.c (print_symbol_bcache_statistics): Include statistics
	for the macro bcache.

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

	* macrotab.h (struct macro_definition) <kind>: Shrink to one bit.
	(argc): Now 31 bits.

2008-08-22  Tom Tromey  <tromey@redhat.com>

	* NEWS: Move macro entries back under "New commands".

2008-08-22  Ulrich Weigand  <uweigand@de.ibm.com>

	* breakpoint.c (create_overlay_event_breakpoint): Rename to ...
	(create_overlay_event_breakpoint_1): ... this.  Add OBJFILE parameter.
	(create_overlay_event_breakpoint): Loop over all objfiles to install
	multiple instances of the overlay event breakpoint if present.

2008-08-22  Ulrich Weigand  <uweigand@de.ibm.com>

	* spu-tdep.c (spu_overlay_new_objfile): Only consider SPU objfiles.
	(info_spu_event_command): Command only supported on SPU architecture.
	(info_spu_signal_command): Likewise.
	(info_spu_mailbox_command): Likewise.
	(info_spu_dma_command): Likewise.
	(info_spu_proxydma_command): Likewise.

2008-08-22  Ulrich Weigand  <uweigand@de.ibm.com>

	* infrun.c (adjust_pc_after_break): Do not call get_thread_regcache
	if the thread has already exited.

2008-08-22  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (proceed): Move back setting previous_inferior_ptid
	from here ...
	(wait_for_inferior): ... to here.
	(fetch_inferior_event): ... and here.

2008-08-21  Ulrich Weigand  <uweigand@de.ibm.com>

	* gdbarch.sh: Include "regcache.h" into gdbarch.c.
	(deprecated_current_gdbarch_select_hack): Call registers_changed
	instead of reinit_frame_cache.
	* gdbarch.c: Regenerate.

2008-08-21  Ulrich Weigand  <uweigand@de.ibm.com>

	* elfread.c (elf_symtab_read): Do not relocate thread-local symbols.

2008-08-21  Daniel Jacobowitz  <dan@codesourcery.com>

	* xcoffread.c (SYMNAME_ALLOC): Correct syntax.

2008-08-21  Ulrich Weigand  <uweigand@de.ibm.com>

	* findvar.c (locate_var_value): Do not call get_frame_arch
	with a NULL frame argument.

2008-08-21  Ulrich Weigand  <uweigand@de.ibm.com>

	* frame.h (frame_map_regnum_to_name): Remove prototype.
	(frame_map_name_to_regnum): Remove prototype.
	* frame.c (frame_map_regnum_to_name): Remove.
	(frame_map_name_to_regnum): Remove.
	(frame_unwind_register_value): Use user_reg_map_regnum_to_name
	instead of frame_map_regnum_to_name.
	* ax-gdb.c: Include "user-regs.h".
	(gen_expr): Use user_reg_map_name_to_regnum instead of
	frame_map_name_to_regnum.
	* eval.c:  Include "user-regs.h".
	(evaluate_subexp_standard): Use user_reg_map_name_to_regnum
	instead of frame_map_name_to_regnum.
	* infcmd.c (registers_info): Likewise.
	* parse.c: Include "user-regs.h".
	(write_dollar_variable): Use user_reg_map_name_to_regnum
	instead of frame_map_name_to_regnum.
	* tracepoint.c: Include "user-regs.h".
	(encode_actions): Use user_reg_map_name_to_regnum
	instead of frame_map_name_to_regnum.
	* valops.c: Include "user-regs.h".
	(value_fetch_lazy): Use user_reg_map_regnum_to_name instead
	of frame_map_regnum_to_name.

2008-08-21  Ulrich Weigand  <uweigand@de.ibm.com>

	* ppc-linux-tdep.c (ppc64_linux_convert_from_func_ptr_addr): Read
	and manually relocate .opd contents from BFD instead of reading
	them from target memory.

2008-08-21  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (processing_current_prefix): Delete static
	variable.
	(process_full_comp_unit): Do not set processing_current_prefix.
	(dwarf2_full_name): New function.
	(read_func_scope): Do not set processing_current_prefix.  Use
	determine_prefix.
	(read_structure_type): Do not set processing_current_prefix.  Remove
	unused inner cleanup.
	(process_structure_scope): Do not set processing_current_prefix.
	(read_enumeration_type): Use dwarf2_full_name.
	(determine_class_name): Return a const char *.  Put the result
	on the objfile obstack.  Use dwarf2_full_name.
	(read_namespace_type): New function.
	(read_namespace): Do not create the type here.  Use
	determine_prefix.
	(read_typedef): Use dwarf2_full_name.  Do not pass the name
	to init_type.
	(read_base_type): Do not pass the name to init_type.  Handle
	TYPE_FLAG_NOSIGN.
	(read_unspecified_type): Do not pass the name to init_type.
	(new_symbol): Use dwarf2_full_name instead of
	processing_current_prefix.
	(read_type_die): Do not set processing_current_prefix.  Handle
	DW_TAG_namespace.
	(determine_prefix): Handle specifications.  Return the result
	on the objfile obstack.  Handle unions correctly.

2008-08-21  Daniel Jacobowitz  <dan@codesourcery.com>

	* buildsym.c (add_symbol_to_list): Do not call
	cp_scan_for_anonymous_namespaces here.
	(finish_block): Do not call cp_set_block_scope here.
	* cp-namespace.c (processing_has_namespace_info)
	(processing_current_prefix): Delete.
	(cp_initialize_namespace): Do not initialize
	processing_has_namespace_info.
	(cp_scan_for_anonymous_namespaces): Use SYMBOL_DEMANGLED_NAME.  Do
	not check processing_has_namespace_info.
	(cp_set_block_scope): Take prefix and namespace info flag as
	arguments.  Honor namespaces regardless of a demangled name.
	* cp-support.h (processing_has_namespace_info)
	(processing_current_prefix): Delete declarations.
	(cp_set_block_scope): Update prototype.
	* dwarf2read.c (processing_has_namespace_info)
	(processing_current_prefix): New static variables.
	(read_file_scope): Initialize processing_has_namespace_info.
	(read_func_scope): Call cp_set_block_scope for C++.
	(new_symbol): Call cp_scan_for_anonymous_namespaces for C++.
	* symtab.c (symbol_demangled_name): Accept a const argument.
	* symtab.h (symbol_demangled_name): Update prototype.

2008-08-21  Daniel Jacobowitz  <dan@codesourcery.com>

	* ax-gdb.c (gen_var_ref): Use SYMBOL_LINKAGE_NAME.
	* blockframe.c (find_pc_partial_function): Likewise.
	* buildsym.c (find_symbol_in_list): Likewise.
	* c-valprint.c (c_val_print): Likewise.
	* coffread.c (patch_opaque_types, process_coff_symbol): Likewise.
	(coff_read_enum_type): Likewise.  Use SYMBOL_SET_LINKAGE_NAME.
	* cp-support.c (cp_remove_params): Renamed from remove_params and
	made global.
	(overload_list_add_symbol): Update call to remove_params.
	* cp-support.h (cp_remove_params): Declare.
	* dwarf2read.c (process_enumeration_scope): Use SYMBOL_LINKAGE_NAME.
	(dwarf2_const_value): Use SYMBOL_PRINT_NAME.
	* expprint.c (dump_subexp_body_standard): Likewise.
	* f-valprint.c (info_common_command, there_is_a_visible_common_named):
	Use SYMBOL_LINKAGE_NAME to find symbols and SYMBOL_PRINT_NAME
	for messages.
	* findvar.c (read_var_value): Use SYMBOL_LINKAGE_NAME.
	* gnu-v2-abi.c (gnuv2_value_rtti_type): Likewise.
	* hppa-hpux-tdep.c (hppa32_hpux_in_solib_call_trampoline)
	(hppa_hpux_skip_trampoline_code): Use SYMBOL_LINKAGE_NAME to find
	symbols and SYMBOL_PRINT_NAME for messages.
	* jv-lang.c (add_class_symbol): Use SYMBOL_SET_LINKAGE_NAME.
	* linespec.c (decode_line_2): Use SYMBOL_LINKAGE_NAME.
	* mdebugread.c (parse_symbol): Use SYMBOL_LINKAGE_NAME and
	SYMBOL_SET_LINKAGE_NAME.
	(mylookup_symbol): Use SYMBOL_LINKAGE_NAME.
	* minsyms.c (add_minsym_to_demangled_hash_table): Use
	SYMBOL_SEARCH_NAME.
	(lookup_minimal_symbol): Use SYMBOL_LINKAGE_NAME or
	SYMBOL_MATCHES_SEARCH_NAME, depending on the pass.
	* objfiles.h (ALL_OBJFILE_MSYMBOLS): Use SYMBOL_LINKAGE_NAME.
	* printcmd.c (build_address_symbolic): Use SYMBOL_LINKAGE_NAME.
	(address_info): Use SYMBOL_PRINT_NAME for messages and
	SYMBOL_LINKAGE_NAME for lookups.
	* sol-thread.c (info_cb): Use SYMBOL_PRINT_NAME for messages.
	* stabsread.c (patch_block_stabs, define_symbol)
	(read_type, read_enum_type, common_block_end)
	(cleanup_undefined_types_1, scan_file_globals): Use
	SYMBOL_LINKAGE_NAME, SYMBOL_SET_LINKAGE_NAME, ALL_OBJFILE_MSYMBOLS,
	and SYMBOL_PRINT_NAME.
	* stack.c (print_frame_args): Use SYMBOL_LINKAGE_NAME.
	(print_frame, frame_info): Use SYMBOL_PRINT_NAME for output.  Use
	cp_remove_params instead of cplus_demangle.
	(print_block_frame_labels, print_frame_arg_vars): Use
	SYMBOL_LINKAGE_NAME.
	* symmisc.c (dump_msymbols): Use ALL_OBJFILE_MSYMBOLS and
	SYMBOL_LINKAGE_NAME.
	(dump_symtab_1, print_symbol, print_partial_symbols)
	(maintenance_check_symtabs): Use SYMBOL_LINKAGE_NAME.
	* symtab.h (DEPRECATED_SYMBOL_NAME): Delete.
	(SYMBOL_SET_LINKAGE_NAME): New.
	(SYMBOL_SET_NAMES): Add a comment.
	* tracepoint.c (set_traceframe_context, validate_actionline)
	(collect_symbol, scope_info): Use SYMBOL_LINKAGE_NAME for
	lookups and SYMBOL_PRINT_NAME for output.
	* typeprint.c (typedef_print): Use SYMBOL_LINKAGE_NAME.
	* xcoffread.c (process_xcoff_symbol): Use SYMBOL_SET_LINKAGE_NAME.

2008-08-21  Pedro Alves  <pedro@codesourcery.com>

	* arm-tdep.c (arm_pc_is_thumb): Use obj_section_addr.
	* hppa-hpux-tdep.c (hppa_hpux_find_dummy_bpaddr): Likewise.
	* hppa-linux-tdep.c (hppa_linux_find_global_pointer): Use
	obj_section_addr and obj_section_endaddr.
	* hppa-tdep.c (hppa64_convert_code_addr_to_fptr): Likewise.
	* hppabsd-tdep.c (hppabsd_find_global_pointer): Likewise.
	* ia64-tdep.c (ia64_find_global_pointer): Likewise.
	(find_extant_func_descr): Likewise.
	* solib-frv.c (frv_relocate_main_executable): Use
	obj_section_addr.
	* xstormy16-tdep.c (xstormy16_find_jmp_table_entry): Use
	obj_section_addr and obj_section_endaddr.

2008-08-21  Paul N. Hilfinger  <hilfinger@adacore.com>

	* NEWS: Amplify last entry on boolean types in Ada.

2008-08-20  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (die_specification, dwarf2_extension, follow_die_ref):
	Make the dwarf2_cu * parameter output as well as input.  Update it if
	we follow a reference to another CU.
	(read_func_scope, determine_class_name, namespace_name, dwarf2_attr)
	(die_type, die_containing_type): Update calls to changed functions.
	Use the returned CU along with the returned DIE.
	(read_namespace): Use dwarf2_attr instead of dwarf2_extension.

2008-08-20  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (queue_comp_unit): Take an objfile argument.  Read
	in the DIEs here.
	(process_queue): Do not read in the DIEs here.
	(psymtab_to_symtab_1): Update call to queue_comp_unit.
	(read_full_die): Do not call queue_comp_unit from here.
	(maybe_queue_comp_unit): New function.
	(follow_die_ref): Use it.

2008-08-20  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (struct attribute): Move earlier.
	(struct die_info): Change attrs to a trailing array.
	(dwarf_alloc_die): Take the number of attributes.  Allocate space
	for them.
	(read_full_die): Update call to dwarf_alloc_die.  Do not manually
	allocate attributes.

2008-08-20  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (REF_HASH_SIZE): Delete.
	(struct dwarf2_cu): Replace die_ref_table with die_hash.
	(struct die_info): Remove next_ref.
	(store_in_ref_table): Remove offset argument.  Rewrite to use
	htab_find_slot_with_hash.
	(die_hash, die_eq): New.
	(read_comp_unit): Allocate the die_hash.
	(read_die_and_children): Update call to store_die_ref.
	(follow_die_ref): Rewrite to use htab_find_with_hash.

2008-08-20  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (free_die_list, copy_die): Delete.
	(dwarf_alloc_die): Take a CU argument.  Allocate the new DIE
	on the obstack.
	(read_full_die): Update call to dwarf_alloc_die.  Allocate
	attributes on the CU obstack.
	(free_one_comp_unit): Do not call free_die_list.

2008-08-20  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (read_die_and_children): Ignore NULL DIEs.
	(read_die_and_siblings): Likewise.  Do not add padding DIEs to the
	sibling list.
	(read_full_die): Do not allocate DIEs for abbrev 0.
	(follow_die_ref): Correct error message.

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

	* linespec.c (symtab_from_filename): Also throw NOT_FOUND_ERROR if
	there are no symbols loaded, instead of throwing a generic error.
	(decode_variable): Likewise.

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

	* objfiles.h (struct obj_section): Remove addr and endaddr fields.
	(obj_section_offset, obj_section_addr, obj_section_endaddr): New
	macros.
	* objfiles.c (add_to_objfile_sections): Don't set addr, endaddr
	and offset.  Use size_t instead of unsigned long.
	(build_objfile_section_table): Use size_t instead of unsigned
	long.
	(objfile_relocate): Don't relocate s->addr and s->endaddr, they're
	gone.
	(find_pc_sect_section): Use obj_section_addr and
	obj_section_endaddr.
	* symfile.c (symfile.c): Remove code that maps sections
	offsets in "addr" to the object's sections.
	* blockframe.c (find_pc_partial_function): Use obj_section_endaddr.
	* gcore.c (gcore_create_callback): Use obj_section_addr and
	obj_section_endaddr.
	* maint.c (print_objfile_section_info): Likewise.
	* printcmd.c (sym_info): Use obj_section_addr and
	obj_section_endaddr.
	* symtab.c (fixup_section): Likewise.

2008-08-20  Mark Kettenis  <kettenis@gnu.org>

	* sparc-tdep.c: Make some comments catch up with reality.

2008-08-20  Vladimir Prus  <vladimir@codesourcery.com>

	* NEWS: Mention 'set target-async'

2008-08-19  Vladimir Prus  <vladimir@codesourcery.com>

	* infrun.c (resume): If the thread is placed to the deferred step
        queue, mark it as running.

2008-08-19  Vladimir Prus  <vladimir@codesourcery.com>

	Make sure target supports non-stop.
        * infcmd.c (run_command_1, attach_command): If non-stop mode
        is requested, verify the target supports it.
        * linux-nat.c (linux_nat_supports_non_stop): New.
        (linux_nat_add_target): Register the above.
        * target.c (find_default_supports_non_stop)
        (target_supports_non_stop): New.
        (init_dummy_target): Register find_default_supports_non_stop.
        * target.h (struct target_ops): New field to_supports_non_stop.
        (target_supports_non_stop): New.

2008-08-19  Pedro Alves  <pedro@codesourcery.com>
  	    Vladimir Prus  <vladimir@codesourcery.com>

	* target.c (target_async_permitted, target_async_permitted_1)
        (set_maintenance_target_async_permitted)
        (show_maintenance_target_async_permitted): New.
        (initialize_targets): Register 'set target-async'.
        * target.h (target_async_permitted): Declare.
        * linux-nat.c (linux_nat_async_enabled)
        (linux_nat_async_permitted, set_maintenance_linux_async_permitted)
        (show_maintenance_linux_async_permitted): Remove.
        (sigchld_handler, linux_nat_is_async_p, linux_nat_can_async_p)
        (get_pending_events, linux_nat_async): Use target_async_permitted.
        (linux_nat_set_async_mode): Remove, moving the only used bits
        into...
        (linux_nat_setup_async): This.
        (_initialize_linux_nat): Do not register 'maint set linux-async'.
        Use linux_nat_setup_async.
        * remote.c (remote_async_permitted, remote_async_permitted_set)
        (set_maintenance_remote_async_permitted)
        (show_maintenance_remote_async_permitted): Remove.
        (remote_open_1, remote_terminal_inferior, remote_can_async_p)
        (remote_is_async_p): Use target_async_permitted.
        (_initialize_remote): Don't register 'main set remote-async'.
        * mi/mi-cmds.c (mi_cmds): Register -list-target-features.
        * mi/mi-cmds.h (mi_cmd_list_target_features): New.
        * mi/mi-main.c (mi_cmd_list_target_features): New.

2008-08-19  Vladimir Prus  <vladimir@codesourcery.com>

	* target.c (maybe_kill_then_attach)
        (maybe_kill_then_create_inferior): Remove.
        (update_current_target): Do not default to_attach,
        to_create_inferiour, to_is_async_p.

2008-08-19  Paul N. Hilfinger  <hilfinger@adacore.com>
	
	Changes for supporting boolean types in debugging data.
	* ada-lang.c (discrete_type_high_bound,discrete_type_low_bound): Change 
	API to return LONGEST values rather than struct values.
	(ada_evaluate_subexp): Change to use new API of discrete_type_low_bound
	and discrete_type_high_bound.
	(to_fixed_range_type): Create a range type in cases where 
	argument is base type and its limits are representable as ints.
	(ada_is_modular_type): Correct so that base type must be integral.
	* ada-lex.l (TRUEKEYWORD,FALSEKEYWORD): Make 'true' and 'false' 
	keywords when they appear alone, since we are phasing out 
	direct representation of these identifiers in debugging data.
	* ada-exp.y: Define 'true' and 'false' as primaries.
	(type_boolean): New function.
	(type_int,type_long,type_long_long,type_floattype_double)
	(type_long_double): Remove uses of current_gdbarch for consistency
	with type_boolean.
	(write_int): Change comment to indicate that it might write boolean 
	constant as well.
	* ada-typeprint.c (ada_print_type): Print '(false, true)' for boolean
	type, since will no longer be represented as enumerated type in 
	debugging data.
	* ada-valprint.c (print_optional_low_bound): Handle boolean case
	as well.
	* NEWS: Note support boolean types.
	
2008-08-18  Pedro Alves  <pedro@codesourcery.com>

	* bsd-uthread.c (bsd_uthread_close): New.
	(bsd_uthread_deactivate): Don't cleanup here, just unpush the
	target.
	(bsd_uthread_solib_loaded): Fix typo.
	(bsd_uthread_target): Register bsd_uthread_close.

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

	* corelow.c (core_open): Assume there was no upper layer left
	behind from a previous inferior.
	* target.c (pop_all_targets): Rename to ...
	(pop_all_targets_above): ... this.  Add a target stratum
	parameter.  Use it instead of hardcoding the dummy_stratum.
	(pop_all_targets): New, defer to pop_all_targets_above.
	(target_preopen): Use pop_all_targets_above.
	* target.h (pop_all_targets_above): Declare.

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

	* gdbthread.h (thread_change_ptid): Declare.
	* infrun.c (infrun_thread_ptid_changed): New.
	(_initialize_infrun): Attach infrun_thread_ptid_changed to the
	thread_ptid_changed observer.
	* regcache.c (regcache_thread_ptid_changed): New.
	(_initialize_regcache): Attach regcache_thread_ptid_changed to the
	thread_ptid_changed observer.
	* thread.c (thread_change_ptid): New.

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

	* symfile.c (reread_symbols): Update.
	* solib-sunos.c (allocate_rt_common_objfile): Update.
	* objfiles.c (allocate_objfile): Update.
	* objfiles.h (struct objfile) <md, mmfd, deprecated_obj_private>:
	Remove.

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

	* gdbtypes.c (copy_type_recursive): Allocate 'stored' on objfile's
	obstack.

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

	* rs6000-tdep.c (struct rs6000_framedata): Add gpr_mask, used_bl,
	lr_register.
	(rs6000_in_function_epilogue_p): Check for bctr.
	(skip_prologue): Initialize lr_register.  Set lr_reg to a register
	number.  Set gpr_mask and used_bl.  Continue scanning while some
	expected registers are not saved.  Set lr_register if LR is not
	stored.
	(rs6000_frame_cache): Handle gpr_mask and lr_register.

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

	PR gdb/1535:
	* breakpoint.c (CATCH_PERMANENT, CATCH_TEMPORARY): New macros.
	(ep_find_event_name_end): Remove.
	(catch_fork_temporary, catch_vfork_temporary,
	catch_fork_permanent, catch_vfork_permanent): New constants.
	(catch_vfork, catch_fork): Remove.
	(catch_fork_command_1): Add 'command' argument.  Remove
	'fork_kind' and 'tempflag'.  Handle NULL 'arg'.  Update switch for
	all cases.
	(catch_exec_command_1): Add 'command' argument; remove
	'tempflag'.  Handle NULL 'arg'.
	(catch_load_command_1): Likewise.
	(catch_unload_command_1): Likewise.
	(catch_ada_exception_command): Likewise.
	(catch_assert_command): Likewise.
	(catch_catch_command): New function.
	(catch_throw_command): Likewise.
	(catch_command_1): Remove.
	(catch_command): Just call error.
	(tcatch_command): Likewise.
	(catch_cmdlist): New global.
	(tcatch_cmdlist): Likewise.
	(add_catch_command): New function.
	(_initialize_breakpoint): Create "catch" and "tcatch" as prefix
	commands.  Create all catch sub-commands.

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

	* gdbthread.h: Add comments.
	* stack.c (get_selected_block): Return 0 on an exited thread.
	* top.c (execute_command): Check for is_stopped, not !is_running.
	* event-top.c (command_handler): Likewise.

2008-08-16  Pedro Alves  <pedro@codesourcery.com>

	* mi/mi-main.c (mi_cmd_exec_next, mi_cmd_exec_next_instruction)
	(mi_cmd_exec_step, mi_cmd_exec_step_instruction)
	(mi_cmd_exec_finish): Remove "return".

2008-08-16  Pedro Alves  <pedro@codesourcery.com>

	* target.h (pop_all_targets): Declare.
	* target.c (pop_all_targets): New.
	* top.c (quit_target): Pop all targets instead of just closing the
	current.

2008-08-16  Vladimir Prus  <vladimir@codesourcery.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* cli-script.c (read_next_line): Add parse_commands argument.
	(recurse_read_control_structure): Adapt to new read_next_line
	signature.
	(read_command_lines): Add parse_commands argument.
	(define_command): Adapt to new read_command_lines signature.
	(document_command): Likewise.
	* breakpoint.c (commands_command): Likewise.
	* defs.h (read_command_lines): Adjust function prototype.

2008-08-16  Paul N. Hilfinger  <hilfinger@adacore.com>

	* ada-lang.c (pos_atr): Account for the possibility that the 
	argument may be a reference.

2008-08-16  Paul N. Hilfinger  <hilfingr@adacore.com>

	* xcoffread.c (scan_xcoff_symtab): Do not include global symbols
	('F' format) for @FIX names generated by the loader, retaining only
	the minimal symbols (and no partial symbol tables) for these names.
	Fixes warning messages about symbols that are found in partial 
	symbol tables, but not full symbol tables.

2008-08-16  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (fetch_inferior_event): Only call normal_stop if not
	stopping quietly.

2008-08-15  Luis Machado  <luisgpm@br.ibm.com>

	* rs6000-tdep: Include "features/rs6000/powerpc-vsx32.c".
	Include "features/rs6000/powerpc-vsx64.c".
	(ppc_supply_vsxregset): New function.
	(ppc_collect_vsxregset): New function.
	(IS_VSX_PSEUDOREG): New macro.
	(IS_EFP_PSEUDOREG): New macro.
	(vsx_register_p): New function.
	(ppc_vsx_support_p): New function.
	(rs6000_builtin_type_vec128): New function.
	(rs6000_register_name): Hide upper halves of vs0~vs31.  Return
	correct names for VSX registers and EFPR registers.
	(rs6000_pseudo_register_type): Return correct types for VSX
	and EFPR registers.
	(rs6000_pseudo_register_reggroup_p): Return correct group for
	VSX and EFPR registers.
	(ppc_pseudo_register_read): Rename to dfp_pseudo_register_read.
	(ppc_pseudo_register_write): Rename to dfp_pseudo_register_write.
	(vsx_pseudo_register_read): New function.
	(vsx_pseudo_register_write): New function.
	(efpr_pseudo_register_read): New function.
	(efpr_pseudo_register_write): New function.
	(rs6000_pseudo_register_read): Call new VSX and EFPR read functions.
	(rs6000_pseudo_register_write): Call new VSX and EFPR write functions.
	(rs6000_gdbarch_init): Declare have_vsx.
	Initialize new upper half VSX registers.
	Initialize VSX-related and EFPR-related pseudo-registers variables.
	Adjust the number of pseudo registers accordingly.

	* ppc-linux-nat.c: Define PTRACE_GETVSXREGS, PTRACE_SETVSXREGS
	and SIZEOF_VSRREGS.
	(gdb_vsxregset_t): New type.
	(have_ptrace_getsetvsxregs): New variable.
	(fetch_vsx_register): New function.
	(fetch_register): Handle VSX registers.
	(fetch_vsx_registers): New function.
	(fetch_ppc_registers): Handle VSX registers.
	(store_ppc_registers): Handle VSX registers.
	(store_vsx_register): New function.
	(store_register): Handle VSX registers.
	(store_vsx_registers): New function.
	(ppc_linux_read_description): Handle VSX-enabled inferiors.
	(gdb_vsxregset_t): New type.
	(supply_vsxregset): New function.
	(fill_vsxregset): New function.

	* ppc-tdep.h (vsx_register_p): New prototype.
	(vsx_support_p): New prototype.
	(ppc_vsr0_regnum): New variable.
	(ppc_vsr0_upper_regnum): Likewise.
	(ppc_efpr0_regnum): Likewise.
	(ppc_builtin_type_vec128): New type.
	(ppc_num_vsrs): New constant.
	(ppc_num_vshrs): New constant.
	(ppc_num_efprs): Likewise.
	Define POWERPC_VEC_VSX PPC_VSR0_UPPER_REGNUM and PPC_VSR31_UPPER_REGNUM.
	(ppc_supply_vsxregset): New prototype.
	(ppc_collect_vsxregset): New prototype.

	* ppc-linux-tdep.c: Include "features/rs6000/powerpc-vsx32l.c"
	Include "features/rs6000/powerpc-vsx64l.c".
	(_initialize_ppc_linux_tdep): Initialize VSX-enabled targets.
	(ppc_linux_regset_sections): Add new ".reg-ppc-vsx" field.
	(ppc32_linux_vsxregset): New 32-bit VSX-enabled regset.
	(ppc_linux_regset_from_core_section): Handle VSX core section.
	(ppc_linux_core_read_description): Support VSX-enabled core files.

	* ppc-linux-tdep.h: Declare *tdesc_powerpc_vsx32l
	Declare tdesc_powerpc_vsx64l

	* corelow.c (get_core_register_section): Support VSX-enabled
	core files.

	* features/rs6000/power-vsx.xml: New VSX descriptions.
	* features/rs6000/powerpc-vsx32.xml: New file.
	* features/rs6000/powerpc-vsx32l.xml: New file.
	* features/rs6000/powerpc-vsx64.xml: New file.
	* features/rs6000/powerpc-vsx64l.xml: New file.
	* features/rs6000/powerpc-vsx32.c: New file (generated).
	* features/rs6000/powerpc-vsx32l.c: New file (generated).
	* features/rs6000/powerpc-vsx64.c: New file (generated).
	* features/rs6000/powerpc-vsx64l.c: New file (generated).
	* features/Makefile: Updated with new descriptions.
	* regformats/rs6000/powerpc-vsx32l.dat: New file (generated).
	* regformats/rs6000/powerpc-vsx64l.dat: New file (generated).

2008-08-15  Vladimir Prus  <vladimir@codesourcery.com>

	* ia64-linux.nat (_initialize_ia64_linux_nat): Don't
	call linux_target twice.

2008-08-14  Aleksandar Ristovski  <aristovski@qnx.com>

	* nto-tdep.c (lm_info): Updated struct lm_info definition from
	solib-svr4.c
	(LM_ADDR): Use l_addr if available; if not, use link map and set 
	l_addr.

2008-08-14  Tom Tromey  <tromey@redhat.com>

	* macrocmd.c (macro_define_command): Check for NULL argument.
	(macro_undef_command): Likewise.

2008-08-14  Pedro Alves  <pedro@codesourcery.com>

	* infcmd.c (continue_1): Add an ERROR_NO_INFERIOR call.

2008-08-13  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (always_inserted_auto, always_inserted_on)
	(always_inserted_off, always_inserted_enums): New.
	(always_inserted_mode): Change type to char* and point to
	always_inserted_auto.
	(show_always_inserted_mode): In auto mode, also show the current
	effect of the option.
	(breakpoints_always_inserted_mode): Adjust for the new auto mode.
	(_initialize_breakpoint): Make the "set breakpoints
	always-inserted" command an enum command.  Extend help to describe
	the auto mode.

2008-08-13  Ulrich Weigand  <uweigand@de.ibm.com>

	* spu-tdep.c (info_spu_dma_command): Respect TSQV (tag status
	query valid) bit.  Ignore bits outside the condition field.
	(info_spu_proxydma_command): Ignore bits outside the field.

2008-08-12  Michael Snyder  <msnyder@vmware.com>

	* MAINTAINERS: Update my email address.

2008-08-12  Ulrich Weigand  <uweigand@de.ibm.com>

	* ppc-linux-nat.c (ppc_linux_get_hwcap): Really get AT_HWCAP.

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

	Add no-ack mode to the remote protocol --- optionally stop ACKing
	packets and responses when we have a reliable communication
	medium.

	Based on Apple's GDB, by Jason Molenda <jmolenda@apple.com>

	* remote.c (struct remote_state): Add noack_mode field.
	(PACKET_QStartNoAckMode): New.
	(remote_start_remote): Don't any outstanding packet here.
	(remote_open_1): Clear noack_mode.  Ack any outstanding packet
	here.  Activate noack mode if requested.
	(remote_protocol_features): Add QStartNoAckMode.
	(remote_open_1):
	(putpkt_binary): Don't send ack in noack mode.
	(read_frame): Don't recompute the checksum in noack mode.
	(getpkt_sane): Skip sending ack if in noack mode.
	(_initialize_remote): Add set/show remote noack mode.
	* NEWS:  Note the new features.

2008-08-11  Kevin Buettner  <kevinb@redhat.com>

 	* rs6000-tdep.c (BL_MASK, BL_INSTRUCTION, BL_DISPLACEMENT_MASK):
 	New macros.
 	(rs6000_skip_main_prologue): New function.
 	(rs6000_gdb_arch_init): Register rs6000_skip_main_prologue.

2008-08-11  Sandra Loosemore  <sandra@codesourcery.com>

	* MAINTAINERS (Write After Approval):  Add self.

2008-08-11  Stan Shebs  <stan@codesourcery.com>

	ARM BE8 support.
	* disasm.c (gdb_disassemble_info): Set endian_code.
	* gdbarch.sh (gdbarch_info): New field byte_order_for_code.
	* gdbarch.h, gdbarch.c: Regenerate.
	* arch-utils.c (initialize_current_architecture): Set the
	default byte_order_for_code.
	(gdbarch_info_init): Ditto.
	(gdbarch_info_fill): Ditto.
	* arm-tdep.c (SWAP_INT, SWAP_SHORT): New macros.
	(thumb_analyze_prologue): Swap halfword if code endianness is
	different from general endianness.
	(arm_skip_prologue): Similarly.
	(arm_scan_prologue): Ditto.
	(thumb_get_next_pc): Ditto.
	(arm_get_next_pc): Ditto.
	(arm_gdbarch_init): Set byte_order_for_code from BE8 flag,
	choose correct endianness for breakpoints.

2008-08-10  Pedro Alves  <pedro@codesourcery.com>

	* bsd-kvm.c: Include "gdbthread.h".
	(bsd_kvm_ptid): New.
	(bsd_kvm_open): Add a main thread.
	(bsd_kvm_close): Delete it.
	(bsd_kvm_thread_alive): New.
	(bsd_kvm_pid_to_str): New.
	(bsd_kvm_add_target): Register bsd_kvm_thread_alive and
	bsd_kvm_pid_to_str.
	(bsd_kvm_add_target): Initialize bsd_kvm_ptid.

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

	* buildsym.c (start_subfile): Properly cast sentinel in concat
	call.
	* cp-name-parser.y: Include "config.h".
	* xml-tdesc.c (fetch_xml_from_file): Properly cast sentinel in
	concat call.
	* gdb_select.h: Include sys/time.h if sys/select.h is not
	available.

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

	* go32-nat.c: Include "gdbthread.h".
	(go32_stop, go32_kill_inferior): Delete the main thread.
	(go32_create_inferior): Add it.
	(go32_thread_alive, go32_pid_to_str): New.
	(init_go32_ops): Register go32_thread_alive and go32_pid_to_str.

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

	* go32-nat.c (fetch_register, store_register): Pass the regcache
	gdbarch to i386_fp_regnum_p and i386_fpc_regnum_p.
	(go32_xfer_memory): Change type of myaddr parameter to gdb_byte.
	(struct seg_descr, struct seg_descr): pack the whole struct
	instead of each member individually.

2008-08-09  Andreas Schwab  <schwab@suse.de>

	* python/python.c (_initialize_python): Use unabbreviated commands
	in prefix name.

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

	* Makefile.in (stamp-h): Also create .deps.

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

	* Makefile.in (generated_files): Add GNULIB_H.

2008-08-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* solib-pa64.c (pa64_solib_create_inferior_hook): Don't set
	DT_HP_DEBUG_PRIVATE.  Add warning if DT_HP_DEBUG_PRIVATE is not set.
	Revise comment.
	(pa64_current_sos): Remove map private warning warning.
	* solib-som.c: Include string.h and sys/utsname.h.
	(get_hpux_major_release): New function.
	(som_solib_create_inferior_hook): Read dynamic linker header.  Warn
	about shared library private mapping on HP-UX 11 and later.  Only force
	private mapping of shared libraries on HP-UX 10 and earlier.
	(link_map_start): Delete warning.

2008-08-09  Xuepeng Guo  <xuepeng.guo@intel.com>
	    H.J. Lu  <hongjiu.lu@intel.com>
	    Mark Kettenis <kettenis@gnu.org>

	* amd64-tdep.c (amd64_frame_cache): Add saved_sp_reg.
	(amd64_init_frame_cache): Initialize saved_sp_reg.
	(amd64_analyze_stack_align): New.
	(amd64_analyze_prologue): Call it.
	(amd64_frame_cache): Use saved_sp_reg if it is invalid.  Don't set
	%rip to 8 when halfway aligning the stack.

	* amd64-tdep.h (amd64_regnum): Add AMD64_R9_REGNUM to
	AMD64_R14_REGNUM.

	* i386-tdep.c (i386_frame_cache): Remove stack_align.  Add
	saved_sp_reg.
	(i386_alloc_frame_cache): Remove stack_align.  Initialize
	saved_sp_reg to -1.
	(i386_analyze_stack_align): Rewrite.
	(i386_frame_cache): Use saved_sp_reg if it is valid.

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

	* target.c: Include "solib.h".
	(target_pre_inferior): Call no_shared_libraries.
	* infcmd.c (run_command_1): Do not call objfile_purge_solibs
	or clear_solib.
	(attach_command): Do not call clear_solib.

2008-08-09  Mark Kettenis  <kettenis@gnu.org>

	* i386obsd-nat.c (i386obsd_supply_pcb): Supply the right bytes for
	the %eip register.

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

	* Makefile.in (python.o): Remove dependencies.  Use COMPILE and
	POSTCOMPILE.
	(python-utils.o): Likewise.

2008-08-08  Andreas Schwab  <schwab@suse.de>

	* corefile.c (_initialize_core): Remove spurious paren from set
	gnutarget doc string.

2008-08-08  Luis Machado  <luisgpm@br.ibm.com>

	* ppc-linux-nat.c: Include "auxv.h" and "elf/common.h".
	Define PPC_FEATURE_BOOKE.
	(ppc_linux_get_hwcap): New function.
	(ppc_linux_region_ok_for_hw_watchpoint): Handle PowerPC 440
	4-bytes alignment restrictions.
	(ppc_linux_insert_watchpoint): Handle PowerPC 440-specific
	positioning of the read/write flags.
	(ppc_linux_watchpoint_addr_within_range): Handle PowerPC 440
	4-bytes alignment.

2008-08-08  Pedro Alves  <pedro@codesourcery.com>

	Use ptid_t.tid to store thread ids instead of ptid_t.pid.

	* win32-nat.c (win32_add_thread): Change thread argument type to
	ptid_t.  Adjust.
	(win32_add_thread): Adjust.
	(win32_delete_thread): Change thread argument type to ptid_t.
	Adjust.
	(win32_fetch_inferior_registers, win32_store_inferior_registers)
	(win32_resume, get_win32_debug_event, get_win32_debug_event)
	(win32_wait, win32_pid_to_exec_file, win32_pid_to_str): Adjust.
	(init_win32_ops): Put to_magic last.
	(win32_win32_thread_alive): Adjust.

2008-08-08  Pedro Alves  <pedro@codesourcery.com>

	* remote-m32r-sdi.c (m32r_thread_alive, m32r_pid_to_str): New.
	(init_m32r_ops): Register m32r_thread_alive and m32r_pid_to_str.

2008-08-08  Pedro Alves  <pedro@codesourcery.com>

	* remote-m32r-sdi.c: Include "gdbthread.h".
	(remote_m32r_ptid): New.
	(m32r_close): Delete the main thread.
	(m32r_resume): Set inferior_ptid toA remote_m32r_ptid. Add the
	main thread.
	(m32r_kill, m32r_load, sdireset_command): Delete the main thread.
	(_initialize_remote_m32r): Initialize remote_m32r_ptid.

2008-08-07  Tom Tromey  <tromey@redhat.com>
	    Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* aclocal.m4, configure: Rebuild.
	* configure.in: Call ZW_CREATE_DEPDIR,
	ZW_PROG_COMPILER_DEPENDENCIES, AC_PROG_MAKE_SET.
	(MAKE, GMAKE): New substs.
	* acinclude.m4: Include depstand.m4.
	* Makefile.in (DEPMODE, DEPDIR, COMPILE.post, COMPILE.pre,
	COMPILE, POSTCOMPILE, depcomp): New variables.
	Remove all _h variables.
	Remove many .o targets.
	($(srcdir)/copying.c): avoid backslash-newline after comment
	sign (@maintainer_mode_true@).
	(HFILES_NO_SRCDIR): Regenerate.
	(generated_files): New variable.
	(all_gdbtk_cflags): Likewise.
	(.c.o): Rewrote.
	(init.o, version.o, copying.o): Remove.
	(distclean): Remove DEPDIR.
	(test-cp-name-parser.o, hpux-thread.o, main.o, monitor.o,
	printcmd.o, procfs.o, v850ice.o): Rewrite.
	(cli-cmds.o, cli-decode.o, cli-dump.o, cli-interp.o, cli-logging.o,
	cli-script.o, cli-setshow.o, cli-utils.o): Likewise.
	(gdbtk.o, gdbtk-bp.o, gdbtk-cmds.o, gdbtk-hooks.o, gdbtk-interp.o,
	gdbtk-main.o, gdbtk-register.o, gdbtk-stack.o, gdbtk-varobj.o,
	gdbtk-wrapper.o): Likewise.
	(mi-cmd-break.o, mi-cmd-disas.o, mi-cmd-env.o, mi-cmd-file.o,
	mi-cmds.o, mi-cmd-stack.o, mi-cmd-target.o, mi-cmd-var.o,
	mi-console.o, mi-getopt.o, mi-interp.o, mi-main.o, mi-out.o,
	mi-parse.o, mi-symbol-cmds.o, mi-common.o, signals.o, tui.o,
	tui-command.o, tui-data.o, tui-disasm.o, tui-file.o, tui-hooks.o,
	tui-interp.o, tui-io.o, tui-layout.o, tui-main.o, tui-out.o,
	tui-regs.o, tui-source.o, tui-stack.o, tui-win.o, tui-windata.o,
	tui-wingeneral.o, tui-winsource.o): Likewise.
	(all_object_files): New variable.
	($(all_object_files)): New target.
	Include dependency files, when using GNU Make.

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

	* spu-tdep.c (info_spu_dma_cmdlist): Only show entries with
	the valid bit set.  Ensure display order respects partial
	order defined by dependency bits.

2008-08-06  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* solib-pa64.c (read_dld_descriptor): Return zero if load map is not
	setup.

2008-08-06  Mark Kettenis  <kettenis@gnu.org>

	* i386obsd-nat.c (i386obsd_supply_pcb): Adjust for changes in
	OpenBSD 4.3.

2008-08-06  Vladimir Prus  <vladimir@codesourcery.com>
	    Tom Tromey  <tromey@redhat.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>
	    Doug Evans  <dje@google.com>

	* Makefile.in (SUBDIR_PYTHON_OBS, SUBDIR_PYTHON_SRCS,
	SUBDIR_PYTHON_DEPS, SUBDIR_PYTHON_LDFLAGS, SUBDIR_PYTHON_CFLAGS,
	PYTHON_CFLAGS): New.
	(python_h, python_internal_h): New.
	(cli-script.o): Depend on python.h
	(python.o, python-utils.o): New.
	* cli/cli-script.c (print_command_lines): Handle python_control.
	(execute_control_command): Handle python_control.
	(execute_control_command_untraced): New function.
	(while_command): Call execute_control_command_untraced.
	(if_command): Likewise.
	(get_command_line): Remove static attribute.
	(read_next_line): Handle "python".
	(recurse_read_control_structure): Handle python_control.
	(read_command_lines): Handle python_control.
	Include python.h.
	* cli/cli-script.h (get_command_line): Add prototype.
	(execute_control_command_untraced): Likewise.
	* configure.ac: Add --with-python.
	* defs.h (enum command_control_type) <python_control>: New
	constant.
	* python/python-internal.h: New file.
	* python/python.c: New file.
	* python/python.h: New file.
	* python/python-utils.c: New file.
	* NEWS: Mention Python scripting support and its new commands.

2008-08-06  Ulrich Weigand  <uweigand@de.ibm.com>

	* spu-tdep.c (spu_gdbarch_init): Call set_gdbarch_frame_red_zone_size.

2008-08-06  Phil Muldoon  <pmuldoon@redhat.com>

	* MAINTAINERS (Write After Approval): Add self.

2008-08-06  Phil Muldoon  <pmuldoon@redhat.com>

	* breakpoint.c (hw_breakpoint_used_count): Use breakpoint_enabled.
	(insert_breakpoint_locations): Likewise.

2008-08-05  Phil Muldoon  <pmuldoon@redhat.com>

	* breakpoint.c (create_longjmp_breakpoint): Remove unused struct
	breakpoint.
	(set_longjmp_breakpoint): Likewise.

2008-08-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR build/2490
	* solib-pa64.c: Only compile if both HAVE_ELF_HP_H and __LP64__ are
	defined.

2008-08-05  Tom Tromey  <tromey@redhat.com>

	* bcache.c (deprecated_bcache_added): Initialize obstack.
	(bcache_xmalloc): Don't initialize obstack.
	(bcache_xfree): Conditionally free obstack.
	(bcache_memory_used): Update.

2008-08-05  Tom Tromey  <tromey@redhat.com>

	* symfile.c (add_psymbol_to_bcache): Return a const pointer.  Use
	bcache_full.
	(append_psymbol_to_list): Accept a const pointer.
	(add_psymbol_to_list): Fix const correctness.
	* bcache.h: (deprecated_bcache_added, deprecated_bcache): Remove.
	(bcache_full): Declare.
	* bcache.c (bcache_data, deprecated_bcache): Remove.
	(bcache): Use bcache_full.
	(bcache_full): Rename from deprecated_bcache_added.  Change return
	type.

2008-08-04  Stan Shebs  <stan@codesourcery.com>

	* solib-svr4.c (BKPT_AT_SYMBOL): Remove, always defined.
	(bkpt_names): Remove SOLIB_BKPT_NAME, never defined.
	(enable_break): Remove test of BKPT_AT_SYMBOL.

2008-08-02  Keith Seitz  <keiths@redhat.com>

	* acinclude.m4: Include ../config/tcl.m4 to pick up
	standard Tcl configury bits.
	Remove all Tcl, Tk, Itcl, Itk, etc definitions.
	* configure.ac: Don't check if ../itcl exists when building
	gdbtk. It could be installed.
	Rewrite gdbtk configury to allow for using system-supplied
	Tcl and Tk. Gdbtk no longer requires build-time access to
	itcl and itk.
	* Makefile.in: Remove everything related to itcl and itk.
	Rewrite the Tcl bits for gdbtk to correspond to rewrite of
	configure.ac.
	Remove v850ice.o build rule.
	(ALL_TCL_CFLAGS): New convenience defintion. Change all
	gdbtk sources to use it.
	* configure: Regenerate.

2008-07-31  Stan Shebs  <stan@codesourcery.com>

	* coffread.c (coff_symtab_read): Remove FUNCTION_EPILOGUE_SIZE.

2008-07-30  Stan Shebs  <stan@codesourcery.com>

	* objfiles.c (TARGET_KEEP_SECTION): Remove.
	(add_to_objfile_sections): Remove use.

2008-07-29  Tom Tromey  <tromey@redhat.com>

	* cli/cli-decode.c (lookup_cmd_1): Use memcpy.
	(lookup_cmd_composition): Likewise.

2008-07-29  Tom Tromey  <tromey@redhat.com>

	* cli/cli-cmds.c (edit_command): Remove unused variables.  Delete
	dead code.  Fix indentation.

2008-07-29  Stan Shebs  <stan@codesourcery.com>

	* main.c (captured_main): Remove long-unused #if 0 blocks.

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

	* annotate.h (deprecated_annotate_starting_hook): Remove.
	(deprecated_annotate_stopped_hook): Remove.
	(deprecated_annotate_exited_hook): Remove.
	* Makefile.in (annotate.o): Depend on observer_h.
	* top.c (deprecated_delete_breakpoint_hook): Remove.
	(deprecated_create_breakpoint_hook): Likewise.
	(deprecated_modify_breakpoint_hook): Likewise.
	* interps.c (clear_interpreter_hooks): Update for removed hooks.
	* breakpoint.c (mention): Don't call removed hook.
	(delete_breakpoint): Likewise.
	(disable_breakpoint): Likewise.
	(do_enable_breakpoint): Likewise.
	* annotate.c: Include observer.h.
	(breakpoint_changed): Change type of argument.
	(_initialize_annotate): Register observers.
	(deprecated_annotate_starting_hook): Remove.
	(deprecated_annotate_stopped_hook): Remove.
	(deprecated_annotate_exited_hook): Remove.
	(annotate_starting): Update for hook removal.
	(annotate_stopped): Likewise.
	(annotate_exited): Likewise.
	* defs.h (deprecated_delete_breakpoint_hook): Remove.
	(deprecated_create_breakpoint_hook): Likewise.
	(deprecated_modify_breakpoint_hook): Likewise.

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

	* main.c (captured_main): Don't use BEFORE_MAIN_LOOP_HOOK.

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

	* configure.ac: Check for the GNU/Linux ptrace signature.
	* configure: Regenerated.

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

	* linux-nat.c (resume_callback): Add more debugging output.
	(linux_nat_has_pending_sigint): New function, based on
	linux_nat_has_pending.
	(set_ignore_sigint, maybe_clear_ignore_sigint): New functions.
	(stop_wait_callback): Remove flush_mask handling.  Honor
	ignore_sigint.  Call maybe_clear_ignore_sigint.  Pass NULL
	to recursive calls.
	(linux_nat_has_pending, flush_callback): Remove.
	(linux_nat_filter_event): Check for ignore_sigint.
	(linux_nat_wait): Remove flush_mask support and call to
	flush_callback.  Use set_ignore_sigint and maybe_clear_ignore_sigint.
	* linux-nat.h (struct lwp_info): Add ignore_sigint field.

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

	* linux-nat.c (count_events_callback, select_event_lwp_callback): Only
	report events from resumed threads.

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

	* mips-linux-tdep.c (mips_linux_syscall_next_pc): New function.
	(mips_linux_init_abi): Set tdep->syscall_next_pc.
	* mips-tdep.c (enum mips_fpu_type, struct gdbarch_tdep): Move to
	mips-tdep.h.
	(mips32_next_pc): Handle the syscall instruction.
	* mips-tdep.h (enum mips_fpu_type, struct gdbarch_tdep): New,
	from mips-tdep.c.  Add syscall_next_pc to gdbarch_tdep.

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

	PR gdb/1158:
	* valops.c (value_struct_elt): Treat function-valued field as a
	static method.

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

	PR gdb/1136:
	* macroexp.c (get_punctuator) <punctuators>: Rearrange to put
	longer tokens first.

2008-07-26  Vladimir Prus  <vladimir@codesourcery.com>

	Kill cmd_async_ok.
	* cli/cli-decode.h (CMD_ASYNC_OK, set_cmd_async_ok)
	(get_cmd_async_ok): Remove.
	* cli/cli-decode.c (set_cmd_async_ok, get_cmd_async_ok): Remove.
	* cli/cli-cmds.c (init_cli_cmds): Don't use set_cmd_async_ok.
	* infcmd.c (_initialize_infcmd): Likewise.
	* thread.c (_initialize_thread): Likewise.

2008-07-25  Joseph Myers  <joseph@codesourcery.com>

	* mips-tdep.c (mips_n32n64_push_dummy_call): Handle passing
	128-bit long doubles in even-odd pairs of FPRs.  Do not
	right-align float arguments for big-endian.
	(mips_n32n64_return_value): Apply return value convention for
	structs containing one or two floating-point values to soft-float
	as well as hard-float.  Handle 128-bit long doubles in such
	structs.
	(mips_o32_push_dummy_call): Only skip one integer register for a
	float argument passed in an FPR.

2008-07-25  Tom Tromey  <tromey@redhat.com>

	* tui/tui-hooks.c: Include observer.h.
	(tui_event_default, tui_old_event_hooks, tui_event_hooks):
	Remove.
	(tui_bp_created_observer, tui_bp_deleted_observer,
	tui_bp_modified_observer): New globals.
	(tui_install_hooks): Use observers, not events.
	(tui_remove_hooks): Likewise.
	* mi/mi-cmd-break.c: Include observer.h, not gdb-events.h.
	(mi_breakpoint_observers_installed, mi_can_breakpoint_notify): New
	globals.
	(breakpoint_notify): Check mi_can_breakpoint_notify.
	(breakpoint_hooks): Remove.
	(mi_cmd_break_insert): Attach observers.  Don't use events.
	* tracepoint.c: Include observer.h, not gdb-events.h.
	(tracepoint_operation, trace_pass_command): Notify observer.
	* interps.c: Don't include gdb-events.h.
	(clear_interpreter_hooks): Don't call clear_gdb_event_hooks.
	* gdbarch.c: Rebuild.
	* gdbarch.sh: Emit include for observer.h, not gdb-events.h.
	(deprecated_current_gdbarch_select_hack): Notify observer.
	* breakpoint.h: Don't include gdb-events.h.
	* breakpoint.c: Don't include gdb-events.h.
	(condition_command): Notify observer.
	(commands_command): Likewise.
	(commands_from_control_command): Likewise.
	(mention, delete_breakpoint, set_ignore_count): Likewise.
	(disable_breakpoint, do_enable_breakpoint): Likewise.
	* Makefile.in (gdb_events_h): Remove.
	(breakpoint_h): Update.
	(COMMON_OBS): Remove gdb-events.o.
	(gdb-events.o): Remove.
	(breakpoint.o, gdbarch.o, interps.o, tracepoint.o, gdbtk-bp.o,
	gdbtk-hooks.o, mi-cmd-break.o, tui-hooks.o): Update.
	* gdb-events.c: Remove.
	* gdb-events.h: Remove.
	* gdb-events.sh: Remove.

2008-07-24  Pedro Alves  <pedro@codesourcery.com>

	* remote.c (remote_threads_extra_info): Don't query the remote
	server about info on the internally added main thread.

2008-07-24  Aleksandar Ristovski  <aristovski@qnx.com>

	* nto-procfs.c (procfs_attach): Populate initial thread list.
	(procfs_wait): Return new pid, built from the inferior status.

2008-07-23  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* configure.ac (CONFIG_INITS): Delete long obsoleted variable.
	* configure: Regenerate.

2008-07-23  Aleksandar Ristovski  <aristovski@qnx.com>

	* nto-procfs.c (procfs_xfer_memory): Changed signature.
	(procfs_resume): Workaround for dereferencing type-punned pointer
	warning.
	* nto-tdep.c (nto_parse_redirection): Change signature to be const
	correct.
	* nto-tdep.h (nto_parse_redirection): Likewise.

2008-07-21  Stan Shebs  <stan@codesourcery.com>

	Scrub remnants of IN_SOLIB_DYNSYM_RESOLVE_CODE.
	* gdbarch.sh: Adjust comment to refer to
	in_solib_dynsym_resolve_code().
	* gdbarch.h, gdbarch.c: Update.
	* solib-osf.c: Ditto.
	* infrun.c: Ditto.
	(handle_inferior_event): Use in_solib_dynsym_resolve_code
	unconditionally.
	* config/mips/nm-irix5.h: Remove undef of
	IN_SOLIB_DYNSYM_RESOLVE_CODE.

2008-07-21  Tom Tromey  <tromey@redhat.com>

	* symfile.c (reread_symbols): Don't pass argument to observer.
	* exec.c (exec_file_attach): Don't pass argument to observer.
	* ada-lang.c (ada_executable_changed_observer): Remove argument.
	* symtab.c (symtab_observer_executable_changed): Remove argument.
	* observer.sh: Handle functions with no arguments.

2008-07-20  Sergei Poselenov  <sposelenov@emcraft.com>
	    Chris Demetriou  <cgd@google.com>

	* elfread.c (elf_symfile_segments): Fix the check that each loadable
	section fits within an ELF segment to handle ELF segments that hit
	the end of the address space.

2008-07-20  Chris Demetriou  <cgd@google.com>

	* MAINTAINERS (Write After Approval): Add self.

2008-07-18  Tom Tromey  <tromey@redhat.com>

	PR gdb/855:
	* NEWS: Add entry for macro commands.
	* Makefile.in (macrocmd.o): Add gdb_string.h.
	* macroscope.h (user_macro_scope): Declare.
	(default_macro_scope): Update documentation.
	(macro_user_macros): Declare.
	* c-lang.c (c_preprocess_and_parse): Always attempt macro lookup.
	Use user_macro_scope.
	(null_macro_lookup): Remove.
	* macrotab.h (macro_callback_fn): Declare.
	(macro_for_each): Likewise.
	(macro_allow_redefinitions): Likewise.
	* macrotab.c (foreach_macro): New function
	(macro_for_each): Likewise.
	(struct macro_table) <redef_ok>: New field.
	(macro_allow_redefinitions): New function.
	(new_macro_table): Update.
	(macro_define_function): Likewise.
	(macro_define_object): Likewise.
	* macroscope.c (user_macro_scope): New function.
	(default_macro_scope): Use it.
	(macro_user_macros): New global.
	(standard_macro_lookup): Look in macro_user_macros.
	(_initialize_macroscope): New function.
	* macroexp.h (macro_is_whitespace, macro_is_digit,
	macro_is_identifier_nondigit): Declare.
	* macroexp.c (macro_is_whitespace): Rename.  No longer static.
	(macro_is_digit): Likewise.
	(macro_is_identifier_nondigit): Likewise.
	(get_identifier): Update.
	(get_pp_number): Likewise.
	(get_token): Likewise.
	* macrocmd.c (skip_ws): New function.
	(extract_identifier): Likewise.
	(free_macro_definition_ptr): Likewise.
	(user_macros): Remove.
	(macro_define_command): Implement.
	(_initialize_macrocmd): Update.
	(macro_undef_command): Implement.
	(print_one_macro): New function.
	(macro_list_command): Implement.

2008-07-18  Joseph Myers  <joseph@codesourcery.com>

	* configure.ac: Put old value of $LIBS after -lbfd -liberty $intl
	in BFD ELF check.
	* configure: Regenerate.

2008-07-17  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* auxv.c (fprint_target_auxv): Stop at AT_NULL.

2008-07-15  Andreas Schwab  <schwab@suse.de>

	* valops.c (value_cast_pointers): Follow typedefs when checking
	result of coercion.

2008-07-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* block.c (block_function): Renamed to ...
	(block_linkage_function): ... this.  All callers changed.
	* block.h (block_function): Renamed to ...
	(block_linkage_function): ... this.

2008-07-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* mn10300-tdep.c (set_reg_offsets): Use get_frame_register_unsigned.

2008-07-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* frame.c (frame_sp_unwind): Delete.
	(get_frame_sp): Do not use it.
	* frame.h (frame_sp_unwind): Delete prototype.

2008-07-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* ia64-tdep.c (ia64_dummy_id): Use get_frame_pc.

2008-07-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2-frame.c (dwarf2_frame_cache): Update comment.
	* frame.c (frame_unwind_address_in_block): Delete.
	(get_frame_address_in_block): Do not use it.  Check the type
	of the next frame first.
	(frame_cleanup_after_sniffer): Update comment.
	* frame.h (frame_unwind_address_in_block): Delete prototype.
	* hppa-tdep.c (hppa_find_unwind_entry_in_block): Update comment.

2008-07-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* frame.c (frame_func_unwind): Delete.
	(get_frame_func): Do not use it.
	* frame.h (frame_func_unwind): Delete prototype.
	* hppa-tdep.c (hppa_frame_cache): Update comment.
	* rs6000-tdep.c (rs6000_frame_cache): Update comment.

2008-07-14  Stan Shebs  <stan@codesourcery.com>

	* remote-sim.c (init_gdbsim_ops): Remove
	TARGET_REDEFINE_DEFAULT_OPS.

2008-07-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* findvar.c (read_var_value): Remove unused variable.

2008-07-15  Luis Machado  <luisgpm@br.ibm.com>

	* infrun.c (handle_inferior_event): Tag threads as stopped
	before inserting breakpoints.

2008-07-15  Hui Zhu  <teawater@gmail.com>

	* MAINTAINERS: Added myself to section Write After Approval.

2008-07-14  Paul Pluzhnikov  <ppluzhnikov@google.com>

	PR gdb/2477
	* cp-abi.c (value_virtual_fn_field): Handle invalid pointers.

2008-07-14  Pedro Alves  <pedro@codesourcery.com>

	* i386-dicos-tdep.c (i386_dicos_frame_align): Delete.
	(i386_dicos_push_dummy_code): New.
	(i386_dicos_init_abi): Don't register i386_dicos_frame_align.
	Register i386_dicos_push_dummy_code.

2008-07-14  Markus Deuling  <deuling@de.ibm.com>

	* mips-tdep.c (fp_register_arg_p): Add gdbarch as paramter.
	(mips_n32n64_push_dummy_call, mips_o64_return_value)
	(mips_eabi_push_dummy_call): Update call to fp_register_arg_p.

	(MIPS_FPU_TYPE): Add gdbarch as parameter and replace current_gdbarch.
	(fp_register_arg_p, mips_dump_tdep, show_mipsfpu_command)
	(mips_n32n64_fp_arg_chunk_p): Update caller.

	(mips_n32n64_fp_arg_chunk_p): Add gdbarch as paramter.
	(mips_n32n64_push_dummy_call): Update caller.

	(MIPS_LAST_ARG_REGNUM): Add gdbarch as parameter and replace
	current_gdbarch.
	(mips_eabi_push_dummy_call, mips_n32n64_push_dummy_call)
	(mips_o32_push_dummy_call, mips_o64_push_dummy_call): Update caller.


	(MIPS_LAST_FP_ARG_REGNUM): Add gdbarch as parameter and replace
	current_gdbarch.
	(mips_eabi_push_dummy_call, mips_o32_push_dummy_call)
	(mips_o64_push_dummy_call): Update caller.

	(MIPS_EABI): Add gdbarch as parameter and replace current_gdbarch.
	(fp_register_arg_p, mips_dump_tdep): Update caller.

	(set_reg_offset): Add gdbarch as parameter and replace current_gdbarch.
	(mips16_scan_prologue, mips32_scan_prologue): Update caller.

	(reset_saved_regs): Make static.  Add gdbarch as parameter.  Replace
	current_gdbarch.
	(mips32_scan_prologue): Update caller.

	(heuristic_proc_start): Add gdbarch as parameter. Replace
	current_gdbarch.
	(mips_insn16_frame_cache, mips_insn32_frame_cache): Update caller.

	* mipsnbsd-nat.c (mipsnbsd_fetch_inferior_registers)
	(mipsnbsd_store_inferior_registers): Use get_regcache_arch to get at
	the current architecture. Update call to getregs_supplies.
	(getregs_supplies): Add gdbarch as parameter and replace
	current_gdbarch.

	* mipsnbsd-tdep.c (mipsnbsd_get_longjmp_target): Use get_frame_arch to
	get at the current architecture. Update call to NBSD_MIPS_JB_OFFSET and
	NBSD_MIPS_JB_ELEMENT_SIZE.
	(NBSD_MIPS_JB_ELEMENT_SIZE, NBSD_MIPS_JB_OFFSET): Add gdbarch and
	replace current_gdbarch.

	* remote-mips.c (mips_map_regno): Add gdbarch as parameter and replace
	current_gdbarch.
	(mips_fetch_registers, mips_store_registers): Update call
	to mips_map_regno.
	(mips_load): Use get_regcache_arch to get at the current_architecture
	and replace current_gdbarch.

2008-07-13  Pedro Alves  <pedro@codesourcery.com>

	* thread.c (restore_selected_frame): On fail to restore, select
	the innermost frame, and don't crash when warning the user.

2008-07-13  Hui Zhu  <teawater@gmail.com>

	* symtab.c (expand_line_sal): Fix a memory leak.

2008-07-13  Pedro Alves  <pedro@codesourcery.com>

	* utils.c (struct continuation): Define as inheriting struct
	cleanup.
	(add_continuation, do_all_continuations)
	(discard_all_continuations, add_intermediate_continuation)
	(do_all_intermediate_continuations)
	(discard_all_intermediate_continuations): Adjust.

2008-07-13  Vladimir Prus  <vladimir@codesourcery.com>

	Skip varobj in running threads.
	* mi/mi-cmd-var.c (mi_cmd_var_update): If varobj's
	thread is not stopped, skip the varobj.
	* Makefile.in: Update dependencies.

2008-07-13  Vladimir Prus  <vladimir@codesourcery.com>

	Enable all commands while inferiour is running
	* mi/mi-main.c (mi_cmd_execute): Don't check if
	inferiour is executing.

2008-07-13  Vladimir Prus  <vladimir@codesourcery.com>

	Allow all CLI command even if target is executing.
	* top.c (execute_command_1): Don't check if the inferiour
	is running.

2008-07-13  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-main.c (mi_cmd_execute): Remove unused variable.
	Fix printing of frame, when frame is wrong.

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

	* spu-tdep.c (spu_frame_unwind_cache): Do not error if
	backchain is unreadable.

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

	* spu-linux-nat.c: Include "gdbthread.h".
	(spu_child_post_startup_inferior): Register main thread.
	(spu_child_post_attach): Likewise.
	* Makefile.in (spu-linux-nat.o): Update dependencies.

2008-07-12  Pedro Alves  <pedro@codesourcery.com>

	Rewrite continuations internals on top of cleanups and plug
	continuation arguments leaks.

	* defs.h (struct continuation): Make it opaque.
	(add_continuation, add_intermediate_continuation): Drop the int
	argument of the continuation hook argument.  Add
	continuation_free_args argument.
	(do_all_continuations, do_all_intermediate_continuations): Drop
	the error_p argument.

	* utils.c (add_continuation): Drop the int argument of the
	continuation hook argument.  Add continuation_free_args argument.
	Reimplement on top of cleanups.
	(do_all_continuations): Drop error argument.  Reimplement on top
	of cleanups.
	(discard_all_continuations): Reimplement on top of cleanups.
	(add_intermediate_continuation): Drop the int argument of the
	continuation hook argument.  Add continuation_free_args argument.
	Reimplement on top of cleanups.
	(do_all_intermediate_continuations): Drop error argument.
	Reimplement on top of cleanups.
	(discard_all_intermediate_continuations): Reimplement on top of
	cleanups.

	* breakpoint.c (until_break_command_continuation): Drop error
	argument.  Add xfree as continuation argument deleter.

	* inf-loop.c (inferior_event_handler): On error, discard all
	continuations.  Adjust to new do_all_intermediate_continuations
	and do_all_continuations interfaces.

	* infcmd.c (step_1_continuation): Drop error_p argument.  Adjust.
	Pass xfree as continuation argument deleter.
	(finish_command_continuation): Drop error_p argument.  Adjust.
	(finish_command_continuation_free_arg): New.
	(finish_command): Pass finish_command_continuation_free_arg as
	continuation argument deleter.  Adjust to new do_all_continuations
	interfaces.
	(attach_command_continuation): Drop error_p argument.
	(attach_command_continuation_free_args): New.
	(attach_command): Pass attach_command_continuation_free_args as
	continuation argument deleter.

	* interps.c (interp_set): Adjust to new do_all_continuations
	interfaces.

	* event-top.c (stdin_event_handler): In error, also discard the
	intermediate continuations.

2008-07-12  Pedro Alves  <pedro@codesourcery.com>

	Replace struct continuation_args by void* and per command structs.

	* top.c (execute_command): Remove unused arg1 and arg2 locals.

	* breakpoint.c (struct until_break_command_continuation_args):
	New.
	(until_break_command_continuation): Take a void* instead of a
	continuations_arg.  Adjust.
	(until_break_command): Adjust to use struct
	until_break_command_continuation_args instead of struct
	continuation_arg.

	* infcmd.c (struct step_1_continuation_args): New.
	(step_1_continuation): Take a void* instead of a
	continuations_arg.  Adjust to use struct step_1_continuation_args.
	(step_once): Adjust to use struct step_1_continuation_args.

	(struct finish_command_continuation_args): New.
	(finish_command_continuation): Take a void* instead of a
	continuations_arg.  Adjust to use struct
	finish_command_continuation_args.
	(finish_command): Adjust to use struct
	finish_command_continuation_args.
	(struct attach_command_continuation_args): New.
	(attach_command_continuation): Take a void* instead of a
	continuations_arg.  Adjust to use struct
	attach_command_continuation_args.
	(attach_command): Adjust to use struct
	attach_command_continuation_args.

	* defs.h (struct continuation_arg): Delete.
	(struct continuation): Replace the struct continuation_arg*
	parameter of continuation_hook by a void*.  Replace "arg_list"
	member by a new "args" member with void* type.
	(add_continuation, add_intermediate_continuation): Replace struct
	continuation_arg type usages by void* usages.

	* utils.c (add_continuation, do_all_continuations)
	(add_intermediate_continuation)
	(do_all_intermediate_continuations): Replace struct
	continuation_arg type usages by void* usages.  Pass "args" instead
	of "arg_list".

2008-07-12  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (struct thread_stepping_state): Delete sal member.
	(init_thread_stepping_state): Add local sal.  Use it instead of
	tss->sal.
	(handle_inferior_event): New local stop_pc_sal.  Use it instead of
	tss->sal.
	(step_into_function): Add local stop_func_sal.  Use it instead of
	tss->sal.

2008-07-12  Vladimir Prus  <vladimir@codesourcery.com>

	Implement -exec-continue/-exec-interrupt --all.
	* infcmd.c (continue_1): New, extracted from
	(continue_command): ...here.
	(interrupt_target_1): New, extracted from
	(interrupt_target_command): ...here.
	* inferior.h (continue_1, interrupt_target_1): New.
	* mi/mi-main.c (mi_cmd_exec_continue)
	(mi_cmd_exec_interrupt): Handle --all.

2008-07-12  Vladimir Prus  <vladimir@codesourcery.com>

	Implement --thread and --frame.
	* gdbthread.h (find_thread_id): Declare.
	* thread.c (find_thread_id): Make non-static.
	* mi/mi-main.c (mi_cmd_execute): Switch to the right
	thread and frame, if necessary.
	* mi/mi-parse.c (mi_parse): Handle --thread and --frame.
	* mi/mi-parse.h (strcut mi_parse): New fields thread and frame.

2008-07-12  Vladimir Prus  <vladimir@codesourcery.com>

	* infrun.c (resume): Discard cleanups on early exit path.

2008-07-12  Vladimir Prus  <vladimir@codesourcery.com>

	* infrun.c (normal_stop): For MI, report which threads
	were stopped.

2008-07-12  Vladimir Prus  <vladimir@codesourcery.com>

	Report thread state in -thread-info output.
	* thread.c (print_thread_info): Add new field "state".

2008-07-11  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (handle_inferior_event): Also ignore a
	TARGET_SIGNAL_TRAP on a STOP_QUIETLY_NO_SIGSTOP.

2008-07-11  Tom Tromey  <tromey@redhat.com>

	* completer.c (complete_line_internal): New function, from
	complete_line.  Add 'for_help' parameter.
	(complete_line): Use it.
	(command_completer): Move later.  Rewrite.

2008-07-11  Pedro Alves  <pedro@codesourcery.com>

	* thread.c (thread_apply_command): Move making the cleanup out of
	the loop.

2008-07-11  Pedro Alves  <pedro@codesourcery.com>

	Exited threads.

	* thread.c (enum thread_state): New.
	(thread_state main_thread_running): Delete, in favor of...
	(thread_state main_thread_state): ... this.  Update throughout.
	(clear_thread_inferior_resources): New, split from free_thread.
	(free_thread): Call clear_thread_inferior_resources.
	(init_thread_list): Set main thread to stopped state.
	(add_thread_silent): Take care of PTID reuses.
	(delete_thread): If deleting inferior_ptid or a thread with
	refcount > 0, mark it as exited, but still keep it in the list.
	Only notify of thread exits, if we haven't done so yet.
	(iterate_over_threads): Make it safe to delete threads while
	iterating over them.
	(do_captured_list_thread_ids): Don't account for exited threads.
	(thread_alive): Check for the THREAD_EXITED state, and don't set
	ptid to -1 on exited threads.
	(set_running): Update to account for extra possible states.
	(is_thread_state): New.
	(is_stopped, is_exited): New.
	(is_running): Implement in terms of is_thread_state.
	(any_running): Update.
	(print_thread_info): Update.  Account for exited threads.  Don't
	warn about missed frame restoring here, its done in the cleanup.
	(switch_to_thread): Don't read from a thread that has gone.
	(restore_current_thread): In non-stop mode, do a full context
	switch.
	(restore_selected_frame): Add a frame_level argument.  Rewrite.
	(struct current_thread_cleanup): Add selected_frame_level and
	was_stopped members.
	(do_restore_current_thread_cleanup): Check if thread was stopped
	and still is, and if the target has registers, stack and memory
	before restoring the selected frame.  Don't delete the cleanup
	argument here.
	(restore_current_thread_cleanup_dtor): New.
	(make_cleanup_restore_current_thread): Remove all arguments.
	Rewrite.
	(thread_apply_all_command): Update.  Prune threads.
	(thread_apply_command): Update.
	(thread_command): Account for currently selected exited thread.
	(do_captured_thread_select): Check for a running thread.  Prune
	threads.
	(_initialize_thread): Make "info threads", "thread", "thread
	apply", and "thread apply all" appliable without a selected thread.
	* gdbthread.h (struct thread_info): Replace running_ by state_.
	Add refcount.
	(is_exited, is_stopped): Declare.
	(make_cleanup_restore_current_thread): Remove all arguments.
	* infrun.c: Include "event-top.h".
	(fetch_inferior_event): In non-stop mode, restore selected thread
	and frame after handling the event and running breakpoint
	commands.  Display GDB prompt if needed.
	(normal_stop): In non-stop mode, don't print thread switching
	notice.
	* cli/cli-decode.c (set_cmd_no_selected_thread_ok)
	(get_cmd_no_selected_thread_ok): New.
	* cli/cli-decode.h (CMD_NO_SELECTED_THREAD_OK): New.
	(set_cmd_no_selected_thread_ok, get_cmd_no_selected_thread_ok):
	Declare.
	* cli/cli-cmds.c: Set "pwd", "help", "info", "show" as
	no-selected-thread ok.
	* top.c (execute_command): Check for non no-selected-thread-ok
	commands.
	* linux-nat.c (struct saved_ptids, threads_to_delete)
	(record_dead_thread, prune_lwps): Delete.
	(exit_lwp): Unconditionally delete thread.
	(linux_nat_resume): Remove prune_lwps call.
	* infcmd.c (proceed_thread_callback): Check if !is_stopped instead
	of is_running.  Adjust to make_cleanup_restore_current_thread
	interface change.
	* mi/mi-main.c (mi_cmd_execute): Only allow a few commands if the
	selected thread has exited.
	* inf-loop.c (inferior_event_handler): Don't display the prompt
	here.
	* varobj.c (c_value_of_root): Update.
	* defs.h (make_cleanup_dtor): Declare.
	* utils.c (make_cleanup_dtor): New.

	* Makefile.in (infrun.o): Depend on $(event_top_h).

2008-07-11  Pedro Alves  <pedro@codesourcery.com>

	Add "continue -a" and "interrupt -a" options for non-stop mode.

	* infcmd.c (proceed_thread_callback, do_context_switch_to): New.
	(continue_command): Add "-a" option.
	(interrupt_target_command): Add "-a" option.
	(_initialize_infcmd): Add extend help of continue and interrupt
	command to mention the new "-a" option.  Mark "continue" async ok.

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

	Add "set print symbol-loading on|off".
	* NEWS: Document new option.
	* symfile.h (print_symbol_loading): Declare.
	* symfile.c (print_symbol_loading): New global.
	(symbol_file_add_with_addrs_or_offsets): Only print "Reading symbols
	from ..." if print_symbol_loading.
	(_initialize_symfile): Add set/show print symbol-loading.
	* solib.c (solib_read_symbols): Only print "Loaded symbols for ..."
	if print_symbol_loading.

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

	Non-stop linux native.

	* linux-nat.c (linux_test_for_tracefork): Block events while we're
	here.
	(get_pending_status): Implement non-stop mode.
	(linux_nat_detach): Stop threads before detaching.
	(linux_nat_resume): In non-stop mode, always resume only a single
	PTID.
	(linux_handle_extended_wait): On a clone event, in non-stop mode,
	add new lwp to GDB's thread table, and mark as running, executing
	and stopped appropriately.
	(linux_nat_filter_event): Don't assume there are other running
	threads when a thread exits.
	(linux_nat_wait): Mark the main thread as running and executing.
	In non-stop mode, don't stop all lwps.
	(linux_nat_kill): Stop lwps before killing them.
	(linux_nat_thread_alive): Use signal 0 to detect if a thread is
	alive.
	(send_sigint_callback): New.
	(linux_nat_stop): New.
	(linux_nat_add_target): Set to_stop to linux_nat_stop.

	* linux-nat.h (thread_db_attach_lwp): Declare.

	* linux-thread-db.c (thread_get_info_callback): Check for new
	threads if we have none.
	(thread_from_lwp, enable_thread_event): Set proc_handle.pid to the
	stopped lwp.  Check for new threads if we have none.
	(thread_db_attach_lwp): New.
	(thread_db_init): Set proc_handle.pid to inferior_ptid.
	(check_event): Set proc_handle.pid to the stopped lwp.
	(thread_db_find_new_threads): Set proc_handle.pid to any stopped
	lwp available, bail out if there is none.

	* linux-fork.c (linux_fork_killall): Use SIGKILL instead of
	PTRACE_KILL.

2008-07-10  Kevin Buettner  <kevinb@redhat.com>

	* rs6000-tdep.c (ppc_displaced_step_fixup): Change type of
	`current_pc' from CORE_ADDR to ULONGEST.

	* remote-sim.c (gdbsim_cntrl_c): Pass remote_sim_ptid to
	gdbsim_stop().

2008-07-10  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* NEWS (New commands): Mention "set disable-randomization".
	* configure.ac: Add check for HAVE_PERSONALITY and
	HAVE_DECL_ADDR_NO_RANDOMIZE.
	* configure, config.in: Regenerate.
	* linux-nat.c [HAVE_PERSONALITY]: New include <sys/personality.h>.
	[HAVE_PERSONALITY] [!HAVE_DECL_ADDR_NO_RANDOMIZE]: Set
	ADDR_NO_RANDOMIZE.
	(disable_randomization, show_disable_randomization)
	(set_disable_randomization): New.
	(linux_nat_create_inferior) [HAVE_PERSONALITY]: New variables
	PERSONALITY_ORIG and PERSONALITY_SET.  Disable randomization upon the
	variable DISABLE_RANDOMIZATION.
	(_initialize_linux_nat): Call ADD_SETSHOW_BOOLEAN_CMD for the variable
	DISABLE_RANDOMIZATION.

2008-07-09  Pedro Alves  <pedro@codesourcery.com>

	Adjust all targets to new target_stop interface.

	* gnu-nat.c (gnu_stop): Add ptid argument.
	* go32-nat.c (go32_stop): Add ptid argument.
	(go32_create_inferior): Pass inferior_ptid to go32_stop.
	* hpux-thread.c (hpux_thread_stop): Add ptid argument.
	* monitor.c (monitor_stop): Add ptid argument.
	(monitor_open): Pass inferior_ptid to monitor_stop.
	(monitor_interrupt): Pass inferior_ptid to target_stop.
	(monitor_stop): Add ptid argument.
	* nto-procfs.c (nto_interrupt): Pass inferior_ptid to target_stop.
	(procfs_create_inferior): Add ptid argument.
	* procfs.c (procfs_stop): Add ptid argument.
	* remote-m32r-sdi.c (m32r_stop): Add ptid argument.
	* remote-sim.c (gdbsim_stop): Add ptid argument.
	* sol-thread.c (sol_thread_stop): Add ptid argument.
	* win32-nat.c (win32_stop): Add ptid argument.

2008-07-09  Pedro Alves  <pedro@codesourcery.com>

	Non-stop inferior control.

	* infrun.c (resume): In non-stop mode, always resume just one
	thread.
	(proceed): Don't call prepare_to_proceed in non-stop mode.
	(fetch_inferior_event): In non-stop mode, switch context before
	handling the event.
	(error_is_running, ensure_not_running): New.
	(handle_inferior_event): In non-stop mode: Mark only the event
	thread as stopped.  Require that the target module manages adding
	threads to the thread list.  Assert that there isn't a
	deferred_step_ptid set.  Don't switch to infwait_thread_hop_state.
	(normal_stop): Only mark not-running if inferior hasn't exited.
	In non-stop mode, only mark the event thread.

	* thread.c:Include "cli/cli-decode.h".
	(print_thread_info): Don't read from a running thread.
	Output "(running)" if thread is running.
	(switch_to_thread): Don't read stop_pc if thread is executing.
	(do_restore_current_thread_cleanup): Don't write to a running
	thread.
	(thread_apply_all_command): Don't read from a running thread.  In
	non-stop mode, do a full context-switch instead of just switching
	threads.
	(thread_apply_command): In non-stop mode, do a full context-switch
	instead of just switching threads.
	(do_captured_thread_select): Likewise.  Inform user if selected
	thread is running.
	(_initialize_thread): Mark "info threads" and "thread" and
	async_ok.

	* inf-loop.c (inferior_event_handler): In non-stop mode, don't
	unregister the target from the event loop.

	* infcmd.c (continue_command, step_1, jump_command)
	(signal_command): Ensure the selected thread isn't running.
	(interrupt_target_command): In non-stop mode, interrupt only the
	selected thread.

	* inferior.h (error_is_running, ensure_not_running): Declare.

	* target.h (struct target_ops): Add ptid argument to the to_stop
	member.
	(target_stop): Add ptid_t argument.

	* target.c (update_current_target): Add ptid argument to to_stop's
	type.
	(debug_to_stop): Add ptid_t argument.
	(debug_to_rcmd): Set to_stop_ptid.

	* remote.c (remote_stop): Add ptid_t argument.
	(async_remote_interrupt): Add inferior_ptid to target_stop.
	* inf-ptrace.c (inf_ptrace_stop): Add ptid argument.

	* Makefile.in (thread.o): Depend on $(cli_decode_h).

2008-07-09  Pedro Alves  <pedro@codesourcery.com>

	Don't rely on ecs->wait_for_more.

	* infrun.c (proceed): Clear the stepping state, set
	previous_inferior_ptid and clear infwait state.
	(wait_for_inferior): Don't clear the stepping state, set
	previous_inferior_ptid, or clear the infwait state here.
	(fetch_inferior_event): Don't clear the stepping state, set
	previous_inferior_ptid, or clear the infwait state here.  Don't
	condition on wait_for_more.

2008-07-09  Pedro Alves  <pedro@codesourcery.com>

	Refactor infrun a bit.

	* infrun.c (currently_stepping): Take a struct
	thread_stepping_state instead of an execution_control_state.
	(struct thread_stepping_state): New, split from
	execution_control_state.
	(gtss, tss): New globals.
	(proceed): Clear the stepping state, set previous_inferior_ptid
	and clear infwait state.
	(init_wait_for_inferior): Clear the stepping state,
	previous_inferior_ptid and infwait state.
	(waiton_ptid, infwait_state): New, split from
	execution_control_state.
	(struct execution_control_state): Members that persist through
	events moved out to either struct thred_stepping_state or made
	global.  Deleted unneeded wp, saved_inferior_ptid, tmpstatus.
	(wait_for_inferior, fetch_inferior_event): Use local
	execution_control_state.  Update to execution_control_state split.
	(init_execution_control_state): Adjust.
	(init_thread_stepping_state): New, extracted from
	init_execution_control_state.
	(context_switch): Take a ptid instead of an
	execution_control_state.
	(context_switch_to): Adjust.
	(adjust_pc_after_break): Adjust.
	(init_infwait_state): New.
	(handle_inferior_event): Adjust.

2008-07-09  Pedro Alves  <pedro@codesourcery.com>
	    Vladimir Prus  <vladimir@codesourcery.com>

	Per-thread commands.

	* gdbthread.h: Remove unneeded forward declarations.
	Include "inferior.h".
	(struct thread_info): Add continuations,
	intermediate_continuations, proceed_to_finish, step_over_calls,
	stop_step, step_multi and stop_signal members.
	(save_infrun_state): Add continuations,
	intermediate_continuations, proceed_to_finish, step_over_calls,
	stop_step, step_multi, stop_signal and stop_bpstat parameters.
	(load_infrun_state): Add continuations,
	intermediate_continuations, proceed_to_finish, step_over_calls,
	stop_step, step_multi, stop_signal and stop_bpstat parameters.

	* thread.c (load_infrun_state): In non-stop mode, load
	continuations, intermediate_continuations, proceed_to_finish,
	step_over_calls, stop_step, step_multi and stop_signal.
	(save_infrun_state): Store continuations,
	intermediate_continuations, proceed_to_finish, step_over_calls,
	stop_step, step_multi, stop_signal and stop_bpstat.
	(save_infrun_state): Store continuations,
	intermediate_continuations, proceed_to_finish, step_over_calls,
	stop_step, step_multi, stop_signal and stop_bpstat.
	(free_thread): Clear The thread's stop_bpstat.

	* inferior.h (context_switch_to): Declare.

	* infrun.c (ecss): New global.
	(context_switch): Context switch continuations,
	intermediate_continuations, proceed_to_finish, step_over_calls,
	stop_step, step_multi, stop_signal and stop_bpstat.
	(wait_for_inferior): Use global ecss.
	(async_ecss, async_ecs): Delete.
	(fetch_inferior_event): Use global ecss.
	(context_switch_to): New.

	* top.c (execute_command): In non-stop, only check if the current
	thread is running, in all-stop, check if there's any thread
	running.

	* breakpoint.c (bpstat_remove_breakpoint): New.
	(bpstat_remove_breakpoint_callback): New.
	(delete_breakpoint): Clear the stop_bpstats of all threads.

	* mi/mi-main.c (mi_cmd_execute): In non-stop, only check if the
	current thread is running, in all-stop, check if there's any
	thread running.

	* Makefile.in (gdbthread_h): Depend on $(inferior_h).

2008-07-09  Pedro Alves  <pedro@codesourcery.com>

	Add non_stop global.

	* inferior.h (non_stop): Declare.
	* infrun.c (non_stop, non_stop_1): New.
	(set_non_stop, show_non_stop): New.
	(_initialize_infrun): Add "set/show non-stop" command.

2008-07-09  Pedro Alves  <pedro@codesourcery.com>

	Adjust fork/vfork/exec to pass ptids around.

	* target.h (struct target_waitstatus): Store related_pid as a ptid.
	(inferior_has_forked, inferior_has_vforked, inferior_has_execd):
	Take a ptid_t.
	* breakpoint.h (struct breakpoint): Change forked_inferior_pid
	type to ptid.
	* breakpoint.c (print_it_typical, bpstat_check_location)
	(print_one_breakpoint_location, set_raw_breakpoint_without_location)
	(create_fork_vfork_event_catchpoint): Adjust.
	* infrun.c (fork_event): Change parent_pid and child_pid types to
	ptid.
	(follow_exec, inferior_has_forked, inferior_has_vforked)
	(inferior_has_execd): Take a ptid_t and don't trim it.
	* linux-thread-db.c (thread_db_wait): Don't trim the returned ptid.
	* linux-nat.c (linux_child_follow_fork): Adjust.
	* inf-ptrace.c (inf_ptrace_wait): Adjust.
	* inf-ttrace.c (inf_ttrace_wait): Adjust.
	* win32-nat.c (get_win32_debug_event): Don't set related_pid.

2008-07-09  Pedro Alves  <pedro@codesourcery.com>

	Add "executing" property to threads.

	* inferior.h (target_executing): Delete.
	* gdbthread.h (struct thread_info): Add executing_ field.
	(set_executing, is_executing): New.
	* thread.c (main_thread_executing): New.
	(init_thread_list): Clear it and also main_thread_running.
	(is_running): Return false if target has no execution.
	(any_running, is_executing, set_executing): New.

	* top.c: Include "gdbthread.h".
	(target_executing): Delete.
	(execute_command): Replace target_executing check by any_running.
	* event-top.c: Include "gdbthread.h".
	(display_gdb_prompt, command_handler): Replace target_executing by
	is_running.
	* inf-loop.c: Include "gdbthread.h".  Don't mark as not executing
	here.  Replace target_executing by is_running.
	* infrun.c (handle_inferior_event): Mark all threads as
	not-executing.
	* linux-nat.c (linux_nat_resume): Don't mark thread as executing
	here.
	* stack.c (get_selected_block): Return null if inferior is
	executing.
	* target.c (target_resume): Mark resumed ptid as executing.
	* breakpoint.c (until_break_command): Replace target_executing
	check by is_executing.
	* remote.c (remote_async_resume): Don't mark inferior as executing
	here.
	* mi/mi-interp.c (mi_cmd_interpreter_exec): Replace target_executing
	by any_running.

	* mi/mi-main.c (mi_cmd_exec_interrupt, mi_cmd_execute)
	(mi_execute_async_cli_command): Replace target_executing by
	is_running.

	* frame.c (get_current_frame): Error out if the current thread is
	executing.
	(has_stack_frames): New.
	(get_selected_frame, deprecated_safe_get_selected_frame): Check
	has_stack_frames.

	* Makefile.in (event-top.o, frame.o, inf-loop.o, top.o): Depend on
	$(gdbthread_h).

2008-07-09  Pedro Alves  <pedro@codesourcery.com>

	* symfile.c (load_command): Reopen the exec file and reread
	symbols before anything else.

2008-07-09  Pedro Alves  <pedro@codesourcery.com>

	* remote-sim.c: Include gdbthread.h.
	(remote_sim_ptid): New global.
	(gdbsim_create_inferior): Silently add the main task to GDB's
	thread list.
	(gdbsim_close, gdbsim_mourn_inferior): Silently delete the main
	task from GDB's thread list.
	(gdbsim_resume): Adjust to use remote_sim_ptid.
	(gdbsim_thread_alive, gdbsim_pid_to_str): New.
	(init_gdbsim_ops): Register gdbsim_thread_alive and
	gdbsim_pid_to_str.
	(_initialize_remote_sim): Initialize remote_sim_ptid.
	* Makefile.in (remote-sim.o): Depend on $(gdbthread_h).

2008-07-09  Pedro Alves  <pedro@codesourcery.com>

	* monitor (monitor_ptid): New global.
	(monitor_open): Silently add the main task to GDB's thread list.
	(monitor_close, monitor_mourn_inferior): Silently delete the main
	task from GDB's thread list.
	(monitor_thread_alive, monitor_pid_to_str): New.
	(init_base_monitor_ops): Register monitor_thread_alive and
	monitor_pid_to_str.
	(_initialize_remote_monitors): Initialize monitor_ptid.

	* gdbthread.h (delete_thread_silent): Declare.
	* thread.c (delete_thread): Rename to ...
	(delete_thread_1): ... this.  Add "silent" parameter.  If silent,
	don't do exit notifications.
	(delete_thread, delete_thread_silent): New, as wrappers to
	delete_thread_1.

2008-07-08  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (update_global_location_list): Add boolean
	"should_insert" argument.  Only insert locations if caller told it
	too.
	(update_global_location_list_nothrow): Add boolean "should_insert"
	argument.  Pass it to update_global_location_list.
	(insert_breakpoints, create_longjmp_breakpoint)
	(create_overlay_event_breakpoint, enable_overlay_breakpoints)
	(create_thread_event_breakpoint, create_solib_event_breakpoint)
	(create_fork_vfork_event_catchpoint, create_exec_event_catchpoint)
	(enable_watchpoints_after_interactive_call_stop)
	(set_momentary_breakpoint, create_breakpoints)
	(break_command_really, watch_command_1)
	(create_ada_exception_breakpoint, update_breakpoint_locations)
	(do_enable_breakpoint, enable_command): Pass true to
	update_global_location_list.
	(bpstat_stop_status, disable_overlay_breakpoints)
	(disable_watchpoints_before_interactive_call_start)
	(delete_breakpoint, disable_breakpoint, disable_command): Pass
	false to update_global_location_list.
	(update_breakpoints_after_exec): Don't temporarily disable
	always-inserted mode.

2008-07-08  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (mark_breakpoints_out): Make public.
	(update_breakpoints_after_exec): Don't call mark_breakpoints_out
	here.  Update comment.
	* breakpoint.h (mark_breakpoints_out): Declare.

	* linux-nat.c (linux_handle_extended_wait): On
	TARGET_WAITKIND_EXECD, call mark_breakpoints_out.
	* inf-ttrace.c (inf_ttrace_wait): Likewise.

2008-07-08  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (follow_exec): Reset shared libraries before adding the
	main exec file.

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

	* breakpoint.c (bpstat_copy): Call RELEASE_VALUE on the new OLD_VAL.

2008-07-07  Pedro Alves  <pedro@codesourcery.com>

	* i386-dicos-tdep.c: Include "inferior.h".
	(i386_dicos_frame_align): New.
	(i386_dicos_init_abi): Register i386_dicos_frame_align.  Set call
	dummy location ON_STACK.
	* Makefile.in (i386-dicos-tdep.o): Depend on $(inferior_h).

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

	* gstdint.h: New file.

2008-07-05  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-interp.c (mi_on_resume): Don't try to report
	resumed thread it the thread list is empty.

2008-07-05  Pierre Muller  <muller@ics.u-strasbg.fr>

	* cli/cli-decode.c (add_setshow_optional_filename_cmd): Set
	completer for set to filename_completer.

	NEWS: Mention it.

2008-07-04  Vladimir Prus  <vladimir@codesourcery.com>

	Implement -target-attach.
	* mi/mi-cmds.c (mi_cmds): Forward -target-attach to CLI attach.

2008-06-21  Hui Zhu  <teawater@gmail.com>

	* target-descriptions.c (maint_print_c_tdesc_cmd): Fix a memory leak.

2008-07-03  Pedro Alves  <pedro@codesourcery.com>

	* config/i386/nm-cygwin.h (ATTACH_NO_WAIT): Delete.
	* config/i386/nm-i386gnu.h (ATTACH_NO_WAIT): Delete.

	* target.h (struct target_ops): Add to_attach_no_wait member.
	(target_attach_no_wait): New.
	* target.c (update_current_target): Inherit to_attach_no_wait.

	* infcmd.c: Replace ATTACH_NO_WAIT compile time check by
	target_attach_no_wait runtime check.

	* gnu-nat.c (init_gnu_ops): Set to_attach_no_wait in gnu_ops.
	* win32-nat.c (init_win32_ops): Set to_attach_no_wait in
	win32_ops.

2008-07-03  Pedro Alves  <pedro@codesourcery.com>

	* i386-tdep.c (i386_displaced_step_fixup): Condition log printing
	on debug_displaced being set.

2008-06-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* frame.c (get_prev_frame_1): Call frame_unwind_find_by_frame
	directly instead of get_frame_id.

2008-06-30  Luis Machado  <luisgpm@br.ibm.com>

	* rs6000-tdep.c (ppc_displaced_step_fixup): New function.
	(deal_with_atomic_sequence): Update BC masks.
	(rs6000_gdbarch_init): Init displaced stepping infra-structure.
	Define BRANCH_MASK, B_INSN, BC_INSN, BXL_INSN, BP_MASK and BP_INSN.

2008-06-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* cris-tdep.c (crisv32_single_step_through_delay): Get this frame's
	register, not the previous frame's.

2008-06-30  Luis Machado  <luisgpm@br.ibm.com>

	* source.c (select_source_symtab): Make sure we skip namespace
	symtabs when showing cpp source code.

2008-06-30  Hans-Peter Nilsson  <hp@axis.com>

	* MAINTAINERS (Authorized committers): Fix my email address.

2008-06-28  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-cmds.c (mi_cmds): Route -exec-run, -exec-until,
	-target-download and -target-select via CLI, so that
	the quoting rules are the same as they were (unfortunately)
	in all prior gdb releases.
	* mi/mi-cmds.h (mi_cmd_exec_run, mi_cmd_exec_until)
	(mi_cmd_target_download, mi_cmd_target_select): Remove.
	* mi/mi-main.c (mi_cmd_exec_run, mi_cmd_exec_until)
	(mi_cmd_target_download, mi_cmd_target_select): Remove.
	(mi_cmd_execute): Set current_token even for commands
	routed via CLI.

2008-06-28  Ulrich Weigand  <uweigand@de.ibm.com>

	* alphafbsd-tdep.c: Update for unwinder changes.
	* alpha-linux-tdep.c: Likewise.
	* alphanbsd-tdep.c: Likewise.
	* alphaobsd-tdep.c: Likewise.
	* avr-tdep.c: Likewise.
	* cris-tdep.c: Likewise.
	* frv-linux-tdep.c: Likewise.
	* frv-tdep.c: Likewise.
	* h8300-tdep.c: Likewise.
	* hppa-linux-tdep.c: Likewise.
	* iq2000-tdep.c: Likewise.
	* m32c-tdep.c: Likewise.
	* m32r-linux-tdep.c: Likewise.
	* m32r-tdep.c: Likewise.
	* m68hc11-tdep.c: Likewise.
	* mep-tdep.c: Likewise.
	* mn10300-tdep.c: Likewise.
	* mt-tdep.c: Likewise.
	* score-tdep.c: Likewise.
	* sh64-tdep.c: Likewise.
	* sh-tdep.c: Likewise.
	* sparc64fbsd-tdep.c: Likewise.
	* sparc64nbsd-tdep.c: Likewise.
	* sparc64obsd-tdep.c: Likewise.
	* v850-tdep.c: Likewise.
	* vaxobsd-tdep.c: Likewise.
	* vax-tdep.c: Likewise.
	* xstormy16-tdep.c: Likewise.

2008-06-28  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-main.c (enum captured_mi_execute_command_actions)
	(captured_mi_execute_command_args): Remove.
	(captured_mi_execute_command): Cast the closure to mi_parse
	pointer, not to captured_mi_execute_command_args, and don't
	set the action field thereof.
	(mi_execute_command): Pass struct mi_parse, not
	captured_mi_execute_command_args to captured_mi_execute_command.
	(mi_execute_command): Remove (dead) code for suppressing
	printing prompt.

2008-06-28  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (enum sigchld_state): New.
	(linux_nat_async_events_state): Renamed from
	linux_nat_async_events_enabled.
	(linux_nat_event_pipe_push, my_waitpid): Adjust.
	(sigchld_default_action): New.
	(lin_lwp_attach_lwp): Adjust.  Call linux_nat_async_events
	unconditionally.
	(linux_nat_create_inferior): Set events state to sigchld_default
	state.
	(linux_nat_resume): Adjust.
	(linux_nat_wait): Call linux_nat_async_events unconditionally.
	(sigchld_handler): Adjust.
	(linux_nat_async_mask): Don't set SIGCHLD actions here.
	(get_pending_events): Adjust.
	(linux_nat_async_events): Rewrite to handle enum sigchld_state
	instead of a boolean.
	(linux_nat_async): Adjust.
	(_initialize_linux_nat): Capture default SIGCHLD action into
	sigchld_default_action.

2008-06-28  Vladimir Prus  <vladimir@codesourcery.com>

	* breakpoint.c (moribund_locations): New.
	(bpstat_stop_status): Process moribund locations.
	(update_global_location_list): Add removed
	locations to moribund_locations.
	(breakpoint_retire_moribund): New.
	* breakpoint.h (struct bp_location): New field
	events_till_retirement.
	(breakpoint_retire_moribund): Declare.
	* thread.c (thread_count): New.
	* infrun.c (handle_inferior_event): Call
	breakpoint_retire_moribund.
	* gdbthread.h (thread_count): Declare.

2008-06-27  Joseph Myers  <joseph@codesourcery.com>

	* dfp.c (decimal_convert): Call match_endianness before and after
	conversion.

2008-06-27  Jonathan Larmour  <jifl@eCosCentric.com>

	* remote.c (remote_insert_breakpoint): Ensure that if Z0
	unsupported and we fall back to memory_insert_breakpoint, we
	use the unmodified requested address.

2008-06-27  Joel Brobecker  <brobecker@adacore.com>

	* dwarf2read.c (read_attribute_value): Issue a complaint when
	adjusting size attribute values of 0xffffffff as zero.

2008-06-27  Joseph Myers  <joseph@codesourcery.com>

	* i386-tdep.c (i386_16_byte_align_p): New.
	(i386_push_dummy_call): Determine stack space required for
	arguments going forwards allowing for 16-byte alignment, then push
	arguments going forwards.

2008-06-27  Pedro Alves  <pedro@codesourcery.com>

	* infrun.c (start_remote): Don't clear thread list here.
	* monitor.c (monitor_open): Include "gdbthread.h".  Clear thread
	list here.
	* remote.c (record_currthread): Upgrade the main thread and its
	entry in the thread list if this is the first time we hear about
	threads.
	(remote_thread_alive): Consider magic_null_ptid or a ptid without
	a tid member always alive.
	(remote_find_new_threads): Don't update the main thread here.
	(remote_start_remote): Clear thread list here.  Always add the
	main thread.
	(extended_remote_attach_1): Add the main thread here.
	(extended_remote_mourn_1): Re-add the main thread here.
	(extended_remote_create_inferior_1): Add a main thread.

	* Makefile.in (monitor.o): Depend on $(gdbthread_h).

2008-06-27  Pedro Alves  <pedro@codesourcery.com>

	Use ptid_t.tid to store thread ids instead of ptid_t.pid.

	* remote.c (magic_null_ptid, not_sent_ptid, any_thread_ptid): New
	globals.
	(general_thread, continue_thread): Change type to ptid_t.
	(record_currthread): Take a ptid_t parameter instead of an
	integer.
	(MAGIC_NULL_PID): Delete.
	(set_thread): Take a ptid_t parameter and adjust.
	(set_general_thread, set_continue_thread): New.
	(remote_thread_alive, remote_newthread_step)
	(remote_current_thread, remote_find_new_threads)
	(remote_threads_info, remote_start_remote, remote_vcont_resume)
	(remote_resume_1, remote_wait, extended_remote_create_inferior_1)
	(threadalive_test, remote_pid_to_str)
	(remote_get_thread_local_address): Adjust.
	(_initialize_remote): Initialize magic_null_ptid, not_sent_ptid
	and any_thread_ptid.

2008-06-26  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* configure.ac (--enable-tui): AC_MSG_ERROR for explicit --enable-tui.
	* configure: Regenerated.

2008-06-26  Joel Brobecker  <brobecker@adacore.com>

	* dwarf2read.c (read_attribute_value): Treat size attribute
	values of 0xffffffff as if the attribute value was zero.

2008-06-26  Vladimir Prus  <vladimir@codesourcery.com>

	* linux-nat.c: Add description of overall logic.

2008-06-26  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (GNULIB_H): Use GNULIB_STDINT_H.
	(gdb_stdint_h, gdb_stdint.h, stamp-int): Delete.  Remove
	all dependencies on $(gdb_stdint_h).
	(distclean): Do not delete gdb_stdint.h.
	* acinclude.m4: Do not use stdint.m4.
	* configure.ac: Set GNULIB_STDINT_H.  Remove tests for stdint.h,
	uintptr_t, and gdb_stdint.h.
	* defs.h: Include <stdint.h>.
	* gdb_thread_db.h: Assume stdint.h is already included.
	* breakpoint.c, findcmd.c, hppa-tdep.c, inf-ptrace.c, proc-service.c,
	rs6000-nat.c, spu-linux-nat.c, target.c, win32-nat.c: Do not
	include gdb_stdint.h.
	* configure, config.in: Regenerate.

2008-06-26  Joseph Myers  <joseph@codesourcery.com>

	* ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Handle passing
	decimal floating-point values in GPRs for soft-float.
	(do_ppc_sysv_return_value): Handle returning decimal
	floating-point values in GPRs for soft-float.

2008-06-26  Vladimir Prus  <vladimir@codesourcery.com>

	* target.c (target_read_until_error): New.
	* target.h (target_read_until_error): Declare.
	* mi/mi-main.c (mi_cmd_data_read_memory): Use
	target_read_until_error.

2008-06-25  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix a memory leak found by Hui Zhu <teawater@gmail.com>.
	* c-exp.y (parse_number): Move the S and SAVED_CHAR initialization
	after the DECFLOAT detection to fix a memory leak.  Remove the
	redundant NUM initialization.  Protect the DECFLOAT detection memory
	access before the P block.  Restore the P memory content for the
	DECFLOAT detection.

2008-06-25  Vladimir Prus  <vladimir@codesourcery.com>

	Kill the return value for all MI command functions.
	* mi/mi-cmds.h (enum mi_cmd_result): Remove.
	(mi_cmd_argv_ftype): Change return type to void.

	* mi/mi-main.c: Adjust all function that implement
	MI commands to return nothing.
	(struct captured_mi_execute_command_actions):
	Remove the rc field.
	(mi_cmd_execute): Return nothing.
	(mi_execute_async_cli_command): Return nothing.
	(mi_cmd_exec_interrupt): Don't print ^done here.
	(mi_cmd_target_select): Don't print ^connected here.
	(captured_mi_execute_command): Don't check for MI_CMD_DONE.
	Special-case -target-select and output ^connected, not ^done.

	* mi/mi-cmd-break.c: Adjust.
	* mi/mi-cmd-disas.c: Adjust.
	* mi/mi-cmd-env.c: Adjust.
	* mi/mi-cmd-file.c: Adjust.
	* mi/mi-cmd-stack.c: Adjust.
	* mi/mi-cmd-target.c: Adjust.
	* mi/mi-cmd-var.c: Adjust.
	* mi/mi-interp.c: Adjust.
	* mi/mi-symbol-cmds.c: Adjust.

2008-06-25  Vladimir Prus  <vladimir@codesourcery.com>

	Emit ^running via observer.
	* mi/mi-interp.c (mi_cmd_interpreter_exec): Do no print
	^running here.
	(mi_on_resume): Print ^running if not previously output.
	* mi/mi-main.c (running_result_record_printed): New.
	(captured_mi_execute_command): Reset
	running_result_record_printed.  Use running_result_record_printed
	to decide if we should skip ^done.
	(mi_execute_async_cli_command): Don't print ^running here.
	* mi/mi-main.h (current_token, running_result_record_printed):
	Declare.

2008-06-24  Michael Snyder  <msnyder@specifix.com>

	* infrun.c (_initialize_infrun): White space and typo fix.

2008-06-23  Christopher Faylor  <me.gdb.changelog@cgf.cx>

	* win32-nat.c (safe_symbol_file_add_stub): Remove unused variable.
	(do_initial_win32_stuff): Fix problem with inability to set breakpoints
	when first loading DLL with "dll" command.

2008-06-19  Pierre Muller  <muller@ics.u-strasbg.fr>

	* gnu-nat.c (proc_string): Use capital T for "Thread".

2008-06-19  Pierre Muller  <muller@ics.u-strasbg.fr>

	* win32-nat.c (win32_pid_to_str): Use capital T for "Thread".

2008-06-18  Joel Brobecker  <brobecker@adacore.com>

	* solib-osf.c (osf_solib_create_inferior_hook): Do nothing if
	the target cannot run.

2008-06-18  Joel Brobecker  <brobecker@adacore.com>

	* solib-osf.c (osf_solib_create_inferior_hook): Do nothing if
	we're attaching to a running process.

2008-06-18  Pierre Muller  <muller@ics.u-strasbg.fr>

	* win32-nat.c (handle_load_dll): Give dll name and load address
	if debug_events is on.
	(handle_unload_dll): Likewise.

2008-06-14  Vladimir Prus  <vladimir@codesourcery.com>

	Don't suppress *running when doing finish.
	* infcall.c (call_function_by_hand): Set both
	suppress_resume_observer and suppress_stop_observer.
	* infcmd.c (suppress_run_stop_observers): Split into...
	(suppress_resume_observer, suppress_stop_observer): ...those.
	(finish_command_continuation): Clear suppress_stop_observer.
	(finish_command): Set suppress_stop_observer.
	* inferior.h (suppress_run_stop_observers): Split into...
	(suppress_resume_observer, suppress_stop_observer): ...those.
	* infrun.c (normal_stop): Check for suppress_stop_observer.
	* thread.c (set_running): Check for suppress_resume_observer.

2008-06-12  Pedro Alves  <pedro_alves@portugalmail.pt>
	    Pierre Muller  <muller@ics.u-strasbg.fr>

	* gdbarch.sh (gdbarch_skip_main_prologue): New.
	* gdbarch.h, gdbarch.c: Regenerate.
	* i386-tdep.h (i386_skip_main_prologue): Declare.
	* i386-tdep.c (i386_skip_main_prologue): New.
	* i386-cygwin-tdep.c (i386_cygwin_init_abi): Register
	i386_skip_main_prologue as gdbarch_skip_main_prologue gdbarch callback.
	* symtab.c (find_function_start_sal): When pc points at the "main"
	function, call gdbarch_skip_main_prologue.

2008-06-11  Daniel Jacobowitz  <dan@codesourcery.com>

	* value.c (value_primitive_field): Fetch lazy register values.

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

	* NEWS: Mention support removal of undocumented S AA p PID stop
	reply packet.

	* remote.c (remote_wait): Remove undocumented S AA p PID support.

2008-06-10  Stan Shebs  <stan@codesourcery.com>

	* MAINTAINERS: Update my affiliation and address.

2008-06-10  Andreas Schwab  <schwab@suse.de>

	* top.c (print_gdb_version): Don't print final newline.

2008-06-10  Vladimir Prus  <vladimir@codesourcery.com>

	Implement *running.
	* Makefile.in: Update dependencies.
	* gdbthread.h (struct thread_info): New field
	running_.
	(set_running, is_running): New.
	* thread.c (set_running, is_running): New.
	* inferior.h (suppress_normal_stop_observer): Rename to...
	(suppress_run_stop_observers): ..this.
	* infcmd.c (suppress_normal_stop_observer): Rename to...
	(suppress_run_stop_observers): ..this.
	(finish_command_continuation, finish_command): Adjust.
	* infcall.c (call_function_by_hand): Adjust.
	* infrun.c (normal_stop): Call set_running.
	* target.c (target_resume): New.  Call set_running.
	* target.h (target_resume): Convert from macro to
	a function.

	* mi/mi-interp.c (mi_on_resume): New.
	(mi_interpreter_init): Register mi_on_resume.

2008-06-10  Vladimir Prus  <vladimir@codesourcery.com>

	Use observers to report stop events in MI.
	* mi/mi-interp.c (mi_on_normal_stop): New.
	(mi_interpreter_init): Register mi_on_normal_stop.
	(mi_interpreter_exec_continuation): Remove.
	(mi_cmd_interpreter_exec): Don't register the above.
	* mi/mi-main.c (captured_mi_execute_command): Don't care
	about sync_execution.
	(mi_execute_async_cli_command): Don't install continuation.  Don't
	print *stopped.
	(mi_exec_async_cli_cmd_continuation): Remove.

2008-06-10  Vladimir Prus  <vladimir@codesourcery.com>

	Suppress normal stop observer when it's problematic.
	* inferior.h (suppress_normal_stop_observer): New.
	* infcall.c (call_function_by_hand): Disable stop events when
	doing function calls.
	* infmcd.c (suppress_normal_stop_observer): New.
	(finish_command_continuation): Call normal_stop observer
	explicitly.
	(finish_command): Disable stop events inside proceed.
	* infrun.c (normal_stop): Don't call normal stop observer if
	suppressed of if multi-step is in progress.

2008-06-10  Vladimir Prus  <vladimir@codesourcery.com>

	Remove stale code.
	* infrun.c (finish_command): Don't pass cleanup
	to continuation.
	(finish_command_continuation): Don't grab cleanup from
	the passed data, as we don't use, and cannot, use it anyway.

2008-06-10  Vladimir Prus  <vladimir@codesourcery.com>

	Introduce common cleanup for restoring integers.
	* defs.h (make_cleanup_restore_integer): New declaration.
	(struct cleanup): New field free_arg.
	(make_my_cleanup_2): New.
	* utils.c (restore_integer_closure, restore_integer)
	(make_cleanup_restore_integer): New.
	(make_my_cleanup): Initialize the free_arg field and
	renamed to make_my_cleanup_2.
	(do_my_cleanups): Call free_arg.
	(discard_cleanups): Call free_arg.
	* breakpoint.c (restore_always_inserted_mode): Remove.
	(update_breakpoints_after_exec): Use make_cleanup_restore_integer.

2008-06-09  Doug Evans  <dje@google.com>

	* remote.c (remote_wait): Include beginning of malformed packet
	in error output.

2008-06-09  Tom Tromey  <tromey@redhat.com>

	* completer.c (complete_line): Don't special-case
	expression_completer.
	(expression_completer): Only pass last word to
	location_completer.
	* c-exp.y (yylex): Check 'token', not 'operator'.

2008-06-09  Daniel Jacobowitz  <dan@codesourcery.com>

	* configure.ac (build_warnings): Add -Wno-format for mingw.
	* configure: Regenerated.

2008-06-07  Daniel Jacobowitz  <dan@codesourcery.com>

	* NEWS: Make indentation consistent.  Move exec tracing entry out
	of remote packet list.

2008-06-06  Tom Tromey  <tromey@redhat.com>

	* value.h (evaluate_subexpression_type, extract_field_op):
	Declare.
	* printcmd.c (_initialize_printcmd): Use expression_completer for
	'p', 'inspect', 'call'.
	* parser-defs.h (parse_field_expression): Declare.
	* parse.c: Include exceptions.h.
	(in_parse_field, expout_last_struct): New globals.
	(mark_struct_expression): New function.
	(prefixify_expression): Return int.
	(prefixify_subexp): Return int.  Use expout_last_struct.
	(parse_exp_1): Update.
	(parse_exp_in_context): Add 'out_subexp' argument.  Handle
	in_parse_field.
	(parse_field_expression): New function.
	* expression.h (parse_field_expression): Declare.
	(in_parse_field): Likewise.
	* eval.c (evaluate_subexpression_type): New function.
	(extract_field_op): Likewise.
	* completer.h (expression_completer): Declare.
	* completer.c (expression_completer): New function.
	(count_struct_fields, add_struct_fields): New functions.
	* c-exp.y (yyparse): Redefine.
	(COMPLETE): New token.
	(exp): New productions.
	(saw_name_at_eof, last_was_structop): New globals.
	(yylex): Return COMPLETE when needed.  Recognize in_parse_field.
	(c_parse): New function.
	* breakpoint.c (_initialize_breakpoint): Use expression_completer
	for watch, awatch, and rwatch.
	* Makefile.in (parse.o): Depend on exceptions_h.

2008-06-06  Paul Pluzhnikov  <ppluzhnikov@google.com>

	PR gdb/1147
	* valopts.c (find_overload_match): Handle references
	to pointers.

2008-06-06  Paul N. Hilfinger  <hilfinger@adacore.com>

	* ada-lang.c (ada_value_assign): Correct big-endian case to take into
	account the bitsize of the 'from' operand.

2008-06-06  Pedro Alves  <pedro@codesourcery.com>

	* annotate.h (annotate_thread_changed): Declare.

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

	* annotate.c (annotate_thread_changed): New function.
	* thread.c (thread_command) : Use it.
	* infrun.c (normal_stop): Use it.

2008-06-05  Vladimir Prus  <vladimir@codesourcery.com>
	    Nathan Sidwell  <nathan@codesourcery.com>
	    Joseph Myers  <joseph@codesourcery.com>

	* acinclude.m4: Include ../config/acx.m4.
	* configure.ac: Use ACX_PKGVERSION and ACX_BUGURL.
	* configure, config.in: Regenerate.
	* main.c (print_gdb_help): Use REPORT_BUGS_TO for bug-reporting
	address.
	* top.c (print_gdb_version): Use PKGVERSION and REPORT_BUGS_TO.

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

	Replace 'target async' by 'maintenance set remote-async' and
	'target remote' combination.

	* remote.c (remote_async_wait): Merge into remote_wait, and
	remove.
	(remote_async_permitted, remote_async_permitted_set): New
	variables.
	(set_maintenance_remote_async_permitted)
	(show_maintenance_remote_async_permitted): New functions.
	(remote_async_ops, extended_async_remote_ops): Delete.
	(remote_async_open, extended_remote_async_open): Delete.
	(remote_open_1): Drop async_p parameter.  Update callers.  Replace
	async_p with remote_async_permitted checks.
	(extended_async_remote_attach): Delete.
	(remote_resume, remote_async_resume): Merge and leave remote_resume.
	(remote_async_terminal_inferior): Rename to...
	(remote_terminal_inferior): ... this, and add
	remote_async_termitted check.
	(remote_async_terminal_ours): Rename to...
	(remote_terminal_ours): ... this, and add remote_async_termitted
	check.
	(remote_wait, remote_async_wait): Merge and leave remote_wait
	only.
	(remote_kill, remote_async_kill): Merge and leave remote_kill
	only.
	(remote_async_mourn, extended_async_remote_mourn): Delete.
	(extended_remote_create_inferior_1): Drop async_p parameter.
	Update callers.  Always use extended_remote_ops.
	(extended_remote_async_create_inferior): Delete.
	(remote_return_zero): Delete.
	(init_remote_ops): Register remote_can_async_p, remote_async,
	remote_async_mask, remote_terminal_inferior and
	remote_terminal_ours.
	(remote_can_async_p, remote_is_async_p): Check for
	remote_async_permitted.
	(init_remote_async_ops, init_extended_async_remote_ops): Remove.
	(set_remote_cmd): Don't add async and extended-async targets.
	(_initialize_remote): Add set/show remote-async maintenance
	commands.

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

	* remote.c (kill_kludge): Delete.
	(remote_wait, remote_async_wait): Don't set it.
	(remote_kill, remote_async_kill): Don't do anything with it.

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

	* linux-thread-db.c (thread_db_wait): Don't trim event ptid.

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

	* bcache.c (bcache_data): Call deprecated_bcache_added function.
	(deprecated_bcache_added): New function name. Body of function
	bcache_data is used here with the addition of 'added' argument.
	* bcache.h (deprecated_bcache_added): New function.
	* symfile.c (add_psymbol_to_bcache): New helper function, takes part of
	work from add_psymbol_to_list - initialises partial symbol and stashes
	it in objfile's cache.
	(append_psymbol_to_list): New helper function, takes other part of
	work from add_psymbol_to_list - adds partial symbol to the given list.
	(add_psymbol_to_list): Call helper functions instead of doing work
	here. If adding to global list, do not duplicate partial symbols in the
	partial symtab.

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

	* breakpoint.c (print_exception_catchpoint): Put 'exception' back to
	'exception caught|thrown' message.

2008-06-05  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* Makefile.in: Update dependencies.
	* dwarf2expr.c: New include "gdb_assert.h".
	(new_dwarf_expr_context): Initialize MAX_RECURSION_DEPTH.
	(dwarf_expr_eval): Sanity check the RECURSION_DEPTH count.
	(execute_stack_op): Error out on too large RECURSION_DEPTH.
	Increase/decrease RECURSION_DEPTH around the function.

2008-06-05  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (get_offsets): Handle a single segment.
	* symfile.c (symfile_map_offsets_to_segments): Allow more bases
	than segments.

2008-06-03  Daniel Jacobowitz  <dan@codesourcery.com>

	* solib-svr4.c (struct lm_info): Add lm_addr.
	(main_lm_addr): New.
	(svr4_default_sos): Set lm_addr.
	(svr4_current_sos): Set lm_addr and main_lm_addr.
	(svr4_fetch_objfile_link_map): Rewrite.
	(svr4_clear_solib): Clear main_lm_addr.

2008-06-03  Michael Snyder  <msnyder@redhat.com>
	    Joseph Myers  <joseph@codesourcery.com>

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

2008-06-02  Roman Zippel <zippel@linux-m68k.org>

	* m68klinux-tdep.c (m68k_linux_pc_in_sigtramp): Fix incorrect test.

2008-06-02  Roman Zippel <zippel@linux-m68k.org>

	* m68k-tdep.c (m68k_analyze_prologue): Fix length of lea insn.

2008-06-01  Joel Brobecker  <brobecker@adacore.com>

	* rs6000-aix-tdep.c (rs6000_convert_from_func_ptr_addr): Do not
	treat pointers in data space as function descriptors if the
	target address is also in the data space.

2008-05-30  Joel Brobecker  <brobecker@adacore.com>

	* alpha-tdep.c (alpha_heuristic_frame_unwind_cache): Set
	the trad-frame register value for the SP register.

2008-05-29  Mark Kettenis  <kettenis@gnu.org>

	* sparcnbsd-tdep.c, sparcobsd-tdep.c: Update for unwinder changes.

2008-05-28  Joel Brobecker  <brobecker@adacore.com>

	* ia64-tdep.c (ia64_convert_from_func_ptr_addr): Improve the heuristic
	that identifies function descriptors outside of the .opd section.

2008-05-28  Aleksandar Ristovski  <aristovski@qnx.com>

	* breakpoint.c (print_exception_catchpoint): In CLI add 'Temporary' for
	temporary catchpoints.  In MI add missing fields 'reason', 'disp',
	'bkptno'.
	(print_mention_exception_catchpoint): Add 'Temporary' for temporary
	catchpoints.
	(handle_gnu_v3_exceptions): Use tempflag.

2008-05-28  Vladimir Prus  <vladimir@codesourcery.com>

	Refactor varobj_update interface.
	* varobj.c (varobj_update): Report changes as vector.  Also
	return not just a list of varobj, but a list of special structures
	that tell what exactly has changed.
	* varobj.h (enum varobj_update_error): Rename to
	varobj_scope_status.
	(struct varobj_update_result_t): New.
	(varobj_update): Adjust prototype.
	* mi/mi-cmd-var.c: Adjust for changes.

2008-05-28  Vladimir Prus  <vladimir@codesourcery.com>

	* varobj.c (varobj_update): Fix comment typo.
	Fix indentation.

2008-05-26  Joel Brobecker  <brobecker@adacore.com>

	Set the symtab field of symbols read from ECOFF debugging entries.
	* mdebugread.c (add_symbol): Add new parameter symtab.
	(parse_symbol): Update calls to add_symbol throughout.

2008-05-27  Andreas Schwab  <schwab@suse.de>

	* symtab.h (enum address_class): Remove LOC_REGPARM and
	LOC_COMPUTED_ARG.
	(struct symbol): Add is_argument.
	(SYMBOL_IS_ARGUMENT): Define.

	* ada-lang.c (ada_add_block_symbols): Use SYMBOL_IS_ARGUMENT.
	* buildsym.c (finish_block): Likewise.
	* stack.c (print_frame_args, print_block_frame_locals)
	(print_frame_arg_vars): Likewise.
	* symtab.c (lookup_block_symbol): Likewise.
	* tracepoint.c (add_local_symbols): Likewise.
	* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.

	* coffread.c (process_coff_symbol): Set SYMBOL_IS_ARGUMENT.
	* dwarf2read.c (new_symbol): Likewise.
	* mdebugread.c (parse_symbol): Likewise.
	* stabsread.c (define_symbol): Likewise.

	* ada-exp.y (select_possible_type_sym): Don't handle LOC_REGPARM
	and LOC_COMPUTED_ARG.
	* ada-lang.c (resolve_subexp, symtab_for_sym): Likewise.
	* ax-gdb.c (gen_var_ref): Likewise.
	* eval.c (evaluate_subexp_for_address): Likewise.
	* findvar.c (symbol_read_needs_frame, read_var_value): Likewise.
	* m2-exp.y (yylex): Likewise.
	* printcmd.c (address_info): Likewise.
	* symmisc.c (print_symbol, print_partial_symbols): Likewise.
	* tracepoint.c (collect_symbol, scope_info): Likewise.

2008-05-24  Carlos Eduardo Seo  <cseo@linux.vnet.ibm.com>

	* gdbarch.sh: Added new gdbarch struct
	core_regset_sections.
	* gdbarch.c: Refreshed.
	* gdbarch.h: Refreshed.
	* regset.h (core_regset_section): Declared.
	* linux-nat.c (linux_nat_do_thread_registers): Added
	support for the new gdbarch struct core_regset_sections.
	* utils.c (host_address_to_string): New function.
	* defs.h (host_address_to_string): New prototype.
	* i386-linux-tdep.c (i386_regset_rections): New register
	sections list for i386.
	  (i386_linux_init_abi): Initialized new gdbarch struct
	  core_regset_sections.
	* Makefile.in: Updated to reflect dependency changes.
	* ppc-linux-tdep.c (ppc_regset_sections): Register
	sections list for ppc.
	  (ppc_linux_init_abi): Initialized new gdbarch struct
	  core_regset_sections

2008-05-24  Andreas Schwab  <schwab@suse.de>

	* linespec.c (decode_objc): Save current language around call to
	get_selected_block.

2008-05-23  Joel Brobecker  <brobecker@adacore.com>

	* valprint.h (get_array_bounds): Renames get_array_low_bound.
	* valprint.c (get_array_bounds): Renames get_array_low_bound.
	Return the proper bound value if the array index type is an
	enumerated type. Compute the high bound if requested.
	(val_print_array_elements): Handle the case when the array
	element has a null size.
	* ada-valprint.c (print_optional_low_bound): Add handling
	for empty arrays or arrays of zero-size elements.
	(ada_val_print_array): New function, extracted out from
	ada_val_print_1 case TYPE_CODE_ARRAY, and enhanced to
	handle empty arrays and arrays of zero-size elements.
	(ada_val_print_1)[case TYPE_CODE_ARRAY]: Replace extracted-out
	code by call to ada_val_print_array.
	(ada_value_print): Remove handling of null array.  The handling
	was incomplete and is now better handled by ada_val_print_array.

2008-05-23 Markus Deuling  <deuling@de.ibm.com>

	* annotate.c (annotate_source, annotate_frame_begin): Replace
	deprecated_print_address_numeric with paddress.
	* cli/cli-cmds.c (list_command, edit_command): Likewise.
	* tui/tui-stack.c (tui_make_status_line): Likewise.

	* defs.h (deprecated_print_address_numeric): Remove.
	* printcmd.c (deprecated_print_address_numeric): Remove.
	* maint.c (maint_print_section_info): Fix comment.

2008-05-23 Markus Deuling  <deuling@de.ibm.com>

	* valprint.c (print_hex_chars, print_octal_chars, print_decimal_chars,
	print_binary_chars, print_char_chars): Add byte_order parameter and
	replace gdbarch_byte_order.
	(print_decimal_chars): Replace START_P, NOT_END_P and NEXT_P by their
	expressions and remove them.  Remove unused TWO_TO_FOURTH.
	(val_print_type_code_int): Introduce gdbarch_byte_order to get at the
	endianness.  Update call to print_hex_chars.
	* valprint.h (print_hex_chars, print_octal_chars, print_decimal_chars,
	print_binary_chars, print_char_chars): Add byte_order parameter.
	* printcmd.c (print_scalar_formatted): Introduce gdbarch_byte_order to
	get at the endianness.  Update print_*_char calls to use byte_order.

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

	* symtab.h (struct symbol): Make "aux_value" member a void pointer
	instead of a union.
	(SYMBOL_LOCATION_BATON): Update.

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

	* symtab.h (enum address_class): Remove LOC_BASEREG and
	LOC_BASEREG_ARG.
	(struct symbol): Remove "basereg" member of "aux_value" union.
	(SYMBOL_BASEREG): Remove.

	* ada-exp.y (select_possible_type_sym): Do not handle LOC_BASEREG
	or LOC_BASEREG_ARG.
	* ada-lang.c (resolve_subexp, symtab_for_sym): Likewise.
	(ada_add_block_symbols): Likewise.
	* ax-gdb.c (gen_var_ref): Likewise.
	* buildsym.c (finish_block): Likewise.
	* findvar.c (symbol_read_needs_frame, read_var_value): Likewise.
	* m2-exp.y (yylex): Likewise.
	* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
	* printcmd.c (address_info): Likewise.
	* stack.c (print_frame_args, print_block_frame_locals): Likewise.
	(print_frame_arg_vars): Likewise.
	* symmisc.c (print_symbol): Likewise.
	* symtab.c (lookup_block_symbol): Likewise.
	* tracepoint.c (collect_symbol, add_local_symbols): Likewise.
	(scope_info): Likewise.

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

	* symtab.h (enum address_class): Remove LOC_LOCAL_ARG.

	* ada-exp.y (select_possible_type_sym): Do not handle LOC_LOCAL_ARG.
	* ada-lang.c (resolve_subexp, symtab_for_sym): Likewise.
	(ada_add_block_symbols): Likewise.
	* ax-gdb.c (gen_var_ref): Likewise.
	* buildsyms.c (finish_block): Likewise.
	* findvar.c (symbol_read_needs_frame, read_var_value): Likewise.
	* m2-exp.y (yylex): Likewise.
	* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
	* printcmd.c (address_info): Likewise.
	* stack.c (print_frame_args, print_frame_arg_vars): Likewise.
	* symmisc.c (print_symbol, print_partial_symbols): Likewise.
	* symtab.c (lookup_block_symbol): Likewise.
	* tracepoint.c (collect_symbol, add_local_symbols): Likewise.
	(scope_info): Likewise.

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

	* symtab.h (enum address_class): Remove LOC_INDIRECT and
	LOC_HP_THREAD_LOCAL_STATIC.

	* findvar.c (symbol_read_needs_frame, read_var_value): Do not
	handle LOC_INDIRECT or LOC_HP_THREAD_LOCAL_STATIC.
	(read_var_value): Likewise.
	* buildsym.c (finish_block): Likewise.
	* objfiles.c (objfile_relocate): Likewise.
	* printcmd.c (address_info): Likewise.
	* symmisc.c (print_symbol, print_partial_symbols): Likewise.
	* tracepoint.c (scope_info): Likewise.

2008-05-21 Markus Deuling  <deuling@de.ibm.com>
	   Maxim Grigoriev  <maxim2405@gmail.com>

	* xtensa-tdep.c (xtensa_read_register): Remove.
	(xtensa_frame_cache): Get rid of xtensa_read_register. Pass extra
	argument litbase to call0_frame_cache().
	(call0_track_op, call0_analyze_prologue)
	(call0_frame_cache): Use extra argument litbase.

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

	* infcmd.c (_initialize_infcmd): Add new "fin" alias for "finish".

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

	* frame.h (SIZEOF_FRAME_SAVED_REGS): Remove.

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

	* alpha-mdebug-tdep.c: Include "trad-frame.h".
	(struct alpha_mdebug_unwind_cache): Change type of SAVED_REGS to
	struct trad_frame_saved_reg *.
	(alpha_mdebug_frame_unwind_cache): Allocate SAVED_REGS using
	trad_frame_alloc_saved_regs.  Update accesses.  Record previous
	value of SP as being vfp.
	(alpha_mdebug_frame_prev_register): Use trad_frame_get_prev_register.
	* Makefile.in (alpha-mdebug-tdep.o): Update dependencies.

2008-05-21  Markus Deuling  <deuling@de.ibm.com>

	* score-tdep.c (score_print_insn): Get the current endianess from
	disassemble_info instead of gdbarch_byte_order.

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

	* frame.c (get_prev_frame_1): Build frame id before setting
	this_frame->prev_p, not after.

2008-05-21  Nick Roberts  <nickrob@snap.net.nz>

	* annotate.c (annotate_new_thread): New function for new-thread
	annotation.
	* annotate.h: (annotate_new_thread): New extern.
	* thread.c (add_thread_with_info): Use it.
	* Makefile.in (thread.o): Add dependency on annotate.h.

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

	* win32-nat.c (win32_wait): Block the control-c event while
	waiting for a debug event.

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

	* symtab.h (lookup_symbol_in_language): Update comment.
	* symtab.c (lookup_symbol_aux_block): Update comment.
	* ada-lang.c (ada_lookup_symbol_list): Update comment.

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

	* symtab.h (lookup_symbol_in_language): Remove SYMTAB parameter.
	(lookup_symbol): Likewise.
	* symtab.c (lookup_symbol_in_language): Remove SYMTAB parameter.
	(lookup_symbol): Likewise.
	(search_symbols): Update.

	* linespec.c (find_methods, collect_methods): Update.
	(add_matching_methods, add_constructors): Update.
	(decode_compound, decode_dollar, decode_variable): Update.
	(lookup_prefix_sym): Update.

	(symbol_found): Remove SYM_SYMTAB parameter.
	Use SYMBOL_SYMTAB (sym) instead.

	* gdbtypes.c (lookup_typename): Update.
	(lookup_struct, lookup_union, lookup_enum): Update.
	(lookup_template_type): Update.
	(check_typedef): Update.
	* language.c (lang_bool_type): Update.
	* mdebugread.c (parse_procedure): Update.
	* mi/mi-cmd-stack.c (list_args_or_locals): Update.
	* parse.c (write_dollar_variable): Update.
	* printcmd.c (address_info): Update.
	* source.c (select_source_symtab): Update.
	* stack.c (print_frame_args, print_frame_arg_vars): Update.
	* valops.c (find_function_in_inferior): Update.
	(value_struct_elt_for_reference): Update.
	* value.c (value_static_field, value_fn_field): Update.

	* alpha-mdebug-tdep.c (find_proc_desc): Update.
	* arm-tdep.c (arm_skip_prologue): Update.
	* mt-tdep.c (mt_skip_prologue): Update.
	* xstormy16-tdep.c (xstormy16_skip_prologue): Update.

	* ada-lang.h (struct ada_symbol_info): Remove SYMTAB member.
	* ada-lang.c (ada_add_block_symbols): Remove SYMTAB parameter.
	(add_defn_to_vec): Likewise.
	(ada_add_block_symbols): Likewise.
	(lookup_cached_symbol, cache_symbol): Likewise.
	(standard_lookup): Update.
	(ada_lookup_symbol_list): Update.

	* c-valprint.c (c_val_print): Update.
	* cp-support.c (cp_lookup_rtti_type): Update.
	* jv-lang.c (java_lookup_class, get_java_object_type): Update.
	* objc-lang.c (lookup_struct_typedef, find_imps): Update.
	* p-valprint.c (pascal_val_print): Update.
	* scm-lang.c (scm_lookup_name): Update.

	* c-exp.y: Update.
	* f-exp.y: Update.
	* jv-exp.y: Update.
	* m2-exp.y: Update.
	* objc-exp.y: Update.
	* p-exp.y: Update.

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

	* language.h (struct language_defn): Remove SYMTAB parameter from
	la_lookup_symbol_nonlocal callback function pointer.

	* ada-lang.h (ada_lookup_encoded_symbol): Remove SYMTAB parameter.
	(ada_lookup_encoded_symbol): Likewise.
	* ada-lang.c (ada_lookup_encoded_symbol): Remove SYMTAB parameter.
	Always call fixup_symbol_section.
	(ada_lookup_symbol): Remove SYMTAB parameter.
	(ada_lookup_symbol_nonlocal): Likewise.
	* ada-exp.y (write_object_renaming): Update.
	(find_primitive_type): Likewise.

	* cp-support.h (cp_lookup_symbol_nonlocal): Remove SYMTAB parameter.
	(cp_lookup_symbol_namespace): Likewise.
	* cp-namespace.c (lookup_namespace_scope): Remove SYMTAB parameter.
	(lookup_symbol_file): Likewise.
	(lookup_possible_namespace_symbol): Likewise.
	(cp_lookup_symbol_nonlocal): Likewise.
	(cp_lookup_symbol_namespace): Likewise.
	(cp_lookup_nested_type): Update.

	* scm-valprint.c (scm_inferior_print): Update.
	* valops.c (value_maybe_namespace_elt): Update.

	* solist.h (struct target_so_ops): Remove SYMTAB parameter from
	lookup_lib_global_symbol callback function pointer.
	(solib_global_lookup): Remove SYMTAB parameter.
	* solib.c (solib_global_lookup): Remove SYMTAB parameter.
	* solib-svr4.c (elf_lookup_lib_symbol): Likewise.

	* symtab.h (basic_lookup_symbol_nonlocal): Remove SYMTAB parameter.
	(lookup_symbol_static): Likewise.
	(lookup_symbol_global): Likewise.
	(lookup_symbol_aux_block): Likewise.
	(lookup_global_symbol_from_objfile): Likewise.
	* symtab.c (lookup_symbol_aux): Remove SYMTAB parameter.
	(lookup_symbol_aux_local): Likewise.
	(lookup_symbol_aux_block): Likewise.
	(lookup_symbol_aux_symtabs): Likewise.
	(lookup_symbol_aux_psymtabs): Likewise.
	(lookup_global_symbol_from_objfile): Likewise.
	(basic_lookup_symbol_nonlocal): Likewise.
	(lookup_symbol_static): Likewise.
	(lookup_symbol_global): Likewise.

	(lookup_symbol_in_language): Do not pass SYMTAB to lookup_symbol_aux.

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

	* remote.c (init_extended_remote_ops): Fix typo.

2008-05-16  Pedro Alves  <pedro@codesourcery.com>

	* NEWS: Mention new DICOS x86 target configuration.

2008-05-16  Pedro Alves  <pedro@codesourcery.com>
	    Ulrich Weigand  <uweigand@de.ibm.com>

	* minsyms.c (lookup_minimal_symbol_by_pc_name): New function.
	* symtab.h (lookup_minimal_symbol_by_pc_name): Add prototype.

	* symtab.c (fixup_section): Remove prototype.  Add ADDR parameter;
	use it instead of ginfo->value.address.  Look up minimal symbol by
	address and name.  Assume OBJFILE is non-NULL.
	(fixup_symbol_section): Ensure we always have an objfile to look
	into.  Extract and pass to fixup_section the symbol's address that
	will match the minimal symbol's address.
	(fixup_psymbol_section): Likewise.

	(find_pc_sect_psymtab): Fall back to non-addrmap case when debugging
	overlays and the addrmap returned the wrong section.

	* dwarf2read.c (var_decode_location): Set SYMBOL_CLASS before
	calling fixup_symbol_section.

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

	* minsyms.c: Include "target.h".
	(find_solib_trampoline_target): Handle minimal symbols pointing
	to function descriptors as well.
	* Makefile.in (minsyms.o): Update dependencies.

	* ppc-linux-tdep.c (ppc64_standard_linkage): Rename to ...
	(ppc64_standard_linkage1): ... this.  Fix optional instructions.
	(PPC64_STANDARD_LINKAGE_LEN): Rename to ...
	(PPC64_STANDARD_LINKAGE1_LEN): ... this.
	(ppc64_standard_linkage2, ppc64_standard_linkage3): New.
	(PPC64_STANDARD_LINKAGE2_LEN, PPC64_STANDARD_LINKAGE3_LEN): New.
	(ppc64_standard_linkage_target): Rename to ...
	(ppc64_standard_linkage1_target): ... this.
	(ppc64_standard_linkage2_target, ppc64_standard_linkage3_target): New.
	(ppc64_skip_trampoline_code): Support three variants of standard
	linkage stubs.  Call find_solib_trampoline_target to handle
	glink stubs.

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

	* ppc-linux-tdep.c (ppc_linux_init_abi): Do not install
	ppc64_sysv_abi_adjust_breakpoint_address.
	* ppc-sysv-tdep.c (ppc64_sysv_abi_adjust_breakpoint_address): Remove.
	* ppc-tdep.h (ppc64_sysv_abi_adjust_breakpoint_address): Remove.

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

	* ppc-linux-tdep.c (ppc_linux_skip_trampoline_code): Remove.
	(ppc_linux_init_abi): Install find_solib_trampoline_target instead
	of ppc_linux_skip_trampoline_code.

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

	* gdbarch.sh: Delete dwarf_reg_to_regnum.
	* gdbarch.c, gdbarch.h: Regenerated.
	* amd64-tdep.c, arm-tdep.c, h8300-tdep.c, hppa-linux-tdep.c,
	hppa-tdep.c, i386-tdep.c, m32c-tdep.c, m68k-tdep.c, mips-tdep.c,
	s390-tdep.c, xtensa-tdep.c: Do not set dwarf_reg_to_regnum.

2008-05-15  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (trap_ptid): Delete.
	(linux_nat_detach, linux_nat_wait, linux_nat_mourn_inferior):
	Adjust.
	* linux-thread-db.c (thread_db_wait): Adjust.

2008-05-15  Joel Brobecker  <brobecker@adacore.com>

	* linespec.c (decode_line_1): Fix a couple of comments.

2008-05-15  Alan Modra  <amodra@bigpond.net.au>

	* dbxread.c: Formatting.
	(INTERNALIZE_SYMBOL): Init n_other.
	(set_namestring): Take pointer to nlist arg rather than struct
	copy.  Update all callers.

2008-05-15  Andreas Schwab  <schwab@suse.de>

	* Makefile.in (dwarf2loc.o): Remove $(addrmap_h).
	(dwarf2read.o): Add $(addrmap_h).

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

	* ppc-linux-tdep.c (ppc_linux_convert_from_func_ptr_addr): Rename ...
	(ppc64_linux_convert_from_func_ptr_addr): ... to this.  No longer try
	to handle ppc32 PLT entries.
	(ppc_linux_init_abi): Install ppc64_linux_convert_from_func_ptr_addr
	only on ppc64.

2008-05-14  Daniel Jacobowitz  <dan@codesourcery.com>

	* elfread.c (elf_symtab_read): Create trampolines for @plt symbols.
	* minsyms.c (lookup_minimal_symbol_by_pc_section_1): Renamed from
	lookup_minimal_symbol_by_pc_section.  Prefer trampolines if requested.
	(lookup_minimal_symbol_by_pc_section): Use
	lookup_minimal_symbol_by_pc_section_1.
	(lookup_solib_trampoline_symbol_by_pc): Likewise.

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

	* findcmd.c: Add #include "gdb_stdint.h".
	* Makefile.in (findcmd.o): Update dependencies.

2008-05-11  David S. Miller  <davem@davemloft.net>

	* sparc-linux-tdep.c (sparc32_linux_init_abi): Remove
	long double size override, Linux does use 128-bit now.

	* sparc-linux-tdep.c (PSR_SYSCALL): Define.
	(sparc_linux_write_pc): New function.
	(sparc32_linux_init_abi): Register it.
	* sparc64-linux-tdep.c (TSTATE_SYSCALL): Define.
	(sparc64_linux_write_pc): New function.
	(sparc64_linux_init_abi): Register it.

 	* sparc-linux-tdep.c, sparc64-linux-tdep.c: Use
	dwarf2_append_unwinders(), not dwarf2_frame_sniffer.

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

	* rs6000-tdep.c (rs6000_gdbarch_init): Set up info.target_desc
	and info.tdep_info before calling gdbarch_init_osabi.

2008-05-09  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_evaluate_subexp) [BINOP_ASSIGN]: Do not force
	the type of the right hand side of the assignment to the type
	of the left hand side if the left hand side is a convenience
	variable.

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

	* NEWS: Mention gdbserver bi-arch capability.

2008-05-09  Doug Evans  <dje@google.com>

	New "find" command.
	* NEWS: Document find command and qSearch:memory packet.
	* Makefile.in (SFILES): Add findcmd.c.
	(COMMON_OBJS): Add findcmd.o.
	(findcmd.o): New rule.
	* findcmd.c: New file.
	* target.h (target_ops): New member to_search_memory.
	(simple_search_memory): Declare.
	(target_search_memory): Declare.
	* target.c (simple_search_memory): New fn.
	(target_search_memory): New fn.
	* remote.c (PACKET_qSearch_memory): New packet kind.
	(remote_search_memory): New fn.
	(init_remote_ops): Init to_search_memory.
	(init_extended_remote_ops): Ditto.
	(_initialize_remote): Add qSearch:memory packet config command.

2008-05-09  Eli Zaretskii  <eliz@gnu.org>

	* thread.c (_initialize_thread): Don't use commas and periods in
	first line of doc string of "set/show print thread-events".

2008-05-08  Joel Brobecker  <brobecker@adacore.com>

	* alpha-mdebug-tdep.c, alpha-osf1-tdep.c, alpha-tdep.c:
	Update for unwinder changes.

2008-05-08  Joel Brobecker  <brobecker@adacore.com>

	* frame.c (get_frame_base_address, get_frame_locals_address)
	(get_frame_args_address): Pass the correct frame when calling
	frame_base_find_by_frame.

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

	* remote.c (extended_remote_attach_1): Call target_find_description.

2008-05-08  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (extended_remote_create_inferior_1): Clean up
	before marking the target running.

2008-05-08  Joel Brobecker  <brobecker@adacore.com>

	* hppa-tdep.h, hppa-tdep.c, hppa-hpux-tdep.c: Update for unwinder
	changes.

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

	* sparc-tdep.c, sparc-tdep.h, sparc-sol2-tdep.c, sparc64-tdep.c,
	sparc64-sol2-tdep.c: Update for unwinder changes.

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

	* cp-support.c (mangled_name_to_comp): Initialize storage.
	(unqualified_name_from_comp): Likewise.

2008-05-07  Jie Zhang  <jie.zhang@analog.com>

	* remote.c (remote_insert_breakpoint): Call get_remote_state
	after gdbarch_breakpoint_from_pc is called.
	(remote_insert_hw_breakpoint): Likewise.

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

	* valprint.c (val_print): Add new language parameter and use it
	instead of using the current_language. Update calls to val_print
	throughout.
	(common_val_print): Add new langauge parameter and pass it to
	val_print.
	* value.h (struct language_defn): Add opaque declaration.
	(val_print, common_val_print): Update declarations.
	* stack.c (print_frame_args): Update call to common_val_print
	using the appropriate language.
	* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
	* c-valprint, f-valprint.c, m2-valprint.c, mt-tdep.c, infcmd.c,
	mi/mi-main.c, jv-valprint.c, ada-valprint.c, varobj.c, p-valprint.c,
	scm-valprint.c, cp-valprint.c, sh64-tdep.c, printcmd.c:
	#include "language.h" if necessary.
	Update calls to val_print and common_val_print.
	* Makefile.in (mt-tdep.o, sh64-tdep.o, mi-cmds.o, mi-main.o):
	Update dependencies.

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

	* ia64-tdep.c (ia64_convert_from_func_ptr_addr): Treat addresses
	pointing inside a non-executable section as function descriptors.

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

	* inf-loop.c (inferior_event_handler): Run all continuations and
	print any language change before running the breakpoint commands.

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

	* frame-unwind.c (frame_unwind_got_bytes): New function.
	* frame-unwind.h (frame_unwind_got_bytes): Add declaration.
	* libunwind-frame.h, libunwind-frame.c, ia64-tdep.c: Update
	for unwinder changes.

2008-05-05  Doug Evans  <dje@google.com>

	* NEWS: Mention new /m modifier for disassemble command.
	* cli/cli-cmds.c (print_disassembly): New function.
	(disassemble_current_function): New function
	(disassemble_command): Recognize /m modifier, print mixed
	source+assembly.
	(init_cli_cmds): Update disassemble help text.

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

	* xtensa-tdep.c: Update for unwinder changes.

2008-05-05  Andreas Schwab  <schwab@suse.de>

	Update m68k port for unwinder changes.
	* m68k-tdep.c (m68k_frame_cache): Expect this_frame.
	(m68k_frame_this_id, m68k_frame_prev_register): Update signature.
	(m68k_frame_unwind): Use default_frame_sniffer.
	(m68k_frame_sniffer): Remove.
	(m68k_frame_base_address): Expect this_frame.
	(m68k_dummy_id): Renamed from m68k_unwind_dummy_id.  Expect
	this_frame.
	(m68k_gdbarch_init): Use set_gdbarch_dummy_id,
	dwarf2_append_unwinders, and frame_unwind_append_unwinder.
	* m68klinux-tdep.c (m68k_linux_pc_in_sigtramp): Expect frame_info
	parameter instead of pc value.
	(m68k_linux_get_sigtramp_info, m68k_linux_sigtramp_frame_cache):
	Expect this_frame.
	(m68k_linux_sigtramp_frame_this_id)
	(m68k_linux_sigtramp_frame_prev_register)
	(m68k_linux_sigtramp_frame_sniffer): Update signature.
	(m68k_linux_sigtramp_frame_unwind): Use
	m68k_linux_sigtramp_frame_sniffer.
	(m68k_linux_init_abi): Use frame_unwind_append_unwinder.

	* m68klinux-nat.c (store_register): Fix typo.

2008-05-05  Pedro Alves  <pedro@codesourcery.com>

	* infcmd.c (step_1): Put thread id on the stack to avoid possible
	NULL dereferencing.

2008-05-05  Luis Machado  <luisgpm@br.ibm.com>

	* symfile.c (reread_symbols): Update objfile's entry point.

2008-05-05  Aleksandar Ristovski  <aristovski@qnx.com>
	    Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c: Update throughout to use symbol_matches_domain
	instead of matching the symbol domain explictly.
	* dwarf2read.c (add_partial_symbol): Do not add new psym for
	STRUCT_DOMAIN. Make sure you recognize c++ struct and java and ada
	class as typedefs. See lookup_partial_symbol function.
	(new_symbol): Similar to add_partial_symbol, do not create
	symbol for the typedef. See lookup_block_symbol.
	* symtab.c (symbol_matches_domain): New function, takes care
	of dual meaning of STRUCT_DOMAIN symbol for c++, ada and java.
	(lookup_partial_symbol): Use symbol_matches_domain to see if the
	found psym domain matches the given domain.
	(lookup_block_symbol): Likewise.

2008-05-05  Vladimir Prus  <vladimir@codesourcery.com>

	* top.c (command_line_handler_continuation): Remove.
	(execute_command): Do not install the above.

2008-05-05  Vladimir Prus  <vladimir@codesourcery.com>

	* inf-loop.c (inferior_event_handler): Call bpstat_do_action,
	and catch all exceptions from it.
	* top.c (command_line_handler_continuation): Don't
	call bpstat_do_action here.

2008-05-04  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (struct dwarf2_cu): Add type_hash.
	(struct die_info): Remove type.
	(read_type_die, read_typedef, read_base_type, read_subrange_type)
	(read_structure_type, read_enumeration_type, read_array_type)
	(read_tag_pointer_type, read_tag_ptr_to_member_type)
	(read_tag_reference_type, read_tag_const_type, read_tag_volatile_type)
	(read_tag_string_type, read_subroutine_type, read_set_type)
	(read_unspecified_type): Delete prototypes.  Remove check for
	already-loaded type.  Return the new type.
	(set_die_type): Return the new type.
	(reset_die_and_siblings_types): Delete.
	(load_comp_unit, load_full_comp_unit): Set type_hash.
	(process_queue): Remove call to reset_die_and_siblings_types.
	(process_die): Do not read most types here.  Use read_type_die
	for others.
	(read_func_scope, dwarf2_add_member_fn): Use read_type_die.
	(quirk_gcc_member_function_pointer): Return the new type.
	(process_structure_scope, process_enumeration_scope): Use
	get_die_type and read the DIE's type.
	(read_full_die): Do not initialize die->type.
	(tag_type_to_type): Use read_type_die.
	(read_type_die): Check for already defined types.  Return the
	type.
	(determine_prefix): Use get_die_type.
	(set_die_type): Return the type.
	(get_die_type): Take a CU argument.  Check for no type_hash.

2008-05-04  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2read.c (dwarf2_ranges_read, read_partial_die): Initialize
	locals.

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

	* breakpoint.c (update_breakpoints_after_exec): Delete bp_longjmp
	and bp_longjmp_resume breakpoints.
	(breakpoint_address_is_meaningful): Claim bp_longjmp_resume as
	meaningful.
	(create_longjmp_breakpoint): Don't create bp_longjmp_resume
	breakpoints.  Create bp_longjmp breakpoints as momentary
	breakpoints.
	(enable_longjmp_breakpoint): Delete.
	(set_longjmp_breakpoint): New.
	(disable_longjmp_breakpoint): Delete.
	(delete_longjmp_breakpoint): New.
	(set_longjmp_resume_breakpoint): Delete.
	(set_momentary_breakpoint_at_pc): New.
	(breakpoint_re_set_one): Don't delete bp_longjmp and
	bp_longjmp_resume breakpoints.
	(breakpoint_re_set): Don't create longjmp and longjmp-resume
	breakpoints.

	* infrun.c (step_resume_breakpoint): Add comment.
	(struct execution_control_state): Delete handling_longjmp member.
	(init_execution_control_state). Don't clear handling_longjmp.
	(context_switch): Don't context switch handling_longjmp.
	(handle_inferior_event): If handling a bp_longjmp breakpoint,
	create a bp_longjmp_resume breakpoint, and set it as current
	step_resume_breakpoint, then step over the longjmp breakpoint.  If
	handling a bp_longjmp_resume breakpoint, don't delete the longjmp
	breakpoint, delete the longjmp-resume breakpoint, and stop
	stepping.
	(currently_stepping): Remove handling_longjmp from expression.
	(insert_step_resume_breakpoint_at_sal): Update comment.
	(insert_longjmp_resume_breakpoint): New.

	* breakpoint.h (set_momentary_breakpoint_at_pc): Declare.
	(enable_longjmp_breakpoint, disable_longjmp_breakpoint): Delete
	declarations.
	(set_longjmp_breakpoint, delete_longjmp_breakpoint): Declare.
	(set_longjmp_resume_breakpoint): Delete declaration.

	* gdbthread.h (save_infrun_state): Remove handling_longjmp
	parameter.
	(load_infrun_state): Delete *handling_longjmp parameter.
	* thread.c (save_infrun_state): Remove handling_longjmp parameter.
	Update body.
	(load_infrun_state): Delete *handling_longjmp parameter.  Update
	body.

	* infcmd.c (disable_longjmp_breakpoint_cleanup): Delete.
	(delete_longjmp_breakpoint_cleanup): New.
	(step_1): Call set_longjmp_breakpoint instead of
	enable_longjmp_breakpoint.  Use delete_longjmp_breakpoint_cleanup
	instead of disable_longjmp_breakpoint_cleanup when making cleanup.
	(step_1_continuation): Pass thread id in the continuation args to
	step_once.
	(step_once): Add thread parameter.  Pass thread id the the
	continuation.

2008-05-04  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Set CU BASE_ADDRESS already from partial DIEs.
	* dwarf2read.c (read_partial_die): New variables BASE_ADDRESS and
	BASE_ADDRESS_TYPE.  Set these variables from DW_AT_LOW_PC and
	DW_AT_ENTRY_PC.  Set CU->HEADER.BASE_KNOWN and CU->HEADER.BASE_ADDRESS
	from these variables if it was still unset.

	* Makefile.in: Update dependencies.
	* dwarf2read.c: Include "addrmap.h"
	(struct dwarf2_cu): New fields RANGES_OFFSET and HAS_RANGES_OFFSET.
	(dwarf2_ranges_read): New prototype.
	(dwarf2_build_psymtabs_hard): Initialize and prepare PSYMTABS_ADDRMAP.
	Add discontiguous range to PSYMTABS_ADDRMAP by DWARF2_RANGES_READ on
	HAS_RANGES_OFFSET, otherwise add there the contiguous range.
	(dwarf2_ranges_read): New parameter RANGES_PST, update the function
	comment for it.  Add the found ranges to RANGES_PST.  New variable
	BASEADDR, initialize it the common way.
	(dwarf2_get_pc_bounds): Update the caller for the new parameter.
	(read_partial_die): `DW_AT_ranges' now only sets RANGES_OFFSET and
	HAS_RANGES_OFFSET for the later processing.
	* objfiles.h (struct objfile): New field PSYMTABS_ADDRMAP.
	* symtab.c: Include "addrmap.h"
	(find_pc_sect_psymtab): Support reading the field PSYMTABS_ADDRMAP.
	Move the psymtab locator into ...
	(find_pc_sect_psymtab_closer): ... a new function.

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

	* arch-utils.c (gdbarch_update_p): Use default values for
	info.abfd and info.target_desc if they are NULL.
	(gdbarch_from_bfd): Remove assertion.
	(set_gdbarch_from_file): Call gdbarch_find_by_info directly,
	using the current target description.
	(gdbarch_info_fill): Do not use default values for info->abfd
	and info->target_desc.

2008-05-04  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* symfile.c (reread_symbols): Reload EXEC_BFD on its change.

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

	* inferior.h (read_pc_pid, write_pc_pid): Remove.
	* regcache.h (regcache_read_pc, regcache_write_pc): Add prototypes.

	* regcache.c (read_pc_pid): Remove, replace by ...
	(regcache_read_pc): ... this function.
	(write_pc_pid): Remove, replace by ...
	(regcache_write_pc): ... this function.
	(read_pc, write_pc): Update.

	* infrun.c (displaced_step_prepare): Replace read_pc_pid and
	write_pc_pid by regcache_read_pc and regcache_write_pc.
	(displaced_step_fixup): Likewise.
	(resume): Likewise.  Use regcache arch instead of current_gdbarch.
	(prepare_to_proceed): Likewise.
	(proceed): Likewise.
	(adjust_pc_after_break): Likewise.
	(handle_inferior_event): Likewise.

	* linux-nat.c (cancel_breakpoint): Likewise.
	* linux-thread-db.c (check_event): Likewise.
	* aix-thread.c (aix_thread_wait): Likewise.
	* tracepoint.c (trace_dump_command): Likewise.

2008-05-04  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* dwarf2loc.c (dwarf_expr_frame_base): Error out on missing
	SYMBOL_LOCATION_BATON.

2008-05-04  Vladimir Prus  <vladimir@codesourcery.com>

	* target.h (struct target_ops): New field to_auxv_parse.
	* auxv.c (default_auxv_parse): New, renamed from previous
	target_auxv_parse.
	(target_auxv_parse): Try to call target method.  Fallback to
	default_auxv_parse if not found.
	* procfs.c (procfs_auxv_parse): New.
	(init_procfs_ops): On Solaris, in 64-bit mode, install
	procfs_auxv_parse.

2008-05-03  Adam Nemet  <anemet@caviumnetworks.com>

	* symfile.c (add_symbol_file_command):  Use paddress rather than
	hex_string to print the address.

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

	* rs6000-tdep.c (rs6000_frame_this_id): If info->base is 0,
	return the null frame ID to terminate the backtrace.

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

	* rs6000-tdep.c: Do not include "rs6000-tdep.h".
	(rs6000_find_toc_address_hook): Move to rs6000-aix-tdep.c.
	(SIG_FRAME_PC_OFFSET): Likewise.
	(SIG_FRAME_LR_OFFSET): Likewise.
	(SIG_FRAME_FP_OFFSET): Likewise.
	(rs6000_push_dummy_call): Likewise.
	(rs6000_return_value): Likewise.
	(rs6000_convert_from_func_ptr_addr): Likewise.
	(branch_dest, rs6000_software_single_step): Likewise.
	(deal_with_atomic_sequence): Rename to ...
	(ppc_deal_with_atomic_sequence): ... this.  Adapt all callers.
	Do not call branch_dest; inline required parts of that function.
	(rs6000_skip_trampoline_code): Replace DEPRECATED_SYMBOL_NAME
	with SYMBOL_LINKAGE_NAME.
	(struct reg, regsize): Delete.
	(read_memory_addr): Delete; inline into callers.
	(rs6000_skip_prologue): Move after skip_prologue.
	(skip_prologue): Remove prototype.
	(rs6000_gdbarch_init): Remove sysv_abi variable; perform all
	initialization as if this variable were true.  Do not install
	ppc64_sysv_abi_adjust_breakpoint_address.

	* rs6000-aix-tdep.c: Include "gdb_assert.h", "gdbtypes.h",
	"gdbcore.h", "target.h", "value.h", "infcall.h", "objfiles.h",
	and "breakpoint.h".
	(rs6000_find_toc_address_hook): Move here from rs6000-tdep.c.
	(SIG_FRAME_PC_OFFSET): Likewise.
	(SIG_FRAME_LR_OFFSET): Likewise.
	(SIG_FRAME_FP_OFFSET): Likewise.
	(rs6000_push_dummy_call): Likewise.
	(rs6000_return_value): Likewise.
	(rs6000_convert_from_func_ptr_addr): Likewise.
	(branch_dest, rs6000_software_single_step): Likewise.  Replace
	tdep->text_segment_base by AIX_TEXT_SEGMENT_BASE.
	(rs6000_aix_init_osabi): Install rs6000_push_dummy_call,
	rs6000_return_value, and rs6000_convert_from_func_ptr_addr.
	Call set_gdbarch_long_double_bit and set_gdbarch_frame_red_zone_size.
	Set tdep->lr_frame_offset.  Do not set tdep->text_segment_base.

	* rs6000-tdep.h (rs6000_software_single_step): Remove prototype.
	(AIX_TEXT_SEGMENT_BASE): New macro.
	* rs6000-nat.c (exec_one_dummy_insn): Replace tdep->text_segment_base
	by AIX_TEXT_SEGMENT_BASE.

	* ppc-tdep.h (ppc_deal_with_atomic_sequence): Add prototype.
	(struct gdbarch_tdep): Remove text_segment_base member.
	* ppc-linux-tdep.c (ppc_linux_init_abi): On 64-bit, install
	ppc64_sysv_abi_adjust_breakpoint_address.

	* Makefile.in (rs6000-tdep.o): Update dependencies.
	(rs6000-aix-tdep.o): Likewise.

2008-05-03  Luis Machado  <luisgpm@br.ibm.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* cli/cli-decode.c (lookup_cmd_1): Fix indentation.
	* doublest.c (convert_typed_floating): Fix typo in comment.
	* dwarf2-frame.c (dwarf2_frame_cache): Likewise.
	* frame-unwind.h (frame_sniffer_ftype): Likewise.
	* frame.c (frame_unwind_address_in_block): Likewise.
	* ppc-sysv-tdep.c (ppc64_sysv_abi_push_dummy_call): Likewise.
	* symtab.h (struct symbol): Likewise.
	* tramp-frame.h (struct trad_frame_cache): Likewise.
	* value.c (allocate_repeat_value): Likewise.

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

	* infrun.c (handle_inferior_event): Do not insert breakpoints at
	TARGET_WAITKIND_LOADED events during startup (i.e. in the shell).

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

	* parse.c (parse_exp_in_context): Don't override
	expression_context_pc if get_selected_block returned a valid
	block.

2008-05-03  Daniel Jacobowitz  <dan@codesourcery.com>

	* alpha-tdep.h (ALPHA_REGISTER_BYTES): Delete.
	* arm-tdep.h (STATUS_REGISTER_SIZE): Delete.
	* breakpoint.c (args_for_catchpoint_enable, current_exception_event):
	Delete.
	* c-typeprint.c (c_type_print_base): Delete handling of template
	instantiations.
	* cp-support.h (METHOD_PTR_IS_VIRTUAL, METHOD_PTR_FROM_VOFFSET)
	(METHOD_PTR_TO_VOFFSET): Delete.
	* defs.h (QUIT_FIXME): Delete.
	* f-lang.h (DEFAULT_DOTMAIN_NAME_IN_MF77, DEFAULT_MAIN_NAME_IN_MF77)
	(DEFAULT_DOTMAIN_NAME_IN_XLF_BUGGY, DEFAULT_DOTMAIN_NAME_IN_XLF): Delete.
	* gdbtypes.h (struct cplus_struct_type): Delete is_inlined,
	ninstantiations, and instantiations.
	(TYPE_INSTANTIATIONS, TYPE_NINSTANTIATIONS, TYPE_INSTANTIATION)
	(TYPE_FN_FIELD_INLINED): Delete.
	* srec.h (SREC_BINARY): Delete.
	* symtab.c (symbol_init_demangled_name): Delete.
	* symtab.h (SYMBOL_INIT_DEMANGLED_NAME, symbol_init_demangled_name)
	(SYMBOL_OBJFILE, struct exception_event_record, CURRENT_EXCEPTION_KIND)
	(CURRENT_EXCEPTION_CATCH_SAL, CURRENT_EXCEPTION_CATCH_LINE)
	(CURRENT_EXCEPTION_CATCH_FILE, CURRENT_EXCEPTION_CATCH_PC)
	(CURRENT_EXCEPTION_THROW_SAL, CURRENT_EXCEPTION_THROW_LINE)
	(CURRENT_EXCEPTION_THROW_FILE, CURRENT_EXCEPTION_THROW_PC): Delete.
	* target.h (enum thread_control_capabilities): Delete tc_switch.
	(target_can_switch_threads): Delete.

2008-05-03  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (objfiles.o): Update.
	* exec.c (exec_set_section_address): Support p->addr != 0.
	* objfiles.c (objfile_relocate): Update exec_ops section
	addresses.
	* symfile.c (place_section): Move exec_set_section_address call...
	(default_symfile_offsets): ...to here.

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

	* Makefile.in (ppc_linux_tdep_h): New macro.
	(powerpc_32l_c, powerpc_altivec32_c, powerpc_altivec32l_c): Likewise.
	(powerpc_64l_c, powerpc_altivec64_c, powerpc_altivec64l_c): Likewise.
	(powerpc_e500l_c): Likewise.
	(ppc-linux-nat.o): Update dependencies.
	(ppc-linux-tdep.o): Update dependencies.
	(rs6000-tdep.o): Update dependencies.

	* ppc-tdep.h (ppc_linux_memory_remove_breakpoint): Remove.
	(ppc_linux_svr4_fetch_link_map_offsets): Remove.
	(ppc_linux_gregset, ppc_linux_fpregset): Move to ppc-linux-tdep.h
	(ppc_supply_reg, ppc_collect_reg): Add prototypes.
	(tdesc_powerpc_e500): Remove.

	* rs6000.c: Include "features/rs6000/powerpc-altivec32.c"
	and "features/rs6000/powerpc-altivec64.c".
	(ppc_supply_reg, ppc_collect_reg): Make global.
	(variants): Use tdesc_powerpc_32 for "powerpc" and
	tdesc_powerpc_altivec64 for "powerpc64".
	(_initialize_rs6000_tdep): Initialize AltiVec descriptions.

	* ppc-linux-tdep.h: New file.

	* ppc-linux-tdep.c: Include "ppc-linux-tdep.c".
	Include "features/rs6000/powerpc-32l.c".
	Include "features/rs6000/powerpc-altivec32l.c".
	Include "features/rs6000/powerpc-64l.c".
	Include "features/rs6000/powerpc-altivec64l.c".
	Include "features/rs6000/powerpc-e500l.c".
	(ppc_linux_supply_gregset): New function.
	(ppc_linux_collect_gregset): Handle orig_r3 and trap registers.
	(ppc32_linux_gregset): Use ppc_linux_supply_gregset.
	(ppc64_linux_gregset): Likewise.
	(ppc_linux_sigtramp_cache): Handle orig_r3 and trap registers.
	(ppc_linux_trap_reg_p): New function.
	(ppc_linux_write_pc): New function.
	(ppc_linux_core_read_description): New function.
	(ppc_linux_init_abi): Install ppc_linux_write_pc and
	ppc_linux_core_read_description.  Install orig_r3 and trap
	registers if present in the target description.
	(_initialize_ppc_linux_tdep): Initialize Linux target descriptions.

	* ppc-linux-nat.c: Include "ppc-linux-tdep.h".
	(PT_ORIG_R3, PT_TRAP): Define if necessary.
	(ppc_register_u_addr): Handle orig_r3 and trap registers.
	(fetch_ppc_registers): Likewise.
	(store_ppc_registers): Likewise.
	(store_register): Likewise.
	(ppc_linux_read_description): Check whether AltiVec is supported.
	Check whether inferior is 32-bit or 64-bit.  Return the appropriate
	Linux target description.

	* features/Makefile (WHICH): Use rs6000/powerpc-32l and
	rs6000/powerpc-altivec32l instead of rs6000/powerpc-32.
	Use rs6000/powerpc-64l and rs6000/powerpc-altivec64l instead
	of rs6000/powerpc-64.  Use rs6000/powerpc-e500l instead of
	rs6000/powerpc-e500.  Update -expedite variables accordingly.

	* features/rs6000/power-spe.xml: Use regnum 73 for "acc".
	* features/rs6000/powerpc-32.xml: Do not include power-altivec.xml.
	* features/rs6000/powerpc-64.xml: Do not include power-altivec.xml.
	* features/rs6000/powerpc-e500.c: Regenerate.
	* features/rs6000/powerpc-32.c: Regenerate.
	* features/rs6000/powerpc-64.c: Regenerate.

	* features/rs6000/power-linux.xml: New file.
	* features/rs6000/power64-linux.xml: New file.
	* features/rs6000/powerpc-32l.xml: New file.
	* features/rs6000/powerpc-altivec32l.xml: New file.
	* features/rs6000/powerpc-64l.xml: New file.
	* features/rs6000/powerpc-altivec64l.xml: New file.
	* features/rs6000/powerpc-e500l.xml: New file.
	* features/rs6000/powerpc-32l.c: New (generated) file.
	* features/rs6000/powerpc-altivec32l.c: New (generated) file.
	* features/rs6000/powerpc-64l.c: New (generated) file.
	* features/rs6000/powerpc-altivec64l.c: New (generated) file.
	* features/rs6000/powerpc-e500l.xml: New (generated) file.

	* regformats/reg-ppc.dat: Remove.
	* regformats/reg-ppc64.dat: Remove.
	* regformats/rs6000/powerpc-32.dat: Remove.
	* regformats/rs6000/powerpc-64.dat: Remove.
	* regformats/rs6000/powerpc-e500.dat: Remove.
	* regformats/rs6000/powerpc-32l.dat: New (generated) file.
	* regformats/rs6000/powerpc-altivec32l.dat: New (generated) file.
	* regformats/rs6000/powerpc-64l.dat: New (generated) file.
	* regformats/rs6000/powerpc-altivec64l.dat: New (generated) file.
	* regformats/rs6000/powerpc-e500l.dat: New (generated) file.

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

	* thread.c (delete_thread): Call observer_notify_thread_exit.
	* mi/mi-interp.c (mi_interpreter_init): Register mi_thread_exit as
	thread_exit observer.
	(mi_thread_exit): New.

2008-05-03  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* breakpoint.c (create_exception_catchpoint): Remove prototype
	for already deleted function.
	* breakpoint.h (ep_is_exception_catchpoint): Likewise.
	* frame.h (show_stack_frame): Remove prototype.
	* stack.c (show_stack_frame): Remove empty, unused function.
	* source.c (symtab_to_fullname, print_source_lines): Small fix
	in comment.
	* value.c (show_values): Update comments to mention "show values"
	command instead of "info history".

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

	* linespec.c: Include "target.h".
	(minsym_found): Handle minimal symbols pointing to function
	descriptors.  Use find_function_start_pc.
	* minsyms.c (msymbol_objfile): New function.
	* parse.c (write_exp_msymbol): Handle minimal symbols pointing
	to function descriptors.
	* symtab.c (fixup_section): Only use minimal symbol at the same
	address to determine section of a symbol.
	(find_function_start_pc): New function.
	(find_function_start_sal): Use it.
	* symtab.h (msymbol_objfile): Add prototype.
	(find_function_start_pc): Likewise.
	* value.c: Include "objfiles.h".
	(value_fn_field): Handle minimal symbols pointing to function
	descriptors.
	* Makefile.in (linespec.o): Update dependencies.
	(value.o): Likewise.

2008-05-02  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (unwrap_value): Handle the case where the "F" field
	inside a PAD type is a bitfield.

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

	* ppc-sysv-tdep.c (ppc64_sysv_abi_push_dummy_call): Handle
	TYPE_CODE_BOOL and TYPE_CODE_CHAR the same as TYPE_CODE_INT.
	Handle TYPE_CODE_REF the same as TYPE_CODE_PTR.
	Handle TYPE_CODE_METHOD the same as TYPE_CODE_FUNC.
	Allow typedefs when checking for function pointer arguments.
	Right-align small structs passed on the stack.
	(ppc64_sysv_abi_return_value): Handle TYPE_CODE_BOOL and
	TYPE_CODE_CHAR the same as TYPE_CODE_INT.
	Handle TYPE_CODE_REF the same as TYPE_CODE_PTR.

2008-05-02  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (arm-tdep.o): Update.
	* arm-tdep.c (arm_objfile_data_key, struct arm_mapping_symbol)
	(struct arm_per_objfile, arm_compare_mapping_symbols): New.
	(arm_pc_is_thumb): Use mapping symbols.
	(arm_objfile_data_cleanup, arm_record_special_symbol): New.
	(arm_gdbarch_init): Call set_gdbarch_record_special_symbol.
	(_initialize_arm_tdep): Initialize arm_objfile_data_key.
	* elfread.c (elf_symtab_read): Use gdbarch_record_special_symbol.
	* gdbarch.sh: Add record_special_symbol.
	* gdbarch.c, gdbarch.h: Regenerated.
	* objfiles.c (struct objfile_data): Add cleanup member.
	(register_objfile_data_with_cleanup): New function, from
	register_objfile_data.
	(register_objfile_data): Use it.
	(objfile_free_data): Call clear_objfile_data.
	(clear_objfile_data): Call cleanup functions.
	* objfiles.h (register_objfile_data_with_cleanup): Declare.

2008-05-02  Daniel Jacobowitz  <dan@codesourcery.com>

	* objfiles.c (init_entry_point_info): Handle shared libraries.

2008-05-02  Daniel Jacobowitz  <dan@codesourcery.com>

	* arm-tdep.c (arm_prologue_this_id): Compare pc, not func, to
	lowest_pc.

2008-05-02  Jim Blandy  <jimb@codesourcery.com>
	    Pedro Alves  <pedro@codesourcery.com>

	Implement displaced stepping.

	* gdbarch.sh (max_insn_length): New 'variable'.
	(displaced_step_copy, displaced_step_fixup)
	(displaced_step_free_closure, displaced_step_location): New
	functions.
	(struct displaced_step_closure): Add forward declaration.
	* gdbarch.c, gdbarch.h: Regenerated.

	* arch-utils.c: #include "objfiles.h".
	(simple_displaced_step_copy_insn)
	(simple_displaced_step_free_closure)
	(displaced_step_at_entry_point): New functions.
	* arch-utils.h (simple_displaced_step_copy_insn)
	(simple_displaced_step_free_closure)
	(displaced_step_at_entry_point): New prototypes.

	* i386-tdep.c (I386_MAX_INSN_LEN): Rename to...
	(I386_MAX_MATCHED_INSN_LEN): ... this.
	(i386_absolute_jmp_p, i386_absolute_call_p)
	(i386_ret_p, i386_call_p, i386_breakpoint_p, i386_syscall_p)
	(i386_displaced_step_fixup): New functions.
	(struct i386_insn, i386_match_insn): Update.
	(i386_gdbarch_init): Set gdbarch_max_insn_length.
	* i386-tdep.h (I386_MAX_INSN_LEN): New.
	(i386_displaced_step_fixup): New prototype.
	* i386-linux-tdep.c (i386_linux_init_abi): Include "arch-utils.h".
	Register gdbarch_displaced_step_copy,
	gdbarch_displaced_step_fixup, gdbarch_displaced_step_free_closure,
	and gdbarch_displaced_step_location functions.

	* infrun.c (debug_displaced): New variable.
	(show_debug_displaced): New function.
	(struct displaced_step_request): New struct.
	(displaced_step_request_queue, displaced_step_ptid)
	(displaced_step_gdbarch, displaced_step_closure)
	(displaced_step_original, displaced_step_copy)
	(displaced_step_saved_copy, can_use_displaced_stepping): New
	variables.
	(show_can_use_displaced_stepping, use_displaced_stepping)
	(displaced_step_clear, cleanup_displaced_step_closure)
	(displaced_step_dump_bytes, displaced_step_prepare)
	(displaced_step_clear_cleanup, write_memory_ptid)
	(displaced_step_fixup): New functions.
	(resume): Call displaced_step_prepare.
	(proceed): Call read_pc once, and remember the value.  If using
	displaced stepping, don't remove breakpoints.
	(handle_inferior_event): Call displaced_step_fixup.  Add some
	debugging output.  When we try to step over a breakpoint, but get
	a signal to deliver to the thread instead, ensure the step-resume
	breakpoint is actually inserted.  If a thread hop is needed, and
	displaced stepping is enabled, don't remove breakpoints.
	(init_wait_for_inferior): Call displaced_step_clear.
	(_initialize_infrun): Add "set debug displaced" command.  Add
	"maint set can-use-displaced-stepping" command.  Clear
	displaced_step_ptid.
	* inferior.h (debug_displaced): Declare variable.
	(displaced_step_dump_bytes): Declare function.

	* Makefile.in (arch-utils.o, i386-linux-tdep.o): Update
	dependencies.

2008-05-02  Daniel Jacobowitz  <dan@codesourcery.com>

	* arm-tdep.c (arm_mode_strings, arm_fallback_mode_string)
	(arm_force_mode_string, arm_show_fallback_mode)
	(arm_show_force_mode): New.
	(arm_pc_is_thumb): Honor fallback-mode and force-mode.  Use
	arm_frame_is_thumb.
	(_initialize_arm_tdep): Add "set arm fallback-mode"
	and "set arm force-mode".
	* NEWS: Document new commands.

2008-05-02  Andrew Stubbs  <andrew.stubbs@st.com>

	* main.h (batch_silent): Declare.
	* event-top.c: Include main.h.
	(gdb_setup_readline): Remove extern batch_silent declaration.
	* infrun.c (normal_stop): Don't print source location when running in
	--batch-silent mode.
	* Makefile.in (event-top.o): Add main.h dependency.

2008-05-02  Andreas Schwab  <schwab@suse.de>

	* target.h (struct target_ops): Add
	to_watchpoint_addr_within_range.
	(target_watchpoint_addr_within_range): New function.
	* target.c (update_current_target): Inherit
	to_watchpoint_addr_within_range, defaulting to
	default_watchpoint_addr_within_range.
	(default_watchpoint_addr_within_range): New function.
	(debug_to_watchpoint_addr_within_range): New function.
	(setup_target_debug): Set to_watchpoint_addr_within_range.
	* ppc-linux-nat.c (ppc_linux_watchpoint_addr_within_range):
	New function.
	(_initialize_ppc_linux_nat): Set to_watchpoint_addr_within_range.
	* breakpoint.c (watchpoints_triggered): Use
	target_watchpoint_addr_within_range.

2008-05-01  Pedro Alves  <pedro@codesourcery.com>

	* configure.tgt: Add i[34567]86-*-dicos* and x86_64-*-dicos*.
	(i[34567]86-*-dicos*, x86_64-*-dicos*):
	Set gdb_osabi to GDB_OSABI_DICOS.

	* defs.h (enum gdb_osabi): Add GDB_OSABI_DICOS.
	* osabi.c (gdb_osabi_name): Add "DICOS".

	* i386-dicos-tdep.c: New file.

	* Makefile.in (ALL_TARGET_OBS): Add i386-dicos-tdep.o.
	(ALLDEPFILES): Add i386-dicos-tdep.c.
	(i386-dicos-tdep.o): New rule.

2008-05-01  Pedro Alves  <pedro@codesourcery.com>

	* linux-nat.c (linux_nat_switch_fork): Reinit GDB's thread list
	and register the fork's PTID as a thread.

2008-05-01  Aleksandar Ristovski  <aristovski@qnx.com>

	PR gdb/1665
	* breakpoint.c (create_breakpoint): Add breakpoint_ops argument and
	assign its value to the breakpoint created.
	(create_breakpoints): Add breakpoint_ops argument and pass it
	to create_breakpoint call.
	(break_command_really): Add breakpoint_ops argument and pass/assign
	appropriately.
	(break_command_1): Pass NULL as ops argument.
	(set_breakpoint): Pass NULL as ops argument.
	(print_one_exception_catchpoint): Print <PENDING> if no loc available.
	(handle_gnu_v3_exceptions): Call generic breakpoint code to insert
	catch and throw catchpoints.

2008-05-01  Aleksandar Ristovski  <aristovski@qnx.com>

	PR gdb/2343
	* corelow.c (core_open): Use gdbarch_target_signal_from_host to
	translate signal numeric value from the target to GDB's enum
	target_signal.
	* gdbarch.c, gdbarch.h: Regenerated.
	* gdbarch.sh: Added two new functions target_signal_from_host and
	target_signal_to_host.
	* target.h (default_target_signal_from_host,
	default_target_signal_to_host): New functions - declarations.
	* signals/signals.c (struct gdbarch): New declaration.
	(default_target_signal_to_host, default_target_signal_from_host): New
	functions.

2008-05-01  Daniel Jacobowitz  <dan@codesourcery.com>
	    Pedro Alves  <pedro@codesourcery.com>

	Based on work by Jan Kratochvil <jan.kratochvil@redhat.com> and Jeff
 	Johnston <jjohnstn@redhat.com>.

	* NEWS: Mention attach to stopped process fix.
	* infcmd.c (detach_command, disconnect_command): Discard the thread
	list.
	* infrun.c (handle_inferior_event): Do not ignore non-SIGSTOP while
	attaching.  Use signal_stop_state.
	(signal_stop_state): Check stop_soon.
	* linux-nat.c (kill_lwp): Declare earlier.
	(pid_is_stopped, linux_nat_post_attach_wait): New.
	(lin_lwp_attach_lwp): Use linux_nat_post_attach_wait.  Update
	comments.
	(linux_nat_attach): Use linux_nat_post_attach_wait.
	(detach_callback, linux_nat_detach): Improve handling for signalled
	processes.
	(linux_nat_pid_to_str): Always print out the LWP ID if it differs
	from the process ID.
	* Makefile.in (infcmd.o): Update.

2008-05-01  Daniel Jacobowitz  <dan@codesourcery.com>

	* arm-linux-tdep.h (ARM_CPSR_REGNUM): Delete definition.
	* arm-tdep.c (arm_frame_is_thumb): New.
	(arm_pc_is_thumb): Clarify comment.
	(thumb_analyze_prologue): Remove PC special case.
	(thumb_scan_prologue): Take a block_addr argument.  Use it for
	find_pc_partial_function.  Remove unused variables.
	(arm_scan_prologue): Use arm_frame_is_thumb.  Use the block address
	for find_pc_partial_function.  Remove PC special case.
	(arm_prologue_prev_register): Add special handling for PC and CPSR.
	(arm_dwarf2_prev_register, arm_dwarf2_frame_init_reg): New.
	(arm_get_next_pc): Use arm_frame_is_thumb.
	(arm_write_pc): Use CPSR_T instead of 0x20.
	(arm_gdbarch_init): Call dwarf2_frame_set_init_reg.
	* arm-tdep.h (enum gdb_regnum): Add ARM_CPSR_REGNUM.
	(CPSR_T): Define.
	* dwarf2-frame.c (dwarf2_frame_prev_register): Handle
	DWARF2_FRAME_REG_FN.
	* dwarf2-frame.h (enum dwarf2_frame_reg_rule): Add
	DWARF2_FRAME_REG_FN.
	(struct dwarf2_frame_state_reg): Add FN to loc union.

2008-05-01  Nick Roberts  <nickrob@snap.net.nz>

	* exec.c (print_section_info): Add missing '\n'.

2008-05-01  Vladimir Prus  <vladimir@codesourcery.com>

	* thread.c (add_thread): Move observer call to ...
	(add_thread_silent): ... here.

2008-04-30  Ulrich Weigand  <uweigand@de.ibm.com>

	* rs6000-tdep.c: Update for unwinder changes.
	* ppcobsd-tdep.c: Likewise.

2008-04-30  Ulrich Weigand  <uweigand@de.ibm.com>

	* s390-tdep.c: Update for unwinder changes.

2008-04-30  Ulrich Weigand  <uweigand@de.ibm.com>

	* spu-tdep.c: Update for unwinder changes.

2008-04-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* hppanbsd-tdep.c, m68kbsd-tdep.c, mn10300-linux-tdep.c,
	ppc-linux-tdep.c, ppcnbsd-tdep.c, sparc-linux-tdep.c,
	sparc64-linux-tdep.c: Update for unwinder changes.

2008-04-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* mipsnbsd-tdep.c, mips64obsd-tdep.c, mips-linux-tdep.c: Update
	for unwinder changes.
	* mips-tdep.c: Likewise.
	(mips_stub_frame_cache): Unwind the ABI stack pointer, not the
	raw one.

2008-04-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* arm-linux-tdep.c, arm-tdep.c, armobsd-tdep.c: Update for
	unwinder changes.

2008-04-30  Daniel Jacobowitz  <dan@codesourcery.com>

	Update i386 and amd64 ports for unwinder changes.

	* amd64-tdep.c (amd64_frame_cache): Expect this_frame.
	(amd64_frame_this_id, amd64_frame_prev_register): Update signature.
	(amd64_frame_unwind): Use default_frame_sniffer.
	(amd64_frame_sniffer): Delete.
	(amd64_sigtramp_frame_cache): Expect this_frame.
	(amd64_sigtramp_frame_this_id, amd64_sigtramp_frame_prev_register)
	(amd64_sigtramp_frame_sniffer): Update signature.
	(amd64_sigtramp_frame_unwind): Add amd64_sigtramp_frame_sniffer.
	(amd64_frame_base_address): Expect this_frame.
	(amd64_dummy_id): Renamed from amd64_unwind_dummy_id.  Expect
	this_frame.
	(amd64_init_abi): Use set_gdbarch_dummy_id and
	frame_unwind_append_unwinder.
	* i386-tdep.c (i386_frame_cache): Expect this_frame.
	(i386_frame_this_id, i386_frame_prev_register): Update signature.
	(i386_frame_unwind): Use default_frame_sniffer.
	(i386_frame_sniffer): Delete.
	(i386_sigtramp_frame_cache): Expect this_frame.
	(i386_sigtramp_frame_this_id, i386_sigtramp_frame_prev_register)
	(i386_sigtramp_frame_sniffer): Update signature.
	(i386_sigtramp_frame_unwind): Use i386_sigtramp_frame_sniffer.
	(i386_frame_base_address): Update signature.
	(i386_dummy_id): Rename from i386_unwind_dummy_id.  Expect this_frame.
	(i386_push_dummy_call): Update comment.
	(i386_sigtramp_p, i386_svr4_sigtramp_p, i386_svr4_sigcontext_addr):
	Expect this_frame.
	(i386_gdbarch_init): Use set_gdbarch_dummy_id, dwarf2_append_unwinders,
	and frame_unwind_append_unwinder.
	* amd64-linux-tdep.c, amd64-sol2-tdep.c, amd64fbsd-tdep.c,
	amd64nbsd-tdep.c, amd64obsd-tdep.c, i386-linux-tdep.c,
	i386-nto-tdep.c, i386bsd-tdep.c, i386-sol2-tdep.c, i386obsd-tdep.c,
	i386nbsd-tdep.c: Update for unwinder changes.

2008-04-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* trad-frame.c (struct trad_frame_cache): Rename next_frame to this_frame.
	(trad_frame_cache_zalloc, trad_frame_alloc_saved_regs): Expect
	this_frame.
	(trad_frame_get_prev_register, trad_frame_get_register): Update signature.
	* trad-frame.h (trad_frame_cache_zalloc, trad_frame_get_register)
	(trad_frame_alloc_saved_regs, trad_frame_get_prev_register): Update
	signature.
	* tramp-frame.c (tramp_frame_cache, tramp_frame_start): Expect
	this_frame.
	(tramp_frame_this_id, tramp_frame_prev_register, tramp_frame_sniffer):
	Update signature.
	* tramp-frame.h (struct tramp_frame): Update signature of init.
	* Makefile.in (trad-frame.o): Update.

2008-04-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* dwarf2-frame.c (read_reg): Expect this_frame in the baton.
	(execute_stack_op): Put this_frame in the baton.
	(execute_cfa_program): Take this_frame.
	(struct dwarf2_frame_ops): Update comment for signal_frame_p.
	(dwarf2_frame_default_init_reg, dwarf2_frame_init_reg)
	(dwarf2_frame_signal_frame_p, dwarf2_frame_cache)
	(dwarf2_frame_this_id): Adjust to work on this_frame.
	(dwarf2_signal_frame_this_id): Delete.
	(dwarf2_frame_prev_register): Update signature.  Use new frame
	unwind methods.
	(dwarf2_frame_sniffer): Update signature.  Expect this_frame.
	(dwarf2_frame_unwind, dwarf2_signal_frame_unwind): Add
	dwarf2_frame_sniffer.
	(dwarf2_append_unwinders): New.
	(dwarf2_frame_base_address, dwarf2_frame_base_sniffer): Expect
	this_frame.
	* sparc-tdep.c (sparc32_dwarf2_struct_return_p)
	(sparc32_dwarf2_frame_init_reg): Expect this_frame.
	* cris-tdep.c (cris_dwarf2_frame_init_reg): Likewise.
	* rs6000-tdep.c (ppc_dwarf2_frame_init_reg): Likewise.
	* s390-tdep.c (s390_dwarf2_frame_init_reg): Likewise.
	* sh-tdep.c (sh_dwarf2_frame_init_reg): Likewise.
	* sparc64-tdep.c (sparc64_dwarf2_frame_init_reg): Likewise.
	* dwarf2-frame.h (dwarf2_frame_sniffer): Delete declaration.
	(dwarf2_append_unwinders): Declare.
	(dwarf2_frame_base_sniffer): Update declaration.
	* i386-linux-tdep.c (i386_linux_dwarf_signal_frame_p): Expect
	this_frame.

2008-04-30  Daniel Jacobowitz  <dan@codesourcery.com>

	Convert frame unwinders to use the current frame and
	"struct value".

	* frame.c (frame_debug): Make global.
	(get_frame_id): Pass this frame to unwinder routines.
	(frame_pc_unwind): Remove unused unwind->prev_pc support.
	(do_frame_register_read): Do not discard the return value of
	frame_register_read.
	(frame_register_unwind): Remove debug messages.  Use
	frame_unwind_register_value.
	(frame_unwind_register_value, get_frame_register_value): New
	functions.
	(create_new_frame, get_frame_base_address, get_frame_locals_address)
	(get_frame_args_address, get_frame_type): Pass this frame to
	unwinder routines.
	(frame_cleanup_after_sniffer, frame_prepare_for_sniffer): New
	functions.
	* frame.h: Update comments.
	(frame_debug, frame_unwind_register_value, get_frame_register_value)
	(frame_prepare_for_sniffer): Declare.
	* frame-unwind.h: Update comments and parameter names.
	(default_frame_sniffer): Declare.
	(frame_prev_register_ftype): Return a struct value *.
	(struct frame_unwind): Remove prev_pc member.
	(frame_unwind_sniffer_ftype, frame_unwind_append_sniffer): Delete.
	(frame_unwind_append_unwinder, frame_unwind_got_optimized)
	(frame_unwind_got_register, frame_unwind_got_memory)
	(frame_unwind_got_constant, frame_unwind_got_address): Declare.
	* frame-base.h: Update comments and parameter names.
	* valops.c (value_fetch_lazy): Use get_frame_register_value.  Iterate
	if necessary.  Add debugging output.
	* sentinel-frame.c (sentinel_frame_prev_register)
	(sentinel_frame_this_id): Update for new signature.
	(sentinel_frame_prev_pc): Delete.
	(sentinel_frame_unwinder): Remove prev_pc.
	* ia64-tdep.c (ia64_libunwind_frame_unwind): Do not initialize
	prev_pc.
	* libunwind-frame.c (libunwind_frame_unwind): Likewise.
	* frame-unwind.c (struct frame_unwind_table_entry): Remove sniffer.
	(frame_unwind_append_sniffer): Delete.
	(frame_unwind_append_unwinder): New function.
	(frame_unwind_find_by_frame): Take this frame.  Only use sniffers
	from unwinders.  Use frame_prepare_for_sniffer.
	(default_frame_sniffer, frame_unwind_got_optimized)
	(frame_unwind_got_register, frame_unwind_got_memory)
	(frame_unwind_got_constant, frame_unwind_got_address): New functions.
	* dummy-frame.c (dummy_frame_sniffer): Use gdbarch_dummy_id.
	(dummy_frame_prev_register, dummy_frame_this_id): Update for new
	signature.
	* gdbarch.sh: Replace unwind_dummy_id with dummy_id.
	* gdbarch.c, gdbarch.c: Regenerated.
	* frame-base.c (default_frame_base_address)
	(default_frame_locals_address, default_frame_args_address): Update
	for new signature.
	(frame_base_find_by_frame): Pass this frame to unwinder routines.
	* infcall.c (call_function_by_hand): Update comments.
	* Makefile.in (frame-unwind.o): Update dependencies.

2008-04-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* ada-lang.c (ada_value_primitive_packed_val): Only check
	value_lazy for memory lvals.
	* findvar.c (value_of_register_lazy): New function.
	(locate_var_value): Only check value_lazy for memory lvals.
	* valarith.c (value_subscripted_rvalue): Likewise.
	* valops.c (value_fetch_lazy): Handle both memory and register
	lvals.
	(search_struct_field, value_slice): Only check value_lazy for memory
	lvals.
	* value.c (struct value): Update comment for lazy.
	(value_primitive_field): Only check value_lazy for memory lvals.
	* value.h (value_lazy): Update comment.
	(value_of_register_lazy): Declare.

2008-04-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* corefile.c (reopen_exec_file): Close any open files.

2008-04-29  Joel Brobecker  <brobecker@adacore.com>

	* ia64-tdep.c (ia64_memory_remove_breakpoint): Set
	show_memory_breakpoints to 1 while reading the instruction bundle.

2008-04-29  Joel Brobecker  <brobecker@adacore.com>

	* gdbarch.sh: Document the return_value method. Explain that
	the FUNCTYPE parameter might be NULL.
	* gdbarch.h: Regenerated.
	* sparc-tdep.c (sparc32_push_dummy_code): Do not pass the function
	type when calling using_struct_return, as this is unnecessary
	on this target.

2008-04-28  Joel Brobecker  <brobecker@adacore.com>

	* terminal.h (create_tty_session): Fix return type.

2008-04-26  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-interp.c (mi_new_thread): Quote the thread id.

2008-04-26  Joel Brobecker  <brobecker@adacore.com>

	* breakpoint.c (condition_command, commands_from_control_command)
	(break_command_really): Minor reformatting.

2008-04-25  Pedro Alves  <pedro@codesourcery.com>

	* dwarf2read.c (dwarf2_const_value): Handle DW_FORM_strp.

2008-04-25  Pedro Alves  <pedro@codesourcery.com>

	* amd64-tdep.c (amd64_get_longjmp_target): New.
	(amd64_init_abi): Register amd64_get_longjmp_target as
	gdbarch_get_longjmp_target callback.
	* i386-tdep.c (i386_get_longjmp_target): Remove 64-bit handling.

2008-04-25  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.h (enum bpstat_what_main_action): Delete
	BPSTAT_WHAT_CLEAR_LONGJMP_RESUME_SINGLE.

	* breakpoint.c (clrs): Delete.
	(bpstat_what): Update table.

	* infrun.c (handle_inferior_event): Remove
	BPSTAT_WHAT_CLEAR_LONGJMP_RESUME_SINGLE handling.

2008-04-24  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-cmds.h (mi_cmd_args_ftype): Remove.
	Adjust all prototypes using mi_cmd_args_ftype to use
	mi_cmd_argv_ftype.
	(struct mi_cmd): Remove the args_func field.
	* mi/mi-cmds.c: Don't provide value for the args_func field.
	* mi/mi-main.c (mi_execute_async_cli_command)
	(mi_cmd_exec_run, mi_cmd_exec_next, mi_cmd_exec_next_instruction)
	(mi_cmd_exec_step, mi_cmd_exec_step_instruction)
	(mi_cmd_exec_finish, mi_cmd_exec_until, mi_cmd_exec_return)
	(mi_cmd_exec_continue, mi_cmd_exec_interrupt)
	(mi_cmd_target_download): Adjust.
	(mi_cmd_target_select): Adjust. Pass 0 for from_tty parameter.
	(mi_cmd_execute): Do not check for args_func.
	(mi_execute_async_cli_command): Adjust.
	* mi/mi-parse.c: Don't check for args_func.

2008-04-24  Vladimir Prus  <vladimir@codesourcery.com>

	* breakpoint.c (bpstat_check_location)
	(bpstat_check_watchpoint, bpstat_check_breakpoint_conditions):
	New, extracted from bpstat_stop_status.
	(bpstat_stop_status): Use the above.

2008-04-24  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-main.c (last_async_command): Rename to current_token.
	(previous_async_command): Remove.
	(mi_cmd_gdb_exit): Adjust.
	(mi_cmd_exec_interrupt): Don't dance with previous_async_command.
	(mi_cmd_target_select): Adjust.
	(mi_cmd_execute): Don't set previous_async_command.  Free token
	here even in async mode.
	(mi_execute_async_cli_command): Adjust.
	(mi_exec_async_cli_cmd_continuation): Adjust.  Do not free the
	token.
	(mi_load_progress): Adjust.

2008-04-24  Vladimir Prus  <vladimir@codesourcery.com>

	* infcmd.c (step_1_continuation): Always disable longjmp
	breakpoint if we're not going to do another step.

2008-04-24  Vladimir Prus  <vladimir@codesourcery.com>

	exec_cleanup murder.
	* breakpoint.c (until_break_command_continuation): Add
	the 'error' parameter.  Directly delete the breakoint as
	opposed to running cleanups.
	(until_break_command): Install continuation only
	after starting the target.  Don't use exec cleanups,
	use ordinary cleanups.  Discard cleanups is successfully
	started the target in async mode.
	(make_cleanup_delete_breakpoint): Remove.
	* breakpoint.h (make_cleanup_delete_breakpoint): Remove
	declaration.
	* defs.h (do_exec_cleanups, make_exec_cleanup): Remove
	declarations.
	(struct continations): Add the 'error' parameter to the
	continuation_hook field.
	(add_continuation, do_all_continuations)
	(add_intermediate_continuation)
	(do_all_intermediate_continuations): Add the 'error' parameter.
	* exceptions.c (throw_exception): Don't call do_exec_cleanups.
	* inf-loop.c (inferior_event_handler): Instead of calling
	discard_all_continuations, use do_all_continuations with 1 as
	'error' parameter.  Pass 0 as 'error' parameter in existing uses
	of discard_all_continuations.
	* infcmd.c (step_1): Do not use exec cleanup.  For async case, discard
	cleanups.
	(step_once): Install continuation only after resuming the target.
	(step_1_continuation): Disable longjmp breakpoint on error.
	(finish_command_continuation): Add the error parameter.  Delete
	the finish breakpoint directly, do not use cleanups.
	(finish_command): Do not use exec_cleanups. Always setup
	continuation.  For sync case, immediately run them.
	(attach_command_continuation): Add the error parameter.
	* infrun.c (fetch_inferior_event): Do not use exec cleanups to
	remove step_resume_breakpoint -- adjust delete it directly.
	* interps.c (interp_set): Adjust call to do_all_continations.
	* mi/mi-interp.c (mi_interpreter_exec_continuation): Do not
	do exec cleanups.
	* mi/mi-main.c (mi_cmd_target_select): Do not do exec
	cleanups.
	(mi_cmd_execute): Do not use exec_cleanup.
	(mi_execute_async_cli_command): Simplify the string concatenation
	logic.  Do no use exec cleanup.
	(mi_exec_async_cli_cmd_continuation): New parameter error.
	Free last_async_command.
	* top.c (command_line_handler_continuation): New parameter error.
	* utils.c (exec_cleanup_chain, make_exec_cleanup)
	(do_exec_cleanups): Remove.
	(add_continuation, do_all_continations)
	(add_intermediate_continuation)
	(do_all_intermediate_continuations): New parameter error.

2008-04-24  Vladimir Prus  <vladimir@codesourcery.com>

	* breakpoint.h (bp_location_p): New typedef.
	Register a vector of bp_location_p.
	* breakpoint.c (always_inserted_mode)
	(show_always_inserted_mode): New.
	(unlink_locations_from_global_list): Remove.
	(update_global_location_list)
	(update_global_location_list_nothrow): New.
	(update_watchpoint): Don't free locations.
	(should_insert_location): New.
	(insert_bp_location): Use should_insert_location.
	(insert_breakpoint_locations): Copied from
	insert_breakpoints.
	(insert_breakpoint): Use insert_breakpoint_locations.
	(bpstat_stop_status): Call update_global_location_list
	when disabling breakpoint.
	(allocate_bp_location): Don't add to bp_location_chain.
	(set_raw_breakpoint)
	(create_longjmp_breakpoint, enable_longjmp_breakpoint)
	(disable_longjmp_breakpoint, create_overlay_event_breakpoint)
	(enable_overlay_breakpoints, disable_overlay_breakpoints)
	(set_longjmp_resume_breakpoint)
	(enable_watchpoints_after_interactive_call_stop)
	(disable_watchpoints_before_interactive_call_start)
	(create_internal_breakpoint)
	(create_fork_vfork_event_catchpoint)
	(create_exec_event_catchpoint, set_momentary_breakpoint)
	(create_breakpoints, break_command_1, watch_command_1)
	(create_exception_catchpoint)
	(handle_gnu_v3_exceptions)
	(disable_breakpoint, breakpoint_re_set_one)
	(create_thread_event_breakpoint, create_solib_event_breakpoint)
	(create_ada_exception_breakpoint): : Don't call check_duplicates.
	Call update_global_location_list.
	(delete_breakpoint): Don't remove locations and don't
	try to reinsert them. Call update_global_location_list.
	(update_breakpoint_locations): Likewise.
	(restore_always_inserted_mode): New.
	(update_breakpoints_after_exec): Temporary disable
	always inserted mode.
	* Makefile.in: Update dependencies.

	* infrun.c (proceed): Remove breakpoints while stepping
	over breakpoint.
	(handle_inferior_event): Don't remove or insert
	breakpoints.
	* linux-fork.c (checkpoint_command): Remove breakpoints
	before fork and insert after.
	(linux_fork_context): Remove breakpoints before switch
	and insert after.
	* target.c (target_disconnect, target_detach): Remove
	breakpoints from target.


2008-04-24  Vladimir Prus  <vladimir@codesourcery.com>

	* breakpoint.c (print_one_breakpoint_location): In MI
	mode, report the location string the breakpoint was
	originally created with.

2008-04-23  Maxim Grigoriev  <maxim2405@gmail.com>

	* Makefile.in (xtensa-tdep.o): Update dependencies.
	* configure.tgt (xtensa*): Update dependencies.
	* xtensa-tdep.c (arreg_number): Renamed from areg_number.
	Local variable areg renamed to arreg.
	(areg_number): New function.
	(xtensa_pseudo_register_read, xtensa_pseudo_register_write)
	(xtensa_extract_return_value, xtensa_store_return_value): areg_number
	replaced by arreg_number.
	(xtensa_windowed_frame_cache, struct xtensa_frame_cache): New comments.
	(xtensa_alloc_frame_cache): Initialize cache->wd.ws.
	(xtensa_scan_prologue): New function.
	(xtensa_frame_cache): New local fp_regnum. Handle separately the case,
	when ENTRY instraction hasn't been executed yet. Get the frame pointer
	value based on prologue analysis. Fix the bugs preventing WS and
	AR4-AR7/A11 registers from getting right values for intermediate frames,
	whose registers have been already spilled.
	(xtensa_frame_prev_register): Fix WS register value. Use are_number
	and arreg_number appropriately.
	(xtensa_gdbarch_init): Set solib_svr4_fetch_link_map_offsets to
	svr4_ilp32_fetch_link_map_offsets.

2008-04-23  Andrew Stubbs  <andrew.stubbs@st.com>

	* printcmd.c: Define USE_PRINTF_I64 and PRINTF_HAS_LONG_LONG on MinGW.
	(printf_command): Convert %lld to %I64d when USE_PRINTF_I64 set.

2008-04-23  Paolo Bonzini  <bonzini@gnu.org>

	* acinclude.m4: Add override.m4.
	* configure: Regenerate.

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

	* ada-lang.c (get_selections): Variable PROMPT made non-const and
	initialized with a trailing space now.  Use PROMPT_ARG of
	COMMAND_LINE_INPUT instead of printing it ourselves.

2008-04-22  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Document support for 64-bit core file.

2008-04-22  Corinna Vinschen  <vinschen@redhat.com>

	* NEWS: Add information on calling convention and new SH CLI options.

	* sh-tdep.c (sh_cc_gcc): New static string.
	(sh_cc_renesas): Ditto.
	(sh_cc_enum): New static string array.
	(sh_active_calling_convention): New static string pointer denoting
	active user chosen ABI.
	(sh_is_renesas_calling_convention): New function to return function
	specific ABI, or user choice if necessary.
	(sh_use_struct_convention): Rename first argument and turn around its
	meaning.  Check for renesas ABI and return accordingly.
	(sh_use_struct_convention_nofpu): New function.
	(sh_next_flt_argreg): Get function type as third parameter.  Check
	for renesas ABI and choose floating registers accordingly.
	(sh_push_dummy_call_fpu): Check for ABI and choose argument slot and
	struct return slot accordingly.
	(sh_push_dummy_call_nofpu): Ditto.
	(sh_return_value_nofpu): Call sh_use_struct_convention_nofpu from here.
	Evaluate ABI and give to sh_use_struct_convention_nofpu.
	(sh_return_value_fpu):  Evaluate ABI and give to
	sh_use_struct_convention.
	(show_sh_command): New function.
	(set_sh_command): Ditto.
	(_initialize_sh_tdep): Initialize `set/show sh calling-convention
	CLI command.

	* gdbarch.sh (return_value): Add func_type argument.
	* gdbarch.c: Regenerate.
	* gdbarch.h: Ditto.
	* eval.c (evaluate_subexp_standard): Rename local variable value_type to
	val_type so as not to collide with value_type function.  Call
	using_struct_return with additional function type argument.
	* infcall.c (call_function_by_hand): Call using_struct_return and
	gdbarch_return_value with additional function type argument.
	* infcmd.c (print_return_value): Take addition func_type argument.
	Call gdbarch_return_value with additional function type argument.
	(finish_command_continuation): Call print_return_value with additional
	function type argument.
	(finish_command): Ditto.
	* sparc-tdep.c (sparc32_push_dummy_code): Call using_struct_return with
	additional function type argument.
	* stack.c (return_command): Call using_struct_return and
	gdbarch_return_value with additional function type argument.
	* value.c (using_struct_return): Take additional function type argument.
	* value.h (using_struct_return): Accommodate declaration.
	* alpha-tdep.c (alpha_return_value): Add func_type argument.
	* amd64-tdep.c (amd64_return_value): Ditto.
	* arm-tdep.c (arm_return_value): Ditto.
	* avr-tdep.c (avr_return_value): Ditto.
	* cris-tdep.c (cris_return_value): Ditto.
	* frv-tdep.c (frv_return_value): Ditto.
	* h8300-tdep.c (h8300_return_value): Ditto.
	(h8300h_return_value): Ditto.
	* hppa-tdep.c (hppa32_return_value): Ditto.
	(hppa64_return_value): Ditto.
	* i386-tdep.c (i386_return_value): Ditto.
	* ia64-tdep.c (ia64_return_value): Ditto.
	* iq2000-tdep.c (iq2000_return_value): Ditto.
	* m32c-tdep.c (m32c_return_value): Ditto.
	* m32r-tdep.c (m32r_return_value): Ditto.
	* m68hc11-tdep.c (m68hc11_return_value): Ditto.
	* m68k-tdep.c (m68k_return_value): Ditto.
	(m68k_svr4_return_value): Ditto.
	* m88k-tdep.c  (m88k_return_value): Ditto.
	* mep-tdep.c (mep_return_value): Ditto.
	* mips-tdep.c (mips_eabi_return_value): Ditto.
	(mips_n32n64_return_value): Ditto.
	(mips_o32_return_value): Ditto.
	(mips_o64_return_value): Ditto.
	* mn10300-tdep.c (mn10300_return_value): Ditto.
	* mt-tdep.c (mt_return_value): Ditto.
	* ppc-linux-tdep.c (ppc_linux_return_value): Ditto.
	* ppc-sysv-tdep.c (ppc_sysv_abi_return_value): Ditto.
	(ppc_sysv_abi_broken_return_value): Ditto.
	(ppc64_sysv_abi_return_value): Ditto.
	* ppc-tdep.h (ppc_sysv_abi_return_value): Ditto.
	(ppc_sysv_abi_broken_return_value): Ditto.
	(ppc64_sysv_abi_return_value): Ditto.
	* ppcnbsd-tdep.c (ppcnbsd_return_value): Ditto.
	* rs6000-tdep.c (rs6000_return_value): Ditto.
	* s390-tdep.c (s390_return_value): Ditto.
	* score-tdep.c (score_return_value): Ditto.
	* sh-tdep.c (sh_return_value_nofpu): Ditto.
	(sh_return_value_fpu): Ditto.
	* sh64-tdep.c (sh64_return_value): Ditto.
	* sparc-tdep.c (sparc32_return_value): Ditto.
	* sparc64-tdep.c (sparc64_return_value): Ditto.
	* spu-tdep.c (spu_return_value): Ditto.
	* v850-tdep.c (v850_return_value): Ditto.
	* vax-tdep.c (vax_return_value): Ditto.
	* xstormy16-tdep.c (xstormy16_return_value): Ditto.
	* xtensa-tdep.c (xtensa_return_value): Ditto.

	* gdbtypes.h (struct type): Add calling_convention member.
	* dwarf2read.c (read_subroutine_type): Add calling convention read
	from DW_AT_calling_convention attribute to function type.

2008-04-22  Markus Deuling  <deuling@de.ibm.com>

	* eval.c (evaluate_subexp_standard): Use value_subscripted_rvalue for
	multi_f77_subscript to support values from registers.
	* valarith.c (value_subscripted_rvalue): Remove prototype and static.
	* value.h (value_subscripted_rvalue): Add prototype.

	* f-typeprint.c (f_type_print_base): Add support for TYPE_CODE_UNION.
	Fix output.
	* f-valprint.c (f_val_print): Likewise.

2008-04-21  Craig Silverstein  <csilvers@google.com>

	* dwarf2read.c (zlib_decompress_section): Define abfd in the
	!HAVE_ZLIB_H case.

2008-04-21  Pedro Alves  <pedro@codesourcery.com>

	* symfile.c (syms_from_objfile): Don't warn if lowest loadable
	section is not a code section.

2008-04-19  Craig Silverstein  <csilvers@google.com>

	* NEWS: Add information on compressed debug sections.

2008-04-19  Vladimir Prus  <vladimir@codesourcery.com>

	* mi/mi-cmd-var.c (varobj_update_one): Print new
	value for variable objects that changed type.

2008-04-19  Vladimir Prus  <vladimir@codesourcery.com>

	* varobj.c (varobj_invalidate): Don't touch floating
	varobjs.

2008-04-19  Mark Kettenis  <kettenis@gnu.org>

	* symtab.c: (multiple_symbols_modes, multiple_symbols_ask)
	(multiple_symbols_cancel): Remove extra const.
	* symtab.h: Likewise.

2008-04-19  Nick Roberts  <nickrob@snap.net.nz>

	* interps.c (top_level_interpreter): Rename static variable...
	(top_level_interpreter_ptr): ...to this.
 	(top_level_interpreter): New function.

	* interps.h: New extern for top_level_interpreter.

	* linespec.c: Include interps.h and mi/mi-cmds.h.
	(decode_line_2): When using MI, always set all breakpoints in menu.

	* Makefile.in (linespec.o, mi-interp.o): Add dependencies.

2008-04-18  Craig Silverstein  <csilvers@google.com>

	* configure.ac (AC_SEARCH_LIBS): Add check for zlib.
	* config.in, configure: Regenerate.
	* dwarf2read.c: Include zlib.h if present.
	Modified *_SECTION macros.
	(section_is_p): New.
	(dwarf2_locate_sections): Use section_is_p instead of strcmp
	(dwarf2_resize_section): New.
	to determine whether a given section has a given name.
	(zlib_decompress_section): New.
	(dwarf2_read_section): Read the compressed section if present
	in the binary.
	* MAINTAINERS: Added myself to section Write After Approval.

2008-04-18  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* defs.h (exec_set_section_offsets): Remove prototype.
	* exec.c (exec_set_section_offsets): Remove function.

2008-04-18  Joel Brobecker  <brobecker@adacore.com>

	* stabsread.c (cleanup_undefined_types_1): Add instance flags check
	in the search for the matching symbol.

2008-04-17  Marc Khouzam  <marc.khouzam@ericsson.com>

	* breakpoint.c (update_watchpoint): Always reparse
	condition.

2008-04-17  Joel Brobecker  <brobecker@adacore.com>

	* breakpoint.c (print_one_breakpoint_location): Make sure to print
	the breakpoint address only once.

2008-04-17  Dennis Roberts  <dennis.roberts@sunquestinfo.com>

	* rs6000-tdep.c (rs6000_gdbarch_init): Use the BFD architecture,
	rather than a hard-coded architecture, for xcoff executables.

2008-04-17  Doug Evans  <dje@google.com>

	* buildsym.c (watch_main_source_file_lossage): New fn.
	(end_symtab): Call it.

	* source.c (find_and_open_source): Add some comments clarifying
	handling of FULLNAME argument.	Make static.  Remove pointless
	xstrdup/xfree.

2008-04-17  Pedro Alves  <pedro@codesourcery.com>

	* inf-loop.c (inferior_event_handler): Also run the intermediate
	continuations in the INF_EXEC_COMPLETE case.

2008-04-16  Tom Tromey  <tromey@redhat.com>

	* cli/cli-decode.h (CMD_ASYNC_OK): New define.
	(set_cmd_async_ok, get_cmd_async_ok): Declare.
	* cli/cli-decode.c (set_cmd_async_ok): New function.
	(get_cmd_async_ok): New function.
	* cli/cli-cmds.c (init_cli_cmds): Mark "pwd", "help", "info", and
	"show" as async-ok.
	* top.c (execute_command): Use get_cmd_async_ok.
	* infcmd.c: Include cli/cli-decode.h.
	(_initialize_infcmd): Mark "interrupt" as async-ok.
	* Makefile.in (infcmd.o): Depend on cli_decode_h.

2008-04-16  Daniel Jacobowitz  <dan@codesourcery.com>

	PR gdb/2445
	* exec.c: Correct "arch-utils.h" include.

2008-04-15  Aleksandar Ristovski  <aristovski@qnx.com>

	PR gdb/2424
	* infrun.c (normal_stop) Move breakpoint_auto_delete further down
	to allow printing to 'see' real reason of stop. This fixes PR 2424.
	* breakpoint.c (bpdisp_texst): New function. The function takes over
	the role of bpstats static array in print_one_breakpoint_location.
	(print_it_typical): Print "Temporary breakpoint" instead
	of just "Breakpoint" when breakpoint is, well, temporary. For mi-like
	protocols, print disp field.
	(print_one_breakpoint_location): Removed bpdisps static definition.
	Call new bpstat_text function to get value for 'disp' field.
	(mention): Print "Temporary breakpoint" instead of just "Breakpoint".

2008-04-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* gnulib/Makefile.am, gnulib/m4/gnulib-cache.m4,
	gnulib/aux/link-warning.h, gnulib/extra/link-warning.h: Adjust
	by rerunning gnulib-tool with --aux-dir=gnulib/extra.
	* gnulib/Makefile.in: Regenerate.

2008-04-14  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (GNULIB_H): New.  Trigger all-lib.
	(defs_h): Use $(GNULIB_H).
	(all-lib): Depend on gnulib/Makefile.
	(gnulib/Makefile): Regenerate gnulib/Makefile and gnulib/.deps.
	* config.in, gnulib/Makefile.in: Regenerated.

2008-04-14  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (LIBGNU, INCGNU): Define.
	(INTERNAL_CFLAGS_BASE): Add INCGNU.
	(INTERNAL_LIBS, CLIBS, CDEPS): Add LIBGNU.
	(CLEANDIRS): New.
	($(LIBGNU), all-lib): New rules.
	(clean, distclean, do-maintainer-clean): Use CLEANDIRS.
	* configure.ac: Use gl_EARLY, gl_INIT, and AM_INIT_AUTOMAKE.
	Simplify AC_CONFIG_AUX_DIR.  Generate gnulib/Makefile.
	* gnulib: New directory, from gnulib-tool.
	* configure, aclocal.m4: Regenerated.

2008-04-14  Daniel Jacobowitz  <dan@codesourcery.com>

	* linux-thread-db.c (have_threads_callback): Check thread->private.

2008-04-13  Nick Roberts  <nickrob@snap.net.nz>
	    Vladimir Prus  <vladimir@codesourcery.com>

	Fix @-varobjs.
	* varobj.c (value_of_root): Update the expression for
	floating varobjs.
	* mi/mi-cmd-var.c (varobj_update_one): If type has changed,
	report that.

2008-04-09  Marc Khouzam  <marc.khouzam@ericsson.com>

	* mi/mi-cmd-var.c: Include "mi-getopt.h".
	(mi_parse_format): New.  Factored out from mi_cmd_var_set_format.
	(mi_cmd_var_set_format): Use new mi_parse_format.
	(mi_cmd_var_evaluate_expression): Support for -f option to specify
	format.
	* Makefile.in (mi-cmd-var.o): Update dependencies.

	* varobj.h (varobj_get_formatted_value): Declare.
	* varobj.c (my_value_of_variable): Added format parameter.
	(cplus_value_of_variable): Likewise.
	(java_value_of_variable): Likewise.
	(c_value_of_variable): Likewise.  Evaluate expression based
	on format parameter.
	(struct language_specific): Add format parameter to function member
	*value_of_variable.
	(varobj_get_formatted_value): New.
	(varobj_get_value): Added format parameter to method call.

2008-04-08  Joel Brobecker  <brobecker@adacore.com>

	* stabsread.c (cleanup_undefined_types_noname): Manually set the
	instance flags of the undefined type before calling replace_type.

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

	* target.h (enum strata): Remove the download_stratum.

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

	* buildsym.h (last_source_file): Add dwarf info to comment.
	(last_source_start_addr): Ditto.

2008-04-07  Pedro Alves  <pedro@codesourcery.com>

	* alphanbsd-tdep.c: Include "target.h".
	* mn10300-tdep.c: Include "target.h".
	* Makefile.in (alphanbsd-tdep.o, mn10300-tdep.o): Update.

2008-04-06  Vladimir Prus  <vladimir@codesourcery.com>

	Fix breakpoint condition that use member variables.
	* valops.c (check_field): Remove.
	(check_field_in): Rename to check_field.
	(value_of_this): Use la_name_of_this.
	* value.h (check_field): Adjust prototype.

	* language.h (la_value_of_this): Rename to la_name_of_this.
	* language.c (unknown_language_defn): Specify "this" for
	name_of_this.
	(auto_language_defn): Likewise.
	(local_language_defn): Likewise.
	* ada-lang.c (ada_language_defn): Adjust comment.
	* c-lang.c (c_language_defn): Adjust comment.
	(cplus_language_defn): Specify "this" for name_of_this.
	(asm_language_defn): Adjust comment.
	(minimal_language_defn): Adjust comment.
	* f-lang.c (f_language_defn): Specify NULL for name_of_this.
	* jv-lang.c (java_language_defn): Specify "this" for name_of_this.
	* m2-lang.c (m2_language_defn): Specify "this" for name_of_this.
	* objc-lang.c (objc_language_defn): Specify "self" for
	name_of_this.
	* p-lang.c (pascal_language_defn): Specify "this" for
	name_of_this.
	* scm-lang.c (scm_language_defn): Specify NULL for name_of_this.

	* symtab.c (lookup_symbol_aux): Lookup "this" in the
	proper scope, and check for field in type of "this", without
	trying to create a value.

2008-04-04  Pedro Alves  <pedro@codesourcery.com>

	* mi/mi-cmds.h (enum mi_cmd_result): Delete MI_CMD_ERROR.
	(mi_error_message): Delete declaration.
	* mi/mi-interp.c (mi_cmd_interpreter_exec): Call error instead of
	returning MI_CMD_ERROR.
	* mi/mi-main.c (mi_error_message): Delete.
	(mi_cmd_exec_interrupt):
	(mi_cmd_thread_select, mi_cmd_thread_list_ids)
	(mi_cmd_thread_info): Call error instead of returning
	MI_CMD_ERROR.
	(mi_cmd_data_list_register_values): Call error instead of
	returning MI_CMD_ERROR.  Adapt to new get_register interface.
	(get_register): Change return typo to void.  Call error instead of
	returning MI_CMD_ERROR.
	(mi_cmd_data_write_register_values): Call error instead of
	returning MI_CMD_ERROR.
	(mi_cmd_list_features): Return MI_CMD_DONE.
	(captured_mi_execute_command): Remove MI_CMD_ERROR handling.
	(mi_execute_command): Always print exceptions with -error.

2008-04-04  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Mention new commands set/show multiple-symbols.

2008-04-03  Joel Brobecker  <brobecker@adacore.com>

	* symtab.c (multiple_symbols_ask, multiple_symbols_all)
	(multiple_symbols_cancel): New constants.
	(multiple_symbols_modes, multiple_symbols_mode): New static globals.
	(multiple_symbols_select_mode): New function.
	(_initialize_symtab): Add new set/show multiple-symbols commands.
	* symtab.h (multiple_symbols_ask, multiple_symbols_all)
	(multiple_symbols_cancel, multiple_symbols_select_mode): Declare.
	* ada-lang.c (user_select_syms): Add handling of new multiple-symbols
	setting.
	* linespec.c (decode_line_2): Likewise.

2008-04-03  Doug Evans  <dje@sebabeach.org>

	* symtab.h (enum free_code): Delete free_contents, unused.
	* symmisc.c (free_symtab_block): Delete.
	(free_symtab, case free_code): Delete.

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

	* valops.c (value_cast_structs): New function. Cast related
	STRUCT types up/down and return cast value. The body of this
	function comes mostly from value_cast_pointers.
	(value_cast_pointers): Code for actual cast STRUCT-STRUCT moved
	to value_cast_structs. Now value_cast_pointers needs only create
	appropriate reference after using value_cast_structs for actual
	casting.
	(value_cast): Handle references.

2008-04-01  Marc Khouzam  <marc.khouzam@ericsson.com>

	* MAINTAINERS: Added myself to section Write After Approval.

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

	* ia64-tdep.c (examine_prologue): Correct array access.

2008-03-28  Aleksandar Ristovski  <aristovski@qnx.com>

	* cp-support.c (first_component_command): Return if no arguments.

2008-03-28  Carlos O'Donell  <carlos@codesourcery.com>

	* ser-mingw.c (ser_windows_open): Open requested name.

2008-03-28  Aleksandar Ristovski  <aristovski@qnx.com>

	* MAINTAINERS: Added myself.

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

	* target.c (find_default_run_target): Allow a NULL `do_mesg'
	parameter.  If it is NULL, don't call error.
	(find_default_can_async_p, find_default_is_async_p): Pass NULL as
	`do_mesg' parameter to find_default_run_target.  If no target was
	found, return 0.

2008-03-28  Daniel Jacobowitz  <dan@codesourcery.com>

	* mips-linux-tdep.c: Update N32/N64 signal frame comments.
	(N64_SIGCONTEXT_LO, N64_SIGCONTEXT_PC, N64_SIGCONTEXT_FPCSR): Update.
	(N64_SIGCONTEXT_FIR, N64_SIGCONTEXT_CAUSE, N64_SIGCONTEXT_BADVADDR):
	Delete.
	(mips_linux_n32n64_sigframe_init): Do not record cause or badvaddr.

2008-03-27  Joel Brobecker  <brobecker@adacore.com>

	GDB 6.8 released.

2008-03-27  Ulrich Weigand  <uweigand@de.ibm.com>

	* features/Makefile (%.dat): Set xmltarget to the base filename
	of the XML source, without subdirectory.
	* regformats/rs6000/powerpc-32.dat: Regenerate.
	* regformats/rs6000/powerpc-64.dat: Regenerate.
	* regformats/rs6000/powerpc-e500.dat: Regenerate.

2008-03-27  Markus Deuling  <deuling@de.ibm.com>

	* xcoffread.c (scan_xcoff_symtab): Replace current_gdbarch by
	objfile arch.

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

	* mi/mi-main.c (enum captured_mi_execute_command_actions):
	Spell suppress in EXECUTE_COMMAND_SUPPRESS_PROMPT correctly.

2008-03-26  Ulrich Weigand  <uweigand@de.ibm.com>

	* objfiles.h (struct objfile): New GDBARCH member.
	(get_objfile_arch): Add prototype.
	* objfiles.c: Include "arch-utils.h".
	(allocate_objfile): Look up gdbarch associated with bfd.
	(get_objfile_arch): New function.
	* Makefile (objfiles.o): Update dependencies.

	* dwarf2-frame.c (decode_frame_entry_1): Replace current_gdbarch
	by objfile arch.
	* dwarf2loc.c (dwarf_expr_read_reg): Replace current_gdbarch
	by frame arch.
	(locexpr_describe_location): Replace current_gdbarch by
	objfile arch.
	* dwarf2read.c (die_type): Replace current_gdbarch by objfile arch.
	(dwarf2_add_field): Likewise.
	(read_tag_pointer_type): Likewise.
	(read_base_type): Likewise.
	(new_symbol): Likewise.

	* coffread.c (decode_type): Add OBJFILE argument.  Update callers.
	(decode_base_type, decode_function_type): Likewise.
	(coff_read_struct_type, coff_read_enum_type): Likewise.
	(coff_symtab_read): Replace current_gdbarch by objfile arch.
	(decode_base_type): Likewise.
	(coff_read_enum_type): Likewise.
	(coff_read_struct_type): Replace current_objfile by OBJFILE argument.
	(coff_read_enum_type): Likewise.

	* dbxread.c (read_dbx_symtab): Replace current_gdbarch by objfile arch.
	(end_psymtab): Likewise.
	(process_one_symbol): Likewise.

	* mdebugread.c (parse_symbol): Replace current_gdbarch by objfile arch.
	(parse_procedure): Likewise.
	(parse_partial_symbols): Likewise.

	* somread.c (som_symtab_read): Replace current_gdbarch by objfile arch.

	* stabsread.c (define_symbol): Replace current_gdbarch by objfile arch.
	Replace static pcc_promotion_type and pcc_unsigned_promotion_type by
	built-in types.
	(read_range_type): Replace current_gdbarch by objfile arch.  Replace
	static range_index_type by built-in type.
	(read_one_struct_field): Replace current_gdbarch by objfile arch.
	(read_enum_type): Likewise.

	* xcoffread.c (read_xcoff_symtab): Replace current_gdbarch by
	objfile arch.

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

	* varobj.h (varobj_floating_p): Declare.
	* varobj.c (varobj_floating_p): New.
	* mi/mi-cmd-var.c (mi_cmd_var_update): When passed
	'@' as the name, update all floating varobjs.

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

	* varobj.c (struct varobj_root): Rename use_selected_frame to
	floating, and clarify the meaning.
	(varobj_create, varobj_update,  new_root_variable): Adjust.
	(value_of_root): Don't use type_changed as in variable,
	adjust comment.
	(c_value_of_root): Adjust.

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

	* linux-nat.c (linux_nat_attach): Add the pid we attached to, to
	gdb's thread list.
	(linux_nat_wait): Add main lwp to gdb's thread list.
	* linux-thread-db.c (find_new_threads_callback): Also attach to
	already listed threads which thread_db didn't know about yet.

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

	* linux-nat.c (drain_queued_events): Fix comment typo.
	(linux_nat_attach): In async mode, don't rely on storing a pending
	status.  Instead place the wait status on the pipe.
	(linux_nat_resume): Remove unreacheable shortcut code in async
	mode.
	(stop_wait_callback): In async mode, don't store pending status.
	Instead, cancel breakpoints or resend the signal appropriatelly.
	(cancel_breakpoint): New, refactored from
	cancel_breakpoints_callback.
	(cancel_breakpoints_callback): Call cancel_breakpoint.
	(pipe_to_local_event_queue): Remove special token processing.
	(linux_nat_wait): Issue an internal error if a pending status is
	found in async mode.

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

	* inflow.c (gdb_has_a_terminal): Guard access to our_process_group.

2008-03-24  Nick Roberts  <nickrob@snap.net.nz>
	    Vladimir Prus  <vladimir@codesourcery.com>

	* varobj.c  (struct varobj_root): New component thread_id.
	(varobj_get_thread_id, check_scope): New functions.
	(c_value_of_root): Use check_scope.  Switch to the
	proper thread if necessary.

	* varobj.h (varobj_get_thread_id): New extern.

	* mi/mi-cmd-var.c (print_varobj): Add thread-id field.

2008-03-23  Daniel Jacobowitz  <dan@codesourcery.com>

	PR gdb/544
	* top.c: Revert 2008-03-21 changes.

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

	* thread.c (make_cleanup_restore_current_thread): Make it
	globally visible.
	* gdbthread.h (make_cleanup_restore_current_thread): Declare.
	* varobj.c (varobj_update): Don't save/restore frame.
	(c_value_of_root): Save/restore thread and frame here,
	using make_cleanup_restore_current_thread.
	* Makefile.in: Update dependecies.

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

	* varobj.c (struct varobj_root): Clarify
	comment on the frame field.
	(varobj_create): Don't set frame if we have no
	block.

2008-03-21  Daniel Jacobowitz  <dan@codesourcery.com>

	PR gdb/544
	Suggested by Jan Kratochvil:
	* top.c (gdb_rl_operate_and_get_next_completion): Call
	rl_redisplay_function.
	(gdb_rl_redisplay): New.
	(init_main): Set rl_redisplay_function.

2008-03-21  Thomas Mittelstaedt  <T.Mittelstaedt@cadenas.de>  (tiny change)

	* aix-thread.c (pdc_read_regs): Fix compiler warning.
	(pdc_write_regs, aix_thread_resume, fetch_regs_kernel_thread)
	(store_regs_kernel_thread): Likewise.

2008-03-21  Pedro Alves  <pedro@codesourcery.com>

	Linux native async support.

	* target.h (struct target_ops): Delete to_async_mask_value and add
	to_async_mask.
	(target_is_async_p, target_async): Formatting.
	(target_async_mask_value): Delete.
	(target_async_mask): Delete function declaration, and add new
	target macro with the same name.

	* target.c (update_current_target): Replace to_async_mask_value by
	to_async_mask.  Default to_async_mask to return_one.
	(target_async_mask): Delete.
	(find_default_can_async_p, find_default_is_async_p): New.
	(init_dummy_target): register find_default_can_async_p and
	find_default_is_async_p on the dummy target.

	* linux-nat.c: Include inf-loop.h, event-loop.h and event-top.h.
	(debug_linux_nat_async): New global.
	(show_debug_linux_nat_async): New function.
	(linux_nat_async_enabled, linux_nat_async_mask_value)
	(linux_nat_event_pipe, linux_nat_num_queued_events)
	(linux_nat_async_events_enabled): New globals.
	(struct waitpid_result): New struct.
	(waitpid_queue): New global.
	(queued_waitpid, push_waitpid, drain_queued_events): New.
	(my_waitpid): Call queued_waitpid.
	(linux_child_follow_fork): Disable async events during the call.
	(blocked_mask): Delete.
	(sync_sigchld_action, async_sigchld_action): New globals.
	(lin_lwp_attach_lwp): In sync mode, don't reblock SIGCHLD.  In
	async mode, block events during the call.
	(linux_nat_create_inferior): New.
	(linux_nat_attach): In sync mode, restore the mask states.  In
	async mode, wake the event loop immediatelly.
	(detach_callback): Drain all queued events of the lwp we're
	detaching from.
	(linux_nat_detach): Block async mode, and drain events of the main
	process.
	(linux_nat_resume): If in async mode, mask async events during the
	call.  If short circuiting, force event loop to wake up.  If
	resuming, set target_executing, and register target events in the
	event loop.
	(pipe_to_local_event_queue, local_event_queue_to_pipe): New.
	(linux_nat_wait): In async mode, block events during the call.
	Only enable/disable passing SIGINT to the inferior in sync mode.
	Get events from local waitpid queue.  If no interesting events was
	found, return to events loop.  Reregister target events in the
	event loop on exit.  In sync mode, no need to reblock SIGCHLD.
	(linux_nat_kill): Disable events on entry.
	(linux_nat_mourn_inferior): In sync mode, don't restore the masks
	here.  Detach async mode from the event loop if there are no more
	forks available, otherwise leave it on.
	(sigchld_handler): Assure this is called only in sync mode.
	(linux_async_permitted, linux_async_permitted_1): New globals.
	(set_maintenance_linux_async_permitted)
	(show_maintenance_linux_async_permitted): New functions.
	(linux_nat_is_async_p, linux_nat_can_async_p)
	(linux_nat_async_mask): New.
	(linux_nat_event_pipe_pop, linux_nat_event_pipe_push): New.
	(get_pending_events, async_sigchld_handler): New.
	(linux_nat_async_events): New.
	(async_terminal_is_ours): New global.
	(linux_nat_terminal_inferior, linux_nat_terminal_ours): New.
	(async_client_callback, async_client_context): New.
	(linux_nat_async_file_handler, linux_nat_async)
	(linux_nat_disable_async, linux_nat_enable_async): New.
	(linux_nat_add_target): Register linux_nat_create_inferior,
	linux_nat_can_async_p, linux_nat_is_async_p, linux_nat_async,
	linux_nat_async_mask, linux_nat_terminal_inferior and
	linux_nat_terminal_ours.
	(_initialize_linux_nat): Remove local action variable, and update
	code that used it to use sync_sigchld_action.  Add new
	"lin-lwp-async" debug set/show command.  Put the "lin-lwp" debug
	set/show command in the maintenance class.  Add new "linux-async"
	maintenance set/show command.  Block SIGCHLD by default.  Setup
	async_sichld_action, and sync_sigchld_action.  Install the default
	async mode.
	(lin_thread_get_thread_signals): Use a local sigset_t for blocking
	the cancel signals.

	* linux-thread-db.c (re_check_for_thread_db): New.
	(clear_lwpid_callback): Handle TARGET_WAITKIND_IGNORE.
	(thread_db_can_async_p, thread_db_is_async_p, thread_db_async)
	(thread_db_async_mask): New.
	(init_thread_db_ops): Register thread_db_can_async_p,
	thread_db_is_async_p, thread_db_async and thread_db_async_mask.

	* remote.c (remote_async_mask_value): New.
	(remote_return_zero): New.
	(init_remote_ops): Register remote_return_zero as callbacks of
	to_can_async_p and to_is_async_p.
	(remote_can_async_p, remote_is_async_p, remote_async): Update to
	use remote_async_mask_value.
	(remote_async_mask): New.
	(init_remote_async_ops): Remove to_async_mask_value setting and
	register remote_async_mask as to_async_mask callback in
	remote_async_ops.

	* Makefile.in (linux-nat.o): Update.

2008-03-21  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdbthread.h (add_thread_with_info): New.
	* linux-thread-db.c: Add some documentation.
	(GET_LWP, GET_PID, GET_THREAD, is_lwp, is_thread, BUILD_LWP): Delete.
	(struct private_thread_info): Remove th_valid and ti_valid.
	Replace ti with tid.
	(thread_get_info_callback): Do not add TID to the new ptid.  Do
	not cache th or ti.
	(thread_db_map_id2thr, lwp_from_thread): Delete functions.
	(thread_from_lwp): Assert that the LWP is set.  Do not add TID to the
	new PTID.
	(attach_thread): Handle an already-existing thread.  Use
	add_thread_with_info.  Cache the th and tid.
	(detach_thread): Verify that private was set.  Remove verbose
	argument and printing.  Update caller.
	(thread_db_detach): Do not adjust inferior_ptid.
	(clear_lwpid_callback, thread_db_resume, thread_db_kill): Delete.
	(check_event, find_new_threads_callback): Do not add TID to the new PTID.
	(thread_db_wait): Do not use lwp_from_thread.
	(thread_db_pid_to_str): Use the cached TID.
	(thread_db_extra_thread_info): Check that private is set.
	(same_ptid_callback): Delete.
	(thread_db_get_thread_local_address): Do not use it or check
	is_thread.  Check that private is set.  Assume that the thread
	handle is already cached.
	(init_thread_db_ops): Remove to_resume and to_kill.
	* thread.c (add_thread_with_info): New.
	(add_thread): Use it.
	* linux-nat.c (find_thread_from_lwp): Delete.
	(exit_lwp): Do not use it.  Check print_thread_events.  Print before
	deleting the thread.
	(GET_PID, GET_LWP, BUILD_LWP, is_lwp): Move to...
	* linux-nat.h (GET_PID, GET_LWP, BUILD_LWP, is_lwp): ...here.
	* inf-ttrace.c (inf_ttrace_wait): Use print_thread_events and
	printf_unfiltered for thread exits.
	* procfs.c (procfs_wait): Likewise.

2008-03-21  Chris Demetriou  <cgd@google.com>

	* symtab.c (rbreak_command): Quote symbol name before passing
	it to break_command.

2008-03-21  Daniel Jacobowitz  <dan@codesourcery.com>

	* eval.c (evaluate_subexp_for_address): Clarify error message.
	Use value_must_coerce_to_target.
	* infcall.c (value_arg_coerce): Call value_coerce_to_target.
	* valops.c (value_assign): Call value_coerce_to_target when
	assigning to anything but internalvars.  Leave GDB-side arrays
	as arrays when assigning to internalvars.
	(value_must_coerce_to_target, value_coerce_to_target): New.
	(value_coerce_array, value_addr): Call value_coerce_to_target.
	(value_array): Create the array in GDB's memory instead of
	the inferior's.
	* value.h (value_must_coerce_to_target, value_coerce_to_target):
	Declare.

2008-03-21  Daniel Jacobowitz  <dan@codesourcery.com>

	* top.c (quit_confirm): Warn that we will kill the program.

2008-03-19  Pedro Alves  <pedro@codesourcery.com>

	* inflow.c (terminal_ours_1): Guard access to
	inferior_process_group with #ifdef PROCESS_GROUP_TYPE.

2008-03-18  Ulrich Weigand  <uweigand@de.ibm.com>
	    Jim Blandy  <jimb@codesourcery.com>
	    Daniel Jacobowitz  <drow@false.org>

	* dwarf2expr.h (struct dwarf_expr_context): Add ADDR_SIZE member.
	(dwarf2_read_address): Update prototype.

	* dwarf2expr.c (unsigned_address_type): Add ADDR_SIZE parameter.
	(signed_address_type): Likewise.
	(dwarf2_read_address): Replace BYTES_READ parameter with ADDR_SIZE.
	(execute_stack_op): Update calls to unsigned_address_type,
	signed_address_type and dwarf2_read_address.  Fix implementation
	of DW_OP_deref_size.

	* dwarf2loc.h (dwarf2_per_cu_objfile): Add prototype.
	(dwarf2_per_cu_addr_size): Likewise.
	(struct dwarf2_locexpr_baton): Replace OBJFILE with PER_CU.
	(struct dwarf2_loclist_baton): Likewise.

	* dwarf2loc.c (find_location_expression): Update calls to
	dwarf2_read_address.  Use dwarf2_per_cu_objfile and
	dwarf2_per_cu_addr_size to retrieve PER_CU parameters.
	(locexpr_describe_location): Likewise.
	(dwarf2_evaluate_loc_desc): Replace OBJFILE with PER_CU parameter.
	Set ctx->addr_size to dwarf2_per_cu_addr_size (per_cu).
	(dwarf2_loc_desc_needs_frame): Add PER_CU parameter.  Set ctx->addr_size
	to dwarf2_per_cu_addr_size (per_cu).
	(locexpr_read_variable): Update dwarf2_evaluate_loc_desc call.
	(loclist_read_variable): Likewise.
	(locexpr_read_needs_frame): Update dwarf2_loc_desc_needs_frame call.

	* dwarf2read.c (dwarf2_symbol_mark_computed): Set baton->per_cu
	instead of baton->objfile.
	(dwarf2_per_cu_obfile): New function.
	(dwarf2_per_cu_addr_size): Likewise.

	* dwarf2-frame.c (struct comp_unit): Move higher.
	(struct dwarf2_cie): Add UNIT and ADDR_SIZE members.
	(execute_stack_op): Add ADDR_SIZE parameter; set ctx->addr_size.
	(execute_cfa_program): Add FDE parameter.  Replace EH_FRAME_P
	parameter by using fde->eh_frame_p.  Use read_encoded_value
	to implement DW_CFA_set_loc.
	(struct dwarf2_frame_cache): Add ADDR_SIZE member.
	(dwarf2_frame_cache): Set cache->addr_size.  Update calls to
	execute_stack_op and execute_cfa_program.
	(dwarf2_frame_prev_register): Update calls to execute_stack_op.
	(size_of_encoded_value): Remove.
	(read_encoded_value): Add PTR_LEN and FUNC_BASE parameters.
	Remove call to size_of_encoded_value.  Implement DW_EH_PE_funcrel.
	(add_cie): Set cie->unit backlink.
	(decode_frame_entry_1): Set cie->addr_size.  Update calls to
	read_encoded_value.
	(dwarf2_build_frame_info): Allocate UNIT on objfile obstack.

2008-03-17  Markus Deuling  <deuling@de.ibm.com>

	* i386-tdep.c (i386_print_insn): Remove unnecessary call to
	gdbarch_bfd_arch_info.

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

	* aix-thread.c (pdc_read_regs): Minor reformatting.

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

	* thread.c (print_thread_info): Don't insist
	on having current thread if there are no
	threads at all.

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

	* infcmd.c (attach_command_post_wait)
	(attach_command_continuation): New.
	(attach_command): Support background async execution, and async
	execution in synchronous mode.

2008-03-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* stack.c (print_stack_frame, print_frame): Use RETURN_MASK_ERROR.
	* symmisc.c (dump_symtab_1): Likewise.
	* wrapper.c (gdb_value_struct_elt): Likewise.

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

	* linux-nat.c (linux_nat_filter_event): Fix comment typo.

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

	* linux-nat.c (linux_nat_filter_event): New, refactored from
	linux_nat_wait.
	(linux_nat_wait): Call linux_nat_filter_event.

2008-03-17  Ulrich Weigand  <uweigand@de.ibm.com>

	* top.c (execute_command): Fix uninitialized variable error.

2008-03-16  Nick Hudson  <nick.hudson@dsl.pipex.com>

	* Makefile.in (amd64nbsd-nat.o): New dependency.
	* amd64nbsd-nat.c: Include "nbsd-nat.h".
	(_initialize_amd64nbsd_nat): Update target vector to use
	nbsd_pid_to_exec_file.
	* config/i386/nbsd64.mh (NATDEPFILES): Add nbsd-nat.o.

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

	Remove ignoring leading exec events code.
	* fork-child.c (startup_inferior): Do not set
	inferior_ignoring_leading_exec_events.
	* inf-child.c (inf_child_reported_exec_events_per_exec_call): Remove.
	(inf_child_target): Do not set to_reported_exec_events_per_exec_call.
	* infrun.c (inferior_ignoring_leading_exec_events): Remove.
	(handle_inferior_event): Remove code for ignoring leading exec
	events.
	* target.c (update_current_target): Do not inherit, or default,
	to_reported_exec_events_per_exec_call.
	(debug_to_reported_exec_events_per_exec_call): Remove.
	(setup_target_debug): Do not set to_reported_exec_events_per_exec_call.
	* target.h (target_reported_exec_events_per_exec_call): Remove.
	(struct target): Remove the to_reported_exec_events_per_exec_call
	field.

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

	Implement -thread-info.
	* gdbthread.h (print_thread_info): Declare.

	* thread.c (print_thread_info): New, extracted
	from info_threads_command and adjusted to
	work for CLI and MI.
	(info_threads_command): Use print_thread_info.
	* Makefile.in: Update dependencies.

	* mi/mi-cmds.c (mi_cmds): Specify a handler
	for -thread-info.
	* mi/mi-cmds.h (mi_cmd_thread_info): Declare.
	* mi/mi-main.c (mi_cmd_thread_info): New.
	(mi_cmd_list_features): Include 'thread-info'.

2008-03-14  Kevin Buettner  <kevinb@redhat.com>

	* mips-tdep.c (mips32_scan_prologue): Use the ABI register size
	to decide whether to match instruction patterns using "sw" and "sd".

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

	* infcmd.c (jump_command): Postpone disabling stdin until after
	the possible query.

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

	* inflow.c (gdb_getpgrp): New.
	(gdb_has_a_terminal): Use get_getpgrp.
	(terminal_ours_1): If attach_flag is set, don't refetch
	inferior_process_group.

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

	* features/library-list.dtd: Allow "section" elements as children
	of "library".  Add "section" element and describe its attributes.

	* solib-target.c (struct lm_info): Add section_bases member.
	(library_list_start_segment): Error out if seen a section element.
	(library_list_start_section): New.
	(library_list_end_library): New.
	(solib_target_free_library_list): Free section_bases.
	(section_attributes): New.
	(library_children): Make "segment" optional.  Add "section" child.
	(library_list_children): Register library_list_end_library.
	(solib_target_relocate_section_addresses): Handle section bases.

	* NEWS: Mention new qXfer:libraries:read section offsets support.

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

	* defs.h (do_exec_error_cleanups, discard_exec_error_cleanups)
	(make_exec_error_cleanup): Remove declarations.
	* utils.c (exec_error_cleanup_chain): Remove.
	(do_exec_error_cleanups, discard_exec_error_cleanups)
	(make_exec_error_cleanup): Remove.
	* event-loop.c (start_event_loop): Adjust call to
	async_enable_stdin.
	* event-top.c (async_enable_stdin): Remove the paramater dummy.
	(async_disable_stdin): Don't register async_enable_stdin via
	cleanup.
	* inf-loop.c (inferior_event_handler): Don't
	call do_exec_error_cleanups.  Call async_enable_stdin instead.
	* event-loop.c (start_event_loop): Adjust call to
	async_enable_stdin.
	* tui/tui-interp.c (tui_command_loop): Adjust call to
	async_enable_stdin.

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

	Async mode fixes.
	* Makefile.in (infcmd.o, inf-loop.o): Update dependencies.
	* breakpoint.c (bpstat_do_actions): In async mode,
	don't jump to top expecting stop_bpstat to be already
	updated.
	* event-loop.c (start_event_loop): Call async_enable_stdin
	on exception.
	* event-top.c (async_enable_stdin): Do nothing if sync_execution
	is not set.
	(command_handler): Do not setup continuation here.
	(command_line_handler_continuation): Move to...
	* top.c (command_line_handler_continuation): ... here.
	(execute_command): In async mode, register continuation.
	Don't check frame's language in running in async mode.
	* exceptions.c (throw_exception): Don't do exec_error_cleanups.
	* inf-loop.c (complete_execution): Inline into...
	(inferior_event_handler): ... here.  Clear target_executing before
	doing any cleanups.  Don't try to show prompt if the target was
	resumed.
	* infcmd.c (signal_command): Add support for async mode.
	(finish_command): Only add continuation if the target was
	successfully resumed.
	* remote.c (init_async_opts): Register to_get_thread_local_address
	handler.
	* mi/mi-interp.c (mi_cmd_interpreter_exec): Don't mess
	with sync_execution.
	* tui/tui-interp.c (tui_command_loop): Call async_enable_stdin
	on exception.

2008-03-14  Daniel Jacobowitz  <dan@codesourcery.com>

	* corefile.c (reopen_exec_file): Use exec_bfd_mtime.
	* exec.c (exec_bfd_mtime): Define.
	(exec_close): Clear it.
	(exec_file_attach): Set it.
	* gdbcore.h (exec_bfd_mtime): Declare.
	* source.c (find_source_lines): Do not use bfd_get_mtime.

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

	* top.c (simplified_command_loop): Remove.

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

	Remove unused remote.c hooks.
	* remote.c (deprecated_target_resume_hook)
	(deprecated_target_wait_loop_hook): Remove.
	(remote_resume): Do not call deprecated_target_resume_hook.
	(remote_wait): Do not call deprecated_target_wait_loop_hook.
	(remote_async_wait): Likewise.

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

	Implement MI notification for new threads.
	* observer.sh: Forward declare struct thread_info.
	* thread.c (add_thread): Notify observer.

	* interps.h (interp_init_ftype): New parameter
	top_level.
	(interp_set): Likewise.
	(top_level_interpreter_data): Declare.
	* interps.c (interp_set): New parameter top_level.
	Pass it to interpreter's init function.  Remember
	top level interpreter.
	(interpreter_exec_cmd): Adjust.
	(top_level_interpreter_data): New.
	* main.c (captured_main): Pass 1 for top_level
	parameter of interp_set.
	* cli/cli-interp.c (cli_interpreter_init): New
	parameter top_level.
	* tui/tui-interp.c (tui_init): New parameter top_level.

	* mi/mi-interp.c (mi_new_thread): New.
	(mi_interpreter_init): If top level, register
	observer for new threads.

	* Makefile.in (mi-interp.o, thread.o): Update dependencies.

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

	* top.c (execute_command): Disable break and stop
	commands in async mode.

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

	revert:
	2008-03-14  Pedro Alves  <pedro@codesourcery.com>
	* inf-loop.c (inferior_event_handler): Don't include remote.h.
	Call target_stop in the INF_QUIT_REQ case.
	* Makefile.in (inf-loop.o): Update.

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

	* inf-loop.c (inferior_event_handler): Don't include remote.h.
	Call target_stop in the INF_QUIT_REQ case.
	* Makefile.in (inf-loop.o): Update.

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

	* top.c (execute_command): Enable break, info and interrupt
	commands in async mode.

2008-03-13  Vladimir Prus  <vladimir@codesourcery.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* breakpoint.h (breakpoint_restore_shadows): New
	declaration.
	* breakpoint.c (breakpoint_restore_shadows): New.
	(read_memory_nobpt): Delete.
	* gdbcore.h (read_memory_nobpt): Delete declaration.
	* target.c (memory_xfer_partial): Call
	breakpoint_restore_shadows.
	(restore_show_memory_breakpoints)
	(make_show_memory_breakpoints_cleanup): New.
	(show_memory_breakpoints): New.
	* target.h (make_show_memory_breakpoints_cleanup): Declare.
	* ppc-linux-tdep.c (ppc_linux_memory_remove_breakpoint):
	Make sure we see memory breakpoints when checking if
	breakpoint is still there.
	* alpha-tdep.c, alphanbsd-tdep.c, frame.c, frv-tdep.c,
	hppa-linux-tdep.c, hppa-tdep.c, i386-linux-nat.c, i386-tdep.c,
	m68klinux-tdep.c, mips-tdep.c, mn10300-tdep.c, s390-tdep.c,
	sparc-tdep.c: Use target_read_memory instead of read_memory_nobpt.

2008-03-12  Pedro Alves  <pedro@codesourcery.com>

	* thread.c (add_thread): Use printf_unfiltered to print.

2008-03-12  Joel Brobecker  <brobecker@gnat.com>

	* sol-thread.c: Replace use of TM_I386SOL2_H by an expression
	that is true only on x86-solaris and x86_64-solaris.
	* procfs.c: Likewise. Move procfs_find_LDT_entry up together
	with proc_get_LDT_entry.

2008-03-12  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* configure.ac (AC_CHECK_FUNCS): Add check for setsid.
	* config.in, configure: Regenerate.
	* fork-child.c (fork_inferior): Call create_tty_session.
	* inflow.c (new_tty): Set controlling terminal with TIOCSCTTY.
	(create_tty_session): New function.
	* terminal.h: Declare create_tty_session.

2008-03-12  Alan Modra  <amodra@bigpond.net.au>

	PR 5900
	* elfread.c (elf_symtab_read): Make shndx an unsigned int.
	* mipsread.c: Include elf/internal.h.
	(read_alphacoff_dynamic_symtab): Map external reserved sym_shndx
	to internal range.

2008-03-11  Markus Deuling  <deuling@de.ibm.com>

	* win32-nat.c (do_win32_fetch_inferior_registers): Use get_regcache_arch
	to get at the current architecture and at the target specific vector.
	Add target specific vector to I387_FISEG_REGNUM and I387_FOP_REGNUM and
	remove define of I387_ST0_REGNUM.

	* amd64-tdep.c (I387_ST0_REGNUM): Remove define.

	(amd64_supply_fxsave, amd64_collect_fxsave): Use get_regcache_arch to
	get at the current architecture
	(I387_FISEG_REGNUM, I387_FOSEG_REGNUM): Add target specific vector as
	parameter.

	* i386-tdep.c: Remove various define's and undef's of I387_ST0_REGNUM,
	I387_NUM_XMM_REGS and I387_MM0_REGNUM.

	(I387_NUM_XMM_REGS, I387_XMM0_REGNUM, I387_MXCSR_REGNUM,
	I387_ST0_REGNUM, I387_FCTRL_REGNUM, I387_MM0_REGNUM,
	(I387_FSTAT_REGNUM): Add target specific vector as parameter.

	(i386_register_name, i386_dbx_reg_to_regnum): Use gdbarch_tdep to get
	at the target specific vector.

	(i386_get_longjmp_target): Use get_frame_arch to get at the current
	architecture. Use gdbarch_tdep to get at the target specific vector.

	(i386_fp_regnum_p, i386_fpc_regnum_p): Add gdbarch as parameter and
	update caller. Use gdbarch_tdep to get at the target specific vector.

	(i386_register_to_value: Use get_frame_arch to get at the current
	architecture.

	* i386-tdep.h (i386_fp_regnum_p, i386_fpc_regnum_p): Add gdbarch as
	parameter.

	* i387-tdep.c (I387_FCTRL_REGNUM, I387_FSTAT_REGNUM, I387_FTAG_REGNUM,
	I387_FISEG_REGNUM, I387_FIOFF_REGNUM, I387_FOSEG_REGNUM
	I387_FOOFF_REGNUM, I387_FOP_REGNUM, I387_ST0_REGNUM, FSAVE_ADDR,
	FXSAVE_ADDR, I387_XMM0_REGNUM): Add target specific vector as parameter.

	(I387_ST0_REGNUM, I387_NUM_XMM_REGS): Remove various define's and
	undef's.

	(i387_convert_register_p, i387_register_to_value,
	i387_value_to_register): Update call for i386_fp_regnum_p.

	* i387-tdep.h: Remove comment.
	(I387_ST0_REGNUM, I387_NUM_XMM_REGS, I387_MM0_REGNUM): Add define.
	(I387_FCTRL_REGNUM, I387_FSTAT_REGNUM, I387_FTAG_REGNUM,
	I387_FISEG_REGNUM, I387_FIOFF_REGNUM, I387_FOSEG_REGNUM,
	I387_FOOFF_REGNUM, I387_FOP_REGNUM, I387_XMM0_REGNUM,
	I387_MXCSR_REGNUM): Add target specific vector as parameter.

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

	* Makefile.in (fork-child.o): Update.
	* NEWS: Document "set exec-wrapper" and the gdbserver --wrapper
	argument.  Gather all gdbserver features together.
	* fork-child.c (exec_wrapper): New variable.
	(fork_inferior): Use it.
	(startup_inferior): Skip an extra trap if using "set exec-wrapper".
	(unset_exec_wrapper_command, _initialize_fork_child): New.

2008-03-10  Hidetaka Takano  <hidetaka.takano@glb.toshiba.co.jp>

	* source.c (directory_command): Modify the determination of
	condition of terminal "from_tty".

2008-03-10  Matt Rice  <ratmice@gmail.com>

	* dwarf2read.c (set_cu_language): Add DW_LANG_ObjC.

2008-03-10  Hidetaka Takano  <hidetaka.takano@glb.toshiba.co.jp>

	* spu-tdep.c (info_spu_event_command): Insert a '\0' to the end
	of the data passing to strtoulst function.
	(info_spu_signal_command): Likewise.

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

	* mi/mi-interp.c (mi_command_loop): Remove
	commented-out code.

2008-03-07  Joel Brobecker  <brobecker@adacore.com>

	* remote.c (extended_remote_attach_1): Make local variable pid an int
	instead of a pid_t.

2008-03-07  Joel Brobecker  <brobecker@adacore.com>

	* solib-svr4.c (svr4_same_1): New function, originally extracted
	from svr4_same and expanded to handle the sparc64 case.
	(svr4_same): Move up and reimplement using svr4_same_1.
	(enable_break): Use svr4_same_1 to do shared library name comparisons.

2008-03-07  Ramana Radhakrishnan  <ramana.r@gmail.com>

	* MAINTAINERS: Move self to Paper trail.

2008-03-05  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (mingw-hdep.o, posix-hdep.o, remote-fileio.o): Update.
	* event-loop.c (call_async_signal_handler): New.
	* event-loop.h (call_async_signal_handler)
	(gdb_call_async_signal_handler): Declare.
	(mark_async_signal_handler): Add comments.
	* event-top.c (handle_sigint): Use gdb_call_async_signal_handler.
	* mingw-hdep.c (sigint_event, sigint_handler): New.
	(gdb_select): Use them.  Wait for the readline signal handler
	to finish.
	(gdb_call_async_signal_handler, _initialize_mingw_hdep): New functions.
	* posix-hdep.c (gdb_call_async_signal_handler): New function.
	* remote-fileio.c (sigint_fileio_token, async_remote_fileio_interrupt):
	New.
	(remote_fileio_ctrl_c_signal_handler): Use
	gdb_call_async_signal_handler.
	(initialize_remote_fileio): Initialize sigint_fileio_token.
	* remote.c (initialize_sigint_signal_handler, handle_remote_sigint): Do
	not initialize tokens here.
	(handle_remote_sigint_twice): Likewise.  Reinstall
	handle_remote_sigint.
	(async_remote_interrupt_twice): Just call interrupt_query.
	(cleanup_sigint_signal_handler): Do not delete tokens.
	(remote_interrupt, remote_interrupt_twice): Use
	gdb_call_async_signal_handler.
	(interrupt_query): Reinstall the default signal handler.
	(_initialize_remote): Initialize tokens here.

2008-03-04  Joel Brobecker  <brobecker@adacore.com>

	* features/rs6000/power-core.xml, features/rs6000/power64-core.xml,
	features/rs6000/powerpc-601.xml, features/rs6000/rs6000.xml:
	Change the type of the lr register to code_ptr.
	* features/rs6000/powerpc-32.c, features/rs6000/powerpc-403.c,
	features/rs6000/powerpc-403gc.c, features/rs6000/powerpc-505.c,
	features/rs6000/powerpc-601.c, features/rs6000/powerpc-602.c,
	features/rs6000/powerpc-603.c, features/rs6000/powerpc-604.c,
	features/rs6000/powerpc-64.c, features/rs6000/powerpc-7400.c,
	features/rs6000/powerpc-750.c, features/rs6000/powerpc-860.c,
	features/rs6000/powerpc-e500.c, features/rs6000/rs6000.c: Regenerate.

2008-03-03  James E. Wilson  <wilson@tuliptree.org>

	* MAINTAINERS: Update my email address.

2008-03-03  Keith Seitz  <keiths@redhat.com>

	From Dave Murphy  <davem@devkitpro.org>:
	* configure.ac: Set tcl configdir to win under mingw.
	* configure: Regenerate.

2008-03-03  Daniel Jacobowitz  <dan@codesourcery.com>

	* breakpoint.c (fetch_watchpoint_value): New function.
	(update_watchpoint): Set and clear val_valid.  Use
	fetch_watchpoint_value.  Handle unreadable values on the
	value chain.  Correct check for user-requested array watchpoints.
	(breakpoint_init_inferior): Clear val_valid.
	(watchpoint_value_print): New function.
	(print_it_typical): Use it.  Do not free or clear old_val.  Print
	watchpoints even if old_val == NULL.
	(watchpoint_check): Use fetch_watchpoint_value.  Check for values
	becoming readable or unreadable.
	(watch_command_1): Use fetch_watchpoint_value.  Set val_valid.
	(do_enable_watchpoint): Likewise.
	* breakpoint.h (struct breakpoint): Update comment for val.  Add
	val_valid.
	* NEWS: Mention watchpoints on inaccessible memory.

2008-02-29  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (i386-nat.o): Update.
	* amd64-linux-nat.c (_initialize_amd64_linux_nat): Call
	i386_use_watchpoints.
	* i386-linux-nat.c (_initialize_i386_linux_nat): Call
	i386_use_watchpoints.
	* i386-nat.c (i386_stopped_data_address): Take two arguments.
	(i386_stopped_by_watchpoint): Update call.
	(i386_can_use_hw_breakpoint, i386_use_watchpoints): New.
	* config/i386/nm-i386.h: Conditionalize definitions on
	! I386_WATCHPOINTS_IN_TARGET_VECTOR.
	(i386_use_watchpoints): Declare.
	(i386_stopped_data_address): Update.
	* config/i386/nm-linux.h (I386_WATCHPOINTS_IN_TARGET_VECTOR): Define.
	* config/i386/nm-linux64.h (I386_WATCHPOINTS_IN_TARGET_VECTOR): Define.

2008-02-29  Joel Brobecker  <brobecker@adacore.com>

	GDB 6.8 branch created (branch timestamp: 2008-02-26 10:00 UTC)
	* version.in: Bump version to 6.8.50.20080229-cvs.

2008-02-28  Markus Deuling  <deuling@de.ibm.com>

	* f-typeprint.c (f_print_type): Handle NULL pointer in VARSTRING
	properly.

2008-02-28  Tom Tromey  <tromey@redhat.com>

	* infcmd.c (notice_args_read): Print result of get_inferior_args.

2008-02-28  Daniel Jacobowitz  <dan@codesourcery.com>

	* infcmd.c (kill_if_already_running): Make static.  Use
	target_require_runnable.
	* target.c (target_require_runnable): New.
	* target.h (target_require_runnable): Declare.

2008-02-28  Daniel Jacobowitz  <dan@codesourcery.com>

	* frame.c (reinit_frame_cache): Only annotate if frames were
	previously valid.

2008-02-28  Ulrich Weigand  <uweigand@de.ibm.com>

	* regformats/reg-ppc.dat: Rename "ps" to "msr".
	* regformats/reg-ppc64.dat: Likewise.

2008-02-28  Ulrich Weigand  <uweigand@de.ibm.com>

	* features/Makefile (%.dat): Emit xmltarget statement.

	* regformats/regdat.sh: Support xmltarget and xmlarch statments.
	Generate code to set gdbserver_xmltarget in init_registers_${name}.

	* regformats/arm-with-iwmmxt.dat: Regenerate.
	* regformats/mips64-linux.dat: Regenerate.
	* regformats/mips-linux.dat: Regenerate.
	* regformats/rs6000/powerpc-32.dat: Regenerate.
	* regformats/rs6000/powerpc-64.dat: Regenerate.
	* regformats/rs6000/powerpc-e500.dat: Regenerate.

	* regformats/reg-arm.dat: Add xmlarch statement.
	* regformats/reg-i386.dat: Likewise.
	* regformats/reg-i386-linux.dat: Likewise.
	* regformats/reg-x86-64-linux.dat: Likewise.
	* regformats/reg-spu.dat: Likewise.

2008-02-27  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (remote_wait, remote_async_wait): Stop if we receive
	an error.

2008-02-27  Daniel Jacobowitz  <dan@codesourcery.com>

	* utils.c (debug_timestamp): New.
	(vfprintf_unfiltered): Print timestamps if requested.
	(show_debug_timestamp): New.
	(initialize_utils): Register "set debug timestamp".
	* NEWS: Mention "set debug timestamp".  Add GDB 6.8 section.

2008-02-27  Joel Brobecker  <brobecker@adacore.com>

	* breakpoint.c (skip_prologue_sal): New function.
	(resolve_sal_pc): Adjust SAL past prologue if the SAL was
	computed from a line number.

2008-02-27  Joel Brobecker  <brobecker@adacore.com>

	* features/rs6000/power-core.xml, features/rs6000/power64-core.xml
	features/rs6000/powerpc-601.xml, features/rs6000/rs6000.xml:
	Set PC register type to "code_ptr".
	* features/rs6000/powerpc-32.c, features/rs6000/powerpc-403.c,
	features/rs6000/powerpc-403gc.c, features/rs6000/powerpc-505.c,
	features/rs6000/powerpc-601.c, features/rs6000/powerpc-602.c,
	features/rs6000/powerpc-603.c, features/rs6000/powerpc-604.c,
	features/rs6000/powerpc-64.c, features/rs6000/powerpc-7400.c,
	features/rs6000/powerpc-750.c, features/rs6000/powerpc-860.c,
	features/rs6000/powerpc-e500.c, features/rs6000/rs6000.c:
	Regenerate.

2008-02-27  Ulrich Weigand  <uweigand@de.ibm.com>

	* regformats/regdat.sh: Rename init_registers function in
	generated file to init_registers_${name}.

	* regformats/reg-crisv32.dat: Set "name" to crisv32.
	* regformats/reg-ppc64.dat: Set "name" to ppc64.
	* regformats/reg-s390x.dat: Set "name" to s390x.

2008-02-26  Greg Law  <glaw@undo-software.com>

	* regcache.c (registers_changed): Call reinit_frame_cache.

2008-02-26  Daniel Jacobowitz  <dan@codesourcery.com>

	* configure.tgt (sh-*-linux*): Match sh*.  Add glibc-tdep.o.
	* sh-linux-tdep.c (sh_linux_init_abi): Use glibc_skip_solib_resolver
	and svr4_fetch_objfile_link_map.
	* Makefile.in (sh-linux-tdep.o): Update.

2008-02-26  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* amd64-tdep.c (amd64_classify): Add support for decimal float
	types.
	* i386-tdep.c (i386_return_value): Make 128-bit decimal float
	use the struct return convention.

2008-02-26  Nick Roberts  <nickrob@snap.net.nz>

	* breakpoint.c (print_one_breakpoint_location): Revert Enb field
	to old format.  Discard breakpoint address if shared library is
	unloaded.
	(breakpoint_1): Adjust formatting of table header accordingly.

2008-02-25  Vladimir Prus  <vladimir@codesourcery.com>

       * remote.c (remote_get_threadlist): If the response
       is empty, don't try to parse it.

2008-02-23  Vladimir Prus  <vladimir@codesourcery.com>

	Unbreak 'target async'.
	* serial.c (serial_async): Set the
	handler function before enabling async
	mode.

2008-02-22  Daniel Jacobowitz  <dan@codesourcery.com>

	* solib-svr4.c (enable_break): Convert r_brk to a code address.

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

	* remote.c (extended_remote_attach_1): Set attach_flag.
	(extended_remote_create_inferior_1): Clear attach_flag.

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

	* mipsnbsd-tdep.c (mipsnbsd_ilp32_fetch_link_map_offsets): Set
	r_brk_offset.
	(mipsnbsd_lp64_fetch_link_map_offsets): Likewise.
	* solib-svr4.c (solib_svr4_r_brk): New.
	(open_symbol_file_object, svr4_current_sos): Always check the
	debug base.
	(svr4_fetch_objfile_link_map): Do not set debug_base.
	(enable_break): Use r_brk if it is set.
	(svr4_ilp32_fetch_link_map_offsets): Set r_brk_offset.
	(svr4_lp64_fetch_link_map_offsets): Likewise.
	* solib-svr4.h (struct link_map_offsets): Add r_brk_offset.

2008-02-20  Markus Deuling  <deuling@de.ibm.com>
	    Mark Kettenis  <kettenis@gnu.org>

	* alpha-tdep.c (alpha_heuristic_unwind_cache): Replace saved_regs by
	trad_frame_saved_reg.
	(trad-frame.h): New include.

	(alpha_heuristic_frame_unwind_cache): Use trad_frame_alloc_saved_regs
	instead of frame_obstack_zalloc.
	(alpha_heuristic_frame_prev_register): Use trad_frame_get_prev_register.

	* Makefile.in (alpha-tdep.o): Add dependency to trad_frame_h.

2008-02-20  Markus Deuling  <deuling@de.ibm.com>

	* rs6000-tdep.c (gdb_print_insn_powerpc): Get the current endianess
	from disassemble_info instead of gdbarch_byte_order.

	* mips-tdep.c (gdb_print_insn_mips): Likewise.
	* arm-tdep.c (gdb_print_insn_arm): Likewise.

2008-02-20  Markus Deuling  <deuling@de.ibm.com>

	* gdbarch.sh (memory_insert_breakpoint, memory_remove_breakpoint): Add
	gdbarch as parameter.

	* gdbarch.{c,h}: Regenerate.

	* ppc-tdep.h (ppc_linux_memory_remove_breakpoint): Add gdbarch as
	parameter.
	* mem-break.c (default_memory_insert_breakpoint)
	(default_memory_remove_breakpoint): Likewise.
	* target.h (default_memory_remove_breakpoint)
	(default_memory_insert_breakpoint): Likewise.

	* ppc-linux-tdep.c (ppc_linux_memory_remove_breakpoint): Add gdbarch as
	parameter. Replace current_gdbarch by gdbarch.
	* m32r-tdep.c (m32r_memory_insert_breakpoint)
	(m32r_memory_remove_breakpoint): Likewise.

2008-02-19  Daniel Jacobowitz  <dan@codesourcery.com>

	* MAINTAINERS: Add Vladimir Prus as MI maintainer.

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

	* NEWS: Add entry describing Add support improvements.

2008-02-18  Markus Deuling  <deuling@de.ibm.com>

	* m68klinux-nat.c (getfpregs_supplies): Replace gdbarch_fp0_regnum by
	M68K_FP0_REGNUM.

2008-02-18  Markus Deuling  <deuling@de.ibm.com>

	* sentinel-frame.c (sentinel_frame_prev_register): Do not call
	register_offset_hack anymore.

	* regcache.{c,h} (register_offset_hack): Remove.

2008-02-18  Markus Deuling  <deuling@de.ibm.com>

	* hppa-tdep.h (find_global_pointer): Add gdbarch as parameter.

	* hppa-hpux-tdep.c (hppa32_hpux_find_global_pointer): Likewise. Replace
	current_gdbarch by gdbarch.
	(hppa64_hpux_find_global_pointer): Likewise.
	* hppa-tdep.c (hppa_find_global_pointer): Likewise.
	(hppa32_push_dummy_call, hppa64_push_dummy_call): Update call for
	find_global_pointer.

	* hppabsd-tdep.c (hppabsd_find_global_pointer): Add gdbarch as
	parameter.
	* hppa-linux-tdep.c (hppa_linux_find_global_pointer): Likewise.

	* hppa-linux-nat.c (hppa_linux_register_addr): Use ARRAY_SIZE instead
	of gdbarch_num_regs.

	* hppa-hpux-tdep.c (hppa_hpux_sr_for_addr): Add gdbarch as parameter and
	replace current_gdbarch by gdbarch.
	(hppa_hpux_push_dummy_code): Update call for hppa_hpux_sr_for_addr.

2008-02-18  Markus Deuling  <deuling@de.ibm.com>

	* rs6000-nat.c (exec_one_dummy_insn, regmap): Add gdbarch as parameter
	and replace current_gdbarch by gdbarch.

	(store_register): Update call for exec_one_dummy_insn.
	(fetch_register, store_register): Update call of regmap.

	* ppcnbsd-nat.c (getregs_supplies, getfpregs_supplies): Add gdbarch as
	parameter and replace current_gdbarch by gdbarch.

	(ppcnbsd_store_inferior_registers): Use get_regcache_arch to get at
	the current architecture. Update call for getregs_supplies and
	getfpregs_supplies.
	(ppcnbsd_fetch_inferior_registers): Likewise.

	* ppcobsd-nat.c (getfpregs_supplies): Add gdbarch as parameter and
	replace current_gdbarch by gdbarch.
	(ppcobsd_fetch_registers, ppcobsd_store_registers): Use
	get_regcache_arch to get at the current architecture. Update call for
	getfpregs_supplies.

2008-02-18  Markus Deuling  <deuling@de.ibm.com>

	* arch-utils.c (gdbarch_from_bfd): Remove unnecessary {old,new}_gdbarch
	variables.

2008-02-15  Markus Deuling  <deuling@de.ibm.com>

	* mips-linux-tdep.c (mips_linux_init_abi): Remove internal error.

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

	* NEWS: Mention pending breakpints in MI.

2008-02-14  Markus Deuling  <deuling@de.ibm.com>

	* Makefile.in (ALL_TARGET_OBS): Remove dependency to xtensa-linux-nat.o.

2008-02-13  Markus Deuling  <deuling@de.ibm.com>

	Add script to build and test GDB using enable-targets=all.

	* gdb_buildall.sh: New file.

2008-02-11  Maxim Grigoriev  <maxim2405@gmail.com>

	* NEWS (New native configurations): Xtensa GNU/Linux.
	(New targets): Xtensa GNU/Linux.
	* Makefile.in (ALL_TARGET_OBS): Add xtensa-linux-nat.o and
	xtensa-linux-tdep.o
	(ALLDEPFILES): Add xtensa-linux-tdep.c and xtensa-linux-nat.c
	(xtensa-linux-nat.o, xtensa-linux-tdep.o): New dependencies.
	* configure.tgt (xtensa*-*-linux*): New entry.
	* xtensa-config.c (xtensa_tdep): New variable.
	(xtensa_config_byte_order, xtensa_config_tdep): Removed.
	(rmap): Change format based on new macro XTREG.
	(XTENSA_CONFIG_INSTANTIATE): Use new macro defined in xtensa-tdep.h.
	* xtensa-linux-nat.c: New.
	* xtensa-linux-tdep.c: New.
	* xtensa-xtregs.c: New.
	* xtensa-tdep.h (xtensa_elf_gregset_t): Update.
	(XTENSA_ELF_NGREG, XTREG, XTREG_END, XTENSA_GDBARCH_TDEP_INSTANTIATE)
	(XCHAL_NUM_CONTEXTS, XCHAL_HAVE_EXCEPTIONS): New macros.
	(xtensa_register_t): New field coprocessor.
	(XTENSA_REGISTER_FLAGS_PRIVILEGED): Name spelling corrected.
	* xtensa-tdep.c (xtensa_config_tdep, xtensa_config_byte_order): Removed.
	(xtensa_pseudo_register_read, xtensa_pseudo_register_write):
	Update to handle privileged registers.
	(xtensa_supply_gregset) Remove exccause and excvaddr registers.
	(xtensa_push_dummy_call): Set windowstart register correctly.
	(call0_analyze_prologue): Initialize xtensa_default_isa.
	(xtensa_derive_tdep): New.
	(xtensa_gdbarch_init): Get rid of xtensa_config_byte_order and
	xtensa_config_tdep, use XCHAL_HAVE_BE and xtensa_tdep instead.
	Call xtensa_derive_tdep().
	* config/xtensa/linux.mh: New.
	* regformats/reg-xtensa.dat: New.

2008-02-09  Aleksandar Ristovski  <aristovski@qnx.com>  (tiny change)

	* corelow.c (core_open): Use IS_ABSOLUTE_PATH.
	(filenames.h): New include.
	* Makefile.in (corelow.o): Add dependency for filenames.h.

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

	* source.c (find_and_open_source): Always rewrite absolute filenames.

2008-02-07  Doug Evans  <dje@google.com>

	* breakpoint.c: #include "hashtab.h".
	(ambiguous_names_p): New fn.
	(update_breakpoint_locations): When restoring bp enable status, don't
	compare function names if any functions have same name.
	* Makefile.in (breakpoint.o): Add hashtab.h dependency.

2008-02-07  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (symbol_completion_add): Make SV parameter a VEC**
	instead of just a VEC*. Update use of SV.
	(ada_make_symbol_completion_list): Update symbol_completion_add calls.

2007-02-07  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Put all new commands since gdb-6.7 together.

2007-02-07  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c: #include "vec.h".
	(struct string_vector, new_string_vector, string_vector_append):
	Delete.
	(char_ptr): New typedef.
	(DEF_VEC_P (char_ptr)): New VEC type.
	(symbol_completion_add): Update profile to take the new VEC type
	instead of the old string_vector structure. Update code accordingly.
	(ada_make_symbol_completion_list): Use the new VEC type instead of
	the old string_vector structure, and update the code accordingly.
	* Makefile.in (ada-lang.o): Add dependency on vec.h.

2008-02-06  Pierre Muller  <muller@ics.u-strasbg.fr>

	* p-exp.y: Set current_type in missing places.
	(leftdiv_is_integer): New static variable.
	Typecast right operand of BINOP_DIV to long_double if both operands
	are integers.

2008-02-06  Maciej W. Rozycki  <macro@mips.com>

	* remote-mips.c (set_breakpoint): Rename to...
	(mips_set_breakpoint): ... this.
	(clear_breakpoint): Rename to...
	(mips_clear_breakpoint): ... this.
	(common_breakpoint): Rename to...
	(mips_common_breakpoint): ... this.
	(check_lsi_error): Rename to...
	(mips_check_lsi_error): ... this.

2007-02-05  Joel Brobecker  <brobecker@adacore.com>

	* language.h (struct language_defn): Add new field
	la_make_symbol_completion_list.
	* symtab.c (default_make_symbol_completion_list): Renames
	make_symbol_completion_list.
	(make_symbol_completion_list): New function.
	* symtab.h (default_make_symbol_completion_list): Add declaration.
	* langauge.c (unknown_language): Set la_make_symbol_completion_list.
	(auto_language, local_language): Likewise.
	* objc-lang.c (objc_language_defn): Likewise.
	* scm-lang.c (scm_language_defn): Likewise.
	* m2-lang.c (m2_language_defn): Likewise.
	* f-lang.c (f_language_defn): Likewise.
	* jv-lang.c (java_language_defn): Likewise.
	* p-lang.c (pascal_language_defn): Likewise.
	* c-lang.c (c_language_defn, cplus_language_defn, asm_language_defn)
	(minimal_language_defn): Likewise.
	* ada-lang.c (struct string_vector): New structure.
	(new_string_vector, string_vector_append, ada_unqualified_name)
	(add_angle_brackets, symbol_completion_match, symbol_completion_add)
	(ada_make_symbol_completion_list): New functions.
	(ada_language_defn): Set la_make_symbol_completion_list.
	* ada-lang.h (ada_make_symbol_completion_list): Remove declaration,
	this function is static.

2008-02-05  Kevin Buettner  <kevinb@redhat.com>

	* mn10300-tdep.c (mn10300_push_dummy_call): Adjust stack pointer
	to account for call site optimizations.

2008-02-05  Andrzej Zaborowski  <balrogg@gmail.com>

	* tracepoint.c (read_actions): Handle end-of-text indicator
	in action list properly.  (Committed by Jim Blandy)

2008-02-05  Jim Blandy  <jimb@red-bean.com>

	* ax-gdb.c (gen_expr): Yield ordinary error if asked to trace a
	pseudoregister, not an internal error.
	Reported by: Andrzej Zaborowski

2008-02-04  Vladimir Prus  <vladimir@codesourcery.com>

	* varobj.c (c_value_of_variable): Use xstrdup.

2008-02-04  Vladimir Prus  <vladimir@codesourcery.com>

	Update stored rendition of varobj value when format changes.
	* varobj.c (varobj_set_display_format): Recomputed
	print_value.
	(c_value_of_variable): Return print_value.

2008-02-03  Doug Evans  <dje@google.com>

	* eval.c (evaluate_subexp_standard): Fix type of result of mixed
	integer/float division operations when EVAL_AVOID_SIDE_EFFECTS.
	* valops.c (value_one): New function.
	* value.h (value_one): Declare.

	Fix argument promotion for binary arithmetic ops for C.
	* valarith.c (unop_result_type): New fn.
	(binop_result_type): New fn.
	(value_binop): Move result type computation to binop_result_type.
	(value_pos, value_neg, value_complement): Move result type
	computation to unop_result_type.

	PR 2384
	* gdbtypes.c (get_vptr_fieldno): Renamed from fill_in_vptr_fieldno.
	Return basetype, fieldno if found.  All callers updated.
	Don't cache TYPE_VPTR_FIELDNO, TYPE_VPTR_BASETYPE if from different
	objfile.
	* gdbtypes.h (get_vptr_fieldno): Renamed from fill_in_vptr_fieldno.
	* symfile.h (fill_in_vptr_fieldno): Delete.

2008-02-02  Doug Evans  <dje@google.com>

	* valarith.c (value_binop): Handle unsigned BINOP_REM division by zero.

	* typeprint.c (*): Whitespace cleanup.

2008-02-02  Mark Kettenis  <kettenis@gnu.org>
	    Luis Machado  <luisgpm@br.ibm.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Pass floats that
	don't fit into registerson the stack the way GCC does.

2008-02-01  Joel Brobecker  <brobecker@adacore.com>

	* symtab.c (symbol_set_names): Do not add an entry in the demangling
	hash table for Ada symbols. Just store the linkage name as is,
	and leave the demangled_name as NULL.

2007-02-01  Joel Brobecker  <brobecker@adacore.com>

	* dwarf2read.c (add_partial_symbol): Always store all Ada subprograms
	in the global scope.
	(new_symbol): Likewise.

2008-02-01  Vladimir Prus  <vladimir@codesourcery.com>

	* breakpoint.c (break_command_1): Return void.
	(break_command_really): Return void.  Rethrow
	exceptions instead of returning.
	(gdb_breakpoint): Remove the error_message parameter.
	Return void.  Rename to set_breakpoint.
	* gdb.h (gdb_breakpoint): Rename and move to...
	* breakpoint.h (set_breakpoint): ...here.
	* mi/mi-cmb-break.c (mi_cmd_break_insert): Restore
	event hooks even if exception is thrown.  Adjust to
	gdb_breakpoint interface changes.


2008-02-01  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* ppc-sysv-tdep.c (ppc64_sysv_abi_push_dummy_call): Write 32-bit
	float in both first and second word in the doubleword, to support
	old and new ABIs.

2008-02-01  Vladimir Prus  <vladimir@codesourcery.com>

	Properly rethrow exception.  This fixes errors
	about non-existent functions for -break-insert.
	* breakpoint.c (break_command_really): Use throw_exception
	for rethrowing.  If rethrowing, don't print the exception.

2008-01-31  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* NEWS: Mention Decimal Floating Point support.

2008-01-31  Joel Brobecker  <brobecker@adacore.com>

	* std-regs.c (value_of_builtin_frame_pc_reg): Change the returned
	value type to builtin_type_void_func_ptr.

2008-01-31  Andreas Krebbel  <krebbel1@de.ibm.com>

	* s390-tdep.c (is_float_singleton, is_float_like,
	alignment_of, s390_return_value): Make checks for
	TYPE_CODE_FLT to match TYPE_CODE_DECFLOAT as well.

2008-01-31  Luis Machado  <luisgpm@br.ibm.com>
	    Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* infcmd.c (default_print_registers_info): Also print hex
	raw contents for TYPE_CODE_DECFLOAT registers.
	* ppc-tdep.h (gdbarch_tdep): Add ppc_dl0_regnum member.
	* rs6000-tdep.c (IS_DFP_PSEUDOREG): New macro.
	(rs6000_register_name): Add support for DFP pseudo-registers.
	(rs6000_pseudo_register_type): Likewise.
	rs6000_pseudo_register_reggroup_p): Likewise.
	(ppc_pseudo_register_read): New function.
	(ppc_pseudo_register_write): Likewise.
	(rs6000_pseudo_register_read): Likewise.
	(rs6000_pseudo_register_write): Likewise.
	(e500_pseudo_register_read): Move checks to
	rs6000_pseudo_register_read.
	(e500_pseudo_register_write): Move checks to
	rs6000_pseudo_register_write.
	(rs6000_gdbarch_init): Initialize tdep->ppc_dl0_regnum.  Install
	rs6000_pseudo_register_read and rs6000_pseudo_register_write
	in gdbarch if SPE or DFP is available.  Adjust gdbarch's
	num_pseudo_regs to account for DFP pseudo regs.

2008-01-31  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* ppc-tdep.h (struct gdbarch_tdep): Remove ppc_ev31_regnum member.
	* rs6000-tdep.c (IS_SPE_PSEUDOREG): New macro.
	(spe_register_p, rs6000_register_name, rs6000_pseudo_register_type,
	rs6000_pseudo_register_reggroup_p, e500_move_ev_register,
	e500_pseudo_register_read, e500_pseudo_register_write): Use
	IS_SPE_PSEUDOREG macro.
	(rs6000_frame_cache): Remove use of tdep->ppc_ev31_regnum.
	(rs6000_gdbarch_init): Remove unnecessary num_sprs local variable.
	Remove initialization of tdep->ppc_ev31_regnum.

2008-01-08  Paul Hilfinger  <hilfinger@adacore.com>

	* printcmd.c (print_formatted): Handle references as for unformatted
	prints.

2008-01-30  Joel Brobecker  <brobecker@adacore.com>

	* eval.c (evaluate_subexp_standard): Add handling of user
	registers when in EVAL_AVOID_SIDE_EFFECTS mode.

2008-01-30  Pierre Muller  <muller@ics.u-strasbg.fr>

	* eval.c (evaluate_subexp_standard): Support
	BINOP_INTDIV opcode.

2008-01-30  Paul N. Hilfinger  <hilfinger@adacore.com>

	* valarith.c (value_binop): Add floating-point BINOP_MIN and
	BINOP_MAX cases.
	For BINOP_EXP, use length and signedness of left operand only for
	result, as for shifts.
	For integral operands to BINOP_EXP, use new integer_pow and
	uinteger_pow functions so as to get full range of results.
	(integer_pow): New function.
	(uinteger_pow): New function.

2008-01-30  Vladimir Prus  <vladimir@codesourcery.com>

	Use vector for varobj_list_children interface.
	* varobj.c (varobj_list_children): Return vector
	of varobjs.
	* varobj.h (varobj_list_children): Adjust
	prototype.
	(varobj_p): Declare.  Declare vector thereof.
	* mi/mi-cmd-var.c (mi_cmd_var_list_children): Adjust
	for varobj_list_children change.
	* Makefile.in (varobj_h): Update dependencies.

2008-01-30  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Add support for
	TYPE_CODE_DECFLOAT arguments.
	(ppc64_sysv_abi_push_dummy_call) Likewise.
	(get_decimal_float_return_value): New function.
	(do_ppc_sysv_return_value): Add support for TYPE_CODE_DECFLOAT return
	values by calling get_decimal_float_return_value.
	(ppc64_sysv_abi_return_value): Likewise.

2008-01-30  Nick Roberts  <nickrob@snap.net.nz>

	* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_file):  Add field
	for preprocessor macro information.  Formatting changes.

2008-01-29  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (struct remote_state): Add cached_wait_status.
	(remote_exec_file): New variable.
	(PACKET_vAttach, PACKET_vRun): New constants.
	(extended_remote_restart): Do not query for status.
	(struct start_remote_args): New.
	(remote_start_remote): Take it as a second argument.  Check
	whether the target is running.  Issue an error for non-running
	non-extended targets.  Cache the wait status.  Set inferior_ptid
	here.
	(remote_open_1): Prompt to disconnect non-running targets.  Make
	sure the target is marked running.  Do not set inferior_ptid here.
	Update call to remote_start_remote.  Do not call remote_check_symbols
	if the target is not running.
	(remote_detach_1): Rename from remote_detach.  Take an EXTENDED
	argument.  Handle a non-running target.
	(remote_detach): Use it.
	(extended_remote_detach): New.
	(remote_disconnect): Fix typo.  Use remoute_mourn_1.
	(extended_remote_attach_1, extended_remote_attach)
	(extended_async_remote_attach): New.
	(remote_vcont_resume): Remove unused variable.
	(remote_wait, remote_async_wait): Use any cached wait status.
	(putpkt_binary, getpkt): Clear any cached wait status.
	(extended_remoute_mourn_1): New.
	(extended_remote_mourn): Use it.
	(extended_async_remote_mourn, extended_remote_run): New.
	(extended_remote_create_inferior_1): New.
	(extended_remote_create_inferior): Use it.
	(extended_remote_async_create_inferior): Likewise.
	(remote_xfer_partial): Skip for non-executing targets.
	(init_extended_remote_ops): Set to_detach and to_attach.
	(init_extended_async_remote_ops): Likewise.  Use
	extended_async_remote_mourn.
	(_initialize_remote): Register vAttach, vRun, and
	set remote exec-file.
	* NEWS: Mention vAttach, vRun, and gdbserver extended-remote support.

2008-01-29  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (symfile.o): Update.
	* NEWS: Mention exec tracing support.
	* inf-ttrace.c (inf_ttrace_wait): Return TARGET_WAITKIND_EXECD for
	exec events.
	* infcmd.c (kill_if_already_running, detach_command)
	(disconnect_command): Replace SOLIB_RESTART with no_shared_libraries.
	* infrun.c (MAY_FOLLOW_EXEC, may_follow_exec): Delete.
	(follow_exec): Do not check may_follow_exec.  Do not mourn and push
	targets.  Apply the sysroot path to the loaded executable.  Use
	no_shared_libraries.
	* linux-nat.c (linux_child_follow_fork): Print fork following
	messages if verbose.
	(kill_wait_callback): Kill again before waiting a second time.
	* symfile.c (symbol_file_clear): Replace SOLIB_RESTART with
	no_shared_libraries.

2008-01-29  Joel Brobecker  <brobecker@adacore.com>

	* amd64-tdep.c (amd64_classify): Add handling of TYPE_CODE_CHAR.

2008-01-29  Joel Brobecker  <brobecker@adacore.com>

	* nto-tdep.h: Remove #include "defs.h".
	* nto-tdep.c: Add #include "defs.h".
	* Makefile.in (nto_tdep_h): Update dependencies.
	(nto-tdep.o): Likewise.

2008-01-29  Joel Brobecker  <brobecker@adacore.com>

	* infrun.c (wait_for_inferior): Add treat_exec_as_sigtrap parameter
	and use it.
	(proceed, start_remote): Update call to wait_for_inferior.
	* inferior.h (wait_for_inferior): Update declaration.
	* fork-child.c, infcmd.c, solib-irix.c, solib-osf.c, solib-sunos.c,
	solib-svr4.c, win32-nat.c: Update calls to wait_for_inferior.
	* inf-ttrace.c (inf_ttrace_wait): Report TTEVT_EXEC events as
	TARGET_WAITKIND_EXECD instead of TARGET_WAITKIND_STOPPED.

2008-01-29  Aleksandar Ristovski  <aristovski@qnx.com>

	* varobj (adjust_value_for_child_access): Added checking for
	returned value from gdb_value_ind.
	(c_describe_child): Likewise.
	(cplus_describe_child): Fixed a typo.

2008-01-29  Jim Blandy  <jimb@red-bean.com>

	* MAINTAINERS: Update my info.

2008-01-29  Vladimir Prus  <vladimir@codesourcery.com>

	Use multiple locations for hardware watchpoints.
	This eliminates the need to traverse value chain, doing
	various checks, in three different places.

	* breakpoint.h (struct bp_location): New fields
	lengths and watchpoint_type.
	(struct breakpoint): Remove the val_chain field.
	* breakpoint.c (is_hardware_watchpoint): New.
	(free_valchain): Remove.
	(update_watchpoint): New.
	(insert_bp_location): For hardware watchpoint, just
	directly insert it.
	(insert_breakpoints): Call update_watchpoint_locations
	on all watchpoints.  If we have failed to insert
	any location of a hardware watchpoint, remove all inserted
	locations.
	(remove_breakpoint): For hardware watchpoints, directly
	remove location.
	(watchpoints_triggered): Iterate over locations.
	(bpstat_stop_status): Use only first location of
	a resource watchpoint.
	(delete_breakpoint): Don't call free_valchain.
	(print_one_breakpoint): Don't print all
	locations for watchpoints.
	(breakpoint_re_set_one): Use update_watchpoint for
	watchpoints.

2008-01-29  Vladimir Prus  <vladimir@codesourcery.com>

	Don't reset watchpoint block on solib load.

	* breakpoint.c (insert_bp_location): For watchpoints,
	recompute condition.
	(breakpoint_re_set_one): Instead of recomputing value
	and condition for watchpoints, just reset value and
	let insert_breakpoints/insert_bp_location recompute it.
	Don't do anything about disabled watchpoint.

2008-01-29  Pierre Muller  <muller@ics.u-strasbg.fr>

	* valarith.c (value_binop): Handle unsigned integer
	division by zero.

2008-01-28  Kevin Buettner  <kevinb@redhat.com>

	* mn10300-tdep.c (mn10300_analyze_prologue): Check for an
	instruction pattern that appears frequently in position
	independent code.  Fix bug in code which looks for "fmov" and
	backtracks if no "fmov" is found.

2008-01-28  Doug Evans  <dje@google.com>

	* dbxread.c (read_dbx_symtab): Fix indentation.
	Reformat comments to 80 columns.
	Move local var def closer to only use.

2008-01-28  Daniel Jacobowitz  <dan@codesourcery.com>

	* fork-child.c (SHELL_FILE): Remove #ifndef.
	(fork_inferior): Remove SHELL_COMMAND_CONCAT.

2008-01-25  Pierre Muller  <muller@ics.u-strasbg.fr>

	* i386-tdep.c (i386_skip_noop): New function.
	(i386_analyze_prologue): Call i386_skip_noop function.

2008-01-24  Michael Snyder  <msnyder@specifix.com>

	* procfs.c (procfs_xfer_partial): Comment, cut/paste error.
	* win32-nat.c (win32_xfer_partial): Ditto.
	* target.c (default_xfer_partial): Minor whitespace adjustment.

2008-01-24  Pedro Alves  <pedro@codesourcery.com>

	* arm-tdep.c (arm_addr_bits_remove): In non 26-bit mode, don't
	strip bit 1 even if pc doesn't point to thumb code.

2008-01-23  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c (remote_wait): Handle SIGINT between packets.
	(remote_async_wait): Likewise.

2008-01-23  Vladimir Prus  <vladimir@codesourcery.com>
	    Chris Demetriou  <cgd@google.com>

	* thread.c (add_thread_silent): Renamed
	from add_thread.
	(print_thread_events): New variable definition.
	(show_print_thread_events): New function.
	(_initialize_thread): Add "set print thread-events" and
	"show print thread-events" commands.
	(add_thread): Announce new thread.
	* gdbthread.h (add_thread_silent): Declare.
	(print_thread_events): New variable declaration.
	* inf-ttrace.c (inf_ttrace_wait): Don't
	inform about new thread, as add_thread is always
	called too, and will take care of that.
	* infrun.c (handle_inferior_event): Likewise.
	* procfs.c (procfs_wait): Likewise.
	* remote.c (remote_currthread): Likewise.
	* sol-thread.c (sol_thread_wait): Likewise.
	* win32-nat.c (get_win32_debug_event): Likewise.
	* linux-thread-db.c (attach_thread): Likewise.
	Remove the verbose parameter.
	(check_event): Make detach_thread be verbose
	only if print_thread_events is set.
	* linux-nat.c (lin_lwp_attach_lwp): Don't inform
	about new thread.  This is called only from
	linux-thread-db.c:attach_thread, which will take care.
	Remove the verbose parameter.
	* linux-nat.h (lin_lwp_attach_lwp): Adjust prototype.

2008-01-23  Nick Roberts  <nickrob@snap.net.nz>

	* mi/mi-cmd-var.c (mi_cmd_var_set_format): Add value field to output.

2008-01-22  Vladimir Prus  <vladimir@codesourcery.com>

	* breakpoint.c (break_command_really): New parameter
	ignore_count.
	(break_command_1): Pass 0 as
	ignore_count to break_command_really.
	(gdb_breakpoint): Pass ignore_count to
	break_command_really.

2008-01-21  Kevin Buettner  <kevinb@redhat.com>

	* mn10300-linux-tdep.c (am33_linux_sigframe_cache_init): Find
	sigcontext struct via pointer.
	(struct sigframe comment): Update to show new field `psc'.

2008-01-21  Vladimir Prus  <vladimir@codesourcery.com>

	* infrun.c (handle_inferior_event): If
	we failed to remove breakpoints, error,
	don't try to increment PC by hand.

2008-01-18  Nick Hudson  <nick.hudson@dsl.pipex.com>

	Add NetBSD/hppa target and host support.

	* hppabsd-tdep.c (hppabsd_supply_gregset): Move to ...
	(hppabsd_gregset): Move to ...
	(hppabsd_regset_from_core_section): Rename
	hppaobsd_regset_from_core_section and move to ...
	(hppabsd_find_global_pointer): Update comment.
	(hppabsd_init_abi): Make global. Do not register
	hppabsd_regset_from_core_section.
	(hppabsd_core_osabi_sniffer): Rename hppaobsd_core_osabi_sniffer and
	move to ...
	(_initialize_hppabsd_tdep): Move to ...
	* hppaobsd-tdep.c: ... here. New file.
	* hppnbsd-tdep.c: New file.
	* hppnbsd-nat.c: New file.
	* Makefile.in (ALL_TARGET_OBS): Add hppanbsd-tdep.o and hppaobsd-tdep.o.
	(ALLDEPFILES): Add hppabsd-nat.c and hppabsd-tdep.c.
	(hppabsd-nat.o, hppabsd-tdep.o): New dependencies.
	(hppabsd-tdep.o, hppaobsd-tdep.o): Update dependencies.
	* configure.host (hppa*-*-netbsd*): New entry.
	* configure.tgt (hppa*-*-netbsd*): New entry.
	(hppa*-*-openbsd*): Update.
	* NEWS (New native configuration): Mention NetBSD/hppa.
	(New targets): Mention NetBSD/hppa.

2008-01-18  Markus Deuling  <deuling@de.ibm.com>

	* gdbarch.sh (function_list): Add new property bits_big_endian to
	gdbarch structure.
	* gdbarch.{c,h}: Regenerate.

	* value.c (struct value): Replace BITS_BIG_ENDIAN by
	gdbarch_bits_big_endian (comment).
	(unpack_field_as_long, modify_field): Likewise.
	* value.h: Likewise (comment).
	* valops.c (value_slice): Likewise.
	* valarith.c (value_subscript, value_bit_index): Likewise.
	* gdbtypes.h (field): Likewise (comment).
	* eval.c (evaluate_subexp_standard): Likewise.
	* dwarf2read.c (dwarf2_add_field): Likewise.
	* ada-lang.c (decode_packed_array, ada_value_primitive_packed_val)
	(move_bits, ada_value_assign, value_assign_to_component): Likewise.

	* defs.h (BITS_BIG_ENDIAN): Remove.

2008-01-18  Markus Deuling  <deuling@de.ibm.com>

	* jv-exp.y (yylex): Replace DEPRECATED_STREQN with the appropriate
	function calls.
	* m2-exp.y (yylex): Likewise.
	* objc-exp.y (yylex): Likewise.

	* defs.h (DEPRECATED_STREQN): Remove.

2008-01-17  H.J. Lu  <hjl.tools@gmail.com>

	* MAINTAINERS: Update my email address.

2008-01-17  Jim Blandy  <jimb@codesourcery.com>

	* README: Mention gdbserver/README.

2008-01-17  Pierre Muller  <muller@ics.u-strasbg.fr>

	* valarith.c (value_binop): Handle BINOP_INTDIV
	for unsigned and signed integers.

2008-01-17  Ulrich Weigand  <uweigand@de.ibm.com>

	* s390-tdep.c (s390_gdbarch_init): Set default long double
	type to 128-bit IEEE quad.

2008-01-17  Joel Brobecker  <brobecker@adacore.com>

	* hpux-thread.c (hpux_thread_resume): Delete commented-out code.

2008-01-16  Mark Kettenis  <kettenis@gnu.org>

	* auxv.c (fprint_target_auxv): Add support for AT_SUN_AUXFLAGS.

	* dfp.c, dfp.h: Rename decimal_to_double to decimal_to_doublest.
	* value.c: All callers changed.

2008-01-16  Markus Deuling  <deuling@de.ibm.com>

	* rs6000-nat.c (add_vmap, vmap_ldinfo, vmap_exec): Replace
	DEPRECATED_STREQ by its expression.
	* coffread.c (coff_locate_sections, coff_symtab_read): Likewise.
	* xcoffread.c (read_xcoff_symtab, read_symbol_lineno, find_linenos)
	(scan_xcoff_symtab): Likewise.
	* hppa-hpux-tdep.c (hppa_hpux_skip_trampoline_code): Likewise.
	* f-lang.c (find_common_for_function): Likewise.
	* objc-exp.y (parse_number): Likewise.

	* defs.h (DEPRECATED_STREQ): Remove.

2008-01-16  Markus Deuling  <deuling@de.ibm.com>

	* mn10300-tdep.h (AM33_MODE): Add gdbarch as parameter.
	* mn10300-tdep.c (set_reg_offsets, mn10300_analyze_prologue): Use
	get_frame_arch to get at the current_architecture. Update AM33_MODE
	call.
	(mn10300_analyze_prologue): Add gdbarch as parameter. Update caller.
	(mn10300_frame_unwind_cache): Use get_frame_arch to get at the current
	architecture.
	(set_reg_offsets, mn10300_analyze_prologue): Fix indentation.

2008-01-16  Markus Deuling  <deuling@de.ibm.com>

	* amd64-nat.h (amd64_native_gregset_supplies_p): Add gdbarch as
	parameter.
	* amd64-nat.c (amd64_native_gregset_supplies_p): Likewise.

	(amd64_native_gregset_reg_offset): Add gdbarch as parameter. Replace
	current_gdbarch by gdbarch. Update caller.

	* amd64-linux-nat.c (amd64_linux_fetch_inferior_registers)
	(amd64_linux_store_inferior_registers): Use get_regcache_arch to get at
	the current architecture. Update calls of
	amd64_native_gregset_supplies_p.
	* amd64bsd-nat.c (amd64bsd_fetch_inferior_registers)
	(amd64bsd_store_inferior_registers): Likewise.

2008-01-16  Markus Deuling  <deuling@de.ibm.com>

	* ppc-linux-nat.c (ppc_register_u_addr): Add gdbarch as parameter.
	Replace current_gdbarch by gdbarch. Update caller.

2008-01-16  Markus Deuling  <deuling@de.ibm.com>

	* dbxread.c (repeated_header_complaint, dbx_symfile_init)
	(read_dbx_dynamic_symtab, function_outside_compilation_unit_complaint)
	(read_dbx_symtab, end_psymtab, dbx_psymtab_to_symtab_1)
	(dbx_psymtab_to_symtab, read_ofile_symtab, process_one_symbol)
	(stabsect_build_psymtabs): Fix indentation.

2008-01-15  Michael Snyder  <msnyder@specifix.com>

	* corelow.c (core_xfer_partial): Comment, cut/paste error.

2008-01-14  Pierre Muller  <muller@ics.u-strasbg.fr>

	* win32-nat.c (win32_create_inferior): Restore code calling
	CloseHandle on ProcessInformation structure.

2008-01-13  Nick Hudson  <nick.hudson@dsl.pipex.com>

	* configure.ac: Check for void * as 3 argument of ptrace.
	* configure: regenerate.

2008-01-11  Markus Deuling  <deuling@de.ibm.com>

	* alpha-tdep.c (alpha_heuristic_proc_start)
	(alpha_sigtramp_register_address): Add gdbarch as parameter. Replace
	current_gdbarch by gdbarch.

	(alpha_heuristic_frame_unwind_cache): Use get_frame_arch to get at the
	current architecture by frame_info. Update alpha_heuristic_proc_start
	call.

	(alpha_sigtramp_frame_this_id, alpha_sigtramp_frame_prev_register): Use
	get_frame_arch to get at the current architecture by frame_info. Update
	alpha_sigtramp_register_address call.

	* arm-tdep.c (thumb_scan_prologue): Add gdbarch as parameter and replace
	current_gdbarch by gdbarch. Update caller.
	(convert_to_extended, convert_from_extended): Add endianess parameter
	for comparison. Update caller.
	(arm_extract_return_value, arm_store_return_value): Use
	get_regcache_arch to get at the current	architecture.

	* cris-tdep.c (cris_register_size): Add gdbarch as parameter. Replace
	current_gdbarch by gdbarch. Update caller.
	(cris_gdb_func, move_to_preg_op, none_reg_mode_move_from_preg_op): Add
	gdbarch as parameter. Update caller. Replace current_gdbarch by gdbarch.

	* h8300-tdep.c (E_PSEUDO_CCR_REGNUM, E_PSEUDO_EXR_REGNUM, BINWORD): Add
	gdbarch	as parameter. Update caller.
	(h8300_init_frame_cache): Add gdbarch as parameter. Replace
	current_gdbarch by gdbarch. Update caller.

	* hppa-tdep.c (skip_prologue_hard_way): Add gdbarch as parameter and
	update caller. Replace current_gdbarch by gdbarch.

	* m32c-tdep.c (m32c_skip_trampoline_code): Use get_frame_arch to get at
	the current architecture. Replace current_gdbarch by gdbarch.
	* m68hc11-tdep.c (m68hc11_frame_unwind_cache): Likewise.
	(STACK_CORRECTION, USE_PAGE_REGISTER): Replace M6811_TDEP by its
	expression. Add gdbarch as parameter and replace current_gdbarch with
	it. Update caller.
	(M6811_TDEP): Remove.
	(m68hc11_frame_prev_register): Use get_frame_arch to get at the current
	architecture.
	(m68hc11_scan_prologue): Add gdbarch as parameter. Replace
	current_gdbarch by gdbarch. Update caller.

	* m68k-tdep.c (m68k_analyze_prologue): Add gdbarch as parameter and
	update caller.
	(m68k_analyze_register_saves): Likewise. Also replace current_gdbarch
	by gdbarch.

	* rs6000-tdep.c (skip_prologue): Add gdbarch as parameter and update
	caller. Relace current_gdbarch by gdbarch.
	(altivec_register_p, spe_register_p): Likewise.
	* ppc-tdep.h (altivec_register_p, spe_register_p): Add gdbarch as
	parameter.
	* ppc-linux-nat.c (fetch_register, store_register): Update caller of
	altivec_register_p and spe_register_p.

	* score-tdep.c (score_fetch_inst): Add gdbarch as parameter. Update
	caller. Replace current_gdbarch by gdbarch.
	(score_analyze_prologue): use get_frame_arch to get at the current
	architecture.

	* sparc-tdep.h (sparc_analyze_prologue): Add gdbarch as parameter.
	* sparc-tdep.c (sparc_analyze_prologue): Likewise. Replace
	current_gdbarch by gdbarch. Update caller.
	(sparc_frame_cache): Use get_frame_arch to get at the current
	architecture.
	* sparce64-tdep.c (sparc64_skip_prologue): Update call of
	sparc_analyze_prologue.

	* mn10300-tdep.c (mn10300_dwarf2_reg_to_regnum): Add gdbarch as
	parameter.

2008-01-11  Markus Deuling  <deuling@de.ibm.com>

	* exec.c: #include "arch-utils.h"
	 (print_section_info): Use gdbarch_from_bfd to get at the
	current architecture. Replace current_gdbarch. Fix indention. Replace
	deprecated_print_address_numeric by paddress.
	* Makefile.in (exec.o) Add dependency to arch-utils.h.

	* valprint.c (val_print_string): Replace
	deprecated_print_address_numeric.
	* tracepoint.c (trace_mention, scope_info): Likewise.
	* symmisc.c (dump_msymbols, dump_psymtab, dump_symtab_1, print_symbol)
	(print_symbol, print_partial_symbols, maintenance_info_psymtabs)
	(maintenance_check_symtabs): Likewise.
	* symfile.c (list_overlays_command): Likewise.
	* stack.c (frame_info, print_block_frame_labels): Likewise.
	* printcmd.c (print_address, print_address_demangle)
	(address_info): Likewise.
	* corefile.c (memory_error): Likewise.
	* infcmd.c (jump_command): Likewise.
	* breakpoint.c (insert_bp_location, describe_other_breakpoints)
	(mention, delete_breakpoint): Likewise.
	* c-valprint.c (print_function_pointer_address, c_val_print): Likewise.
	* dwarf2read.c (dump_die): Likewise.
	* ada-valprint.c (ada_val_print_1): Likewise.
	* f-valprint.c (f_val_print): Likewise.
	* linux-fork.c (info_forks_command): Likewise.
	* m32r-com.c (m32r_load_section, m32r_load)
	(m32r_upload_command): Likewise.

	* ui-out.c (ui_out_field_core_addr): Remove unnecessary comment.

2008-01-11  Markus Deuling  <deuling@de.ibm.com>

	* gdbarch.sh (skip_prologue): Add gdbarch
	as parameter.
	* gdbarch.{c,h}: Regenerate.

	* alpha-tdep.c (alpha_skip_prologue): Add gdbarch as parameter.
	* amd64-tdep.c (amd64_skip_prologue): Likewise.
	* avr-tdep.c (avr_skip_prologue): Likewise.
	* cris-tdep.c (cris_skip_prologue): Likewise.
	* frv-tdep.c (frv_skip_prologue): Likewise.
	* h8300-tdep.c (h8300_skip_prologue): Likewise.
	* hppa-tdep.c (hppa_skip_prologue): Likewise.
	* i386-tdep.c (i386_skip_prologue): Likewise.
	* ia64-tdep.c (ia64_skip_prologue): Likewise.
	* iq2000-tdep.c (iq2000_skip_prologue): Likewise.
	* m32r-tdep.c (m32r_skip_prologue): Likewise.
	* m68hc11-tdep.c (m68hc11_skip_prologue): Likewise.
	* m68k-tdep.c (m68k_skip_prologue): Likewise.
	* m88k-tdep.c (m88k_skip_prologue): Likewise.
	* mep-tdep.c (mep_skip_prologue): Likewise.
	* mips-tdep.c (mips_skip_prologue): Likewise.
	* mn10300-tdep.c (mn10300_skip_prologue): Likewise.
	* mt-tdep.c (mt_skip_prologue): Likewise.
	* rs6000-tdep.c (rs6000_skip_prologue): Likewise.
	* score-tdep.c (score_skip_prologue): Likewise.
	* sh64-tdep.c (sh64_skip_prologue): Likewise.
	* sh-tdep.c (sh_skip_prologue): Likewise.
	* sparc64-tdep.c (sparc64_skip_prologue): Likewise.
	* sparc-tdep.c (sparc32_skip_prologue): Likewise.
	* spu-tdep.c (spu_skip_prologue): Likewise.
	* v850-tdep.c (v850_skip_prologue): Likewise.
	* vax-tdep.c (vax_skip_prologue): Likewise.
	* xstormy16-tdep.c (xstormy16_skip_prologue): Likewise.
	* xtensa-tdep.c (xtensa_skip_prologue): Likewise.

	* arm-tdep.c (arm_skip_prologue): Add gdbarch as parameter. Replace
	current_gdbarch by gdbarch.
	* m32c-tdep.c (m32c_skip_prologue): Likewise.
	* s390-tdep.c (s390_skip_prologue): Likewise.

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

	* defs.h (struct continuation_arg): Fix typo in comment.
	* target.c (target_translate_tls_address): Fix comment spelling error.

2008-01-09  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* doublest.h (DOUBLEST_PRINT_FORMAT): Remove % from string.
	(DOUBLEST_SCAN_FORMAT): Likewise.
	* dfp.c (decimal_from_floating): Use DOUBLEST_PRINT_FORMAT.
	* ada-lex.l (processReal): Prepend "%" to use of DOUBLEST_SCAN_FORMAT.
	* c-exp.y (parse_number): Likewise.
	* jv-exp.y (parse_number): Likewise.
	* objc-exp.y (parse_number): Likewise.
	* p-exp.y (parse_number): Likewise.

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

	* gdbtypes.c (create_array_type): Add handling of null Ada arrays.
	(check_typedef): Likewise.

2008-01-09  Luis Machado  <luisgpm@br.ibm.com>

	* printcmd.c (printf_command): Add seen_big_h, seen_big_d and
	seen_double_big_d, treat the new H, D, and DD modifiers as length
	modifiers.

2008-01-08  Joel Brobecker  <brobecker@adacore.com>

	* dwarf2read.c (read_enumeration_type): Add comment.

2008-01-08  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* config.in: Regenerate.

2008-01-08  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_convert_actual): Renames convert_actual.
	Make non-static.
	(ada_convert_actuals): Delete.
	* ada-lang.h (ada_convert_actual): Add declaration.
	(ada_convert_actuals): Remove declaration.
	* infcall.c: #include "ada-lang.h".
	(value_arg_coerce): Add new parameter sp.  Update function
	documetnation.  Add handling of Ada function call parameters.
	* Makefile.in (infcall.o): Update dependencies.

2008-01-08  Paul Hilfinger  <hilfinger@adacore.com>

	* ada-lang.c (ensure_lval): Fix value lval kind.
	(convert_actual): Add handling for arguments passed by reference.

2008-01-08  Doug Evans  <dje@google.com>

	* dbxread.c (read_dbx_symtab): Fix indentation.

2008-01-07  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* Makefile.in (dfp.o): Depend on expression.h, gdbtypes.h and value.h.
	(valarith.o): Depend on dfp.h.
	(valops.o): Likewise.
	* dfp.c: Include expression.h, gdbtypes.h, value.h and dfp.h.
	(set_decnumber_context): New function.
	(decimal_check_errors): Likewise.
	(decimal_from_number): Likewise.
	(decimal_to_number): Likewise.
	(decimal_from_string): Use set_decnumber_context and
	decimal_check_errors.
	(decimal_from_integral): New function.
	(decimal_from_floating): Likewise.
	(decimal_to_double): Likewise.
	(promote_decimal): Likewise.
	(decimal_binop): Likewise.
	(decimal_is_zero): Likewise.
	(decimal_compare): Likewise.
	(decimal_convert): Likewise.
	* dfp.h (decimal_from_integral): New prototype.
	(decimal_from_floating): Likewise.
	(decimal_to_double): Likewise.
	(decimal_binop): Likewise.
	(decimal_is_zero): Likewise.
	(decimal_compare): Likewise.
	(decimal_convert): Likewise.
	* eval.c (evaluate_subexp_standard): Remove expect_type argument from
	call to value_from_decfloat.
	* valarith.c: Include dfp.h.
	(value_args_as_decimal): New function.
	(value_binop): Add if block to handle TYPE_CODE_DECFLOAT values.
	(value_logical_not): Likewise.
	(value_equal): Likewise.
	(value_less): Likewise.
	(value_pos): Likewise.
	(value_neg): Formatting fix.
	* valops.c: Include dfp.h.
	(value_cast): Add if block to handle TYPE_CODE_DECFLOAT values.
	* value.c (unpack_long): Add case to handle TYPE_CODE_DECFLOAT.
	(unpack_double): Add if block to handle TYPE_CODE_DECFLOAT.
	(value_from_decfloat): Remove expect_type argument.
	* value.h (value_from_decfloat): Update prototype.

2008-01-07  Vladimir Prus  <vladimir@codesourcery.com>

	Ignore change in name of dynamic linker during
	execution on Solaris.  This also unbreaks pending breakpoints.

	* solist.h (struct target_so_ops): New field same.
	* solib-svr4.c (svr4_same): New.
	(_initialize_svr4_solib): Register svr4_same.
	* solib.c (update_solib_list): Use ops->same, if available.

2008-01-06  Christopher Faylor  <me+cygwin@cgf.cx>

	* win32-nat.c (win32_make_so): Use cygwin-style path to avoid warnings
	when using MS-DOS paths.

2008-01-05  Pedro Alves  <pedro@codesourcery.com>

	* NEWS: Mention --pid and --core command line behaviour changes.

2008-01-05  Pedro Alves  <pedro@codesourcery.com>

	* main.c (captured_main): Remove 'count' varible and the
	ALIGN_STACK_ON_ENTRY block that used it.  Error out if --core and
	--pid options were issued simultaneously.  If an explicit pid
	option was passed, don't fallback to core file.  Detect extra
	arguments better in the presence of explicit pid or core
	arguments.

2008-01-05  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_which_variant_applies): Correctly compute
	the value of the discriminant when the variant record is packed.

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

	* ada-lang.c (is_name_suffix): Handle middle-name numeric suffixes
	that are used to differentiate homonyms.

2008-01-04  Jerome Guitton  <guitton@adacore.com>

	* ada-lang.c (decode_packed_array_type): Avoid a seg fault
	when the type is an anonymous pointer type.
	(ada_check_typedef): Avoid a seg fault when the type is null.
	* ada-typeprint.c (print_array_type): Add support for pointer
	to packed arrays.

2008-01-04  Paul N. Hilfinger  <hilfinger@adacore.com>

	* ada-exp.y: Allow '{type} ADDRESS' notation on left of assignment.

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

	* ada-lang.c (ada_evaluate_subexp): Evaluate tagged types in
	EVAL_NORMAL mode when noside is EVAL_AVOID_SIDE_EFFECTS.

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

	* ada-exp.y (chop_separator): New function.
	(write_selectors): Rewrite to re-use chop_separator.
	(ada_nget_field_index, get_symbol_field_type): New functions.
	(write_var_or_type): Add support for "ptype TYPENAME.FIELD"
	expressions.

2008-01-03  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* symtab.c (find_pc_sect_line): Use SYMBOL_VALUE_ADDRESS instead
	of SYMBOL_VALUE when working with function symbols.

2008-01-03  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (resolve_subexp): Add handling of OP_REGISTER
	expressions.  These expressions do not need to be rewriten.

2008-01-03  Joel Brobecker  <brobecker@adacore.com>

	* dwarf2read.c (read_enumeration_type): Flag type as stub if
	the given die is a declaration.

2008-01-03  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_array_bound_from_type): Make non-static.
	Handle properly the case when the index type is an enumerated type.
	Do not return the subtype of the bounds type, just return the
	bounds type directly - this is not needed and is more consistent
	with what we do for arrays when no XA parallel type exists.

2008-01-03  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (static_unwrap_type): Add forward declaration.
	(template_to_static_fixed_type): Fields of dynamic types sometimes
	also need to be unwrapped. Take this into account.
	(ada_to_fixed_type_1): Renamed from ada_to_fixed_type.
	(ada_to_fixed_type): New wrapper around ada_to_fixed_type_1.
	* ada-typeprint.c (ada_print_type): Get the typename from
	the original type, not the base type.

2008-01-03  Jerome Guitton  <guitton@adacore.com>

	* ada-lang.c (ada_value_struct_elt, to_fixed_array_type)
	(to_fixed_array_type, ada_to_fixed_value_create, unwrap_value):
	Update calls to ada_to_fixed_type.
	(ada_template_to_fixed_record_type_1): Ditto, but without looking
	for the tag.
	(ada_to_fixed_type): Add check_tag parameter; do not look for
	tag if null.  When looking for a tag, use a fixed record type.
	* ada-lang.h (ada_to_fixed_type): Add check_tag parameter.
	* ada-valprint.c (printable_val_type, ada_value_print): Update
	calls to ada_to_fixed_type.

2008-01-03  Luis Machado  <luisgpm@br.ibm.com>

	* doublest.c (convert_floatformat_to_doublest): Call
	floatformat_to_doublest instead of floatformat_to_double and use
	DOUBLEST variables.
	(convert_doublest_to_floatformat): Call floatformat_from_doublest
	instead of floatformat_from_double and use DOUBLEST variables.

2008-01-03  Nick Hudson  <nick.hudson@dsl.pipex.com>

	* MAINTAINERS (Write After Approval): Add self.

2008-01-03  Joel Brobecker  <brobecker@adacore.com>

	* symfile.c (set_initial_language): Make non-static.
	* symfile.h (set_initial_language): Add declaration.
	* language.c: #include "symfile.h".
	(set_language): Call set_initial_language if the frame language
	could not be determined.

2008-01-03  Paul N. Hilfinger  <hilfinger@adacore.com>

	* eval.c (evaluate_subexp_for_address): Provide frame address to
	locate_var_value only if it will be needed.

2008-01-02  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* linux-nat.c (linux_child_follow_fork): Call also CHECK_FOR_THREAD_DB.

2008-01-02  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_evaluate_subexp): Modify the value returned
	when noside is EVAL_AVOID_SIDE_EFFECTS to be an lval_memory.
	This is needed to make sure that any other treatment applied
	to the resulting value does not fail for spurious reason,
	such as trying to take the address of this value.

2008-01-02  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_value_equal): Dereference reference types when
	comparing arrays.

2008-01-01  Daniel Jacobowitz  <dan@codesourcery.com>

	Updated copyright notices for most files.

2008-01-01  Christopher Faylor  <me+gdb@cgf.cx>

	* win32-nat.c (psapi_module_handle): Remove static.
	(get_module_name): Rename from psapi_get_dll_name.  Revamp slightly to
	return first module found if base_address is zero.  Don't initialize
	psapi function pointers here.  Convert to cygwin paths when
	appropriate.
	(win32_pid_to_exec_file): Use Cygwin's /proc interface to determine
	executable name.  Use get_module_name when that fails or when
	!__CYGWIN__.
	(_initialize_psapi): New function.  Initialize psapi stuff before it is
	needed or issue a warning if it is not found.  Move psapi_module_handle
	here.

2008-01-01  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_remove_trailing_digits): New function.
	(ada_remove_po_subprogram_suffix): New function.
	(ada_decode): Improve. Move the description of the algorithm
	directly inside the code, instead of in the function global
	description.

2008-01-01  Joel Brobecker  <brobecker@adacore.com>

	* ada-valprint.c (ada_val_print_1) [TYPE_CODE_REF]: Ignore deref_ref
	and always print the dereferenced value.

2008-01-01  Joel Brobecker  <brobecker@adacore.com>

	* ada-lang.c (ada_evaluate_subexp, case BINOP_SUB): Add handling
	of the case where the first argument is a reference.
	(ada_evaluate_subexp, case BINOP_ADD): Likewise.

2008-01-01  Joel Brobecker  <brobecker@adacore.com>

	Implement support for Ada interface types.

	* ada-lang.c (ada_is_dispatch_table_ptr_type): New function.
	(ada_is_ignored_field): Ignore fields that are a dispatch table
	of a tagged type.

2008-01-01  Joel Brobecker  <brobecker@adacore.com>

	* top.c (print_gdb_version): Update copyright year.

2008-01-01  Joel Brobecker  <brobecker@adacore.com>

	* ChangeLog-2007: New ChangeLog rotation.
	* ChangeLog: Reset for 2008.
	* config/djgpp/fnchange.lst: Add entries for ChangeLog-2006 and
	ChangeLog-2007.

For older changes see ChangeLog-2007.

Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
coding: utf-8
End:
