2008-03-27  Joel Brobecker  <brobecker@adacore.com>

	* NEWS: Replace "Changes since GDB 6.7" into changes in GDB 6.8".

2008-03-27  Joel Brobecker  <brobecker@adacore.com>

	* README: Update GDB version number to 6.8.
	* version.in: Likewise.

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-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  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-13  Joel Brobecker  <brobecker@adacore.com>

	* version.in: Set version to 6.7.90.20080313-cvs.

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

	GDB 6.7.90 released.

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

	* version.in: Set version to 6.7.90.

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

	* README: Update GDB version number to 6.7.90.

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-10  Matt Rice  <ratmice@gmail.com>

	* dwarf2read.c (set_cu_language): Add DW_LANG_ObjC.

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

	* frame.c (reinit_frame_cache): Only annotate if frames were
	previously valid.

2008-03-04  Greg Law  <glaw@undo-software.com>

	* regcache.c (registers_changed): Call reinit_frame_cache.

2008-03-04  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-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.7.90.20080226-cvs.

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.
        * gdb/varobj.c (varobj_list_children): Return vector
        of varobjs.
        * gdb/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:
